As of Mon Sep 21 10:37:26 2020

QMSPL: Task to send a plot file to the QMS printer/plotter


INNAME                             Image name (name)
INCLASS                            Image name (class)
INSEQ           0.0      9999.0    Image name (seq. #)
INDISK          0.0         9.0    Disk drive #
PLVER           0.0     46655.0    Version # of PL file. 0=>last
ASPMM           0.0                Arc sec. per mm. 0=self scale
COPIES          0.0       200.0    Number of copies needed.
LPEN            0.0        20.0    Pen width (dots).  0 => 3.
                                   Save output in file named ..
                                   ' ' => print and delete
OPTYPE                             Type of grey scale encoding
                                   'BITS' -- else 'MBIT'
FUNCTYPE                           'NE','LG','NG','PL','NL'
                                         else linear
FACTOR                             Power law index for use with
                                     'PL' or 'NL' FUNCTYPE's
AXVAL                              (1) Input and (2) output
                                   values at inflection point
DPARM                              (1,2) Clip recorded greys
                                       before FUNCTYPE (0 to 1)
                                   (3,4) After FUNCTYPE scale
                                       by g*DPARM(3) + DPARM(4)
                                   Parms for .BIT. modes:
                                   (5) 0, 2 => ignore DPARM
                                       1, 3 => use DPARM
                                       0, 1 => Gaussian mask
                                       2, 3 => Sine wave mask
                                   (6) size of mask in dots
                                   (7) Linear scale factor
                                   (8) x-shift of function
                                   (9) y-shift of function


Type: Task
Use:  QMSPL will find an extension file of type PL and use the
      graphics commands in that file to display the image on
      the QMS Lasergaphix 800 or 1200.  The print file produced
      by QMSPL cannot be printed on the laser unless it is
      complete.  Thus, it is necessary to stop QMSPL with TELL
      operation QUIT  if you want to see the partial output
  INNAME......Image name(name).  blank => any
  INCLASS.....Image name(class).  blank => any
  INSEQ.......Image name(seq. #).  0 => any
  INDISK......Disk drive # of image.  0 => any
  PLVER.......Version # of the PL file.  0 => largest version #
  ASPMM.......Arc seconds per millimeter.  0 => self scale.
  COPIES......Number of copies to make.  0 => 1.
  LPEN........Width of lines in dots.  0 => 3 (less than 3 is
              not recommended for copying).
  OUTFILE.....If not blank, write the output print file to the
              specified file name and print it.  If blank, print
              and delete the output.
  OPTYPE......Determines the method by which grey scale images
              are converted to dots on the paper: 'NONE' means
              to suppress the grey scales.  'MBIT', 'QRAN',
              and 'MRAN' use "fonts" loaded into the QMS, which
              is fast but may have bad repetitive dot patterns.
              QRAN uses a random number generator to generate 26
              levels and a random number to choose which of 3
              equal versions of that level are used for each
              pixel.  'MRAN' uses 78 levels instead but uses a
              fixed "character" for each level.  'MBIT' is like
              'MRAN' but instead of a random number font, it
              uses one generated by the Starlink algorithm.
              'RAND' uses a random number generator to set each
              dot and 'BITS' uses a STARLINK method of comparing
              the value with a mask pattern.  The last two are
              very slow.
  FUNCTYPE....Convert the recorded grey levels using inverse
              linear ('NE'), logarithmic ('LG'), inverse log
              ('NG'), power law ('PL'), inverse power law
              ('NL') or linear (anything else).  Note that
              linear produces "negative" images --- ones in
              which the most intense sources are the blackest.
  FACTOR......Specifies the power law index used in converting
              the recorded grey levels when FUNCTYPE 'PL' or
              'NL' is specified.  < 0.001 or > 999. => 1.0
  AXVAL.......Specifies the input and output values of the
              inflection point in the transfer function between
              a 1./FACTOR and FACTOR power law. (0,0) => simple
              FACTOR power law.  If either value is outside the
              range 0.001 - 0.999, a simple power law is used.
  DPARM.......(1,2) The recorded grey values (0 to 1.0) may be
                 clipped and linearly rescaled before applying
                 FUNCTYPE, where 0 <= DPARM(1) < DPARM(2) <= 1.
                 Default is DPARM(1) = 0.0, DPARM(2) = 1.0.
              (3,4) After FUNCTYPE has been applied, the values
                 range from 0 to 1.  These may be shifted,
                 scaled, and reclipped to 0,1 by g*DPARM(3) +
                 DPARM(4).  Defaults are 1.0 and 0.0 from limits
                 0.01 < DPARM(3) < 100, -0.9 < DPARM(4) < 0.9.
                 When using 'NE' or 'NG' functions, it is often
                 good to limit the darkest areas if they are
                 large to grey (i.e. DPARM(3) around .85).
  Parameters which control the mask generation for .BIT. OPTYPEs
              DPARM(5): = 0 -> use Gaussian with defaults
                        = 1 -> use Gaussian with DPARM parms
                        = 2 -> use Sine with defaults
                        = 3 -> use Sine with DPARM parameters
                        < 0 or > 3 => 0.
              DPARM(6): mask size in dots, default = 8.
                        (< 0 for 'MDOT' => force to this, else
                        MDOT uses between 7 and 13 to come close
                        to the desired ASPMM.)  Let mx, my =
                        mask size in x, y (in dots). Then
              DPARM(7): G = e ** (-D(2) * x * x/ ((mx/4)**2))
                        S = sin (2PI * D(2) * x / mx)
                        default = 1.0
              DPARM(8): X-shift of function wrt dots in dots
                        default = 0.25 * (mx/8.0), limit < 0.9.
              DPARM(9): Y-shift of function wrt dots in dots
                        default = 0.133 * (my/8.0), limit < 0.9.


Explanation of QMSPL

Notes on scaling grey levels:

(1) GREYS puts the user-specified image intensities into the
    plot file in a form which is converted to the range 0.0
    to 1.0 by QMSPL.
(2) Then QMSPL clips these intensities, setting any < DPARM(1)
    to DPARM(1) and any > DPARM(2) to DPARM(2) where 0 <=
    DPARM(1) < DPARM(2) <= 1.0.  The range DPARM(1) - DPARM(2)
    is then rescaled to 0 - 1.
(3) Then QMSPL applies a transfer function which can be linear
    (do nothing), negative linear (v = 1-v), logarithmic
    (v = log10(30*v+1)/log10(30.42) -  .007), negative log
    (v=1-v, then log), power law (v = v ** FACTOR) or negative
    power law (v=1-v, then power law).  A two part power law
    with inflection point is obtained with nonzero values of
    AXVAL yielding v = AXVAL(2)*(v/AXVAL(1))**(1/FACTOR)
    for v < AXVAL(1), and v = AXVAL(2)+(1-AXVAL(2))*
    ((v-AXVAL(1))/(1-AXVAL(1)))**FACTOR for v > or = AXVAL(1).
    These functions convert the range 0 - 1 into the range 0 - 1
(4)  Then QMSPL rescales the image data as v = DPARM(3) * v +
     DPARM(4) and clips it at 0 and 1.
The results of all this are converted into a grey level on the