aboutsummaryrefslogtreecommitdiff
path: root/sys/gio/calcomp/doc
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /sys/gio/calcomp/doc
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'sys/gio/calcomp/doc')
-rw-r--r--sys/gio/calcomp/doc/ccpspecs.hlp384
1 files changed, 384 insertions, 0 deletions
diff --git a/sys/gio/calcomp/doc/ccpspecs.hlp b/sys/gio/calcomp/doc/ccpspecs.hlp
new file mode 100644
index 00000000..fae12e4e
--- /dev/null
+++ b/sys/gio/calcomp/doc/ccpspecs.hlp
@@ -0,0 +1,384 @@
+.help
+\fBSpecifications for IRAF Calcomp kernel -- (CCP package)\fR
+
+
+The Calcomp kernel (package prefix "ccp") will implement selected GKI
+instructions, using only calls to the Calcomp routines \fBplots\fR,
+\fBplot\fR, \fBnewpen\fR and \fBsymbol\fR.
+
+
+There are two sub-components of the CCP package: 1) the kernel driver
+task allowing a user to send a specified graphics metafile to the plotter, and
+2) the low-level kernel routines which implement specific GKI instructions,
+and which make the only calls to the Calcomp library.
+
+
+.nh
+\fBCL interface -- task CALCOMP\fR
+
+
+The driver task, \fBcalcomp\fR, allows a user to direct an existing GKI metacode
+file to a particular Calcomp plotter under control of a set of CL parameters.
+The task is loaded either by being run directly from the CL as a task, or by
+being invoked through inter-process control following a write-to-pseudofile
+containing the GKI_OPENWS metacode instruction. The task may
+optionally control certain kinds of debug output.
+
+.nf
+CL parameters to the kernel driver task \fBcalcomp\fR:
+
+input,s,a,,,,"input metacode file"
+device,s,h,"calcomp",,,"output device"
+generic,b,h,no,,,"ignore remaining kernel dependent parameters"
+debug,b,h,no,,,"print decoded graphics instructions during processing"
+verbose,b,h,no,,,"print elements of polylines, etc. in debug mode"
+gkiunits,b,h,no,,,"print coordinates in GKI rather than NDC units"
+xscale,r,h,INDEF,0.0,,"plotter x = GKI_NDC_X * xscale"
+yscale,r,h,INDEF,0.0,,"plotter y = GKI_NDC_Y * yscale"
+txquality,s,h,"normal","normal|low|high",,"character quality; n=from metacode"
+lwtype,s,h,"ntracing","ntracing|penchange",,"bold line/text implementation"
+ltover,b,h,no,,,"override line type simulation"
+lwover,b,h,no,,,"override line width simulation"
+lcover,b,h,no,,,"override line color implementation by penchange"
+dashlen,r,h,INDEF,0.0,,"dashed line dash length, pltr units; 0.5 reasonable"
+gaplen,r,h,INDEF,0.0,,"dashed line gap length, pltr units; 0.1 reasonable"
+plwsep,r,hl,INDEF,0.,,"polyline width separation for ntracing; 0.005 reasonable"
+
+.fi
+
+
+.nh
+\fBSuggested GRAPHCAP entry for calcomp plotter\fR
+
+.nf
+
+ p5|calcomp|calcomp pen plotter:\
+ :kf=xcalcomp.e:tn=calcomp:co#132:li#66:xr#32767:yr#5375:\
+ :ch#.0294:cw#.0125:xs#1.664564:ys#0.27305:\
+ :PU=inches:MP#.0254:DL#.50:GL#.10:PW#.005:\
+ :DD=plot!calcomp,/tmp/gcaXXXXXX,\
+ !{ cd /tmp; nice /local/bin/plotX -Tcalcomp -W=1 $F |\
+ nice /usr/bin/plot -Tcalcomp; rm $F; }&:
+
+ #xs 1.664564 # maximum x in meters; max at .002 inches step size
+ #ys .27305000 # maximum y in meters; 10.75 inch paper
+ #xr 32767 # max resolution in x; limited by GKI short int coords
+ #yr 5375 # max resolution in y; 10.75 inches at .002 inches step
+ #PU inches # plotter units
+ #MP 0.0254 # meters per plotter unit
+ #DL 0.5000 # dash length in plotter units
+ #GL 0.1000 # gap length in plotter units
+ #PW 0.0050 # n-tracing (bold line simul.) width sep. in pltr units
+ #if yscale not set by kernel, g_yndcto_p = GKI_MAXNDC/(MP*yr); 32767/10.75"
+ #if xscale not set by kernel, g_xndcto_p = g_yndcto_p; square aspect ratio
+
+.fi
+
+
+.nh
+\fBInterface between CALCOMP task and lower-level kernel routines\fR
+
+
+Two kernel routines will normally be called from outside the GKI
+instruction-stream decoding facility (as from the driver task):
+
+.nf
+ ccp_open (devname, dd)
+
+ devname: device name of desired Calcomp plotter (must have
+ entry in graphcap file)
+
+ dd: array of entry point addresses to lower-level kernel
+ routines
+
+ discussion: linking to multiple Calcomp plotters is a
+ site-dependent function. Ordinarily devname is
+ ignored; if this kernel is called, output will go
+ to the device initialized by the Calcomp library.
+ See ccp_openws.
+
+
+ ccp_close ()
+
+ discussion: causes a Calcomp "newframe" -- resets origin to
+ right of last previously-plotted point.
+
+
+.fi
+.nh
+\fBLow-level kernel routines\fR
+
+
+All remaining kernel routines will normally be called either by ccp_open or
+by gki_execute, or by each other. Following are descriptions of the
+implementation of GKI instructions:
+.nf
+
+ GKI_EOF
+
+ Not implemented; it should be trapped outside the kernel, as in
+ \fBgki_execute\fR.
+
+ GKI_OPENWS
+
+ ccp_openws (devname, len_devname, mode)
+
+ devname; len_devname:
+
+ name of plotter, name length, if not present in metafile
+
+ mode:
+
+ file access mode for gki metafile; if NEWFILE, a Calcomp
+ "newframe" (reorigin to right of previous plot) will
+ occur; if APPEND mode, no newframe.
+
+ discussion:
+
+ There is no output metafile; device connection and any
+ site-specific spooling is handled below this level.
+ Note that there must be a graphcap entry for devname.
+
+ GKI_CLOSEWS
+
+ ccp_closews ()
+
+ discussion:
+
+ As there is no output metafile, this is a noop.
+
+ GKI_REACTIVATEWS
+
+ Not implemented.
+
+ GKI_DEACTIVATEWS
+
+ Not implemented.
+
+ GKI_MFTITLE
+
+ Not implemented.
+
+ GKI_CLEARWS
+
+ ccp_clear ()
+
+ discussion:
+
+ Implemented only by a Calcomp "newframe"; there is no
+ output metacode file for spooling at this level.
+
+ GKI_CANCEL
+
+ Not implemented, since there is no buffered output.
+
+ GKI_FLUSH
+
+ Not implemented.
+
+ GKI_POLYLINE
+
+ ccp_polyline (p, npts)
+
+ p: array of points (x1, y1, x2, y2, ...)
+
+ npts: number of pairs
+
+ discussion:
+
+ To GKI, ccp_polyline will appear pretty normal; due to
+ the lack of settable parameters like dashed-line in
+ Calcomp, such features are implemented in further layers
+ between ccp_polyline and the actual Calcomp vector-draw
+ routine. See kernel task parameters lwtype, lwover, and
+ ltover for line width and type control.
+
+ GKI_POLYMARKER
+
+ ccp_polymarker (p, npts)
+
+ arguments: same as above
+
+ discussion:
+
+ Ccp_polymarker will merely dot the location at the
+ coordinate passed in; more complicated marker
+ symbols will be assumed to have been handled above, for
+ purposes of clipping, and will be drawn with ccp_polyline
+ at this level.
+
+ GKI_TEXT
+
+ ccp_text (x, y, text, nchar)
+
+ x, y:
+
+ NDC coordinates of text stream; note that the JUSTIFY
+ parameters in GSET determine where these coordinates are
+ relative to the text characters.
+
+ text: array of type short characters
+
+ nchar: number of chars in text
+
+ discussion:
+
+ The same levels of text quality will be supported as in
+ the stdgraph kernel; normal is taken from the metacode
+ request, medium and high fonts are stroke text, while low
+ quality is Calcomp hardware text. Depending on the
+ particular plotter controller at each site, low quality
+ text may or may not be significantly faster than stroke
+ text.
+
+ The special Calcomp symbols numbered 0 - 15 in the
+ Calcomp symbol library are invoked by characters with
+ ASCII values 0 - 15. When using hardware text generation,
+ the ASCII symbol requested will be mapped to the Calcomp
+ set if possible; otherwise, a default "indefinite" character
+ will appear.
+
+ GKI_FILLAREA
+
+ ccp_fillarea (p, npts)
+
+ p, npts: same as above for ccp_polyline
+
+ discussion:
+
+ With Calcomp, fillarea could only be implemented by
+ simulating with hatching patterns, a time-consuming
+ process for a pen plotter. We may or may not choose
+ to do this, depending upon users' needs. For the
+ very similar Versaplot kernel which may follow, it
+ should definitely be implemented, using Versaplot's
+ \fBtone\fR call. Initially, it will only be implemented
+ here with a call to ccp_polyline for the border.
+
+ GKI_PUTCELLARRAY
+
+ Not implemented.
+
+ GKI_SETCURSOR
+
+ Not implemented.
+
+ GKI_PLSET
+
+ ccp_plset (gki)
+
+ gki: attribute structure decoded by gki
+
+ discussion:
+
+ Line types documented in the GIO manual will be
+ implemented in software except for "erase", unless the
+ CL parameter to the CALCOMP task "ltover" is on, in
+ which case all lines drawn will be solid. See task
+ parameters dash and gap. In the future, line types
+ numbered higher than 4 may be implemented using various
+ combinations of dashes and dots as in Morse code. Line
+ width and color may be similarly implemented or overridden;
+ if not overridden, line width will be done by default using
+ n-tracing (n = nearest integer value of line width) or by a
+ penchange, under control of task parameter "lwtype".
+
+ GKI_PMSET
+
+ ccp_pmset (gki)
+
+ gki, discussion: Same as for ccp_plset.
+
+ GKI_TXSET
+
+ ccp_txset (gki)
+
+ gki, discussion:
+
+ Internal flags are set from structure gki controlling
+ text up vector, path relative to up vector, horizontal
+ and vertical justification, font, quality, color,
+ spacing, and size. For high-quality text, all flags are
+ implemented (color by a pen change, with optional
+ override); see GKI_TEXT discussion.
+
+ GKI_FASET
+
+ ccp_faset (gki)
+
+ gki, discussion:
+
+ Internal flags are set for fill area style and color.
+ If we decide to implement fill area in software (the only
+ way for Calcomp), we will use GKS conventions wherever
+ possible.
+
+ GKI_GETCURSOR
+
+ Not implemented. The Calcomp \fBwhere\fR routine would only
+ duplicate GCURPOS in GIO.
+
+ GKI_CURSORVALUE
+
+ Not implemented; not an interactive device.
+
+ GKI_GETCELLARRAY
+
+ Not implemented; not a storage device.
+
+ GKI_CELLARRAY
+
+ Not implemented.
+
+ GKI_ESCAPE
+
+ ccp_escape (fn, instruction, nwords)
+
+ fn: escape function code
+
+ instruction, nwords:
+
+ Nwords-long array of short integers containing the
+ instruction sequence.
+
+ discussion:
+
+ A high-level task may pass the NDC-to-plotter units
+ coordinate scaling factor down into the kernel to
+ permit exact scaling. The scale factors will be
+ set in common to allow fast access by the ccp_draw
+ routine.
+
+ GKI_ESCAPE = BOI 25 L FN N DC
+
+ L(i) 5 + N
+ FN(i) escape function code
+ N(i) number of escape data words
+ DC(i) escape data words
+
+ 1) xndc_to_plotter:
+
+ FN = ESC_XNDCTO_P (currently = 1 in ccp.h)
+ N = number of characters in the scale specification
+ DC = array of N short integers containing character-
+ packed scale (must be achtsc'd then ctod'd to
+ get x scale)
+
+ 2) yndc_to_plotter:
+
+ FN = ESC_YNDCTO_P (currently = 2 in ccp.h)
+ N = same as in (1)
+ DC = same as in (1)
+
+ The macros ESC_*NDCTO_P, currently defined in ccp.h, should
+ probably be defined in a gki-public place like gki.h.
+
+
+ GKI_SETWCS
+
+ Not implemented.
+
+ GKI_GETWCS
+
+ Not implemented.
+.fi