Contact us Heritage collections Image license terms
HOME ACL ACD ICF SUS DCS G&A STARLINK Literature
Further reading □ ForewordContentsPrefacePrologueAcknowledgementsParticipants1. IntroductionA. GuedjB. HopgoodC. CrestinD. WarmanE. SabinF. EncarnacaoG. DunnH. BonoI. NewellJ. FoleyK. FoleyL. SanchaM. SanchaN. Sancha2. Working documentsCurrent positionGraphics primitivesCoreAttributesStructureMethodology: StructureDesignInputTransformationsFormal SpecificationConceptual FrameworkIFIP ReportRecommendationsFuture
C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

   
ACDLiteratureBooksMethodology in Computer Graphics
ACDLiteratureBooksMethodology in Computer Graphics
ACL ACD C&A INF CCD CISD Archives
Further reading

ForewordContentsPrefacePrologueAcknowledgementsParticipants1. IntroductionA. GuedjB. HopgoodC. CrestinD. WarmanE. SabinF. EncarnacaoG. DunnH. BonoI. NewellJ. FoleyK. FoleyL. SanchaM. SanchaN. Sancha2. Working documentsCurrent positionGraphics primitivesCoreAttributesStructureMethodology: StructureDesignInputTransformationsFormal SpecificationConceptual FrameworkIFIP ReportRecommendationsFuture

Software Interfaces for Graphics

M. Sabin

Introduction

The material supplied by the other members of this subcommittee, supplemented by a few relevant papers from other sources, amounted to over 80 papers, or just over 10 kg. I decided not to include the contents of my bibliographies on shape representation and on contouring, as these were not central to the theme, and would have unbalanced the presentation. The list of material taken directly into account forms Appendix A. Full references were not always determinable from the papers themselves.

My first analysis of the literature was to categorize the papers. I chose as categories

  1. General discussions
  2. Hardware aspects
  3. Usages of graphics
  4. Protocols and graphic stream formats
  5. Self-contained languages
  6. Subroutine packages for use with Fortran (or with other languages allowing external procedures)
  7. Facilities within other languages.

Few papers fitted more than one category, or failed to fit at all. The categorization forms Appendix B.

General discussions

These approached the topic from diverse directions. The survey of computer graphics by Shopiro(26) was the most complete at the fundamental level; that by Meads(8) most complete at the designing-a-package level. The idea that geometric items (particularly points) should be considered as single data items was suggested by Schlechtendahl and Schuster (l5) and by Balzer et al {22). The latter also raised the question of compatibility with Numerical Control, an aspect important for mechanical engineering applications, and possibly significant more generally.

The classification of levels of graphics was made in a number of papers. Other classifications seemed compatible with that of Schlectendahl and Schuster, who identify

Shopiro makes the point that definition of the thing to be drawn should be specified separately from the view to be made of it. This distinction is more easily drawn for the graphic presentation of geometrical objects than for the presentation of data. It could be argued, however, that the window/viewport mechanism has its window part in the object definition and the viewport in the view definition. The distinction between objects and data as far as appropriateness of facilities is concerned is an important one. It cannot be assumed that a package which is good for one is automatically good for the other.

The papers (82) (16) (17) (18) (which should be read in that order) form a sequence in which ideas are developed, the principal argument being that the most pressing need is for a standard at the level immediately above the device-dependent part of the system.

Input is dealt with by (26) (49) (57) as well as by many of the package descriptions. From the device independence point of view it is generally agreed that different physical pieces of equipment can be used to convey the same information from man to machine. The two main classes of input data, Pointers (or selection) and Positions (or value input) are identified, with extra frills which differ from author to author, but which are not very significant.

In general it does the authors of all these papers a grave injustice to summarize their points.

Hardware Aspects and Usages I regarded as forming the environment for which the software interfaces we are discussing should be designed. Few of the source papers fell into these two categories, and I felt that rather than draw conclusions from an unrepresentative sample, it would be better to concentrate on the other categories.

Similarly, the papers describing facilities in languages other than Fortran were either making points applicable equally to Fortran, or were concerned with the specific syntax or style of the particular language.

The bulk of this survey concentrates therefore on descriptions of actual software interfaces in the categories:-

  1. Picture Description Languages
  2. Graphic Stream Formats and Protocols
  3. Procedure Libraries.

Picture description languages

I found these most stimulating, because a language contains the essence of the facilities offered, with the minimum of overhead. It seems to me that the requirements on a general picture description language are much clearer and much more pressing than on a package of subroutines.

The requirement of legibility influences mainly the lexical and syntactic structure. The requirement of doing something useful cheaper than doing it by hand implies either application oriented features, implicit or explicit calculation features, an outer syntax for repetition or all three, whereas a subroutine package can reasonably expect the facilities of Fortran to supply all these.

The languages examined are:-

DRAW
oriented toward producing diagrams for technical papers and program documentation.
ARTIST
the full capabilities of this were not apparent from the very short paper; nor were any applications.
GPDL
mainly a research/demonstration tool.
G439
designed for high precision mechanical engineering drawings, particularly of two and a half D parts.
PDL2
probably a research tool.
MONSTER
oriented toward architectural applications.
DIGRA
this subroutines package uses an interesting notation for item description.

Each language has its own syntax, which I have tried to ignore. More important, each has its own facilities, and I have tried to summarize these.

