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.
If a table (item type = 9) is executed, the coordinate pairs it contains are relative to whatever area is valid at the time of its exe- cution.
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 ]