|
Part I Introduction to Computer Graphics Based on GKS |
|
|
1 | (50) |
|
1 What Is Computer Graphics? |
|
|
2 | (2) |
|
1.1 Definition of Computer Graphics |
|
|
2 | (1) |
|
1.2 Areas of Computer Graphics |
|
|
2 | (2) |
|
1.3 Impact of the Graphical Kernel System on Computer Graphics |
|
|
4 | (1) |
|
2 Aims and Contents of Part I |
|
|
4 | (1) |
|
3 The Computer Graphics User |
|
|
5 | (1) |
|
4 Interfaces of the Graphical Kernel System |
|
|
6 | (2) |
|
5 Principles and Goals of the Graphical Kernel System |
|
|
8 | (3) |
|
6 Main Concepts of the Graphical Kernel System |
|
|
11 | (2) |
|
7 Creating Graphical Output |
|
|
13 | (12) |
|
7.1 Line Graphics and Raster Graphics |
|
|
13 | (1) |
|
7.2 Output Primitives and Attributes |
|
|
14 | (6) |
|
|
15 | (1) |
|
7.2.2 Output Primitive Attributes |
|
|
16 | (4) |
|
7.3 Indices, Bundles, and Tables |
|
|
20 | (5) |
|
8 Coordinate Systems and Transformations |
|
|
25 | (3) |
|
|
25 | (1) |
|
|
26 | (1) |
|
8.3 The Normalization Transformation |
|
|
26 | (2) |
|
|
28 | (1) |
|
9 The Graphical Workstation |
|
|
28 | (5) |
|
9.1 Routing Output to Workstations |
|
|
29 | (1) |
|
9.2 Types of GKS Workstations |
|
|
30 | (1) |
|
9.3 The Workstation Transformation |
|
|
30 | (2) |
|
|
32 | (1) |
|
9.5 Addressing Special Workstation Capabilities |
|
|
32 | (1) |
|
|
33 | (4) |
|
10.1 Interactive Computer Graphics |
|
|
33 | (1) |
|
10.2 Logical Input Device Classes |
|
|
33 | (1) |
|
|
34 | (2) |
|
10.4 Echoes, Prompts, and Input Device Initialisation |
|
|
36 | (1) |
|
|
37 | (5) |
|
11.1 Structuring Pictures |
|
|
37 | (1) |
|
11.2 Manipulating Segments |
|
|
38 | (1) |
|
|
39 | (1) |
|
11.4 Segment Transformations |
|
|
40 | (1) |
|
11.5 Workstation-Dependent and Workstation-Independent Segment Storage |
|
|
40 | (1) |
|
|
41 | (1) |
|
|
42 | (4) |
|
|
42 | (1) |
|
|
43 | (2) |
|
12.3 The Metafile Interface |
|
|
45 | (1) |
|
12.4 The Metafile Formats |
|
|
45 | (1) |
|
13 States and State Lists |
|
|
46 | (2) |
|
13.1 The GKS Operating State |
|
|
46 | (1) |
|
|
47 | (1) |
|
13.3 Inquiry Functions for State List Values |
|
|
47 | (1) |
|
|
48 | (1) |
|
|
48 | (3) |
|
Part II The Process of Generating a Standard |
|
|
51 | (32) |
|
1 The Evolution of Computer Graphics |
|
|
52 | (5) |
|
|
52 | (1) |
|
|
53 | (2) |
|
|
55 | (2) |
|
2 Committees, People, and Events |
|
|
57 | (5) |
|
2.1 Graphics Standardization Committees |
|
|
57 | (2) |
|
|
59 | (1) |
|
2.3 Overview of the Main Events |
|
|
59 | (3) |
|
3 GKS Review -- Problems and Their Solutions |
|
|
62 | (21) |
|
3.1 Scope of the Standard |
|
|
65 | (1) |
|
|
66 | (4) |
|
|
70 | (4) |
|
|
74 | (3) |
|
|
77 | (3) |
|
|
80 | (3) |
|
Part III Graphical Kernel System Programming |
|
|
83 | (342) |
|
1 Format and Structure of Part III |
|
|
84 | (5) |
|
|
84 | (1) |
|
1.2 Format of GKS Function Definitions |
|
|
84 | (4) |
|
1.2.1 Example of the Definition of GKS Functions |
|
|
85 | (1) |
|
1.2.2 Format of Language-Independent Definition |
|
|
85 | (2) |
|
1.2.3 Format of FORTRAN Definition |
|
|
87 | (1) |
|
|
88 | (1) |
|
1.3.1 Example of an Example |
|
|
88 | (1) |
|
1.3.2 Format of Pascal Examples |
|
|
88 | (1) |
|
1.3.3 Format of FORTRAN Examples |
|
|
89 | (1) |
|
|
89 | (1) |
|
|
89 | (14) |
|
|
89 | (3) |
|
2.2 Functionality of the GKS Levels |
|
|
92 | (9) |
|
2.2.1 The Minimal or Lowest Level of GKS (Level 0a) |
|
|
93 | (3) |
|
|
96 | (1) |
|
|
97 | (2) |
|
|
99 | (1) |
|
|
100 | (1) |
|
2.3 The Impact on Writing Portable Application Programs |
|
|
101 | (1) |
|
|
102 | (1) |
|
|
103 | (16) |
|
|
103 | (1) |
|
|
104 | (3) |
|
3.3 The Functions Allowed in Individual States |
|
|
107 | (2) |
|
|
109 | (6) |
|
3.5 Basic Control Functions |
|
|
115 | (2) |
|
|
117 | (2) |
|
|
119 | (34) |
|
|
119 | (2) |
|
4.2 Workstation Description Table |
|
|
121 | (7) |
|
4.3 Workstation State List |
|
|
128 | (4) |
|
4.4 GKS Functions Which Involve Workstations |
|
|
132 | (6) |
|
|
138 | (5) |
|
4.6 Deferring Picture Changes |
|
|
143 | (5) |
|
4.7 Addressing Workstation Capabilities Not Covered by GKS |
|
|
148 | (2) |
|
|
150 | (2) |
|
|
152 | (1) |
|
|
153 | (19) |
|
|
153 | (1) |
|
5.2 Normalization Transformation |
|
|
154 | (2) |
|
5.3 Workstation Transformation |
|
|
156 | (3) |
|
|
159 | (2) |
|
5.5 Transformation of LOCATOR and STROKE Input |
|
|
161 | (2) |
|
|
163 | (8) |
|
|
171 | (1) |
|
|
172 | (65) |
|
|
172 | (8) |
|
|
180 | (6) |
|
6.2.1 Global POLYLINE Attributes |
|
|
181 | (3) |
|
6.2.2 Workstation-Dependent POLYLINE Attributes |
|
|
184 | (2) |
|
|
186 | (6) |
|
6.3.1 Global Polymarker Attributes |
|
|
188 | (3) |
|
6.3.2 Workstation-Dependent POLYMARKER Attributes |
|
|
191 | (1) |
|
|
192 | (16) |
|
6.4.1 TEXT Attributes for Beginners |
|
|
193 | (2) |
|
|
195 | (1) |
|
6.4.3 Text Extent Rectangle |
|
|
196 | (3) |
|
6.4.4 Text Font and Precision |
|
|
199 | (2) |
|
6.4.5 Setting Global Text Attributes |
|
|
201 | (5) |
|
6.4.6 Workstation-Dependent TEXT Attributes |
|
|
206 | (2) |
|
|
208 | (10) |
|
6.5.1 Global FILL AREA Attributes |
|
|
210 | (5) |
|
6.5.2 Workstation-Dependent FILL AREA Attributes |
|
|
215 | (3) |
|
|
218 | (2) |
|
6.7 GENERALIZED DRAWING PRIMITIVE (GDP) |
|
|
220 | (2) |
|
6.8 Attribute Setting Functions Which Concern All Primitives |
|
|
222 | (4) |
|
6.8.1 Setting the Colour Table |
|
|
222 | (2) |
|
6.8.2 Setting the Aspect Source Flags |
|
|
224 | (1) |
|
6.8.3 Setting the Pick Identifier |
|
|
225 | (1) |
|
|
226 | (1) |
|
|
226 | (9) |
|
|
235 | (2) |
|
|
237 | (36) |
|
|
237 | (1) |
|
7.2 How Are Segments Generated? |
|
|
237 | (1) |
|
7.3 What Is Stored in a Segment? |
|
|
238 | (1) |
|
7.4 When Are Primitives Taken from the Transformation Pipeline? |
|
|
239 | (2) |
|
7.5 Segment Creation and Deletion |
|
|
241 | (5) |
|
7.6 Manipulation of the Segment Attributes |
|
|
246 | (5) |
|
7.7 The Workstation-Independent Segment Storage (WISS) |
|
|
251 | (6) |
|
7.8 Different Levels of Segmentation |
|
|
257 | (1) |
|
|
257 | (2) |
|
|
259 | (13) |
|
|
272 | (1) |
|
|
273 | (67) |
|
8.1 Introduction to Logical Input Devices |
|
|
273 | (5) |
|
|
274 | (1) |
|
8.1.2 Logical Input Classes and Values |
|
|
274 | (1) |
|
|
275 | (1) |
|
8.1.4 Logical Input Device Model |
|
|
275 | (2) |
|
8.1.5 Setting the Logical Input Device Mode |
|
|
277 | (1) |
|
8.2 Details About Logical Input Devices |
|
|
278 | (4) |
|
8.2.1 LOCATOR and STROKE Devices |
|
|
278 | (3) |
|
|
281 | (1) |
|
|
281 | (1) |
|
|
281 | (1) |
|
|
282 | (1) |
|
8.3 Initialising Logical Input Devices |
|
|
282 | (12) |
|
8.4 Changing the Input Device Mode |
|
|
294 | (4) |
|
|
298 | (12) |
|
8.6 Sample Input Functions |
|
|
310 | (9) |
|
|
319 | (11) |
|
8.7.1 Input Queue and Current Event Report |
|
|
319 | (1) |
|
8.7.2 Functions to Await and Delete Event Queue Entries |
|
|
320 | (5) |
|
8.7.3 Get Input Functions |
|
|
325 | (5) |
|
8.8 A Compound Example of Using the GKS Input Functions |
|
|
330 | (8) |
|
|
338 | (2) |
|
|
340 | (12) |
|
|
340 | (2) |
|
9.2 The Emergency Closure Procedure |
|
|
342 | (1) |
|
9.3 The ERROR HANDLING and ERROR LOGGING Procedures |
|
|
342 | (3) |
|
9.4 Error Detection Within GKS Procedures |
|
|
345 | (1) |
|
9.5 Reaction of Application Programs to Error Detections |
|
|
345 | (1) |
|
9.6 List of GKS Error Numbers and Messages |
|
|
346 | (6) |
|
|
346 | (1) |
|
|
347 | (1) |
|
|
348 | (1) |
|
|
348 | (1) |
|
|
349 | (1) |
|
|
349 | (1) |
|
|
350 | (1) |
|
|
350 | (1) |
|
|
350 | (1) |
|
9.6.10 Miscellaneous Errors |
|
|
350 | (1) |
|
|
351 | (1) |
|
|
351 | (1) |
|
9.6.13 Implementation-Dependent Errors |
|
|
351 | (1) |
|
|
352 | (1) |
|
|
352 | (51) |
|
10.1 State Lists and Inquiry Functions |
|
|
352 | (2) |
|
10.1.1 Error Reports in Inquiry Functions |
|
|
353 | (1) |
|
10.1.2 Inquiry Functions for the Settable State Lists |
|
|
353 | (1) |
|
10.1.3 Inquiry Functions for the Workstation Description Table |
|
|
354 | (1) |
|
10.1.4 Inquiry Functions for the Error State List and Pixel Memories |
|
|
354 | (1) |
|
10.2 Description of the Inquiry Functions |
|
|
354 | (40) |
|
10.2.1 Inquiry Function for Operating State |
|
|
355 | (1) |
|
10.2.2 Inquiry Functions for GKS Description Table |
|
|
355 | (2) |
|
10.2.3 Inquiry Functions for GKS State List |
|
|
357 | (7) |
|
10.2.4 Inquiry Functions for Workstation State List |
|
|
364 | (13) |
|
10.2.5 Inquiry Functions for Workstation Description Table |
|
|
377 | (14) |
|
10.2.6 Inquiry Functions for Segment State List |
|
|
391 | (1) |
|
|
392 | (2) |
|
10.2.8 Inquiry Function for GKS Error State List |
|
|
394 | (1) |
|
|
394 | (8) |
|
|
402 | (1) |
|
|
403 | (22) |
|
|
403 | (1) |
|
11.2 The Metafile Workstation |
|
|
404 | (1) |
|
|
405 | (7) |
|
11.3.1 Non-Graphical Data |
|
|
406 | (1) |
|
11.3.2 Graphical GKSM Output |
|
|
406 | (2) |
|
|
408 | (4) |
|
|
412 | (7) |
|
|
419 | (5) |
|
|
424 | (1) |
|
|
425 | (84) |
|
|
426 | (1) |
|
|
427 | (3) |
|
|
427 | (1) |
|
2.2 Functionality of GKS-3D |
|
|
428 | (1) |
|
|
429 | (1) |
|
|
430 | (1) |
|
|
431 | (5) |
|
|
436 | (16) |
|
|
436 | (1) |
|
5.2 Normalization Transformation |
|
|
437 | (1) |
|
5.3 Viewing Transformation |
|
|
438 | (8) |
|
5.4 Hidden Line/Hidden Surface Removal (HLHSR) |
|
|
446 | (2) |
|
5.5 Workstation Transformation |
|
|
448 | (2) |
|
5.6 Transformation of LOCATOR 3 and STROKE 3 Input |
|
|
450 | (2) |
|
|
452 | (15) |
|
|
452 | (2) |
|
|
454 | (1) |
|
6.3 POLYMARKER 3 Primitive |
|
|
455 | (1) |
|
|
455 | (2) |
|
6.5 FILL AREA 3 Primitive |
|
|
457 | (2) |
|
6.6 FILL AREA SET 3 Primitive |
|
|
459 | (5) |
|
6.7 CELL ARRAY 3 Primitive |
|
|
464 | (2) |
|
6.8 Generalized Drawing Primitive 3 (GDP3) |
|
|
466 | (1) |
|
|
467 | (4) |
|
|
471 | (11) |
|
|
472 | (5) |
|
8.2 Request Input Functions |
|
|
477 | (2) |
|
8.3 Sample Input Functions |
|
|
479 | (1) |
|
8.4 Event Input Functions |
|
|
480 | (2) |
|
9 List of GKS-3D Error Numbers and Messages |
|
|
482 | (1) |
|
9.1 GKS-3D Transformations |
|
|
482 | (1) |
|
9.2 GKS-3D Output Attributes |
|
|
482 | (1) |
|
9.3 GKS-3D Output Primitives |
|
|
483 | (1) |
|
|
483 | (21) |
|
10.1 Inquiry Functions for GKS-3D State List |
|
|
483 | (2) |
|
10.2 Inquiry Functions for GKS-3D Workstation State List |
|
|
485 | (9) |
|
10.3 Inquiry Functions for GKS-3D Workstation Description Table |
|
|
494 | (8) |
|
10.4 Inquiry Functions for the Segment State List |
|
|
502 | (1) |
|
|
502 | (2) |
|
11 Embedding the GKS Functions into GKS-3D |
|
|
504 | (4) |
|
|
508 | (1) |
|
Part V The GKS Environment |
|
|
509 | (123) |
|
1 Mapping Output Primitives and Attributes to Physical Workstations |
|
|
510 | (5) |
|
1.1 POLYLINE Primitive and Attributes |
|
|
510 | (1) |
|
1.2 POLYMARKER Primitive and Attributes |
|
|
511 | (1) |
|
1.3 TEXT Primitive and Attributes |
|
|
511 | (1) |
|
1.4 FILL AREA Primitive and Attributes |
|
|
512 | (1) |
|
|
513 | (1) |
|
1.6 GENERALIZED DRAWING PRIMITIVE (GDP) |
|
|
513 | (1) |
|
|
513 | (1) |
|
1.8 Transformability of Geometric Aspects of Non-Geometric Attributes |
|
|
514 | (1) |
|
|
515 | (1) |
|
2 Mapping Logical onto Physical Input Devices |
|
|
515 | (12) |
|
2.1 The Role of Logical Input Devices |
|
|
515 | (2) |
|
2.2 Properties of Logical Input Devices |
|
|
517 | (1) |
|
2.3 Properties of Physical Input Devices |
|
|
517 | (1) |
|
2.4 The Logical Input Device Model |
|
|
518 | (1) |
|
2.5 Means of Defining Logical Input Device Realizations |
|
|
519 | (4) |
|
2.5.1 A Syntax for the Specification of Interaction Processes |
|
|
520 | (1) |
|
2.5.2 Generating Logical Input Device Implementations |
|
|
521 | (2) |
|
2.6 Some Examples of Logical Input Device Realizations |
|
|
523 | (4) |
|
2.6.1 LOCATOR and STROKE Devices |
|
|
523 | (1) |
|
|
524 | (1) |
|
|
525 | (1) |
|
|
526 | (1) |
|
|
526 | (1) |
|
|
527 | (9) |
|
3.1 Feasibility of GKS Implementations |
|
|
527 | (1) |
|
3.2 Generality of GKS Implementations |
|
|
527 | (3) |
|
3.2.1 Environment-Specific Systems |
|
|
528 | (1) |
|
3.2.2 Device-Independent Systems |
|
|
529 | (1) |
|
3.2.3 Configurable Systems |
|
|
530 | (1) |
|
3.3 Some Implementation Concepts |
|
|
530 | (2) |
|
|
530 | (2) |
|
|
532 | (1) |
|
3.4 Permitted Differences Between GKS Implementations |
|
|
532 | (3) |
|
|
533 | (1) |
|
3.4.2 Workstation-Dependent Differences |
|
|
533 | (2) |
|
3.5 Documentation of an Implementation |
|
|
535 | (1) |
|
4 Language Interfaces and Their Implementation |
|
|
536 | (40) |
|
4.1 Guidelines for the Definition of Language Bindings |
|
|
536 | (2) |
|
4.1.1 Language Binding Rules |
|
|
537 | (1) |
|
4.1.2 Implementation of the Language Interface |
|
|
538 | (1) |
|
4.2 The GKS FORTRAN Language Binding |
|
|
538 | (18) |
|
4.3 The GKS Pascal Language Binding |
|
|
556 | (19) |
|
4.3.1 General Definitions |
|
|
556 | (2) |
|
|
558 | (7) |
|
|
565 | (10) |
|
4.4 Other Language Bindings |
|
|
575 | (1) |
|
5 Interfaces to Graphics Devices |
|
|
576 | (13) |
|
|
576 | (1) |
|
5.2 Separation of the Device-Independent from the Device-Dependent Code Parts |
|
|
577 | (2) |
|
|
579 | (2) |
|
|
579 | (1) |
|
5.3.2 Minimal DI/DD Interfaces |
|
|
580 | (1) |
|
5.3.3 Constructing DI/DD Interfaces |
|
|
580 | (1) |
|
5.4 The DI/DD Function Set |
|
|
581 | (2) |
|
5.4.1 The Workstation Function Set |
|
|
581 | (1) |
|
5.4.2 Device-Oriented Function Set |
|
|
582 | (1) |
|
5.5 DI/DD Interface Description Tables |
|
|
583 | (2) |
|
5.6 Computer Graphics Interface |
|
|
585 | (4) |
|
5.6.1 Functional Description |
|
|
587 | (1) |
|
|
587 | (1) |
|
|
587 | (1) |
|
5.6.4 Relationship of CGI to GKS |
|
|
588 | (1) |
|
5.6.5 Relationship of CGI to Metafiles |
|
|
588 | (1) |
|
|
589 | (15) |
|
|
589 | (1) |
|
6.2 Graphics Metafiles Proposals |
|
|
589 | (1) |
|
|
590 | (9) |
|
6.3.1 Contents of the GKS Metafile |
|
|
590 | (1) |
|
6.3.2 Format of the GKS Metafile |
|
|
590 | (1) |
|
6.3.3 Status of the Metafile Definition |
|
|
591 | (1) |
|
6.3.4 File Format and Data Format |
|
|
591 | (1) |
|
6.3.5 Generation and Interpretation of Metafile |
|
|
592 | (1) |
|
|
592 | (2) |
|
6.3.7 Items for Output Primitives |
|
|
594 | (1) |
|
6.3.8 Items for Output Primitive Attributes |
|
|
595 | (2) |
|
6.3.9 Items for Workstation Attributes |
|
|
597 | (1) |
|
6.3.10 Item for Clipping Rectangle |
|
|
598 | (1) |
|
6.3.11 Items for Workstation Transformation |
|
|
598 | (1) |
|
6.3.12 Items for Segment Manipulation |
|
|
598 | (1) |
|
6.3.13 Items for Segment Attributes |
|
|
598 | (1) |
|
|
599 | (1) |
|
6.4 The ISO Computer Graphics Metafile CGM |
|
|
599 | (4) |
|
|
603 | (1) |
|
7 Certification! Validation of GKS |
|
|
604 | (18) |
|
|
604 | (1) |
|
7.1.1 Verifying GKS Implementations |
|
|
604 | (1) |
|
7.1.2 Falsification Approach |
|
|
604 | (1) |
|
7.2 A Model for Certification |
|
|
605 | (3) |
|
|
606 | (1) |
|
7.2.2 Candidate Implementations |
|
|
607 | (1) |
|
7.2.3 Reference Implementations |
|
|
607 | (1) |
|
7.3 Interfaces for Testing |
|
|
608 | (3) |
|
7.3.1 Application Program Interface |
|
|
608 | (1) |
|
|
609 | (1) |
|
|
610 | (1) |
|
7.4 Certification by Program Construction |
|
|
611 | (1) |
|
7.5 A Combined Model for Verification and Testing |
|
|
612 | (4) |
|
7.5.1 Format of Certification Data |
|
|
613 | (1) |
|
7.5.2 Describing the Candidate Implementation |
|
|
614 | (1) |
|
7.5.3 Reference Implementation |
|
|
614 | (2) |
|
7.6 GKS Certification in Practice |
|
|
616 | (6) |
|
|
616 | (1) |
|
|
616 | (1) |
|
7.6.3 Certification Procedure |
|
|
617 | (1) |
|
7.6.4 Assistance for an Implementor |
|
|
617 | (1) |
|
7.6.5 The Present State of Practical Certification |
|
|
617 | (5) |
|
|
622 | (10) |
|
|
622 | (1) |
|
|
623 | (9) |
References |
|
632 | (7) |
Index |
|
639 | |