DRAW
This has primitives very highly oriented to its application, such as decision box, listing symbol. The implicit calculation facilities are equally specific, allowing clipping of lines joining two primitives where they cross those primitives. Because diagrams do not have a great deal of sheer repetition there is no need for repetition facilities in this language.
ARTIST
Primitives here are straight line segments and complete circles. Combinations of these can be defined as objects in their own right. Solid body transformations can be applied to objects, and there is a certain amount of calculation available in that the points of a transformed item can be referenced.
GPDL
A rather opaque language. Primitives are just polygons with grouping, repetition and explicit computation. Solid body transformations are available, implemented in a full block structure. Groups are thought of as routines rather than as collections of data.
G439
The primitives of straight line segments, circular arcs, text and interpolated curves can be used with a variety of linestyles. Solid body transformations are available, and a powerful set of implicit calculations for the fitting of fillet circles and the parallel offsetting of profiles.
It was designed for use with a separate geometrical computation program and a separate macrogenerator, and so does not contain much outer syntax itself. It was implemented using the pipeline concept described in (5) and almost achieves a block structure for transformations.
PDL2
This has polygon primitives which can be defined in such a way as to allow access to transformed coordinates. Although stylistically vary different from ARTIST it has very similar abilities.
MONSTER
Again the combination of polygon primitives with grouping and solid body transformations, but without access to transformed vertices.
DIGRA
The notation for polygons is rather different from that used elsewhere. A - B indicates the concatenation of objects A and B with the last point of A joined to the first point of B. The special case where A and B are both just points allows polygons to be defined. A . B indicates the concatenation of the two objects but without the connecting line. Another notation, that of conventional set theory, is used for the description of solid bodies, but it is not clear that either of these notations is actually used as input to the computer, because equivalent Fortran calls are described in the paper.
DRAW ARTIST GPDL G439 PDL2 MONSTER
References (5) (10) (59) (60) (71) (72)
Dimensionality 2D 2D 3D 2D 2D 3D
Primitives
Polygons * * * * * *
Full circle *
Circular arc *
Smooth curve *
Special *
Solid body transformations * * * * *
Separate define and draw * 1 2 * *
Grouping * 1
Repetition *
Computation
Implicit by access to transformed items * * 3
Other implicit * * 3
Explicit *

Notes:

1
Groups are thought of as procedures (routines) rather than as data items.
2
Only symbols could be defined and drawn separately.
3
It is of interest to note that the application oriented languages had special implicit computation features, whereas the general purpose ones supplied only the obvious one. This does not bode well for the usefulness of general purpose picture definition languages.

Graphic Stream Formats and Protocols

I have grouped together here two slightly different types of software interface. This is deliberate, and is partly because only one protocol designed specifically as such was described in my sources, partly because the difference is only slight. Essentially we are concerned with a format for transmission of graphical information from one process to another, separated either by space or by time, or just for convenience of development. The context is that computing power is available both when writing and when reading the stream. One would expect that the bulk of a format which was efficient for storage of pictures or subpictures would also be applicable to the efficient transmission of pictures from one site to another.

The systems examined are:-

NGP
the Network Graphic Protocol proposed for Arpanet by Sproull and Thomas.
L4
an internal format used in APLG.
IDATA
a spooling format proposed by ICL.
GRID
an internal format within the GHOST system, viewed as a spooling format, a data exchange format, and as a transient internal interface for interactive systems.
BIPS
a numerical picture definition format from the British Integrated Program Suite for Highway Design.
CLDATA
The ISO Recommendation for NC Processor output.
NCPT
the ISO Recommendation for control tapes for numerically controlled machine tools.
UGP
the internal format from the UGP subroutine library.

The version of BIPS considered is the form used by Mott, Hay and Anderson both for plotter output and digitizer input and also for transmission of graphics to and from timesharing computer facilities.

It differs from the DoE original, by having a legible format. Everything except text is passed as digits.

Both CLDATA and NCPT are recognitions and formalisations of de-facto standards. Many post-processors exist to convert CLDATA to graphical form, and many tape-check programs have been written to plot tool trajectories from NCPT. Indeed, some large flatbed plotters use the NCPT format on their spooling medium.

I would have liked to include also the internal formats of the GMB system, of GINO-F and of the MULTICS graphics facilities, but did not have enough information available to be able to do so.

In the table which follows note that absence of a feature may, or may not be significant. For some features (e.g. transformations, clipping) absence merely means that that facility is viewed as an upstream activity. For others (e.g. naming, precise scaling) it critically affects the usefulness of the format for certain applications.

NGP L4 IDATA GRID BIPS CLDATA NCPT UGP
References (4) (56) (28) (39) (80) (81) (82) (83)
Dimensionality 2D 3D 3D 3D 2D 3D 3D 2D
Legible * *
Provision for interaction * * * *
Naming * * 1 * *
Precise scale * 2 * * * *
Rel/Abs Abs Both Rel Rel Abs Both Both Abs
Primitives
Straight line * * * * * * * *
Full circle *
Arc * * * * * *
Smooth curve * 0 0
Text> * * * * * * *
Others 3 4
Transformations
S.B.T. * *
Log scales * *
Clipping * *
Space savers 5 6 5,7,9 8,9 7 9

Notes:

1
Naming is for subpicture identification only
2
Not clear from source
3
Ellipse
4
Conics
5
Field size can be set to suit resolution of device.
6
Field size selected dynamically to suit data.
7
Special case if one axis does not change coordinate.
8
Special case for string of short vectors.
9
Subpictures.
0
Optional.

Because information theoretic measures are clearly relevant to transmission of information (although none of the sources explicitly made this point), I calculated the number of bits needed to represent a simple picture in each format. The picture consisted of a diamond containing a square and an asteroid-like shape made of four circular arcs.

The height and width of this figure I made 10 inches (250 mm) and I assumed it to be plotted on a device with a resolution of 0.001 inches (0.025 mm), and just over 10 inches square in plotting area. For formats without the arc primitive, I assumed the arcs to be represented by 46 vectors each, this being the figure which gives a chord height of 0.002 inches (0,05 mm), the limit of visibility. I hope that originator of new proposals will publish what they consider to be realistic test shapes, with the corresponding bit-counts for their systems.

In almost all cases I was making guesses as to details of the formats, some of which I will be mistaken in. In any case a single example is not a statistically significant sample. To minimise injustice the bit counts are tabulated separately for: housekeeping data, the diamond, the square and the arcs, so that reasons for the scores of particular systems may be examined.

NGP L4 IDATA GRID BIPS CLDATA NCPT UGP
Housekeeping 336 - 32 232 216 72 32 298
Diamond 200 400 200 360 540 1116 488 176
Square 200 400 136 360 540 1116 280 176
Arcs 7400 11856 328 832 1404 21132 968 432
TOTAL 8136 12656 696 1784 2700 23436 1768 1082

In a reasonable weighting scheme the influence of the housekeeping would be reduced and that of the diamond increased. The best/worst ratio is probably nearer 6:1 than the apparent 30:1 which the totals imply.

This is an aspect which we should be concerned with, particularly as I was surprised that two systems as apparently similar as IDATA and GRID should have proved so different in bit count. Before doing the calculations I was expecting them to score about equally.

