NIC #7124

JUNE 27, 1971





RFC's Obsoleted  none
RFC's Updated    177

    This RFC is intended to modifiy the proposal for a device
independent graphical display description discussed in RFC #177.  Thanks
are due to Stan Mantiply of Ames for his ideas.  The main changes are in
the defini- tion of coordinate areas to avoid one problem encountered
with the old definition and to provide more flexibility.  Terms used are
those defined in RFC #177.

    The problem encountered in the previous proposal was that the areas
of the NGS (network standard graphics screen), which were supposed to be
absolute boundaries, could be crossed when a list was executed within
that space.  Scaling of lists was also awkwardly done with specific
commands in the network standard graphic display list (NGDL).

    Coordinates will still be defined with 16 bit unsigned normalized
fractions.  This will leave the resolution of the picture up to the de-
vice which eventually receives the NGDL.  The values will not now be
tied to the NGS or an area of the screen, but will be fractional
displace- ments from the lower left corner of the screen, an area, or an
image space.

    Areas will still be rectangular and will be allowed to overlap, but
not contain another area completely.  The attributes of an area are: its
16 bit integer name, by which it may be manipulated, two (x,y) pairs
which will define its lower left and upper right corners with respect to
the NGS.  No list executed in an area may cross its boundaries.  Within
an area may be any number of image spaces which are dynamically defined
with the execution of a list and define its relationship to the contain-
ing area.

    The list item types 7 and 8 shall be changed from EXECUTE LIST
(Name,x,y) and COPY LIST (Name,x,y) to EXECUTE LIST
(Name,(Xl,Yl),(Xr,Yr)) and COPY LIST (Name,(Xl,Yl),(Xr,Yr))
respectively.  The coordinate pairs (Xl,Yl) and (Xr,Yr) define the image
area of that list as displacements from the lower left corner of the
containing area.  If the list executes other lists within it, their
image areas are defined as displacements from the image area of the list
containing the execute command.  Thus each list can be scaled
differently each time it is executed and may even be distorted if the
image area defined has different ratios of X and Y lengths.  Lists
executed within other lists will have the same relationship to their
containing lists regardless of that lists's rela- tionship to the NGS
area.  Since the initial image area is defined rela- tive to the NGSD
area, no overlaps can occur.
    A change to the NGLI is implied.  Whenever an EXECUTE LIST command
is encountered, the current state is saved, a new current origin is com-
puted, NGLP is reset to zero, and new X and Y scale factors must be cal-
culated to transform the coordinates in the new list to actual screen
coor- dinates.

    Another construct for graphics processing will be added.  This is
the mode stack for each graphics mode.  It will be used for saving and
restoring character and vector mode values as lists are recursively exe-
cuted.  Four new list items will be added to handle these operations.

   PUSH CHARACTER MODE    (item type = 14)
   PUSH VECTOR MODE       (item type = 15)
   POP CHARACTER MODE     (item type = 16)
   POP VECTOR MODE        (item type = 17)

    The DEFINE LIST command (type = 1) shall have its parameters
changed.  It shall have two parameters, a 16 bit integer name, by which
it may be manipulated and referenced, and a 16 bit integer defining the
length of the list in bytes rather than items.  This change is intended
to make processing the NGDS easier and will eliminate the TABLE item
(type = 11).

The first three list items should have the WORD IMAGE eliminated

from them, since they are defining NGS areas now.

The list command DEFINE IMAGE ARE (type = 2) shall be changed to

DEFINE AREA for the same reasons.

[ This RFC was put into machine readable form for entry ]

[ into the online RFC archives by Gert Doering 6/97 ]