home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc0965.txt < prev    next >
Text File  |  1996-05-07  |  108KB  |  1,583 lines

  1. Network Working Group                                    Lorenzo Aguilar Request for Comments: 965                              SRI International                                                            December 1985 
  2.  
  3.             A Format for a Graphical Communication Protocol 
  4.  
  5.  STATUS OF THIS MEMO 
  6.  
  7.    This paper describes the requirements for a graphical format on which    to base a graphical on-line communication protocol.  The proposal is    an Interactive Graphical Communication Format using the GKSM session    metafile.  Distribution of this memo is unlimited. 
  8.  
  9. ABSTRACT 
  10.  
  11.    This paper describes the requirements for a graphical format on which    to base a graphical on-line communication protocol. It is argued that    on-line graphical communication is similar to graphical session    capture, and thus we propose an Interactive Graphical Communication    Format using the GKSM session metafile. 
  12.  
  13.    We discuss the items that we believe complement the GKSM metafile as    a format for on-line interactive exchanges. One key application area    of such a format is multi-media on-line conferencing; therefore, we    present a conferencing software architecture for processing the    proposed format. We make this format specification available to those    planning multi-media conferencing systems as a contribution toward    the development of a graphical communication protocol that will    permit the interoperation of these systems. 
  14.  
  15.    We hope this contribution will encourage the discussion of multimedia    data exchange and the proposal of solutions. At SRI, we stay open to    the exploration of alternatives and we will continue our research and    development work in this problem area. 
  16.  
  17. ACKNOWLEDGEMENTS 
  18.  
  19.    The author wants to thank Andy Poggio of SRI who made many insightful    and valuable suggestions that trimmed and improved level U. His    expertise in multi-media communication systems and his encouragement    were a most positive input to the creation of this IGCF. Dave    Worthington of SRI also participated in the project discussions    involving this IGCF. Thanks are also due to Tom Powers, chairman of    ANSI X3H33, who opened this forum to the presentation of an earlier    version of this paper, thereby providing an opportunity for the    invaluable feedback of the X3H33 members. Jon Postel of ISI    recommended a number of changes that made this paper more coherent    and accessible. 
  20.  
  21.  
  22.  
  23.  Aguilar                                                         [Page 1] 
  24.  
  25.  
  26.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  27.  
  28.     Most of the work reported in this paper was sponsored by the U.S.    Navy, Naval Electronic Systems Command, Washington D.C., under    Contract No. N00039-83-K-0623. 
  29.  
  30. I.  INTRODUCTION 
  31.  
  32.    A. Use of a Graphical Communication Protocol 
  33.  
  34.       In the field of computer communications, a protocol is a procedure       executed by two cooperating processes in order to attain a       meaningful exchange of information. A graphical communication       protocol is needed to exchange interactive vector graphics       information, possibly in conjunction with other information media       like voice, text, and video. Within this multi-media communication       environment, computer vector graphics plays a key role because it       takes full advantage of the processing capabilities of       communicating computers and human users, and thus it is far more       compact than digital images which are not generated from data       structures containing positional information. Vector graphical       communication trades intensive use of storage and processing, at       the communicating ends, in return for a low volume of exchanged       data, because workstations with graphical hardware exchange       graphics commands in conjunction with large data structures at the       transmitter and receivers. In this manner, the transmission of a       single command can produce extensive changes in the data displayed       at the sending and receiving ends. 
  35.  
  36.       It is helpful to situate the aforesaid protocol at one of the       functional levels of the ISO Open Systems Interconnection       Reference Model [1]. Within such a model, a graphical protocol       functionality belongs primarily in the application level, though       some of it fits in the presentation level.  We can distinguish the       following components of a communication protocol: 
  37.  
  38.          a) a data format          b) rules to interpret transmitted data          c) state information tables          d) message exchange rules 
  39.  
  40.       A format for a graphical protocol should provide the layout of the       transmitted data, and indicate how the formated data are       associated with interpretation rules. The choice of format       influences the state tables to be maintained for the correct       processing of the transmitted data stream. The graphical format       has a minor influence on the exchange rules, which should provide       for the efficient use of transmission capacity to transport the       data under such a format. Besides the graphical format, there are 
  41.  
  42.  Aguilar                                                         [Page 2] 
  43.  
  44.  
  45.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  46.  
  47.        other aspects of a graphical protocol that determine state tables       and exchange rules. This paper concentrates in the data format,       and it does not discuss the message exchange. Nevertheless, we       discuss a simple software architecture for generating and       interpreting data streams written in our proposed format. Further,       we give an example of an application of a proposed format (in       Appendix B), and it illustrates the type of message exchanges that       are needed for establishing a communication session and exchanging       graphical information. 
  48.  
  49.       Those in the computer communication field are well aware of the       importance of widely accepted protocols in order to achieve       meaningful communication. Those who need to implement interactive       graphical communications today are confronted with the lack of an       standard for computer graphics communication among application       programs. Nevertheless, we can use some of the work already done       by the computer graphics standard bodies. As a matter of fact, ISO       and ANSI have already appended, to the Graphical Kernel System       (GKS) standard, the GKSM session metafile specification that has       many of the features needed for an on-line graphical protocol. 
  50.  
  51.       It is pertinent to mention an example of graphical communication       that illustrates the real-time nature of the interaction and also       illustrates the use of graphics in conjunction with other       information media. With audio-graphics conferencing, a group of       individuals at two or more locations can carry on an electronic       meeting. They can converse over voice channels and concurrently       share a graphics space on which they can display, point at, and       manipulate vector graphics pictures [2, 3, 4, 5, 6, 7]. 
  52.  
  53.       The conference voice channels can be provided by a variety of       transmission technologies. The shared graphics space can be       implemented on workstations that display the pictures and permit       graphical interaction and communication with other locations. The       communication of operations upon pictures involves modifications       to the underlying data structures, but we are concerned with       graphical database updating only to the extent that such updating       supports the communication. 
  54.  
  55.       In order to play out a recorded graphical session, we will need       indications of the rate at which the graphical elements must be       shown and the graphical operations recreated. We do not include       the means for indicating the timing of a session in a format       because our main purpose is to use it in mixed-media communication       environments.  In these environments, the play-out timing must be       compatible across information media in order to coordinate them.       Therefore, we leave the timing mechanisms to conference-control 
  56.  
  57.  Aguilar                                                         [Page 3] 
  58.  
  59.  
  60.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  61.  
  62.        modules. We also leave to conference control processes the manner       in which a conferee station emulates a graphical capability that       it lacks. One example is the representation of color in monochrome       displays. 
  63.  
  64.    B. Relationship to Other Work 
  65.  
  66.       There are a number of actual, and proposed, standards for graphics       information exchange. In the following, we explain the reasons       why, at present, none of them can be used as the basis of an       on-line protocol. As some of these standards evolve, however, some       may become suitable. Moreover, the experience gained with early       on-line graphics communication systems will provide insight into       the proper standard extensions to support more advanced systems.       Such insight could also be used to modify the format proposed in       this paper, which we consider an initial approach to the problem.       In the future, the format proposed in this paper could be replaced       by one of the aforesaid extended standards. 
  67.  
  68.       The North American Presentation Level Protocol Syntax, NAPLPS,       specifies a data syntax and application semantics for one-way       teletext information dissemination and two-way videotex database       access and transaction services. The two-way videotex operational       model is based on the concept of a consumer and an information       provider or service operator. Because of this asymmetry, it is       assumed that almost all graphical information will flow from the       provider toward the consumer. In the reverse direction, the       consumer is expected to manipulate and transmit alphanumeric       information, for the most part. Although this standard includes       geometric drawing primitives, a user cannot directly modify shapes       drawn with the primitives. 
  69.  
  70.       At present, NAPLPS does not include interaction concepts like       picture transformations or detectability, which are fundamental       for attaining a shared graphical workspace. Neither does it allow       key graphics input devices like mice, joysticks, stylus, rotating       balls, or light pens, which are needed for simple and efficient       editing of the shared workspace. 
  71.  
  72.       We want to have user-to-user graphical communication that features       the level of sophistication and ease of interaction provided by       today's interactive graphics packages. Computer vector graphics       can provide both because its paradigm includes an application       program that keeps track of a very large number of possible       changes of state of the displayed picture. In addition, the       application drives a powerful graphics package, like GKS or ACM       Core. In the videotex paradigm, the provider application only 
  73.  
  74.  Aguilar                                                         [Page 4] 
  75.  
  76.  
  77.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  78.  
  79.        allows limited changes to the displayed image, primarily database       retrieval requests. Also, the paradigm does not include a separate       graphics package. Both the graphics functionality and the data       format are collapsed into a coding specification, like NAPLPS. 
  80.  
  81.       In this paper we are interested primarily in business and       industrial applications where there is a two-way, or multi-way,       flow of vector graphics information among the users. The users       will have workstations with substantial processing and storage       capacities, and high-resolution monitors; moreover, the       communication will be on a distributed architecture not depending       on a central server host, like the provider application host of       videotex. 
  82.  
  83.       Currently, the videotex equipment at the consumer end consists of       inexpensive microprocessor-based decoders or personal computer       boards driving, in most cases, low-resolution standard TV sets and       personal computer displays. There is already affordable technology       to produce sophisticated decoders and high-resolution graphics       devices. The videotex standards need extensive revisions to take       advantage of these advances; in particular, they should consider       the receiving devices as capable of hosting a programmable       customer-application process. When this happens, videotex       protocols will be applicable to our intended problem areas [8]. 
  84.  
  85.       The Computer Graphics Metafile [9] will become an international       and North American standard for graphics picture interchange in       the near future. However, the CGM, also referred as VDM, is a       picture-capture metafile that only records the final result of a       graphics session. It is not intended to record the       picture-creation process, which is fundamental for the interactive       applications that we are addressing. Moreover, the CGM is       presently aimed at a minimum support of GKS functionality. It will       be some time before the CGM will have some of the elements needed       for on-line interaction. If, after these additions, the CGM is       augmented for session capture, it would become a logical candidate       for a protocol format. 
  86.  
  87.       Another future standard is the Computer Graphics Interface, CGI       also referred as VDI [10]. The CGI is a standard functional and       syntactical specification of the control and data exchange between       device-independent graphics software and one or more       device-dependent graphics device drivers. A major use of the CGI       is for the communication between an application host and a       graphics device, but the asymmetry between its intended       communicating ends hinders the use of CGI for our purposes. 
  88.  
  89.  
  90.  
  91. Aguilar                                                         [Page 5] 
  92.  
  93.  
  94.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  95.  
  96.        As previously stated, we want to take advantage of intelligence       and storage at the communicating ends in order to achieve powerful       information-conveying effects using narrow-bandwidth channels.       This requires that the format we seek must have items for       communication between two applications. In contrast, the CGI       streams are processed by device-dependent drivers, rather than by       applications. The CGI specification does include application data       elements, but only to be stored in a metafile. These application       data elements are not interpreted by the drivers, but by       applications that read the metafile, some time after metafile       creation. 
  97.  
  98.       Furthermore, the CGI has elements for obtaining graphical input,       as well as elements for inquiring graphics device capabilities,       characteristics, and states. Later, in Section III, we explain why       these two classes of elements are unnecessary for the       communication protocol we need. As the CGI evolves, it will       undergo significant changes, and, in the future, it may become a       very suitable kernel for the graphics protocol we seek.  As a       matter of fact, the CGI will be the communication protocol between       graphical application hosts and graphics terminals.  At SRI we are       tracking its evolution, and we are interested in defining a format       based on the CGI. 
  99.  
  100.       Finally, the Initial Graphics Exchange Specification [11] is not       aimed at our primary area of interest. The IGES defines standard       file and language formats for storing and transmitting       product-definition data that can be used, in part, to generate       engineering drawings and other graphical representations of       engineering products.  Besides the CAD orientation of IGES, the       graphical output function may be secondary to other goals like       transmitting numerical-control machine instructions. 
  101.  
  102. II.  OPERATIONAL REQUIREMENTS AND USABILITY 
  103.  
  104.    The main goal of this paper is to lay the groundwork for the    development of a vector graphics format to be used as a basis for an    on-line graphical communication protocol. We call such a format an    "interactive graphical communication format," or IGCF. In this    section we describe some operational requirements and usable    characteristics for an IGCF. 
  105.  
  106.    A. Interoperation of Heterogeneous Systems 
  107.  
  108.       A first functional requirement is that an IGCF must permit       communication among heterogeneous graphical systems differing both       in the hardware used and in the software of their graphics 
  109.  
  110.  Aguilar                                                         [Page 6] 
  111.  
  112.  
  113.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  114.  
  115.        application interfaces. This is a fundamental for attaining       communication among similar graphical application programs running       on dissimilar hardware and using dissimilar graphics interface       packages. Some examples of such application programs are graphics       editors, CAD systems, and graphical database retrieval programs       communicating with other editors, CAD programs, and graphical       databases, respectively. 
  116.  
  117.    B. Picture Capture 
  118.  
  119.       A required characteristic of an IGCF is that it must be usable for       the exchange of static graphic pictures, i.e. for picture capture;       yet, it must not be restricted to final picture recording only.       There will be picture exchanges as part of the interactive       communication, and we anticipate the need to record the state of a       picture at some points during the on-line graphics engagement. We       foresee the creation of graphical IGCF libraries containing object       definitions and pictures for inclusion in new pictures. Since       metafiles have been used for a long time to capture pictures,       there is a strong motivation to base an IGCF on a metafile       standard in order to secure compatibility with a large number of       metafile sources and consumers. 
  120.  
  121.    C. Prompt Transmission 
  122.  
  123.       In some forms of interactive graphical communication, like       audiographics conferencing, it is critical to convey across users       the real-time nature of the interaction. This dictates that object       creations and manipulations be transmitted as they happen rather       than as a final result since a substantial part of the information       may be transmitted concurrently with the construction or operation       of an object, possibly through associated media like voice. Since       both construction and manipulation processes have to be       transmitted, there is a limit to the number of intermediate states       that can be economically transmitted. 
  124.  
  125.       A third requirement is, therefore, that the IGCF elements provide       fine "granularity" to convey the dynamics of the constructions and       manipulations. We believe that it is sufficient that the IGCF have       basic construction elements like polygons, markers, polylines, and       text strings and that it transmit them only when they are       completed; i.e., it is not necessary to transmit partial       constructions of such elements. 
  126.  
  127.       The problem for manipulations extends beyond an IGCF. Whereas we       know that an IGCF should include segment transformations, segment       highlighting and segment visibility on/off, the transmitter must 
  128.  
  129.  Aguilar                                                         [Page 7] 
  130.  
  131.  
  132.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  133.  
  134.        decide how often to sample an on-going transformation and transmit       its current state. The choice of a sampling frequency will depend       on the available transmission bandwidth. 
  135.  
  136.    D. Low Traffic Volume 
  137.  
  138.       In many of the applications we envision, coordinate graphics will       be transmitted over narrow bandwidth channels, and thus it is       essential to minimize traffic. Accordingly, several requirements       are imposed on an IGCF to take advantage of the characteristics of       the graphics communication intercourse and architecture in order       to minimize traffic. 
  139.  
  140.       An IGCF can help reduce traffic by including the basic geometric       objects from which so many other objects are built. Moreover, an       IGCF should permit the use of objects for the creation of more       complex objects; since reuse is very common, the result is a       reduction of traffic and storage cost. 
  141.  
  142.    E. Preservation of Application Semantic Units 
  143.  
  144.       A related requirement is that an IGCF must include elements to       represent graphical objects corresponding to real world entities       of the intended applications. For example, in a Navy application,       the entities of interest are carriers, submarines, planes, and the       like. We want to communicate such semantic units across systems       and to treat them as unitary objects because, in many       applications, communication is based on creating and operating       such units. If an IGCF has elements to represent such semantic       units, the communication traffic decreases because the entity       definitions can be transmitted only once and then reused, and       because the entities are manipulated as units rather than       separately manipulating their components. 
  145.  
  146.       It turns out that there is a small set of primary operations that       can be applied to a graphical object, and an IGCF must have       elements representing such operations. In contrast to dumb       graphics terminals receiving screen refresh information from a       host, we foresee graphical communication taking place among       intelligent workstations that can exchange encoded operations,       interpret them, and apply them to objects stored locally. 
  147.  
  148.    F. Transmission Batching 
  149.  
  150.       We previously indicated the desirability of conveying to the human       users the real-time tempo of interactive graphics exchanges.       However, it is possible to do so without having to transmit 
  151.  
  152.  Aguilar                                                         [Page 8] 
  153.  
  154.  
  155.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  156.  
  157.        immediately all IGCF elements. As a matter of fact, IGCF elements       should be divided into those causing a change on a displayed       picture and those that do not, although both classes may cause       changes to the stored graphical data structures. 
  158.  
  159.       It is only necessary to transmit immediately those elements       causing a visible change on a displayed picture because they are       the ones whose reception and interpretation delivers information       to a human user. The second class of elements can be batched and       queued for transmission until one element of the first class is       submitted. We call the first class update Group-1, and the second,       update Group-2. 
  160.  
  161.       The aforesaid division is quite important for packet       communications because each packet contains a hefty amount of       overhead control traffic. It is therefore mandatory to batch, into       a packet, as much client data as possible in order to reduce total       traffic. The batching units can be varied in size according to the       network traffic and response time of conference hosts. During       congested periods, the units may have to be increased, thus       lowering the number of messages, and then reduced when congestion       eases, thus increasing the number of messages. 
  162.  
  163.    G. Simple Translation Between IGCF and User Interface 
  164.  
  165.       According to the first requirement, an IGCF must permit the       interoperation of related heterogeneous graphics applications.       Such interoperation has, as an objective, the communication       between human users or between a human and a database.       Correspondingly, the interoperation involves a mapping between the       user interface commands and the IGCF elements. It is not advisable       to use the commands themselves as the IGCF elements; otherwise the       exchange would depend on the communicating systems, and every pair       of communicating systems would require an ad-hoc protocol. 
  166.  
  167.       An additional usability characteristic is that there must be a       simple mapping between IGCF elements and the actions represented       by the user interface commands employed for graphical       communications. This simplicity is a must because every       communicating graphical system must have a translator that ideally       should be very simple. It seems that the inclusion of command       sequence delimiters in the IGCF helps the simplicity since the       delimiters permit keeping a smaller amount of state information       for processing an IGCF stream. 
  168.  
  169.       We have verified the mapping from one set of commands for       audiographics conferencing to the IGCF proposed in this paper. The 
  170.  
  171.  Aguilar                                                         [Page 9] 
  172.  
  173.  
  174.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  175.  
  176.        mapping from user interface commands to IGCF can be done in a       direct and efficient manner; on the other hand, the reverse       mapping, from IGCF to user interface commands, is a more difficult       task. We anticipate that, in order to improve performance, we will       have to map the IGCF elements to calls to lower level subroutines       implementing the user interface actions. Whereas such mapping is       conceptually no more complex than translating IGCF to the commands       themselves, it will require considerably more programming. 
  177.  
  178. III.  ELEMENTS OF AN IGCF 
  179.  
  180.    IGCF Element Classes 
  181.  
  182.       In this section we list the classes of elements that we believe an       IGCF should have in order to exchange vector graphics under the       requirements of the previous section. The classes correspond to       the common function classes in computer graphics interfaces, and       each contains elements corresponding to interface primitives and       attributes. We do not list the elements for each class because       they are exemplified by the elements in the proposed IGCF. 
  183.  
  184.       In the following list, two categories of functions are missing:       functions used to query the status of a graphics system, and input       functions. As a matter of fact, an IGCF only needs to have       elements representing actions that cause a change in the state of       the communicating graphical systems, and the inquire functions       obviously do not change their state. Even though an input function       executed at the transmitting end causes a local change, it is not       necessary to transmit the input command itself. The receivers only       need to get the data input, in IGCF representation, and they can       process the data in any manner, maybe simulating local input       actions. 
  185.  
  186.       Control 
  187.  
  188.          Elements for workstation: initialization, control and          transformation; and elements for normalization transformation.          (The normalization and workstation transformations can be used          to implement zooming.) 
  189.  
  190.       Primitive attributes 
  191.  
  192.          Elements for primitive, segment, and workstation attributes. 
  193.  
  194.       Output primitives 
  195.  
  196.          Elements for output primitives. 
  197.  
  198.  Aguilar                                                        [Page 10] 
  199.  
  200.  
  201.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  202.  
  203.        Segmentation 
  204.  
  205.          Elements for basic segmentation and workstation independent          segment storage. 
  206.  
  207.          Object manipulations can be implemented with segment          transformations. Object insertion can be implemented using          segment recall and segment visibility. Object deletion can be          implemented using segment deletion and segment visibility.          Object selection can use segment highlighting as feedback to          the user. 
  208.  
  209.       Dynamics 
  210.  
  211.          A considerable part of the graphical information exchanged          through an IGCF will be in the form of pointer movements over a          background picture. Pointer tracking is used to transmit points          sampled from a graphical pointer trace in order to reproduce,          at the receivers, the movement of the pointer at the sender          site. This can be done either by just moving the cursor or by          tracing its movement with a line. Rubber band echoes are used          to signal areas, routes, and scopes in a highly dynamic way.          These are indicated by an echo reference point and a feedback          point. 
  212.  
  213.    Hierarchical object definitions 
  214.  
  215.       The requirement for preserving application semantics dictated that       an IGCF include the means to represent objects that stand for       application entities, and to manipulate such entities as graphical       units. Furthermore, the low-traffic-volume requirement called for       the use of already existing objects for the creation of new ones. 
  216.  
  217.       One way to meet the aforesaid requirements is by including in an       IGCF the means to represent object hierarchies. In such a       hierarchy an object is a set of output primitives associated with       a set of attribute values or a set of lower-level objects, each       associated with a composition of transformations [12]. 
  218.  
  219.       Graphics segments can be used to implement objects in the lowest       level of a hierarchy. The definition of a higher-level object can       be represented by sequences of IGCF elements describing the       definition process. Such a definition can be done by instantiating       lower-level objects with specific transformation parameters. Thus       an IGCF must incorporate brackets to mark the beginning and end of       object definitions, object instantiations, and object       redefinitions. 
  220.  
  221.  Aguilar                                                        [Page 11] 
  222.  
  223.  
  224.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  225.  
  226.        In order to complement the mechanism for object definition, an       IGCF must permit the use of a flexible alphabet for creating       object identifiers that ensure the uniqueness of an identifier in       a hierarchy. The construction of the object identifiers is not       part of an IGCF, an IGCF only has to represent the identifiers.       Further, an identifier has to be independent of a communication       session and a particular graphics system so that identifiers       created at a host during one session can be used, in other       sessions possibly involving other hosts, to recall the objects       they label. 
  227.  
  228.       We also leave to the communicating systems the implementation of       mechanisms to resolve duplicate identifiers when merging two       hierarchies, created in different sessions. In this paper we shall       limit ourselves to the warning that segment numbers do not qualify       as identifiers because they depend on the session and state of the       system in which they are created. 
  229.  
  230.       In addition to object definition and instantiation, an IGCF should       have elements representing operations on objects. The operations       so far identified are: transformation, deletion, display,       disappearance, expose, and hide. Expose is used to uncover objects       on a screen that are hidden by other objects; hide is used to       place an object behind others on a screen. 
  231.  
  232. IV.  A PROPOSED IGCF 
  233.  
  234.    A. Using the GKSM as a Basis 
  235.  
  236.       An IGCF must be usable to transmit all graphical actions in a       conference session. This suggests to base an IGCF on a standard       session-capture graphics metafile, thus ensuring compatibility       with a large user population. We have based the proposed IGCF,       PIGCF, on the GKSM session-capture metafile specification because       GKSM contains many of the elements identified for an IGCF [14]. In       addition, the audit trail orientation of GKSM permits the       recording of interactive communication sessions for later play       out, and this is a feature that we anticipate will be frequently       used. 
  237.  
  238.       The GKSM is a proper subset of our PIGCF and thus any graphical       system developed to handle the PIGCF, can read a GKSM metafile.       Conversely, the applications using the PIGCF should have an option       for constraining session recording only to the GKSM part, possibly       suppressing some session events.  By doing so, we will be able to       ship a GKSM metafile to any correspondent who has GKSM 
  239.  
  240.  
  241.  
  242. Aguilar                                                        [Page 12] 
  243.  
  244.  
  245.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  246.  
  247.        interpretation software.  Alternatively, an application with a       GKSM interpreter but without an PIGCF interpreter can read a PIGCF       file interpreting only the GKSM part and ignoring the rest. 
  248.  
  249.       Whereas the GKSM was specified for the GKS system, we believe that       the GKSM is a sound and general basis for all of our 2-D       applications. We feel that the GKSM specification is not parochial       to GKS systems but contains all the most useful items desired in a       metafile. In the future, we expect to tackle applications       requiring 3-D, like interactive repair and maintenance aids. When       GKS be augmented with 3-D capabilities [13], we will extend the       PIGCF with any necessary elements. 
  250.  
  251.       We are aware that the GKSM specification is not part of the GKS       standard itself but is an appendix recommending such a metafile       format. Nevertheless, all the GKS vendor implementations that we       know of, at the present time, support GKSM metafile output and       interpretation. If this trend continues, as we expect, we will be       able to exchange graphical files with a large base of GKS       installations. There will indeed be many of them since GKS will be       adopted as an standard by ISO and by many national standard bodies       in the near future. 
  252.  
  253.    B. Positional Information Coordinates 
  254.  
  255.       Following the GKSM convention, the PIGCF positional information is       in normalized device coordinates, NDC. Thus the originator of a       conference must indicate the workstation window for the       conference. This window is the sub-rectangle of the NDC space       enclosing the area of interest for the conference. In most cases,       the participating workstations will take this window as their own.       However, the graphical systems should provide for the possibility       of a workstation choosing a different workstation window, which       may contain the conference window or just overlap it. Except for       special cases, a conference originator should not state a       conference workstation viewport. In this manner, each workstation       can display its workstation viewport in the most convenient       portion of the screen. 
  256.  
  257.       There will be conferences where the participating workstations       will maintain the positional information in world coordinates, WC.       It might be necessary to reconstruct the world dimensions after       transmission because such dimensions have a relevant meaning for       the application, like sizes of components or distances. In this       case, a workstation will have to map from WC to NDC before       transmitting and from NDC to WC after receiving. At the outset,       the conference originator has to specify the world window and the 
  258.  
  259.  Aguilar                                                        [Page 13] 
  260.  
  261.  
  262.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  263.  
  264.        NDC viewport used in the conference in order for the conferencing       workstations to do such mappings. These mappings could be done by       the presentation layer, in terms of the ISO Open Systems       Interconnection Reference Model, in a manner that is transparent       to the communicating application programs. 
  265.  
  266.       Most often all workstations will have the same world windows and       NDC viewports. However, the graphical systems will provide for the       possibility of a workstation choosing a different window or       viewport, but such workstation will have to record the conference       ones for doing the aforesaid mappings. There are graphical       systems, like the ACM Core, that do not provide for a workstation       transformation. In such systems, the NDC viewport is considered to       be the workstation window for the aforesaid mappings. 
  267.  
  268.    C. Layers of the PIGCF 
  269.  
  270.       There are two levels in the PIGCF a lower level L and an upper one       U. The lower level L is just the GKSM metafile specification as       defined in Appendix E of the proposed GKS ANSI standard [14].  We       have excerpted most of Appendix E of [14] at the end of this RFC       as our Appendix A.  All level L elements belong to the update       Group-1 except: SET DEFERRAL STATE, the output primitive attribute       elements, the workstation attribute elements, CLIPPING RECTANGLE,       CREATE SEGMENT, CLOSE SEGMENT, RENAME SEGMENT, SET SEGMENT       PRIORITY, and SET DETECTABILITY. 
  271.  
  272.       The upper level U is those elements that we believe complement the       GKSM for general on-line graphical exchanges. This layering       conforms to the graphics metafile level-structure described in       Enderle et. al [15]. Under such structuring, an application       oriented metafile can be based on graphical metafiles. 
  273.  
  274.    D. PIGCF Elements in the Level U 
  275.  
  276.       The level U items are encoded as GKSM user item elements so that a       PIGCF file will conform to the GKSM metafile specification.       Accordingly, a PIGCF file will be a GKSM metafile in its entirety.       We use the same formatting conventions as the GKSM specification.       Those unfamiliar with these conventions should read the beginning       of the appendix. The following items belong to the second update       group: the two items for object definition, the two items for       object redefinition, the two items for object instantiation, the       two items for normalization transformation, SELECT COMPONENT, and       RECALL LIBRARY. The remaining items belong to the first update       group. 
  277.  
  278.  
  279.  
  280. Aguilar                                                        [Page 14] 
  281.  
  282.  
  283.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  284.  
  285.        Items for Object Definition 
  286.  
  287.          BEGIN DEFINITION 
  288.  
  289.             | 'GKSM 120' | L | 
  290.  
  291.             Indicates beginning of object definition sequence 
  292.  
  293.          END DEFINITION 
  294.  
  295.             | 'GKSM 121' | L | I | 
  296.  
  297.             Indicates end of object definition sequence. I(Nc): object             identifier ( N preceding c, i, r means an arbitrary number             of characters, integers, or reals.) Objects defined             interactively are made visible on the screen; i.e. they are             automatically instantiated. If only the definition is to be             kept but not the image, a DISAPPEAR item must follow. 
  298.  
  299.          BEGIN REDEFINITION 
  300.  
  301.             | 'GKSM 122' | L | I | 
  302.  
  303.             Indicates beginning of object redefinition sequence             I(Nc): object identifier 
  304.  
  305.          END REDEFINITION 
  306.  
  307.             | 'GKSM 123' | L | 
  308.  
  309.             Indicates end of object redefinition sequence 
  310.  
  311.       Items for Object Instantiation 
  312.  
  313.          BEGIN INSTANTIATION 
  314.  
  315.             | 'GKSM 124' | L | I | 
  316.  
  317.             Indicates beginning of object instantiation sequence             I(Nc): Object identifier 
  318.  
  319.          END INSTANTIATION 
  320.  
  321.             | 'GKSM 125' | L | 
  322.  
  323.             Indicates end of object instantiation sequence 
  324.  
  325.  
  326.  
  327. Aguilar                                                        [Page 15] 
  328.  
  329.  
  330.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  331.  
  332.        Items for Object Manipulation 
  333.  
  334.          TRANSFORM OBJECT 
  335.  
  336.             | 'GKSM 126' | L | C | I | M | 
  337.  
  338.             Apply transformation M to object I             C: number of characters in identifier             I(Nc): object id             M(6r): upper and center rows of a 3x3 matrix representing                    a 2D homogeneous transformation [12].                    M 11 M 12 M 13 M 21 M 22 M 23 
  339.  
  340.          DELETE OBJECT 
  341.  
  342.             | 'GKSM 127' | L | I | 
  343.  
  344.             I(Nc): object identifier 
  345.  
  346.          DISPLAY OBJECT 
  347.  
  348.             | 'GKSM 128' | L | I | 
  349.  
  350.             Turn on visibility of object I             I(Nc): object identifier 
  351.  
  352.          DISAPPEAR OBJECT 
  353.  
  354.             | 'GKSM 129' | L | I | 
  355.  
  356.             Turn off visibility of object I             I(Nc): object identifier 
  357.  
  358.          EXPOSE OBJECT 
  359.  
  360.             | 'GKSM 130' | L | I | 
  361.  
  362.             Redisplay object I on top of any overlapping objects             I(c):  object identifier 
  363.  
  364.          HIDE OBJECT 
  365.  
  366.             | 'GKSM 131' | L | I | 
  367.  
  368.             Redisplay object I behind any overlapping objects             I(c):  object identifier 
  369.  
  370.  
  371.  
  372. Aguilar                                                        [Page 16] 
  373.  
  374.  
  375.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  376.  
  377.           SELECT COMPONENT 
  378.  
  379.             | 'GKSM 132' | L | I | P | 
  380.  
  381.             Select component P of object I             I(c):  object identifier             P(i):  pick id of component             This is used to select a group of output primitives             identified by P in a segment associated with I. 
  382.  
  383.          ERASE COMPONENT 
  384.  
  385.             | 'GKSM 133' | L | I | P | 
  386.  
  387.             Erase component P of object I             I(c):  object identifier             P(i):  pick id of component 
  388.  
  389.             This erases a group of output primitives identified by P in             a segment associated with I. This element can be used only             within a REDEFINE OBJECT sequence. 
  390.  
  391.       Items for Normalization Transformation 
  392.  
  393.          SET WINDOW 
  394.  
  395.             | 'GKSM 134' | L | W | 
  396.  
  397.             Define boundaries of world window for normalization             transformation.             W(4r): limits of world window (XMIN, XMAX, YMIN, YMAX ) 
  398.  
  399.          SET VIEWPORT 
  400.  
  401.             | 'GKSM 135' | L | V | 
  402.  
  403.             Define boundaries of NDC viewport for normalization             transformation.             V(4r): limits of NDC viewport (XMIN, XMAX, YMIN, YMAX ) 
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  Aguilar                                                        [Page 17] 
  414.  
  415.  
  416.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  417.  
  418.        Items for Other Operations 
  419.  
  420.          ABORT 
  421.  
  422.             | 'GKSM 136' | L | 
  423.  
  424.             Abort ongoing operation transmitted in PIGCF stream. This             provides the means to abort unwanted or erroneous             operations. Only the innermost operation of a nested             sequence is aborted; successive aborts can be used to get             out of several levels of operation nesting. 
  425.  
  426.          POINTER TRACKING 
  427.  
  428.             | 'GKSM 137' | L | T | P | 
  429.  
  430.             Update graphical pointer position to P             T(i):  0 causes only cursor to be moved                    1 causes cursor movement to be traced with                    a line             P(p):  a point sampled from graphical pointer                    movement trace 
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458. Aguilar                                                        [Page 18] 
  459.  
  460.  
  461.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  462.  
  463.           RUBBER BAND 
  464.  
  465.             | 'GKSM 138' | L | T | P | 
  466.  
  467.             Echo a rubber band of type T with given reference and             feedback points. The first occurrence of this item in a             sequence carries the coordinates of the echo reference             point. Subsequent occurrences carry updates to a pointer             position indicating an echo feedback point. 
  468.  
  469.             T(i):  echo type                    ( 0 echo reference point;                    > 0 echo feedback:                      1 = line,                      2 = rectangle,                      3 = circle )             P(r):  echo reference point (T = 0),                    or echo feedback point (T > 0) 
  470.  
  471.                The reference and feedback points are:                   T = 1 - reference is one end of line, feedback is                           other end.                   T = 2 - reference is one corner of rectangle, feedback                           is opposite corner.                   T = 3 - reference is center of circle, feedback is                           perimeter point. 
  472.  
  473.          RECALL LIBRARY 
  474.  
  475.             | 'GKSM 139' | L | F | 
  476.  
  477.             Recall graphical library in file F             F(i):  name of file containing library 
  478.  
  479.             The graphical pictures in F and all their components become             available for use during the communication session. The             pictures are assumed to be recorded with the PIGCF, and             their components have to be displayed with DISPLAY OBJECT             elements or similar actions so that the pictures become             visible. 
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489. Aguilar                                                        [Page 19] 
  490.  
  491.  
  492.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  493.  
  494.  V.  AN ARCHITECTURE FOR PIGCF PROCESSING 
  495.  
  496.    This section presents an example software architecture for the    generation and interpretation of PIGCF in a multimedia conferencing    system using GKS as the underlying programmer's graphics interface.    This section should not be interpreted as a definitive statement of    such an architecture, but only as an exercise to illustrate how the    format proposed in this paper fits within the overall framework of a    conferencing system. Choosing GKS simplifies the example    architecture; nevertheless, other graphics packages can be used by    adding, to the architecture, the modules to interpret and generate    the PIGCF level L items. 
  497.  
  498.    Figure 1 shows the major software modules charged with graphics    interaction and display at a conferencing workstation. This is a    familiar programmer's view of the graphics pipeline. A conferencing    application program updates data structures and uses    device-independent graphics services through a language binding.    These services, in turn, use device-dependent graphics services that    call on device drivers to accept input and to present graphic    pictures. The application performs numerous other functions for    conference management and control of other media streams, but we need    not consider them in this example. 
  499.  
  500.    In Figure 2, the basic graphics pipeline has been augmented with the    software modules involved in the generation, transmission, reception,    and interpretation of PIGCF streams. The application has a module for    interpreting the lower and higher levels of PIGCF and one for    generating the upper level U. The device-independent graphics    services include modules for generating and interpreting the lower    level, L. This reflects the current practice of including the    generation and interpretation functions in the graphics package.    There is also a module that transmits the outgoing PIGCF streams to    remote work stations. Similarly, there is a module that receives    incoming streams from remote stations. In actual practice, the    transmit and receive modules are decomposed into several processes    implementing a layered protocol architecture. A process receives both    levels of PIGCF and writes them into a conference record metafile for    future use. A router process receives and forwards PIGCF traffic from    and to the modules previously referred. This router is likely to be    replaced by independent communication interfaces between pairs of    modules exchanging PIGCF. 
  501.  
  502.    The thick arrows show the flow of outgoing PIGCF, whereas the thin    arrows show the incoming PIGCF flow. We first follow the outgoing    path, starting at the application.  The application processes local    user actions which are transformed into data structure updates, level 
  503.  
  504.  Aguilar                                                        [Page 20] 
  505.  
  506.  
  507.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  508.  
  509.     U PIGCF elements, and executions of device independent graphics    subroutines that, among other things, generate level L PIGCF (GKSM)    elements. 
  510.  
  511.    The router merges both level streams according to generation order    and sends them to the local copy of the conference record and to the    transmission module. The latter batches Group-2 PIGCF items until it    receives a Group-1 item. It also timestamps the PIGCF stream to    synchronize its play-back, at the receiver, with the play-back of    other media information.  The PIGCF may be separated into traffic    categories transmitted over diverse communication facilities    according to the transport services required by the categories, for    example, real-time service for pointer updates, highly reliable    transmission for new object definitions, or low-priority service for    graphical library transfers. Finally, the transmit module must    acknowledge the reception of incoming PIGCF, and of other media    traffic as well. 
  512.  
  513.    The receive module is the entry point for incoming PIGCF streams that    may come within diverse traffic categories requiring merging. It    checks the timestamps for synchronizing PIGCF items with related data    in other media, for example, voice. It is possible to include here a    high-level error-correction function that validates the received    streams using state and context information about PIGCF syntax and    semantics. The receive module passes the streams to the router which    forwards them to three processes: It sends level L items to the GKSM    interpreter which produces the corresponding changes on the displayed    picture; it sends level L and level U items to the conference record,    as well as to the PIGCF interpretation code in the application. The    level U items cause updates to both the data structures modeling    object hierarchies, and the pictorial representation of the    hierarchies, through the execution of graphics services. U items also    update graphics cursors and may recall new graphics libraries. The    application must process level L items because they could indicate    updates to the data structures; this happens if, for example, the    structures record attribute value information for the object    hierarchies. The application coordinates these actions with other    media effects according to the timestamps. Conference record    play-back is done in off-line mode. Record items are received by the    router and thereafter processed similarly to incoming PIGCF. 
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523. Aguilar                                                        [Page 21] 
  524.  
  525.  
  526.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  527.  
  528.                   +------------+        +-------------+                  |APPLICATION |        |    OTHER    |                  |    DATA    |        |    MEDIA    |                  |STRUCTURES  |        |-------------|                  +-----|------+        |  CONFERENCE |                        |---------->    | APPLICATION |                                        |   GRAPHICS  |                        |---------->    |             |                  +-----|------+        |             |                  |  LANGUAGE  |        +-------------+                  |  BINDING   |                                         +-----|------+        +-------------+                        |---------->    |   DEVICE-   |                  +------------+        | INDEPENDENT |                  |  DEVICE    |        |   GRAPHICS  |                  |  DEPENDENT |  <---> |   SERVICES  |                  |  GRAPHICS  |        |             |                  |  SERVICES  |        |             |                  +-----|------+        |             |                        |               |             |                        v               |             |                  +------------+        |             |                  |    DEVICE  |        |             |                  |  DRIVERS   |        |             |                  +------------+        +-------------+ 
  529.  
  530.                  FIGURE 1 - THE BASIC GRAPHICS PIPELINE                         IN A CONFERENCING SYSTEM 
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552. Aguilar                                                        [Page 22] 
  553.  
  554.  
  555.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  556.  
  557.  +------------+    +------------+                 +------------------+ |APPLICATION |    |   OTHER    |                 |    TRANSMIT      | |   DATA     |    |   MEDIA    |                 |       ACK        |=> | STRUCTURES |    |------------|     +-----+     | SEPARATE TRAFFIC |=> +-----|------+    | CONFERENCE |     |     |===> |    BATCHING      |=>       |---------->|APPLICATION |     |     |     |   TIMESTAMPING   |                   |  GRAPHICS  |     |     |     +------------------+       |---------->|------------|     |     |       |           | PIGCF L, U | <---|     |     +------------------+ +-----|------|    | INTERPRETER|     |     |     |     RECEIVE      | | LANGUAGE   |    +------------+     |  R  |     |  MERGE TRAFFIC   |<- | BINDING    |    | PIGCF U    |===> |  O  | <---| CHECK TIMESTAMPS |<- +-----|------+    |  GENERATOR |     |  U  |     | ERROR CORRECTION |<-       |           +------------+     |  T  |     |                  |       ------------------|            |  E  |     +------------------+ +------------+    +-----V------+     |  R  | |  DEVICE    |    |  DEVICE    |     |     |     +------------------+ | DEPENDENT  |    |INDEPENDENT |     |     |====>|                  | | GRAPHICS   |<-->|  GRAPHICS  |     |     |---->|    CONFERENCE    | | SERVICES   |    |  SERVICES  |     |     |     |       RECORD     | |            |    |            |     |     |     |                  | +-----|------+    |------------|     |     |     +------------------+       |           |    GKSM    |     |     |       v           | INTERPRETER|<--- |     |       <--- INCOMING PIGCF +------------+    +------------+     |     | |   DEVICE   |    |    GKSM    |     |     |       ===> OUTGOING PIGCF | DRIVERS    |    | GENERATOR  |===> |     | +------------+    +------------+     +-----+ 
  558.  
  559. FIGURE 2 - A CONFERENCING SOFTWARE ARCHITECTURE FOR PROCESSING PIGCF 
  560.  
  561. VI.  CONCLUSIONS 
  562.  
  563.    Teleconferencing and other multi-media applications will be part of    the communication resources available to organizations in the near    future. This will prompt computer graphics and computer communication    practitioners to address the issue of application-to-application    graphics communication. A key element of the issue is a protocol, and    a key component of the protocol is a data format. We have presented    the operational requirements for such a protocol and have proposed a    format that fulfills these requirements. 
  564.  
  565.    At present, none of the existing or emerging graphics standards can    be used as the needed protocol or as a format for the protocol, but    this may change as the standards evolve.  We are monitoring the    standards development and will study the use of some of them as a    format basis, in particular the CGI.  Nevertheless, the computer 
  566.  
  567.  Aguilar                                                        [Page 23] 
  568.  
  569.  
  570.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  571.  
  572.     communication community badly needs experience with multi-media    conferencing implementations. In order for these applications to    happen, one can base a graphics communication protocol on an official    or on a de-facto standard that is likely to gain wide use thus    assuring interoperability with a broad user base.  We believe that,    by using the GKSM session metafile, we are moving in the proper    direction. 
  573.  
  574.    Planning the software architecture for generating and interpreting    the proposed PIGCF has brought up some problems we will confront as    we continue our work toward the development of a complete graphics    protocol.  This is being done as part of the SRI on-going program in    multimedia communications.  Within this program, we are implementing    a simple multi-media conferencing prototype and will design a more    complete one.  The experience from both exercises will be a valuable    input to the protocol architecture design. 
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608. Aguilar                                                        [Page 24] 
  609.  
  610.  
  611.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  612.  
  613.  APPENDIX A 
  614.  
  615.    Excerpt from "Draft Proposal: Graphical Kernel System" [14] 
  616.  
  617.    E.2  Metafile Based on ISO DIS7942 
  618.  
  619.       This metafile may be categorized as one which aims to provide a       means of recording the exact sequence of function calls made to       GKS. Its functional capability covers the entire range of GKS       output functions, from level m to level 2. It is, therefore,       suitable for applications where the individual graphics actions       need to be 'played back', perhaps with selective graphical editing       being done by the interpreter. 
  620.  
  621.       Two encodings have been specified for this metafile. One encoding       is inefficient for many applications. The second allows an       unspecified binary format. The remainder of this IGCF appendix       gives full details of these metafile structures and encodings. 
  622.  
  623.       E.2.1 File Format and Data Format 
  624.  
  625.          The GKS metafile is built up as a sequence of logical data          items. The file starts with a file header in fixed format which          describes the origin of the metafile (author, installation),          the format of the following items, and the number          representation. The file ends with an end item indicating the          logical end of the file. In between these two items, the          following information is recorded in the sense of an audit          trail: 
  626.  
  627.             a)      workstation control items and message items; 
  628.  
  629.             b)      output primitive items, describing elementary                     graphics objects; 
  630.  
  631.             c)      attribute information, including output primitive                     attributes; segment attributes, and workstation                     attributes; 
  632.  
  633.             d)      segment items, describing the segment structure and                     dynamic segment manipulations; 
  634.  
  635.             e)      user items. 
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  Aguilar                                                        [Page 25] 
  642.  
  643.  
  644.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  645.  
  646.           The overall structure of the GKS metafile is as follows: 
  647.  
  648.             FILE:     |file  |item|---|item|---|end |                       |header| 1  |   | i  |   |item| 
  649.  
  650.             ITEM:     |item   |item data record|                       |header |                | 
  651.  
  652.             ITEM      |'GKSM'  |identification|length of item data| 
  653.  
  654.             HEADER:   |optional|    number    |       in bytes    | 
  655.  
  656.          All data items except the file header have an item header          containing: 
  657.  
  658.             a)      the character string 'GKSM' (optional) which is                     present to improve legibility of the file and to                     provide an error control facility; 
  659.  
  660.             b)      the item type identification number which indicates                     the kind of information that is contained in the                     item; 
  661.  
  662.             c)      the length of the item data record. 
  663.  
  664.          The lengths of these fields of the item header are          implementation dependent and are specified in the file header.          The content of the item data record is fully described below          for each item type. 
  665.  
  666.          The metafile contains characters, integer numbers, and real          numbers marked (c), (i), (r) in the item description.          Characters in the metafile are represented according to ISO 646          and ISO 2022. Numbers will be represented according to ISO 6093          using format F1 for integers and format F2 for reals. (Remark:          Formats F1 and F2 can be written and read via FORTRAN formats I          and F respectively.) 
  667.  
  668.          Real numbers describing coordinates and length units are stored          as normalized device coordinates. The workstation          transformation, if specified in the application program for a          workstation writing a metafile of this format, is not performed          but WORKSTATION WINDOW and WORKSTATION VIEWPORT are stored in          data items for later usage. Real numbers may be stored as          integers. In this case transformation parameters are specified          in the file header to allow proper transformation of integers          into normalized device coordinates. 
  669.  
  670.  Aguilar                                                        [Page 26] 
  671.  
  672.  
  673.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  674.  
  675.           For reasons of economy, numbers can be stored using an internal          binary format. As no standard exists for binary number          representation, this format limits the portability of the          metafile. The specification of such a binary number          representation is outside the scope of this document. 
  676.  
  677.          When exchanging metafiles between different installations, the          physical structure of data sets on specific storage media          should be standardized. Such a definition is outside the scope          of this standard. 
  678.  
  679.    E.3  Generation of Metafiles 
  680.  
  681.       Table E1 contains a list, by class, of all GKS functions which       apply to workstations of category MO, and their effects on this       GKSM. In the table, GKSM-OUT is a workstation identifier       indicating a workstation writing a metafile of this format. 
  682.  
  683.       The concepts of clipping rectangle and clipping indicator are       encapsulated in one metafile item which specifies a clipping       rectangle. This item is written to the metafile on activate       workstation with the values (0, 1, 0, 1), if the clipping       indicator is OFF, or the viewport of the current normalization       transformation, if the clipping indicator is ON. If the viewport       of the current normalization transformation is redefined or a       different normalization transformation is selected when the       clipping indicator is ON, a further clipping rectangle item is       written. If the clipping indicator is changed to OFF, a clipping       rectangle item (0, 1, 0, 1) is written. If the clipping indicator       is changed to ON, an item containing the viewport of the current       normalization transformation is written. This is analogous to the       handling of clipping in segments (see 4.7.6 [14]). 
  684.  
  685.        GKS functions which apply to workstations        GKSM item created of category MO                                   or effect ======================================================================== 
  686.  
  687. Control functions 
  688.  
  689. OPEN WORKSTATION (GKSM-OUT,...)                  - (file header)                                                  1 (CONDITIONAL) CLOSE WORKSTATION (GKSM-OUT)                     0 (end item) ACTIVATE WORKSTATION (GKSM-OUT)                  (61, 21-44)                                                  ensure attributes                                                  current;                                                  enable output 
  690.  
  691.  Aguilar                                                        [Page 27] 
  692.  
  693.  
  694.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  695.  
  696.  DEACTIVATE WORKSTATION (GKSM-OUT)                disable output CLEAR WORKSTATION (GKSM-OUT,...)                 1                                                  2 REDRAW ALL SEGMENTS ON WORKSTATION (GKSM-OUT) UPDATE WORKSTATION (GKSM-OUT,...)                3 SET DEFERRAL STATE (GKSM-OUT,...)                4 MESSAGE (GKSM-OUT,...)                           5 (message) ESCAPE                                           6 ________________________________________________________________________ 
  697.  
  698. Output Primitives 
  699.  
  700. POLYLINE                                         11 POLYMARKER                                       12 TEXT                                             13 FILL AREA                                        14 CELL ARRAY                                       15 GENERALIZED DRAWING PRIMITIVE                    16 ________________________________________________________________________ 
  701.  
  702. Output Attributes 
  703.  
  704. SET POLYLINE INDEX                               21 SET LINETYPE                                     22 SET LINEWIDTH SCALE FACTOR                       23 SET POLYLINE COLOUR INDEX                        24 SET POLYMARKER INDEX                             25 SET MARKER TYPE                                  26 SET MARKER SIZE SCALE FACTOR                     27 SET POLYMARKER COLOUR INDEX                      28 SET TEXT INDEX                                   29 SET TEXT FONT AND PRECISION                      30 SET CHARACTER EXPANSION FACTOR                   31 SET CHARACTER SPACING                            32 SET TEXT COLOUR INDEX                            33 SET CHARACTER HEIGHT                             34 SET CHARACTER UP VECTOR                          34 SET TEXT PATH                                    35 SET TEXT ALIGNMENT                               36 SET FILL AREA INDEX                              37 SET FILL AREA INTERIOR STYLE                     38 SET FILL AREA STYLE INDEX                        39 SET FILL AREA COLOUR INDEX                       40 
  705.  
  706. SET PATTERN SIZE                                 41 SET PATTERN REFERENCE POINT                      42 
  707.  
  708.  
  709.  
  710. Aguilar                                                        [Page 28] 
  711.  
  712.  
  713.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  714.  
  715.  SET ASPECT SOURCE FLAGS                          43 SET PICK IDENTIFIER                              44 ________________________________________________________________________ 
  716.  
  717. Workstation Attributes 
  718.  
  719. SET POLYLINE REPRESENTATION (GKSM-OUT,...)       51 SET POLYMARKER REPRESENTATION (GKSM-OUT,...)     52 SET TEXT REPRESENTATION (GKSM-OUT,...)           53 SET FILL AREA REPRESENTATION (GKSM-OUT,...)      54 SET PATTERN REPRESENTATION (GKSM-OUT,...)        55 SET COLOUR REPRESENTATION (GKSM-OUT,...)         56 ________________________________________________________________________ 
  720.  
  721. Transformation Functions 
  722.  
  723. SET WINDOW of current normalization              34, 41, 42 transformation SET VIEWPOINT of current normalization           61, 34, 41, 42 transformation SELECT NORMALIZATION TRANSFORMATION              61, 34, 41, 42 SET CLIPPING INDICATOR                           61 SET WORKSTATION WINDOW (GKSM-OUT,...)            71 SET WORKSTATION WINDOW VIEWPORT (GKSM-OUT,...)   72 
  724.  
  725. Note:  item 61 (CLIPPING RECTANGLE) is described more fully in E.2.2. 
  726.  
  727. Note: When the current normalization transformation is altered, items corresponding to attributes containing coordinate information are sent (items 34, 41, and 42). ________________________________________________________________________ 
  728.  
  729. Segment Functions 
  730.  
  731. CREATE SEGMENT                                   81 CLOSE SEGMENT                                    82 RENAME SEGMENT                                   83 DELETE SEGMENT                                   84 
  732.  
  733. DELETE SEGMENT FROM WORKSTATION (GKSM-OUT,...)   84 ASSOCIATE SEGMENT WITH WORKSTATION               81, (21-44), (11-16), (GKSM-OUT,...)                                   (61), 82 COPY SEGMENT TO WORKSTATION (GKSM-OUT,...)       (21-44), (11-16), (61) 
  734.  
  735. INSERT SEGMENT                                   (21-44), (11-16), (61) ________________________________________________________________________ 
  736.  
  737.  
  738.  
  739. Aguilar                                                        [Page 29] 
  740.  
  741.  
  742.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  743.  
  744.  Segment Attributes 
  745.  
  746. SET SEGMENT TRANSFORMATION                       91 
  747.  
  748. SET VISIBILITY                                   92 SET HIGHLIGHTING                                 93 SET SEGMENT PRIORITY                             94 SET DETECTABILITY                                95 ________________________________________________________________________ 
  749.  
  750. Metafile Functions 
  751.  
  752. WRITE ITEM TO GKSM                               > 100 ________________________________________________________________________ 
  753.  
  754.    E.4  Interpretation of Metafiles 
  755.  
  756.       E.4.1  Introduction 
  757.  
  758.          The interpretation of metafiles in GKS is described in 4.9          [14]. The effects of INTERPRET ITEM for all types of metafile          item are described in the following sections. Items are grouped          by class of functionality. 
  759.  
  760.       E.4.2  Control Items 
  761.  
  762.          Interpretation of items in this class is described under the          definitions of each item in E.5. ([14] reads "E.2.4" instead of          "E.5" which we believe is an error). 
  763.  
  764.       E.4.3  Output Primitives 
  765.  
  766.          Interpretation of items in this class generates output          corresponding to the primitive functions, except that          coordinates of points are expressed in NDC. Primitive          attributes bound to primitives are those which have originated          from interpretation of primitive attribute items in this          particular metafile (see E.4.4). 
  767.  
  768.       E.4.4  Output Primative Attributes 
  769.  
  770.          Interpretation of items in this class sets values for use in          the display of primitives subsequently originating from this          particular metafile (see E.4.3). No changes are made to entries          in the GKS state list. 
  771.  
  772.  
  773.  
  774.  Aguilar                                                        [Page 30] 
  775.  
  776.  
  777.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  778.  
  779.        E.4.5  Workstation Attributes 
  780.  
  781.          Interpretation of items in this class has the same effect as          invocation of the corresponding GKS functions shown in Table          E1. The GKS functions are performed on all active workstations. 
  782.  
  783.       E.4.6  Transformations 
  784.  
  785.          Interpretation of a clipping rectangle item sets values for use          in clipping output primitives subsequently originating from          this particular metafile. No changes are made to entries in the          GKS state list. Interpretation of other items in this class          (WORKSTATION WINDOW and WORKSTATION VIEWPORT) causes the          invocation of the corresponding GKS functions on all active          workstations. 
  786.  
  787.       E.4.7   Segment Manipulation 
  788.  
  789.          Interpretation of items in this class has the same effect as          invocation of the corresponding GKS functions shown in Table          E1. (Item 84 causes an invocation of DELETE SEGMENT.) 
  790.  
  791.       E.4.8 Segment Attributes 
  792.  
  793.          Interpretation of items in this class has the same effect as          invocation of the corresponding GKS functions shown in Table          E1. 
  794.  
  795.    E.5  Control Items 
  796.  
  797.       FILE HEADER 
  798.  
  799.          | GKSM | N | D | V | H | T | L | I | R | F | RI | ZERO | ONE | 
  800.  
  801. All fields in the file header item have fixed length.  Numbers are formated according to ISO 6093 - Format F1. 
  802.  
  803. General Information: 
  804.  
  805. GKSM    4 bytes   containing string 'GKSM' N       40 bytes  containing name of author/installation D       8 bytes   date (year/month/day, e.g., 79/12/31) V       2 bytes   version number: the metafile described here has                   version number 1 H       2 bytes   integer specifying how many bytes of the string 'GKSM'                   are repeated at the beginning of each record.                   Possible values:  0, 1, 2, 3, 4 
  806.  
  807.  Aguilar                                                        [Page 31] 
  808.  
  809.  
  810.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  811.  
  812.  T       2 bytes   length of item type indicator field L       2 bytes   length of item data record length indicator field I       2 bytes   length of field for each integer in the                   item data record (applied to all data marked (i)                   in the item description) R       2 bytes   length of field for each real in the item data record                   (applies to all data marked (r) in the item                   description). 
  813.  
  814. Specification of Number Representation: 
  815.  
  816. F       2 bytes   Possible values:  1, 2.  This applies to all data                   in the items marked (i) or (r) and to item type                   and item data record length:                   1:  all numbers are formatted according to ISO 6093                   2:  all numbers (except in the file header) are                   stored in an internal binary format RI      2 bytes   Possible values:  1, 2.  This is the number                   representation for data marked (r):                   1 = real, 2 = integer ZERO    11 bytes  integer equivalent to 0.0, if RI = 2 ONE     11 bytes  integer equivalent to 1.0, if RI = 2 
  817.  
  818.          After the file header, which is in fixed format, all values in          the following items are in the format defined by the file          header. For the following description, the setting: 
  819.  
  820.                           H = 4; T = 3; F = 1 
  821.  
  822.          is assumed. In addition to formats (c), (i) and (r), which are          already described, (p) denotes a point represented by a pair of          real numbers (2r). The notation allows the single letter to be          preceded by an expression, indicating the number of values of          that type. 
  823.  
  824.          {Explanatory comments have been added to some item          specifications; these are not part of the GKS Appendix E and          they are enclosed in braces {}. A complete definition of the          generation and interpretation of the GKSM items is given by the          definition of the corresponding GKS functions [14].} 
  825.  
  826.       END ITEM 
  827.  
  828.          | 'GKSM 0' | L | 
  829.  
  830.          Last item of every GKS Metafile. Sets condition for the error. 
  831.  
  832.  
  833.  
  834. Aguilar                                                        [Page 32] 
  835.  
  836.  
  837.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  838.  
  839.        CLEAR WORKSTATION 
  840.  
  841.          | 'GKSM 1' | L | C | 
  842.  
  843.          Requests CLEAR WORKSTATION on all active workstations. 
  844.  
  845.          C(i):  clearing control flag                 (0 = CONDITIONAL, 1 = ALWAYS) 
  846.  
  847.       REDRAW ALL SEGMENTS ON WORKSTATION 
  848.  
  849.          | 'GKSM  3' | L | R | 
  850.  
  851.          Requests UPDATE WORKSTATION on all active workstations. 
  852.  
  853.          R(i):  regeneration flag                 (0 = PERFORM, 1 = SUSPEND) 
  854.  
  855.       DEFERRAL STATE 
  856.  
  857.          | 'GKSM  4' | L | D | R | 
  858.  
  859.          Requests SET DEFERRAL STATE on all active workstations. 
  860.  
  861.          D(i): deferral mode                (0 = ASAP, 1 = BNIG, 2 = BNIL, 3 = ASTI) 
  862.  
  863.          R(i):  implicit regeneration mode                 (0 = ALLOWED, 1 = SUPPRESSED) 
  864.  
  865.          {This item provides control over the occurrence of the visual          effect of GKS functions in order to optimize the use of          workstation capabilities according to application needs.} 
  866.  
  867.       MESSAGE 
  868.  
  869.          | 'GKSM  5' | L | N | T | 
  870.  
  871.          Requests MESSAGE on all active workstations.          N(i):   number of characters in string          T(Nc):  string with N characters. 
  872.  
  873.          {The message is not part of a metafile output primitives; the          message is only for interpretation by workstation operators.} 
  874.  
  875.  
  876.  
  877.  
  878.  
  879. Aguilar                                                        [Page 33] 
  880.  
  881.  
  882.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  883.  
  884.        ESCAPE 
  885.  
  886.          | 'GKSM  6' | L | FI | L | M | I | R | 
  887.  
  888.          Requests ESCAPE 
  889.  
  890.          FI(i):  function identifier          L(i):   length of integer data in data record          M(i):   length of real data in data record          I(Li):  integer data          R(Mr):  real data. 
  891.  
  892.          {This item permits the invocation of a specific non-standard          escape function FI. The execution of the function with the          given parameters must not alter the GKS state list nor produce          geometrical output.} 
  893.  
  894.    E.6  Items for Output Primitives 
  895.  
  896.       POLYLINE 
  897.  
  898.          | 'GKSM 11' | L | N | P | 
  899.  
  900.          N(i):   number of points of the polyline          P(Np):  list of points 
  901.  
  902.       POLYMARKER 
  903.  
  904.          | 'GKSM 12' | L | N | P | 
  905.  
  906.          N(i):   number of points          P(Np):  list of points. 
  907.  
  908.       TEXT 
  909.  
  910.          | 'GKSM 13' | L | P | N | T | 
  911.  
  912.          P(p):   starting point of character string          N(i):   number of characters in string T          T(Nc):  string with N characters from the set of ISO 646 
  913.  
  914.       FILL AREA 
  915.  
  916.          | 'GKSM 14' | L | N | P | 
  917.  
  918.          N(i):   number of points          P(Np):  list of points. 
  919.  
  920.  Aguilar                                                        [Page 34] 
  921.  
  922.  
  923.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  924.  
  925.        CELL ARRAY 
  926.  
  927.          | 'GKSM 15' | L | P | Q | R | N | M | CT | 
  928.  
  929.          P(p),Q(p),R(p):  coordinates of corner points of pixel array                           (P and Q are the images of the points P and                           Q specified in the function CELL ARRAY and                           R is another corner)          M(i):            number of rows in array          N(i):            number of columns in array          CT(MNi):         array of colour indices stored row by row 
  930.  
  931.          {This item permits passing raster images to GKS. The raster          image is defined by the colour index matrix CT, and its World          Coordinate position given by points P and Q.} 
  932.  
  933.       GENERALIZED DRAWING PRIMITIVE 
  934.  
  935.          | 'GKSM 16' | L | GI | N | P | L | M | I | R | 
  936.  
  937.          GI(i):  GDP identifier          N(i):   number of points          P(Np):  list of points          L(i):   length of integer data in data record          M(i):   length of real data in data record          I(Li):  integer data          R(Mr):  real data. 
  938.  
  939.          {This item provides a standard way for drawing additional          non-standard output primitives. The generalized drawing          primitive GI is drawn according to the point list P and the          data record in I and R.} 
  940.  
  941.    E.7  Items for Output Primitive Attributes 
  942.  
  943.       POLYLINE INDEX 
  944.  
  945.          | 'GKSM 21' | L | LT | 
  946.  
  947.          LT(i):  linetype 
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957. Aguilar                                                        [Page 35] 
  958.  
  959.  
  960.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  961.  
  962.        LINEWIDTH SCALE FACTOR 
  963.  
  964.          | 'GKSM 23' | L | LW | 
  965.  
  966.          LW(r):  linewidth scale factor 
  967.  
  968.          {In GKS, the line width is not affected by GKS transformations.          However, the effective line width is calculated as the product          of the nominal line width times the line width scale factor in          effect when a line is drawn.} 
  969.  
  970.       POLYLINE COLOUR INDEX 
  971.  
  972.          | 'GKSM 24' | L | CI | 
  973.  
  974.          CI(i):  polyline colour index 
  975.  
  976.       POLYMARKER INDEX 
  977.  
  978.          | 'GKSM 25' | L | I | 
  979.  
  980.          I(i):  polymarker index 
  981.  
  982.       MARKER TYPE 
  983.  
  984.          | 'GKSM 26' | L | MT | 
  985.  
  986.          MT(i):  marker type 
  987.  
  988.       MARKER SIZE SCALE FACTOR 
  989.  
  990.          | 'GKSM 27' | L | MS | 
  991.  
  992.          MS(r):  marker size scale factor 
  993.  
  994.          {In GKS, the marker size is not affected by GKS          transformations. However, the effective marker size is          calculated as the product of the nominal marker size times the          marker size scale factor in effect when a marker is drawn.} 
  995.  
  996.       POLYMARKER COLOUR INDEX 
  997.  
  998.          | 'GKSM 28' | L | CI | 
  999.  
  1000.          CI(i):  polymarker colour index 
  1001.  
  1002.  
  1003.  
  1004.  Aguilar                                                        [Page 36] 
  1005.  
  1006.  
  1007.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  1008.  
  1009.        TEXT INDEX 
  1010.  
  1011.          | 'GKSM 29' | L | I | 
  1012.  
  1013.          I(i):  text index 
  1014.  
  1015.       TEXT FONT AND PRECISION 
  1016.  
  1017.          | 'GKSM 30' | L | F | P | 
  1018.  
  1019.          F(i):  text font          P(i):  text precision          (0 = STRING, 1 = CHAR, 2 = STROKE) 
  1020.  
  1021.       CHARACTER EXPANSION FACTOR 
  1022.  
  1023.          | 'GKSM 31' | L | CEF | 
  1024.  
  1025.          CEF(r):  character expansion factor 
  1026.  
  1027.          {This item allows the manipulation of the width/height of the          character body. The width of the character body is scaled by          the CEF factor.} 
  1028.  
  1029.       CHARACTER SPACING 
  1030.  
  1031.          | 'GKSM 32' | L | CS | 
  1032.  
  1033.          CS(r):  character spacing 
  1034.  
  1035.       TEXT COLOUR INDEX 
  1036.  
  1037.          | 'GKSM 33' | L | CI | 
  1038.  
  1039.          CI(i):  text colour index 
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  Aguilar                                                        [Page 37] 
  1054.  
  1055.  
  1056.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  1057.  
  1058.        CHARACTER VECTORS 
  1059.  
  1060.          | 'GKSM 34' | L | CH | CW | 
  1061.  
  1062.          CH(2r):  character height vector          CW(2r):  character width vector 
  1063.  
  1064.          Note:  These vectors are the height and width vectors described          in 4.4.5 of [14]. 
  1065.  
  1066.          {The character height vector is parallel to the character up          vector and has a length equal to character height. The          character height specifies the height of a capital letter. The          character width vector is perpendicular to the height vector,          in the direction of the character baseline, and has the same          length.} 
  1067.  
  1068.       TEXT PATH 
  1069.  
  1070.          | 'GKSM 35' | L | P | 
  1071.  
  1072.          P(i):  text path          (0 = LEFT, 1 = RIGHT, 2 = UP, 3 = DOWN) 
  1073.  
  1074.       TEXT ALIGNMENT 
  1075.  
  1076.          | 'GKSM 36' | L | H | V | 
  1077.  
  1078.          H(i):  horizontal character alignment                 (0 = NORMAL, 1 = LEFT, 2 = CENTRE, 3 = RIGHT)          V(i):  vertical character alignment                 (0 = NORMAL, 1 = TOP, 2 = CAP, 3 = HALF, 4 = BASE,                  5 = BOTTOM) 
  1079.  
  1080.       FILL AREA INDEX 
  1081.  
  1082.          | 'GKSM 37' | L | I | 
  1083.  
  1084.          I(i):  fill area index 
  1085.  
  1086.       FILL AREA INTERIOR STYLE 
  1087.  
  1088.          | 'GKSM 38' | L | S | 
  1089.  
  1090.          S(i):  fill area interior style                 (0 = HOLLOW, 1 = SOLID, 2 = PATTERN, 3 = HATCH) 
  1091.  
  1092.  
  1093.  
  1094. Aguilar                                                        [Page 38] 
  1095.  
  1096.  
  1097.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  1098.  
  1099.        FILL AREA STYLE INDEX 
  1100.  
  1101.          | 'GKSM 39' | L | SI | 
  1102.  
  1103.          SI(i):  fill area style index 
  1104.  
  1105.       FILL AREA COLOUR INDEX 
  1106.  
  1107.          | 'GKSM 40' | L | CI | 
  1108.  
  1109.          CI(i):  fill area colour index 
  1110.  
  1111.       PATTERN SIZE 
  1112.  
  1113.          | 'GKSM 41' | L | PW | PH | 
  1114.  
  1115.          PW(2r):  pattern width vector          PH(2r):  pattern height vector 
  1116.  
  1117.          {One style for filling areas is with a pattern of color cells.          Such a pattern is defined by an array of color indices which is          mapped into a pattern rectangle with dimensions given by PW and          PH.} 
  1118.  
  1119.       PATTERN REFERENCE POINT 
  1120.  
  1121.          | 'GKSM 42' | L | P | 
  1122.  
  1123.          P(p):  reference point 
  1124.  
  1125.          {One style for filling areas is with a pattern of color cells.          Such a pattern is defined by an array of color indices which is          mapped into a pattern rectangle whose lower left corner is          given by P.} 
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141. Aguilar                                                        [Page 39] 
  1142.  
  1143.  
  1144.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  1145.  
  1146.        ASPECT SOURCE FLAGS 
  1147.  
  1148.          | 'GKSM 43' | L | F | 
  1149.  
  1150.          F(13i):  aspect source flags                   (0 = BUNDLED, 1 = INDIVIDUAL) 
  1151.  
  1152.          {An application can set an output primitive attribute to either          bundled or individual. Bundled attributes are          workstation-dependent, their binding is delayed, and their          values can change dynamically. Individual attributes are global          attributes, they are bound immediately, and their value is          static and cannot be manipulated.} 
  1153.  
  1154.       PICK IDENTIFIER 
  1155.  
  1156.          | 'GKSM 44' | L | P | 
  1157.  
  1158.          P(i):  pick identifier 
  1159.  
  1160.    E.8  Items for Workstation Attributes 
  1161.  
  1162.       POLYLINE REPRESENTATION 
  1163.  
  1164.          | 'GKSM 51' | L | I | LT | LW | CI | 
  1165.  
  1166.          I(i):   polyline index          LT(i):  linetype number          LW(r):  linewidth scale factor          CI(i):  polyline colour index 
  1167.  
  1168.       POLYMARKER REPRESENTATION 
  1169.  
  1170.          | 'GKSM 52' | L | I | MT | MS | CI | 
  1171.  
  1172.          I(i):   polymarker index          MT(i):  marker type          MS(r):  marker size scale factor          CI(i):  polymarker colour index 
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  Aguilar                                                        [Page 40] 
  1183.  
  1184.  
  1185.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  1186.  
  1187.        TEXT REPRESENTATION 
  1188.  
  1189.          | 'GKSM 53' | L | I | F | P | CEF | CS | CI | 
  1190.  
  1191.          I(i):    text index          F(i):    text font          P(i):    text precision          (0 = STRING, 1 = CHAR, 2 = STROKE)          CEF(r):  character expansion factor          CS(r):   character spacing          CI(i):   text colour index 
  1192.  
  1193.       FILL AREA REPRESENTATION 
  1194.  
  1195.          | 'GKSM 54' | L | I | S | SI | CI | 
  1196.  
  1197.          I(i):   fill area index          S(i):   fill area interior style          (0 = HOLLOW, 1 = SOLID, 2 = PATTERN, 3 = HATCH) SI(i):  fill          area style index          CI(i):  fill area colour index 
  1198.  
  1199.       PATTERN REPRESENTATION 
  1200.  
  1201.          | 'GKSM 55' | L | I | N | M | CT | 
  1202.  
  1203.          I(i):     pattern index          N(i):     number of columns in array*          M(i):     number of rows in array          CT(MNi):  table of colour indices stores row by row 
  1204.  
  1205.             {* The ANSI document reads "area" instead of "array".} 
  1206.  
  1207.          {One style for filling areas is with a pattern of color cells.          Such a pattern is defined by a pattern representation.} 
  1208.  
  1209.       COLOUR REPRESENTATION 
  1210.  
  1211.          | 'GKSM 56' | L | CI | RGB | 
  1212.  
  1213.          CI(i):    colour index          RGB(3r):  red, green, blue intensities 
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221. Aguilar                                                        [Page 41] 
  1222.  
  1223.  
  1224.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  1225.  
  1226.     E.9  Items for Transformations 
  1227.  
  1228.       CLIPPING RECTANGLE 
  1229.  
  1230.          | 'GKSM 61' | L | C | 
  1231.  
  1232.          C(4r):  limits of clipping rectangle (XMIN, XMAX, YMIN, YMAX) 
  1233.  
  1234.       WORKSTATION WINDOW 
  1235.  
  1236.          | 'GKSM 71' | L | W | 
  1237.  
  1238.          W(4r):  limits of workstation window (XMIN, XMAX, YMIN, YMAX) 
  1239.  
  1240.          {GKS includes a workstation transformation that maps a          rectangle of the NDC space (a workstation window) into a          rectangle of the device coordinate space (a workstation          viewport).} 
  1241.  
  1242.       WORKSTATION VIEWPORT 
  1243.  
  1244.          | 'GKSM 72' | L | V | 
  1245.  
  1246.          V(4r):  limits of workstation viewport (XMIN, XMAX, YMIN, YMAX) 
  1247.  
  1248.    E.10  Items for Segment Manipulation 
  1249.  
  1250.       CREATE SEGMENT 
  1251.  
  1252.          | 'GKSM 81' | L | S | 
  1253.  
  1254.          S(i):  segment name 
  1255.  
  1256.       CLOSE SEGMENT 
  1257.  
  1258.          | 'GKSM 82' | L | 
  1259.  
  1260.          indicates end of segment 
  1261.  
  1262.       RENAME SEGMENT 
  1263.  
  1264.          | 'GKSM 83' | L | SO | SN | 
  1265.  
  1266.          SO(i):  old segment name          SN(i):  new segment name 
  1267.  
  1268.  
  1269.  
  1270.  Aguilar                                                        [Page 42] 
  1271.  
  1272.  
  1273.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  1274.  
  1275.        DELETE SEGMENT 
  1276.  
  1277.          | 'GKSM 84' | L | S | 
  1278.  
  1279.          S(i):  segment name 
  1280.  
  1281.    E.11  Items for Segment Attributes 
  1282.  
  1283.       SET SEGMENT TRANSFORMATION 
  1284.  
  1285.          | 'GKSM 91' | L | S | M | 
  1286.  
  1287.          S(i):   segment name          M(6r):  transformation matrix                  upper and center rows of a 3x3 matrix representing                  a 2D homogeneous transformation [9]                  M 11  M 12  M 13  M 21  M 22  M 23 
  1288.  
  1289.          {This differs from the ANSI X3.124 Jan. 5 1984 document, in the          matrix elements indicated. We believe there is an error in such          document.} 
  1290.  
  1291.       SET VISIBILITY 
  1292.  
  1293.          | 'GKSM 92' | L | S | V | 
  1294.  
  1295.          S(i):  segment name          V(i):  visibility                 (0 = VISIBLE, 1 = INVISIBLE) 
  1296.  
  1297.       SET HIGHLIGHTING 
  1298.  
  1299.          | 'GKSM 93' | L | S | H | 
  1300.  
  1301.          S(i):  segment name          H(i):  highlighting                 (0 = NORMAL, 1 = HIGHLIGHTED) 
  1302.  
  1303.       SET SEGMENT PRIORITY 
  1304.  
  1305.          | 'GKSM 94' | L | S | P | 
  1306.  
  1307.          S(i):  segment name          P(r):  segment priority 
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313. Aguilar                                                        [Page 43] 
  1314.  
  1315.  
  1316.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  1317.  
  1318.        SET DETECTABILITY 
  1319.  
  1320.          | 'GKSM 95' | L | S | D | 
  1321.  
  1322.          S(i):  segment name          D(i):  detectability                 (0 = UNDETECTABLE, 1 = DETECTABLE) 
  1323.  
  1324.    E.12  User Items 
  1325.  
  1326.       USER ITEM 
  1327.  
  1328.          | 'GKSMXXX' | L | D | 
  1329.  
  1330.          XXX   > 100          D:    user data (L bytes) 
  1331.  
  1332.          {The PIGCF level U items are encoded as GKSM USER ITEM elements          so that a PIGCF file will conform to the GKSM metafile          specification.} 
  1333.  
  1334.  
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347.  
  1348.  
  1349.  
  1350.  
  1351.  
  1352.  
  1353.  
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362. Aguilar                                                        [Page 44] 
  1363.  
  1364.  
  1365.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  1366.  
  1367.  APPENDIX B 
  1368.  
  1369.    Example of PIGCF Use in Conferencing 
  1370.  
  1371.    This section presents an example illustrating the proposed PIGCF    graphical component in an audio-graphics conference exchange. We    present only the graphical part of the conference exchange, which    actually would be complemented with speech. For the sake of briefness    the example does not contain all the parameter negotiation that a    conference set-up would require. 
  1372.  
  1373.    The example is about an on-line audio-graphics conference between a    Navy command and control center and a Navy task force. The PIGCF    items shown do not belong to a single transmission stream. The stream    they belong to is determined by the station that transmits them, and    the identification of the transmitter belongs to lower level    communication protocols. We use the character encoding, rather than    the binary one, for this PIGCF example. We illustrate just a few of    the possible groups of items that could be batched in this example.    The plot of the example is as follows. 
  1374.  
  1375.    The command center (center) establishes a conference with some ships    in a task force (platforms) to coordinate the interception of an    unidentified ship that has been sighted in a conflict area. After    recalling graphical libraries, all conference sites can see in their    screens a map of the sighting area as well as iconic representations    of the task force ships. Then the center interactively draws an    iconic representation of the unidentified vessel, scales it, and    places it in the sighting location. 
  1376.  
  1377.    The platforms explain possible courses of action using graphical    pointers. The center draws the expected trajectory of the    unidentified ship and the platforms situate the task force icons at    the expected points of interception. Then the center zooms into the    interception area and the platforms use rubber bands to discuss    interception maneuvers. 
  1378.  
  1379.    Now we proceed to list the PIGCF items exchanged. The  center    initiates  the conference graphical set-up with the FILE HEADER item    to set basic representation parameters for  the  graphical    information  to  be exchanged.   This item can be interpreted    according to its definition in E.5 [14].  The most important    parameter selections for this example are: 
  1380.  
  1381.       i)   The items contain 0 characters of the "GKSM" string in the            identification field of the item header.       ii)  The item type indicator field containing the PIGCF 
  1382.  
  1383.  Aguilar                                                        [Page 45] 
  1384.  
  1385.  
  1386.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  1387.  
  1388.             item number is three bytes long in each item.       iii) The integers are 4 bytes long, and the reals 6 bytes long.       iv)  The item data record length indicator is 2 bytes long. 
  1389.  
  1390.    We will obey the PIGCF specification field lengths and the aforesaid    field length settings. However, we will add one space before and    after the "|" separator to improve legibility. Also, every item will    be preceded with its name to help identification. 
  1391.  
  1392.    FILE HEADER: 
  1393.  
  1394.       | GKSM | center | 84/11/10 | 1 | 0 | 3 | 2 | 4 | 6 | 1 | 1       |           |           | 
  1395.  
  1396.    The center states the boundaries of the work station window for the    conference. 
  1397.  
  1398.    WORKSTATION WINDOW:  |  71 | 24 |  0.0  0.5  0.0  0.375 | 
  1399.  
  1400.    In this example, we assume that the conferencing work stations  use    world coordinates for the internal representation of positional    information. Accordingly, the center states the boundaries of the    world  window for the normalization transformation used in the    conference. 
  1401.  
  1402.    SET WINDOW:  | 134 | 28 |  0.0  320.0  0.0  240.0 | 
  1403.  
  1404.    The center informs the location of its local NDC viewport, however,    other conferees can choose different NDC viewports for the same    transformation, but their work station window should include the    conference's.  All systems record the conference: world window, NDC    viewport, and work station widow. 
  1405.  
  1406.    SET VIEWPORT:  | 135 | 28 |  0.0  0.5  0.0  0.375 | 
  1407.  
  1408.    The center recalls graphical libraries containing geographical maps    of  the  crisis  area  and icons of the task forces in the area. It    also displays a graphical object that provides a background picture. 
  1409.  
  1410.    RECALL LIBRARY:  | 139 |  9 | caribbean |    DISPLAY OBJECT:  | 128 | 11 | coast_lines |    RECALL LIBRARY:  | 139 | 10 | task_units | 
  1411.  
  1412.    The center proceeds to instantiate one of the task forces in the    task_units library. This is done by recalling some of the library    objects and applying transformations to the objects, later. Since set    window, set viewport, and recall library belong to the update 
  1413.  
  1414.  Aguilar                                                        [Page 46] 
  1415.  
  1416.  
  1417.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  1418.  
  1419.     Group-2, they can be batched until display object, from update    Group-1, is entered. The second recall library can be batched    together with the following begin instantiation until display object    is produced. The rest of the example contains more cases of item    sequences which can be batched; however, for briefness we do not    indicate any more of them. 
  1420.  
  1421.    BEGIN INSTANTIATION:  | 124 | 15 | US_CONSTITUTION |    DISPLAY OBJECT:       | 128 | 15 | US_CONSTITUTION |    TRANSFORM OBJECT:     | 126 | 55 |   15 | US_CONSTITUTION |                            0.1   0.0   0.0   0.0   0.1   0.0 |    TRANSFORM OBJECT:     | 126 | 55 |   15 | US_CONSTITUTION |                            0.1   0.0  0.312   0.0   0.1  0.078 |    END INSTANTIATION:    | 125 |  0 | 
  1422.  
  1423.    BEGIN INSTANTIATION:  | 124 | 13 | US_NEW_JERSEY |    DISPLAY OBJECT:       | 128 | 13 | US_NEW_JERSEY |    TRANSFORM OBJECT:     | 126 | 53 |   13 | US_NEW_JERSEY |                            0.1   0.0  0.0   0.0   0.1   0.0 |    TRANSFORM OBJECT:     | 126 | 53 |   13 | US_NEW_JERSEY |                            0.1   0.0  0.312   0.0   0.1  0.093 |    END INSTANTIATION:    | 125 |  0 | 
  1424.  
  1425.    Next the center sets values for two output primitive attributes in    preparation for drawing a new icon on the screens. We assume that all    the other attributes have been assigned default values as a result of    the conference set-up. 
  1426.  
  1427.    POLYLINE INDEX:         |  21 |  4 |   20 |    POLYLINE COLOUR INDEX:  |  24 |  4 |  200 | 
  1428.  
  1429.    The following items correspond to the interactive definition of the    unidentified vessel. Since the definition is done interactively, the    vessel image remains visible on the screens after definition. 
  1430.  
  1431.    BEGIN DEFINITION:  | 120 |  0 |    POLYLINE:          |  11 | 64 |    5 |    0.047  0.063  0.063  0.047  0.125  0.047  0.14  0.063  0.047  0.047 |    POLYLINE:          |  11 | 52 |    3 |                  0.078 0.063  0.078  0.078  0.109  0.078  0.109  0.063 |    END DEFINITION:    | 121 |  8 | sighting | 
  1432.  
  1433.    Then the unidentified vessel "sighting" is scaled and placed at the    sighting site. 
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439. Aguilar                                                        [Page 47] 
  1440.  
  1441.  
  1442.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  1443.  
  1444.     BEGIN INSTANTIATION:  | 124 |  8 | sighting |    TRANSFORM OBJECT:     | 126 | 48 |    8 | sighting |                            0.2   0.0   0.0                            0.0   0.2   0.0 |    TRANSFORM OBJECT:     | 126 | 48 |    8 | sighting |                            0.1   0.0 0.156                            0.0   0.1  0.016 |    END INSTANTIATION:    | 125 |  0 | 
  1445.  
  1446.    The center and the platforms use graphical pointer movements to    discuss possible routes the unidentified vessel might follow. We only    show a few pointer updates. In practice, there would typically be a    large number of points transmitted to convey the movement of the    pointers over the screens. 
  1447.  
  1448.    from the center: 
  1449.  
  1450.    POINTER TRACKING:  | 137 | 16 |    0 |  0.39  0.032 |    POINTER TRACKING:  | 137 | 16 |    0 |  0.388 0.035 |    POINTER TRACKING:  | 137 | 16 |    0 |  0.388 0.039 |    POINTER TRACKING:  | 137 | 16 |    0 |  0.386 0.04  | 
  1451.  
  1452.    from one of the platforms: 
  1453.  
  1454.    POINTER TRACKING:  | 137 | 16 |    0 |  0.22  0.016 |    POINTER TRACKING:  | 137 | 16 |    0 |  0.222 0.159 |    POINTER TRACKING:  | 137 | 16 |    0 |  0.233 0.157 |    POINTER TRACKING:  | 137 | 16 |    0 |  0.24  0.155 | 
  1455.  
  1456.    The center now draws the expected route to be followed by the    unidentified ship. This time the pointer trace is recorded on the    screen by drawing a line. 
  1457.  
  1458.    POINTER TRACKING:  | 137 | 16 |    1 |  0.388 0.038 |    POINTER TRACKING:  | 137 | 16 |    1 |  0.386 0.038 |    POINTER TRACKING:  | 137 | 16 |    1 |  0.386 0.052 |    POINTER TRACKING:  | 137 | 16 |    1 |  0.375 0.078 |    POINTER TRACKING:  | 137 | 16 |    1 |  0.369 0.105 |    POINTER TRACKING:  | 137 | 16 |    1 |  0.361 0.125 |    POINTER TRACKING:  | 137 | 16 |    1 |  0.352 0.144 |    POINTER TRACKING:  | 137 | 16 |    1 |  0.351 0.156 |    POINTER TRACKING:  | 137 | 16 |    1 |  0.35  0.16  | 
  1459.  
  1460.    A platform moves the two US ship icons to interception positions. 
  1461.  
  1462.  
  1463.  
  1464.  
  1465.  
  1466. Aguilar                                                        [Page 48] 
  1467.  
  1468.  
  1469.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  1470.  
  1471.     TRANSFORM OBJECT:  | 126 | 55 |   15 | US_CONSTITUTION |                         1.0   0.0 0.16                         0.0   1.0 -0.046 |    TRANSFORM OBJECT:  | 126 | 53 |   13 | US_NEW_JERSEY |                         1.0   0.0 0.113                         0.0   1.0 -0.034 | 
  1472.  
  1473.    The center zooms into the interception area in order to obtain a    larger view for further discussion. 
  1474.  
  1475.    WORKSTATION WINDOW:  |  71 | 24 | 0.286 0.403 0.077 0.177 | 
  1476.  
  1477.    The two platforms indicate their striking ranges using circular    rubber bands centered at each ship. For each platform, we show first    the echo reference point and then two echo feedback points. Typically    there will be a large number of feedback points. 
  1478.  
  1479.    RUBBER BAND:  | 138 | 10 |   0 | 0.335 0.125 |    RUBBER BAND:  | 138 | 10 |   3 | 0.35  0.128 |    RUBBER BAND:  | 138 | 10 |   3 | 0.37  0.128 | 
  1480.  
  1481.    RUBBER BAND:  | 138 | 10 |   0 | 0.384 0.13  |    RUBBER BAND:  | 138 | 10 |   3 | 0.367 0.128 |    RUBBER BAND:  | 138 | 10 |   3 | 0.346 0.129 | 
  1482.  
  1483.    Once the interception strategy has been agreed upon, the center zooms    out to the original, larger picture. 
  1484.  
  1485.    WORKSTATION WINDOW:  |  71 | 24 |    0.0   0.5   0.0 0.375 | 
  1486.  
  1487.    The center terminates the conference 
  1488.  
  1489.    END ITEM:  |   0 |  0 | 
  1490.  
  1491.    At the end of a conference, the final pictures remain visible on the    screens. In addition, the PIGCF items will be recorded in its    entirety in order to play back the conference session if necessary.    The conference record could also be sent to other locations as part    of a multi-media message. 
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  Aguilar                                                        [Page 49] 
  1502.  
  1503.  
  1504.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  1505.  
  1506.  REFERENCES 
  1507.  
  1508.    [1]   J. D. Day and H. Zimmermann, "The OSI Reference Model",          Proceedings of the IEEE, V 71, N 12; Dec. 1983, pp 1334-1340. 
  1509.  
  1510.    [2]   W. Pferd, L. A. Peralta and F. X. Prendergast, "Interactive          Graphics Teleconferencing", IEEE Computer, V 12, N 11; Nov.          1979, pp 62-72. 
  1511.  
  1512.    [3]   K. S. Sarin, "Interactive On-Line Conferences", Ph.D. Diss.          MIT, Dept. of EE and CS, 1984. 
  1513.  
  1514.    [4]   S. Randall, "The Shared Graphic Workspace: Interactive Data          Sharing in a Teleconference Environment", Proceedings CompCon          82 Fall, IEEE Computer Society, pp 535-542. 
  1515.  
  1516.    [5]   G. Heffron, "Teleconferencing Comes of Age", IEEE Spectrum,          Oct. 1984, pp 61-66, pp 61-66. 
  1517.  
  1518.    [6]   R. W. Hough and R. R. Panko, "Teleconferencing Systems: A          State-of-the-Art Survey and Preliminary Analysis", SRI          International, Menlo Park California, SRI project 3735, April          1977. 
  1519.  
  1520.    [7]   C. W. Kelly III, "An Enhanced Presence Video Teleconferencing          System" Proc. CompCon 1982, Sept. 20-23 Washington D.C., pp          544-551. 
  1521.  
  1522.    [8]   J. Vanglian, "Private Communication", Comments on the          suitability of videotex for on-line graphical communication. 
  1523.  
  1524.    [9]   ANSI Technical Committee X3H, "Draft Proposal: Virtual Device          Metafile", X3.122, X3 Secretariat, CBEMA, Washington, D.C. 
  1525.  
  1526.    [10]  American National Standards Committee X3H3, "Virtual Device          Interface", X3 - Information Processing Systems, Working          Document, Jan. 2, 1985 Available from Computer and Business          Equipment Manufacturers Association, Washington D.C. 
  1527.  
  1528.    [11]  E. Van Deusen, "Graphics Standards Handbook", CC Exchange 1984,          P.O. Box 1251, Laguna Beach, CA 92652. 
  1529.  
  1530.    [12]  J. D. Foley and A. Van Dam, "Fundamentals of Interactive          Computer Graphics", Addison-Wesley, 1982. 
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536. Aguilar                                                        [Page 50] 
  1537.  
  1538.  
  1539.  RFC 965                                                    December 1985 A Format for a Graphical Communication Protocol 
  1540.  
  1541.     [13]  American National Standards Committee X3H3, "GKS -- 3D          Extensions", X3 - Information Processing Systems, Working          Document, Nov. 16 1984 Available from Computer and Business          Equipment Manufacturers Association, Washington D.C. 
  1542.  
  1543.    [14]  ANSI Technical Committee X3H3, "Draft Proposal: Graphical          Kernel System", X3.124, X3 Secretariat, CBEMA, Washington, D.C. 
  1544.  
  1545.    [15]  G. Enderle, K. Kansy, and G. Pfaff, "Computer Graphics          Programming", Springer-Verlag, 1984. 
  1546.  
  1547.    [16]  International Organization for Standardization "Information          processing - Representation of numerical values in character          strings for information interchange", ISO/DIS 6093.2, ISO/TC          97, 1984-01-19; available from ANSI, New York, N.Y. 
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  Aguilar                                                        [Page 51] 
  1582.  
  1583.