It is possible to identify particularly costly features.

  1. Floating point coordinates. These are very inefficient for this purpose because the resolution of a floating point number is given by the number of bits in the mantissa. The exponent is wasted. Also because standard floating point representations accurate enough for, for example, linear algebra calculations, are far too accurate for graphics purposes. We use floating point because Fortran and Algol give us only real and integer variables. Better languages, such as Algol 68 and PL/I would not force us to accept this cost.
  2. Legible formats. In my view this is a cost worth paying, particularly as the PTTs seem likely to be standardising on a six-bit character as the unit for transmission, which makes transmission of numbers as digits just over 50 percent efficient instead of just over 30 percent. After calculating all these figures I designed a modification/extension of NCPT suitable for shapes like that of my example. Assuming 6-bit characters instead of the 8 allowed in the above table for NCPT I achieved scores of 0, 58, 144, 174 and 294 in the separate categories, giving a total of only 612.

    The text of this description is

      XY5/X5Y/X10Y5/X5Y10/XY5E
      X2.5Y7.5/X7.5/Y2.5/X2.5/Y7.5E
      X2.5Y7.5/X7.5B4142/Y2.5B4142/X2.5B4142/Y7.5B4142S
    
  3. Absence of space-savers. The relatively good performance of NCPT and IDATA on the square is due entirely to a format feature which makes use of the zero change in one coordinate. The benefit of this particular feature depends a lot on the type of application envisaged.
  4. Restricted primitives. If circles appear often in ones application, absence of an arc primitive is very embarrassing.
  5. Odd details.

    The arcs of GRID are expensive relative to IDATA merely because the centre is taken as the current position.

    Absolute coordinates are better by one bit than relative coordinates, except where a sequence of short vectors are used to represent some curve for which a primitive does not exist.

    The pointer structure of L4 increases its costs BIPS uses 6 characters (36 bits) for its first field, where only 4 bits of information are carried.

All the formats considered except possibly NCPT use the Prefix Polish syntax, and even NCPT may be considered to be of this form if the field level rather than the record level is considered. It is therefore possible to think in terms of a superset. In my view any attempt to combine features into a superset would be a big mistake, and would result in an utter mess. Each of the systems is based on a particular philosophy, and the considerable differences between NGP and IDATA, for example, are the result of the extreme differences in their philosophies - NGP deliberately aims to have as much computation as possible done in the source of the data, IDATA deliberately aims to leave as much as possible to the recipient.

If we are to make any useful contribution to this area it must be by making arguments at the philosophical level. The technical decisions will follow from there.

Procedure Libraries

I use this term rather than Subroutine Packages, because it applies more generally than to only Fortran systems. Algol 60 and PL/I can use very similar library mechanisms, and, although Algol 68 allows much better notation by the full exploitation of a prelude, a mere procedure package can be handled.

This proved the most difficult form of software interface to survey, partly because of the large number of systems examined, but more because of the variation of presentation of the descriptions, and because of the arbitrariness and subjectiveness of criteria for comparison. It became quite obvious that designers of procedure libraries have been using criteria relevant to languages and protocols, even when the applicability of these criteria to a library does not stand up to analysis. Many packages, for example, allow alternative calls with incremental, absolute or local coordinates - a very useful piece of implicit calculation for a language interface - but it is not clear that the additional complexity added by the extra calls is justified, when the addition or subtraction necessary to convert to a single form can be done as effectively outside the package as in.

Again, some packages (e.g. UGP (25)) offer Macros which, because they are apparently expanded before the intermediate file appear to offer no advantages over the writing of high level Fortran subroutines containing the low level calls.

Because the interface between the package and the rest of the application program is of no significance once linking is complete, it is not important to minimise the flow of information across the interface, as it would be in the case of a protocol.

What, then, can be used as criteria by which to classify and compare procedure libraries.

We can compare facilities, although in most cases the missing features can be added as an extra layer so easily that they cannot be regarded as fundamental deficiencies. Indeed, in GMB(20) the concept expressly includes the addition of user-oriented routines, and in PHILDIG (34) certain utilities are provided, which are not tightly bound to the rest of the package. Facility lists can best be regarded as indicators of the application-orientation of each system.

We can hint at the computer independence by considering the source language in which the systems are written. Note that a system being written in Fortran does not ensure its portability. GPGS and UGP, at least, use a machine dependent form of Fortran interface which allows optional arguments.

In many computing environments, procedures are compiled into a common form, and, provided certain linkage conventions are adopted, can be mixed freely with routines written in other languages. The category environment in the table below therefore notes only where a particular language is specified in the documentation.

The category source notes the source language of the package only where this is clearly stated. For the above reason the language of the source text usually influences only the portability of the library, not its applicability.

There are two measures of just how device independent a package is. The first is the obvious how many different devices has it been implemented for. This can vary so rapidly with time that it is hardly worth tabulating. The second is the point in the progress of a program from conception to completion of actual graphic output at which the binding of the potential output to a particular device is made.

Writing time
Any system gives this level of device independence because calls to any other package could equally well be written.
Compile time
If the device is bound at compile time, then to change the output device some change must be made to the source text submitted to the compiler, and recompilation of at least part must take place.
Link time
Here a different device can be selected by relinking the compiled Fortran segments, and using a different library of graphic driver subroutines.
Load time
On some mainframes part of the link process can be postponed to load time. Again, some operating systems force peripheral assignments to be bound at load time.
Run time
This implies that the program itself can output to different graphic streams, and thence to different devices.
Alternatively, that user intervention can direct the output on any graphic stream to a different device without reloading. Packages of subroutines offering run time binding usually allow only the former, and only for a range of devices selected at compile time.
Full run time binding will be available only when the device drivers and device selection are taken into the operating system as is the case for text devices today.
Refresh time
One can conceive of multiple devices driven from the same display file. Hard copy of IBM 2250 displays was being organized in this way in the middle 1960s and one can describe current Tektronix hard copy the same way.
Post run time
In the batch context it is practicable for graphic output to be spooled. The binding can then be done when despooling. This facility will appear automatically when graphics becomes an operating system function.

The facilities available, tabulated in the categories: Primitives, Transformations, High-level Features, Segmentation, Naming and Input, serve mainly to identify the application orientation of the packages. These tables are included for completeness rather than for significance. Any blank entry should be regarded as indicating absence of evidence in the documents available, not absence of the feature.

