RFC 125 UNKNOWN GRAPHICS · COMMENTS

Response to RFC 86: Proposal for Network Standard Format for a Graphics Data Stream

A 1971 reply to the graphics data stream proposal: sound idea, but add modes, richer text and picture interaction.

On rfc-editor.org ↗
PUBLISHED
April 1971
AUTHORS
J. McConnell
STREAM
Legacy
BUILDS ON
RFC 86 — Graphics Data Stream
UPDATED BY
RFC 177 — Device independent graphical display description
RESPONDS TO
RFC 86
AUTHOR'S SITE
Ames Research Center
SYMBOL LIST NAME
16-bit
DOI
10.17487/RFC0125

RFC text

Original text · RFC Editor View on rfc-editor.org ↗
                         NETWORK WORKING GROUP

                        REQUEST FOR COMMENT: 125

                                NIC 5841




                             APRIL 18, 1971












                             JOHN McCONNELL

                          AMES RESEARCH CENTER
                       MOFFETT FIELD, CALIFORNIA





Response to RFC #86, Proposal for Network Standard Format for a graphics
data stream.



Category         D.6
RFCs obsoleted   None
RFCs updated     86

The basic approach of transmitting an intermediate, device independent
language which is translated into specific device codes at the
receiving host is sound. It appears to be the only approach that will
allow thought to be centered on picture descriptions. Ames Research
Center has adopted this approach in tying its graphic facilities, of
various types, and on various computers together. At present, we are
in the design phase and expect our package to be running in about six
months. The main objections to the structure as it now exists, is that
it takes no cognizance of the many features available on graphics
devices. Since these features will always be changing with new
devices, a set of option or mode primitives should be defined which
are logically separate from the drawing primitives provided in RFC 86.
The mode primitives will act upon the drawing primitives to modify
their actions. The scope of a mode primitive extends until a new mode
primitive resets an option. The use of mode primitives will allow the
network standard stream interpreter to treat them as null operations
if the features are missing at a particular host, or to perform more
detailed interpretation of the following data stream to achieve
results. The drawing primitives may also then keep a standard format
which need not be changed to incorporate new features.

Overall modes which primitives could control would be intensity
levels, or color selections for objects, in addition blinking of
objects should be provided. For vectors, the additional facility for
drawing dashed lines is necessary.

Character strings require another set of specification. The convention
for the beam is usually that it is in the center of the rectangular
area defining a character's boundaries. The beam position is usually
undefined at the finish of drawing a character string. A strong
exception is taken to the exclusion of form control characters from
strings. If included in the character string, they could provide for
shifting from upper to lower case, subscripting, superscripting, and
underscoring, as well as tab and other "carriage" motion functions.
The appropriate characters could be extracted at interpretation time
to provide the necessary information to display more complex strings.
To allow the facility for generating ALGOL-like delimiters, such as
"then", a convention for canonical character string should be adopted.
I believe the Multics conventions described in reference 1 will
suffice.

Additional options for character strings should include a size
specification and an orientation selection. As many devices, have
hardware character generators that are fixed, some of these options
may not be desirable to implement as subroutines.

Another area that should be looked at further is the additional
symbols available which are not specified in ASCII. Some means of

defining them should be provided within the argument string itself,
again Multics has allowed the specification of arbitrary characters by
entering their octal equivalents. The convention should use a control
character code followed by a l6-bit list name which specifies the
sub-list defining the character. The other alternative is to allow
8-bit characters and allow the interpreter to choose a sub-list if the
character is not realizable with a hardware generator.

The special form control characters to be used are:

    a. BS    - backspace
    b. LF    - for new line
    c. SO/Sl - shift case
    d. DC2   - superscript following characters
    e. DC4   - subscript following characters
    f. DC3   - special non-ASCII character follows
    g. Tab   - position to next tab. May be predefined or specified.

Another construct should be added to those proposed in RFC 86. This is
the display list pointer (NGDLP). It will have as a value the next
drawing primitive to be executed. The value is a displacement from the
head of a list. With no mode setting primitives, this value is one to
one with the drawing primitives transmitted in the NGDS. The NGDLP is
needed for consistency for execution of the nested list structure.
Whenever an execute list primitive is encountered, the current value
of the NGDLP is saved along with the list name and current origin
value. When execution of a list is finished, the last values saved are
restored.

An include list primitive would allow the treatment of a sub-list to
be equivalent to a macro instead of a subroutine. This would be
necessary to avoid changes to all sub-pictures on the screen due to
the manipulation of a sub-list. The include primitive should have as
parameters such specifications as size, intensity, orientation,
blinking, etc. After a sub-list has been included in another list, it
is no longer distinguished as a separate entity.

To cut down on the volume of data being transferred, other commands to
be parsed by the stream interpreter should be added. These would allow
the manipulation of a list by the receiving host without a
retransmission.  The types of manipulations would include rescaling
the coordinates for shrinking or zooming, translation of the origin,
or rotation. Other manipulations to provide for displaying or not
displaying a list, or enabling of disabling light pen detections would
be desirable.

The problem of interaction with the displayed picture has yet to be
addressed, so this will be an attempt to elicit some more discussion