The libraries examined are:-

GHOST
a general purpose scientific plotting package oriented, if anything, towards technical diagrams.
DIGS
a vehicle primarily designed for high performance graphic devices for molecular biology application.
PHILDIG
a system based in concept on GINO and GPGS, but tailored, in my view, a little towards electronics applications.
GMB
again primarily for electronics work.
UGP
general purpose.
GRAFSY
as far as I can judge, oriented toward mechanical engineering.
GINO-F
nominally general purpose, but containing very full facilities for manipulation of 3D objects.
GPGS
very similar in concept to GINO, but oriented rather more toward interaction.
SPROGS
a general purpose system, but with very full facilitates for the effective use of the SC4020 for film making.
GPGS-F
a version of GPGS made more portable by the removal of machine dependent features.
AUTOPROD
concerned almost entirely with plane-faced objects.
MIDI
a package built at the same time as a particular hardware configuration, and fairly dependent on the hardware for the detail of its design.
OXSYS/BOS/T
a small package aiming at providing the basic minimum for experienced Fortran programmers to use without incurring large overheads.
DC300
a package oriented specifically towards a particular 1 precision plotter. Consists of just one routine controlled by arguments.
AMESPLOT
oriented towards the graphic presentation of diagrams and data, rather than objects.
KV
a loose collection of application software.
DISSPLA
a commercial derivative of AMESPLOT.
GRAFPAC
written to be compatible with a SHARE library.
HGPLOT
drum plotter software for general scientific use.
G3D
oriented to precise drafting of mechanisms.
GROATS
very similar to SPROGS, but with an Algol environment.
POLYGRAPHICS
very similar to SPROGS.
ANOTHER
oriented toward a medium refresh display.
DIGRA
a very full system with additions for many aspects of mechanical shape handling.
LOGIGRAF
oriented towards the use of a minicomputer with a particular display.
COLOR
a package to drive a colour raster display in a diagram/data context.
MULTICS
general graphics facilities in the Multics system. This is sufficiently integrated with the operating system almost to achieve the run time binding I want to see.

There are a number of significant omissions from this list. Omnigraph, IBM GSP, GINO-3, Tektronix and Calcomp software in particular. There are also many other packages being used in real work to good effect. Those included do, however, span a broad range, and this document is not intended to be a shopping guide.

Refs Environment Source Binding Dimensionality
COLOR (2) W 2D
GHOST (9) P 3D
DIGS (14) PL/I C 3D
PHILDIG (19,34) C 2D+3D ut.
GMB (20,21 C 3D
UGP (23,25) C/P 2D
GRAFSY (24) 2D
GINO-F (29,30,31) Fortran C+R/P 3D
GPGS (32,36,37,46) R 3D
SPROGS (33,66) C+R 2D+3D ut.
GPGS-F (35) R 3D
AUTOPROD (40) Fortran L 3D
MIDI (41,44,45) LP15 - 2D
OXSYS/BOS/T (42) C+R 2D
DC300 (47) W 2D
AMESPLOT (50) L 2D
KV (53) W 2D
DISSPLA (54) L 2D
GRAFPAC (55) Fortran R 2D
HGPLOT (61) L 2D
G3D (62) L 3D
GROATS (67) Algol 60 W 2D
POLYGRAPHICS (68,69) W 2D+3D ut.
ANOTHER (73) L 2D
DIGRA (74) - 3D
LOGIGRAF (75,76) - 2D
MULTICS (83) R/P 3D
Straight Line Circle Arc Curve Text Other
COLOR * * Filled Ars
GHOST * * *
DIGS
PHILDIG * * Tables
GMB
UGP * * * Tables
GRAFSY * * * * * Polygon
GINO-F * * *
GPGS * * * Tables
SPROGS * * Tables
GPGS-F * * * Tables
AUTOPROD Objects
MIDI * Tables and Axes
OXSYS/BOS/T * * * Rectangles
DC300 * * *
AMESPLOT * * *
KV * * * *
DISSPLA * * *
GRAFPAC * * Tables
HGPLOT * * * * Tables
G3D * * * 3D Calcn Facilities
GROATS * * Rectangles
POLYGRAPHICS * * * * Tables
ANOTHER * * *
DIGRA * Objects
LOGIGRAF * * Tables
MULTICS * *
S.B.T. Window Clip Log Precision Other Coords
COLOR * L
GHOST * * *
DIGS * * *
PHILDIG * * * A+R
GMB * * *
UGP * * * A
GRAFSY * * * L
GINO-F Persp * * * A+R
GPGS Persp * * A+R
SPROGS * * * A
GPGS-F Persp * * A+R
AUTOPROD View A
MIDI * R
OXSYS/BOS/T * * A+R+L
DC300 * A
AMESPLOT * * Polar, Maps A
KV * * *
DISSPLA * * Polar, Maps A
GRAFPAC * * * 3 to 2D A
HGPLOT * L
G3D * * L
GROATS * * * A
POLYGRAPHICS * A
ANOTHER Linear * * A+R
DIGRA * * A
LOGIGRAF RtAngles * * A+R
MULTICS * R
Axes Graph Isom. Bars Pies Contouring Other
COLOR * * * * * *
GHOST * * * *
DIGS
PHILDIG
GMB
UGP * *
GRAFSY
GINO-F * *
GPGS
SPROGS * * * * Box
GPGS-F
AUTOPROD
MIDI *
OXSYS/BOS/T
DC300
AMESPLOT * * * *
KV *
DISSPLA * * * * *
GRAFPAC * *
HGPLOT * *
G3D
GROATS * * * Hatching
POLYGRAPHICS *
ANOTHER
DIGRA * Intersections
LOGIGRAF
MULTICS
Names Modify Delete Extend Input
COLOR
GHOST
DIGS T Move * * Virttual
PHILDIG T * * * Virtual
GMB * *
UGP 1 * yes
GRAFSY Move * * Device oriented
GINO-F 1 Visibility Tek-typ
GPGS 2 * * Device oriented
SPROGS
GPGS-F 2 * * Device oriented
AUTOPROD
MIDI 2 Move * * *
OXSYS/BOS/T Attr
DC300
AMESPLOT
KV
DISSPLA
GRAFPAC
HGPLOT
G3D
GROATS
POLYGRAPHICS
ANOTHER 3 Attr * * Device oriented
DIGRA
LOGIGRAF 3 Attr * Device oriented
MULTICS T Yes

Several of the systems examined use the front end - back end structure, with a formal interface between the device independent high level facilities and the device dependent drivers. GHOST, GMB, UGP, GINO-F and MULTICS are all of expressly this structure. The MULTICS interface is of interest, being semi-legible, suitable for transmission as a piece of text rather than as a bit or byte stream.

Others are built as layers, with a number of successive additions. ANOTHER is built this way, and is clearly described in {73}.

A third possibility for the structure is the pipeline used in AMESPLOT. I was pleased to see the idea described in (50), having implemented the G439 language using a very similar concept. The commands pass down a pipe through a sequence of transformations, the idea of transformation being very general, including, for example, syntax analysis and interpolation of curves as well as rotations.

Of the three the layer structure appears best able to accommodate maverick hardware with isolated high level features. It is equivalent to a forked (confluent) pipeline.

Different devices can be bound with a number of mechanisms. Parallel routines are used by SPROGS. Device tables are used by GMB and by any systems using the Network Graphic Protocol or Multics. NGP receives its tables by enquiry within the protocol, the other two have them set up by external means. GINO-F uses an interactive mechanism against which I have already argued in (17), but which may not be much more inefficient than continual reference to the tables. Parallel routines are probably the most efficient, provided that the link editor can be persuaded to omit those not used.

Comment

The overriding impression gained from reading all these documents is the extent of consensus already existing, particularly if one considers only subroutine packages.

The concept of sequence, either of vertices in a polygon, or of calls which use current position to link each call to the next, is used universally in the packages, even though no sequence is inherent in the final picture, and not all the self-contained languages use it. This is a very significant point, because there already exist international standards for the specification of sequential geometric configurations. The ISO standards for the CLFILE and for machine tool control tape formats are completely relevant, and we should propose alternatives only with good, well argued reasons.

Modal variables are used widely, mainly because of the combinatorial explosion if different calls need to be made for every combination of linewidth, colour, line-style, geometric form, transformed or untransformed, relative or absolute coordinates etc. etc. and because of the large number of parameters if every aspect has to be specified in every call.

Modality also allows facilities such as naming to be implemented in a way which does not impose overheads on users who do not require the facility.

Two concepts not widely recognized are the block structure concept and the pipeline concept. The block structure makes mode changes at the start of a block, relative to whatever was outside, and the mode changes last until the end of the block. Some graphic hardware uses this concept for linear transformations, but it can be applied much more generally. The pipeline implementation concept imagines a number of processing actions arranged in a sequence. Each atom in the graphic stream passes through the actions in turn sometimes unchanged, sometimes acted upon by the processors, sometimes being transformed into one or more atoms of a different kind, sometimes providing a processor with information for the subsequent action of that processor.

These two concepts are not necessarily compatible. Where transformations are not commutative the block structure determines which of the two products are required by the sequence in which the transformations are applied; the pipeline structure imposes its own sequence on the combination (unless both transformations are applied at the same point along the pipeline).

Each of these may be applicable in specific circumstances. The combination of linear transformations is now generally recognized as being determined by the sequence in which translation and rotation are called up: the combination of circular interpolation and logarithmic scales is not obvious.

Detailed discussion of particular pairs of transformations would be a useful exercise, to determine whether a generally acceptable, consistent pipeline sequence exists.

Dynamic sequencing of the pipeline can be achieved in a package context by use of nested functions. This implies either that transformations involving storage (e.g. macro expansion, fillet radius insertion) are excluded, or that the functions take complete geometric descriptions (e.g. at least of profiles) for their arguments and values. The latter implies a separation of definition from transformation and actual display. This may well be desirable. It is also only possible within Fortran by means of tricks, such as using integer variables to implement pointers to the actual data items. This would make the package based on such concepts somewhat difficult to become familiar with.

The question of device binding time is also worthy of discussion, because there appear to be significant storage overheads involved in run-time binding in a subroutine package as compared with link-time binding or alternatively with run-time binding as an operating system function.

The naming issue should be discussed in some detail. In particular we should identify whether it is possible to build first single level naming, then hierarchic naming, as optional extras on to a system which runs without any overheads in its basic form for passive graphics. If so the whole question of single versus multilevel naming is bypassed. If not, then that question also needs consideration.

I am disappointed at the length of time it is taking for language processing ideas to be applied to graphic input. The next step from the idea of virtual devices, now widely accepted, to that of graphic lexemes is such a small one. With the known techniques of Syntax Description Languages, I wonder what the difficulty is.

NGP distinguishes between events and states for input. Events are clearly lexemes in the input stream, but states, which can be monitored continuously, at a regular rate, or at random, can also be fitted into a language processing view. This can be done either by:

  1. turning each reading of the state into a lexeme, i.e. by letting the lower levels of the system handle the sampling.
  2. by issuing read requests through the output mechanism, and treating the samples then taken as lexemes. or
  3. by bypassing the language processor for this purpose, and just connecting the state to a modal variable.

Conclusions

As a result of writing this survey I am confirmed in my opinion that the most useful discussion we can have will be related to a format for storage and transmission of graphic data. We should aim to identify criteria by which we can compare proposals quantitatively (the bit-counts used in this paper are indicative of the possibility of a quantitative approach, though not themselves adequately thought out). We should also identify the implications which features of such formats might have for subroutine packages and ergonomic languages using them in both batch and interactive contexts.

Acknowledgements

Thanks are due to all those who supplied literature for this survey. In particular to BAC and ICL who made internal documents available; to Mott, Hay and Anderson and to NEL, who were of great assistance in supplying information about BIPS, CLDATA and NCPT; and to Kongsberg Ltd. who supported my presentation of this material.

Appendix A - Sources

(1) Color Jet Plotter. glossy brochure

(2) Color Jet Plotter. program introduction

(3) Graphics in the BASIC Language. Luehrman and Garland, CGQ Vol 8 No 3 pp 1 - 8, 1974

(4) A Network Graphics Protocol. Sproull and Thomas, CGQ Vol 8 NO 3 pp 27-51 1974

(5) DRAW. M. Smith, CGQ Vol 8 No 2 pp 1 - 11 1974

(6) MAPS - A Generalized Image Processor, Fischer, CGQ Vol 7 No 3 pp 29 / 37 1974

(7) Graphics in APL. Bork CGQ Vol 7 No 3 pp 29 - 37 1973

(8) Basic Graphics Support. Meads CGQ Vol 7 No 3 pp 38 - 53 1973

(9) GHOST. Walsh and Prior CGQ Vol 7 No 2 pp 13 - 15 1973

(10) ARTIST - Abstract Linda Shapiro CGQ Vol 7 No 2 pp 39 - 42 1973

(11) Plato IV CGQ Vol 6 No 2 pp 7-9 1972

(12) Computer Graphics Glossary 1970

(13) Raster Graphics for Spatial Applications Fischer and Nunley CGQ Vol 9 NO 2 pp 1-8 1975

(14) DIGS + Satellite Computer Graphics at UNC J.D. Foley 1975

(15) Some remarks on Standardization of Graphical Software Schlectendahl, E.G. and Schuster, R. undated

(16) Graphics Standards and Design Criteria for the Codegenerator Interface Sancha, T.L. 1975

(17) Responses to item 16 Sabin, M.A. 1975

(18) Some notes on Software Standardization Sancha, T.L. 1975

(19) PHILDIG B.Fink 1975

(20) GMB - a graphics software system E. Horbst undated

(21) An integrated graphics system which provides the use of various graphic terminals. Horbst, E, Geitz, G., and Gonauser, M. Interactive Systems pp 45 - 56

(22) Allgemeine Gesichtszeunte zur Normung von Grundfunktionen der Grafischen Datenverarbeitung Balzer et al. 1975

(23) UGP Encarnacao and Hunger undated

(24) GRAFSY Konkard and Engl undated

(25) UGP II Programmers reference manual

(26) Survey of Computer Graphics J.E. Shopiro Jan 1974

(27) Interaction with Visual information D.J. Grover CAD 74 Proceedings

(28) I-DATA Specification ICL 1969

(29) GINO-F Standard Graphics Software H.W. Bradley Aug 1973

(30) Technical description of GINO-F R.G. Newell Aug 1973

(31) GINO-F External Specification July 1974

(32) GPGS Preliminary design specifications Groot and Patberg July 1972

(33) SPROGS Manual R.E. Thomas Jan 1974

(34) Phildig subroutine call specification undated

(35) GPGS-F Users Guide Sept 1975

(36) GPGS Draft reference manual July 1974

(37) GPGS Users Guide part II July 1974

(38) Minutes of Graphics Standards planning committee 14 July 1974

(39) GRID W. Prior Aug 1973

(40) AUTOPROD / Introductory synopsis Col.F.A.N.Hitch Dec 1974

(41) Midi, Un systeme de programmation graphique pour mini ordinateur J.P.Crestin, J. Hugues and M. Maille Journees Graphiques 1973 Colloques AFCET-IRIA, Paris 1973

(42) OXSYS/BOS/T Applied Research of Cambridge 27 Nov 1975

(43) Comparison of GINO-F, MEDALS and 2-DG E. Hoskins part of a report by Applied Research of Cambridge

(44) Systeme Graphique MIDI. Dossier de realisation R.Houdas, J. Hugues ENSTA Groupe dlnformatique interactive Rapport Interne Oil 1973

(45) Systeme Graphique MIDI. Manuel de Utilization J. Hugues ENSTA GROUPE DInformatique interactive Nov 1973

(46) GPGS Users Tutorial L.C. Caruthers and A. van Dam Graphics Group University of Nigmegen 1975

(47) DC300 Fortran Driver Kongsberg Vaapenfabrikk Dec 1974

(48) Conversational Building and Display of Solid Objects V. Casanove - IBM, Pisa S. Trumpy - CNUCE, Pisa

(49) Languages for Graphic Attention Handling I.W. Cotton UNIVAC Pennsylvania unidentified journal pp 1049 - 1091

(50) AMESPLOT - A Higher Level Data Plotting System lan Hirschsohn CACM Vol 13 No 9 Sept 1970

(51) A program for spectral analysis using a graphic display system. Bertil Ekenberg Institutionen for informationsbehandling Lund, Sweden

(52) Interactive design of interpolated surfaces V. Casanova, E. Dettore, S. Trumpy CNUCE, Pisa

(53) Kongsberg Drifting Routines Kongsberg Vaapenfabrikk Feb 1974

(54) The DISSPLA Graphics Software Package Marya Repko Proc, CAD 76 March 1976

(55) GRAFPAC Graphic Output Subroutines for 'the GE 635 Computer F. James Rohlf Computer Contribution 36 State Geological Survey, Univ. of Kansas 1969

(56) APLG - An APL based system for interactive computer graphics W.K. Giloi and J. Encarnacao Proc. Nat. Comp. conf. 1974 pp 521 - 528

(57) Organisation des systemes d aides graphiques Repartition des fonctions entre le materiel et les logiciels R.A. Guedj Proceedings of CAD 75 Milan June 1975

(58) Interactive graphics on intelligent terminals in a timesharing environment W.K. Giloi, J. Encarnacao and S. Savitt Proceedings of CAD 75 Milan June 1975

(59) A graphical picture drawing language M.G. Notley Computer Bulletin March 1970

(60) Program G439 M.A. Sabin British Aircraft Corporation internal document May 1970

(61) Notes on the ICT Graph plotter K.W. Tate British Aircraft Corporation internal document undated.

(62) List of G3D Subroutines part of British Aircraft Corporation internal document 1976

(63) Methods for plotting a function of one variable M.J.D. Powell Course notes on Plotting A.E.R.E. Harwell ETC/L 1245 1973

(64) Methods for passing a smooth curve through a sequence of data points. M.J.D. Powell Course notes on Plotting A.E.R.E. Harwell ETC/L 1246 1973

(65) Methods for plotting contours of a of two variables. M.J.D. Powell Course notes on Plotting A.E.R.E. Harwell ETC/L 1249 1973

(66) SPROGS supplement R.E. Thomas Atlas Computer Laboratory Jan 1975

(67) GROATS Manual D.C. Toll and F.R.A. Hopgood Atlas Computer Laboratory June 173

(68) Polygraphics on the IBM 370/195 John W.E. Lewis Atlas Computer Laboratory June 1973

(69) The Polygraphics Software Package -of its features. Frank J. Sarno UAIDE 1968 pp 402 - 408

(70) Automating animation G.A. England, J.R. Gallop, F.R.A.Hopgood and R.E.Thomas Atlas Computer Laboratory ONLINE 72 Conf.Proc. pp 445 - 463 1972

(71) Pictorial description language Geoff Wyvill Interactive Systems pp 511 -

(72) Monster - A graphic language Per Jacobi Laboratory of Computer Science School of Architecture Copenhagen

(73) The design of another graphics subroutine package Peter Darvars, Peter Hosszu and Gergely Krammer MTA SzTAKI 1111 - Budapest, Kende uu. 1317 Hungary

(74) Anwender Information 18/71 Programmsystem DIGRA Institut fur Schiffbau - Rechenzentrum Rostock June 1971

(75) Logigraf summary Pistenon

(76) Logigraf - description Compagnie d Informatique economique et technique

(77) Device Independent Graphics Design Criteria for Network Protocols and Subroutine Packages report of meeting of B.C.S. C.A.D. Specialist Group Dec 16 1974

(78) Raster Scan Graphics in CAD W.M. Newman proc. IFIP WG5.2 working conference on CAD systems Austin Texas Feb 1976

(79) A software system for computer aided activities. Mamoru Hosaka, Takeshi Matsushita, Fumihiko Kimura and Naotake Kakishita. proc. IFIP WG5.2 working conference on CAD systems, Austin Texas Feb 1976

(80) British Integrated Program System for Highway Design Part II pp 7 - 62 and 7-63 Highways Engineering Computing Branch Department of the Environment St. Christopher House Southwark St. London

(81) Draft International Standard ISO/DIS 2539 Punched tape variable block format for contouring and contouring/positioning numerically controlled machines. British Standards Institute April 1972

(82) Draft International Standard ISO/DIS 3592 Numerical control of machines - NC processor output - Logical structure and major words. CLDATA Group of ISO TC97/SC9 Jan. 1976

(83) Multics General Graphics System pp 1-1 to 2-25 of unidentified, undated document.

Appendix B - Categorization

Paper Gen.
Cons.
Hardware Usage Protocols Language Fortran Othr
1 *
2 COLOR
3 Basic
4 NGP
5 DRAW
6 *
7 APL
8 *
9 GHOST
10 ARTIST
11 *
12 Glossary
13 MAPS
14 DIGS
15 *
16 *
17 *
18 *
19 PHILDIG
20 GMB
21 GMB
22 *
23 UGP
24 GRAFSY
25 UGP
26 *
27 *
28 IDATA
29 GINO-F
30 GINO-F
31 GINO-F
32 GPGS
33 SPROGS
34 PHILDIG
35 GPGS-F
36 GPGS
37 GPGS
38 Minutes
39 GRID
40 AUTOPROD
41 MIDI
42 OXSYS/BOS/T
43 *
44 MIDI
45 MIDI
46 GPGS
47 DC300
48 *
49 *
50 AMESPLOT
51 *
52 *
53 KV
54 DISSPLA
55 GRAFPAC
56 L4 APL-G
57 * *
58 *
59 GPDL
60 G439
61 HGPLOT
62
63
64
65
66 SPROGS
67 GROATS
68 POLYGRAPHICS
69 POLYGRAPHICS
70
71 PDL2
72 MONSTER
73 ANOTHER
74 DIGRA DIGRA
75 LOGIGRAF
76 LOGIGRAF
77 *
78 *
79 * APL
80 BIPS
81 NCPT
82 CLDATA
83 MULTICS

Critique of Sabin's Survey

L. Kjelldahl

In his survey, M. Sabin makes divisions:

  1. Picture Description Languages
  2. Graphic Stream Formats and Protocols
  3. Procedure Libraries

He should also include:

  1. Command- or operations- oriented systems with many commands, perhaps with one button for each operation. These systems are often oriented towards special applications and they are easy to use. One drawback is that they are not powerful enough if you want to do something unforeseen.
  2. Extension of existing languages: A subroutine package can be seen as an extension of a language. Here we refer to a more powerful extension, perhaps possible to do within the language or with the use of a preprocessor. Extensions of existing languages may be machine-inefficient. However, it is possible to obtain machine and device independence and the programmer can use his old programs and doesn't have to learn a completely new language. Many implementations exist. BASIC, APL, PL/I, ALGOL and SIMULA are the most common languages that have been extended.

A quotation from Sabin's survey:

The overriding impression gained from reading all these documents is the extent of consensus already existing, particularly if one considers only subroutine packages.

From the approximately 10 different Fortran-subroutine packages that I have used I can't see very much of a consensus. Maybe M. Sabin has received only the best part of the existing packages. If that is true, his survey could perhaps serve as a document to read before implementing your own graphics package. Maybe that would prevent some people from writing new packages. One could ask : Why so many Fortran-subroutine packages for graphics? One answer could be : It is such a nice exercise to implement a graphics package. And when it is ready the implementor certainly expects people to use the package.

Notes taken during the presentation by M. Sabin and during the critique by L. Kjelldahl

Malcom Sabin apologized for the size and lateness of his paper. Any such survey must be cursory, and he solicited corrections and additions from others. He pointed out that it was a very subjective survey, in many ways a position paper.

Malcolm summarized the topics in his paper, which divides actual systems into three types: languages, subroutine packages (which he calls "procedure libraries") and protocols. He added to the language-section by noting that text primitives were omitted by mistake, and by giving the following examples to distinguish explicit and implicit computation:

      DRAWTO (X, Y)           involves no explicit computation
      DRAWTO (1+1+1, 2*2)     involves explicit computation

If the object SQ1 defined as:

SQ1:  ..... 
LB :  .....
      .....
      .....

Then if we say TRANSFORM SQl into SQ2 and wish to refer to LB of SQ2, this will involve implicit computation. Another example is the computation of the endpoints of the line AB

A B

Concerning the second type of system, protocols, Sabin asked how many implementations of the ARPA network graphics protocol had been completed, and expressed surprise at the answer of zero. He pointed out that there may be differences between the NGP and the communication between different parts of a graphics package, but the way we describe them is the same. Sabin feels strongly that protocols should be legible. His paper includes an example and a table of performance figures; Sabin also invented his own protocol that was legible and yet substantially better than those in the table.

Here Tom Sancha suggested that Sabin be more consistent about the use of the adjectives good and bad; Sabin said he would try, but probably fail.

Concerning subroutine packages, Sabin pointed out the difficulty of compiling the tables, since by adding one more function to a package we could fill any gap in the table. He asked if the binding time column was considered important. He explained the names column, where 1 and 2 mean one or two levels, T implies tree-structured.

Sabin finished by discussing the structure of packages. He distinguished three types:

  1. two-part systems e.g. GINO-F with its device dependent and device independent parts.
  2. layered systems: LOG function converts log coordinates to cartesian, circles interpolated to lines, 3D reduced to 2D etc.
  3. pipeline systems: each process applies a well defined function to the data. This is analogous to a chemical plant, with flow and some lookahead. Sabin sees layers as the most general form of the pipeline and, if there are only two boxes, of the two-part system.

Alan Shaw asked about feedback within the pipeline, which Sabin likened to recursion. Sancha said one could create output files and then feed them into the pipeline (this could create problems with Fortran). Van Dam pointed out a similar property of digital transformation hardware, which could generate transformed data for later use. Sabin indicated that he had no experience of these.

During the period for classification questions, Barbara Liskov suggested that Sabin should be careful to get his semantics right: it was bad to use implementation restrictions such as Fortran and its lack of recursion. Sancha followed this up. In Sanchas' words ; Sabin, in describing the pipeline, mixed up what he wished to do with how he wished to achieve it; for example, he wished to have some non commutative transformations (what) and he achieved them by passing data down a pipeline consisting of the application of a series of transformations (how).

Richard Guedj pointed out that layers are not tree structures. Level A could go direct to Layer C or through layer B to layer C.

Jim Foley pointed out that most two-level, front-end/back-end systems are layered at both ends; there is a single interface between, usually defined in terms of a pseudo picture code for some virtual display. The back end is often called a device driver.

On the looping question, van Dam reiterated that you may want to feed data back, and Sabin agreed that this is important if one wishes to perform special computation on them. Examples of these special computations would be useful.

Guedj asked what Sabin would not include in his transformations : Sabin replied: Topological transforms i.e. transformations that preserve the picture's topology but not its geometry.

Shaw disagreed with his four language categories, saying one could use the last (new graphics languages) to write any of the others. During his talk, Kjelldahl commented on Sabin's statement that a consensus existed: he wondered what this consensus was? Sabin said there were many things one took for granted, such as Current beam position, and these formed an unwritten consensus. When Kjelldahl pointed out that packages might differ in ease of use, Sabin countered that every system designer claims that his system is easy to use.

Panel discussion on Software interfaces for Graphics

Panel: Foley, Dunn, Newman, Kjelldahl, Sabin

Editors note
From the preceding sessions a creative tension between users and makers of graphics systems was established. With users and designers from the floor, panel members were expected to highlight the analogies and strong differences, the lines of natural separation in order to get a better understanding of the whole field.
GUEDJ
Each panel member is encouraged to act as a mirror from the floor on discussion/reaction to Sabin's paper.
DUNN
There is a dichotomy of builders versus users of systems, which is likely to result in two distinct points of view.
CRESTIN
In fact, there are 3 groups: users, computer scientists, designers.
FOLEY
Are we talking about tool builders or tool users ? Probably the former?
VAN DAM
Users must be sophisticated for sophisticated packages.
BONO
e.g. binding time decisions of system are relevant to applications programmer and user.
GUEDJ
Does categorization help in:
  1. Understanding
  2. Ability to use?
BONO
Categorisation is good for understanding but not useful for methodology, standards,...
Should be looking at formal models a la PARNAS, etc ., transparency, layers.
SANCHA
Sabin categorization is a reduction of literature, but we need a distillation of ideas, principles,... Suggestion: Take Parnas paper or Newman and Sproull's approach to graphics system design.
Questions : operators, control structure, display file structures, functions on pictures, minimal set of functions.
We should be concerned with What are basic things not How they are implemented.
SABIN
Survey does indeed address these issues.
FOLEY
Subroutine call, protocol classification of Sabin paper is inappropriate.
Should discuss what are basic functions to be included in a system, no matter how it be implemented.
NEWMAN
-Need principles but missing from survey.
Pessimistic about designing a standard here and, in any case, it is not our role.
Principles are our goal.
BONO
Echoes Newman.
SABIN
Asking for example of a principle.
BONO
e.g. concept of window and viewport.
VAN DAM
e.g. delay the binding time.
SHAW
Definitions of pictures, lines, points, etc. important -especially formal ones (abstract).
GUEDJ
Suggestions : Image processing and graphics similar ; one doesn't have to look at input in order to treat output.
NEWMAN
Must identify things that are useful for building good interactive systems.
VAN DAM
Unhappy ; too much hair splitting ; stick to Foley's suggestion ; try to agree on functions e.g. for line drawing synthetic graphics, concentrate on semantics. The use of sophisticated as applied to graphics is a principle!
SAKAROVITCH
Graphical output and input essential.
NEWMAN
Input standardization attempts would be restrictive and end up with a worse user interface; much bad experience.
FOLEY/DUNN
Input views different between user and programmer.
GUEDJ
Maintain a free wheeling, constraint-free discussion.
VAN DAM
Principle: standards should not be used to enforce a lowest common denominator. On standards : not you shall have feature x but if you have feature x then this is the way to do it.
LISKOV
Issues are at 2 levels:
  • What are abstractions of graphics
  • How do we structure abstractions well.
and 2 remarks:
  • One has to constrain things e.g. Parnas, if progress is to be made.
  • Extensions of a base is not a good approach; it failed in programming languages.
SABIN
Use terms concepts and strategies.
Floor
We need a definition of methodology.
SANCHA
Code of practice not standards is conventional engineering approach.
VAN DAM
Happy with codes of practice for methodology.
NEWMAN
We're all designers but shouldn't design in this workshop, need meaningful statements about users point of view.
VAN DAM
We are talking about designing feature sets not systems.
SANCHA
Example of what we want: use design experiences of members to recommend/discuss adequate and satisfactory codes of practice, pitfalls.
GUEDJ
Hope for constraints by evening.
⇑ Top of page
© Chilton Computing and UKRI Science and Technology Facilities Council webmaster@chilton-computing.org.uk
Our thanks to UKRI Science and Technology Facilities Council for hosting this site