in this area. The use of a keyboard or function keys poses no problem
in that both can be handled as a standard message from the graphics
terminal. The use of devices that interact with the picture or the
screen such as light pens, mice, joysticks, or tablets presents a
different and more complex problem. This problem is the standard one
of making an association between the point selected and some
meaningful entity such as a list or a primitive. This association
should be made at the receiving host since the NGDS has been changed
in unknown ways.

To allow the transmitting host to identify the object pointed at, the
stack of suspended lists and the current value of the NGDLP will
qualify the object to any level in a hierarchical structure. In
addition, normalized x,y coordinates should be returned, as well as a
character displacement if a string was pointed at. This structure will
serve a light pen device very well since the light pen mechanism
allows the determination of the currently executing primitive. Other
devices interact with the picture in an asynchronous fashion and the
association of an x,y pair to a structure is a more difficult problem.
This may require that the host generating the graphic data stream be
responsible for making that association. A further complication arises
when it is desired to use a light pen in an area where no beam motion
occurs, then some directive to periodically sweep the screen and
"find" the pen must be provided. This might be a sub-list which is
executed periodically for this function.


       [ This RFC was put into machine readable form for entry ]
        [ into the online RFC archives by Jerry Tenenbaum 4/97 ]

---------------------------------------------------------------------------
Reference: Osanna, J., Sahzer, J.
           Remote Terminal Character Stream Processing of Multics
           Proceedings SJCC, 1970, p. 671

ISO Plain Language

On this page
PROBLEMRFC 86 proposed a network standard format for a graphics data stream, but the author felt the proposal took no account of the many features of real graphics devices.
MECHANISMThe memo proposes separate mode primitives, form control characters inside strings, a display list pointer, an include list primitive, commands to manipulate a list and a way to report what a user points at.
STATUS TODAYIt is a set of comments rather than a specification, and it asks for more discussion of how a user interacts with a displayed picture.

§1Support for the Approach

John McConnell of Ames Research Center wrote in answer to RFC 86. He said the basic approach, sending an intermediate, device-independent language and translating it into specific device codes at the receiving host, is sound. In his view it is the only approach that lets people concentrate on describing pictures.

Ames Research Center had adopted the approach to connect its various graphics devices and computers. At the time of writing it was in the design phase and expected its package to be running in about six months.

The writer agrees that sending picture instructions rather than a finished picture is the right plan, and notes that his own lab is already building it.

§2Modes and Character Strings

The main objection is that the proposed structure ignores the many features of graphics devices. The memo proposes mode primitives, logically separate from the drawing primitives of RFC 86. A mode acts on the drawing primitives that follow and lasts until another mode primitive resets it. If a feature is missing at a host, the interpreter can treat the mode as a null operation. Modes could control intensity levels or colour, add blinking, and, for vectors, draw dashed lines.

For character strings, the memo strongly objects to leaving out form control characters, which could handle upper and lower case, subscripting, superscripting, underscoring and tab motion. It lists the controls it would use: backspace, new line, shift case, superscript, subscript, a marker for a special non-ASCII character, and tab. It also asks for size and orientation options, and for some way to define symbols that are not in ASCII, either by a control code plus a 16-bit list name or by allowing 8-bit characters.

Drawing commands should stay simple, with separate switches for extras such as colour, blinking and dashed lines. Text should be able to carry small signals for things like raised or lowered letters.

§3Display Lists and Manipulation

The memo adds a display list pointer (NGDLP). Its value is a displacement from the head of a list and names the next drawing primitive to run. When an execute list primitive is reached, the current pointer is saved along with the list name and the current origin, and the saved values are restored when that list finishes.

An include list primitive would treat a sub-list as a macro rather than a subroutine, so changing one sub-list would not change every sub-picture on the screen. To reduce the amount of data sent, extra commands parsed by the interpreter would let the receiving host rescale coordinates, move the origin or rotate a list, and show or hide a list or enable and disable light pen detection without sending it again.

A bookmark records which drawing step comes next, and a small picture can be copied into a larger one. Those commands also let the far machine shrink, move or turn a picture without sending the whole thing again.

§4Interacting with the Picture

The memo notes that interaction with the displayed picture had not yet been addressed, and it tries to start that discussion. A keyboard or function keys are no problem, because they can be handled as a standard message from the graphics terminal. Devices that interact with the picture or screen, such as light pens, mice, joysticks or tablets, are harder, because the point selected has to be tied to a meaningful list or primitive. The memo argues this tie should be made at the receiving host, since the data stream arriving there may have changed in unknown ways.

To let the sending host identify the object pointed at, the stack of suspended lists and the current pointer value would qualify it at any level of the hierarchy, together with normalised x,y coordinates and a character displacement if a string was pointed at. Where no beam motion occurs, a sub-list run periodically might be needed to find the light pen.

Pointing at a picture is difficult, because the computer must work out which part you meant. The writer asks others to help think it through.

§5References

[1]Osanna, J., Sahzer, J., "Remote Terminal Character Stream Processing of Multics", Proceedings SJCC, 1970, p. 671.
RFC 86RFC 86Crocker, S., "Proposal for a Network Standard Format for a Graphics Data Stream to be used in Controlling DISPLAYS", RFC 86, January 1971.January 1971