|
|
1.1 root 1: .so ../ADM/mac
2: .XX 12 195 "PED \(em A Picture Editor"
3: .de fC
4: .sp .3v
5: .B "Figure \\$1."
6: ..
7: .TL
8: PED \(em A Picture Editor
9: .br
10: A User Manual
11: .AU
12: Theo Pavlidis
13: .AI
14: .MH
15: .SP 2
16: .2C
17: .NH
18: Introduction
19: .PP
20: \fIPed\fP is a program for creating illustrations interactively
21: using the DMD5620 (Blit) terminal and the mouse.
22: (A version also exists for the Sun workstation.)
23: It runs under
24: .ft I
25: mux (mpx, layers)
26: .ft
27: so that you can use one window for drawing while keeping in contact
28: with the world through the other windows.
29: You can create simple illustration without having to read
30: more than a small part of this manual
31: provided that you have already some familiarity with
32: .US
33: and the terminal itself.
34: There is on-line documentation which you can access by pressing
35: button 2 of the mouse over a menu item. An expanded copy of that documentation
36: is given as Appendix A and you can consult it anytime you wish
37: to find out the meaning of a particular menu selection.
38: Section 3 describes how to produce
39: hard copies from
40: .I ped.
41: Part of
42: .I ped
43: runs on the host machine and part on the terminal. Small drawings are
44: handled only by the terminal part but large drawings are kept on the host
45: and only parts of them are brought in the terminal for editing.
46: Figure 1 should give you an idea of what you can draw with
47: .I ped .
48: .1C
49: .KF bottom
50: .BB
51: .so dragon.so
52: .fC 1
53: An example of an illustration produced using \fIped\fP.
54: (Drawn by Paul Pavlidis.)
55: .KE
56: .2C
57: .PP
58: \fIPed\fP is part of Research
59: .UX
60: but it is also
61: available in many installations running System V or BSD
62: .UX
63: systems.
64: While it is was written originally for terminals with 256K
65: of memory its size has increased since then and there may
66: be problems in running the current version on such terminals.
67: .PP
68: While you draw on the bitmap of the terminal with the mouse
69: .I ped
70: maintains the information not as a copy of the bitmap but as
71: a list of points. This makes scaling easy so that
72: drawings produced by
73: .I ped
74: can be displayed on devices of different resolution.
75: (Thus while the image includes filled areas,
76: lines, and curves, \fIped\fP knows only about points.
77: As a matter of fact its name stands for \f(CWP\fPoint \f(CWED\fPitor.)
78: \fIPed\fP files are in ASCII and therefore can be edited using
79: text editors, although this is not a recommended procedure.
80: Whenever
81: \fIped\fP
82: exits (or is asked to edit a new file), it checks whether the file
83: has been modified since a previous save, and if it has it writes in
84: .CW ped.save .
85: Error messages (if any) are saved in a file called
86: .CW .pederr
87: in the user's current directory.
88: .PP
89: While
90: .I ped
91: is a currently available program, I consider it only as a first step
92: towards the development of a tool that would be as convenient to
93: use as writing and drawing on paper.
94: I would like to call such a facility
95: .ft I
96: electronic paper
97: .ft
98: and it is a concept that goes in the opposite direction from picture
99: description languages (such as \fIpic\fP|reference(latest pic)) or constraint systems
100: (such as \fIideal\fP|reference(latest ideal) or Xerox PARC's \fIjuno\fP).
101: The hope is that future versions of
102: .I ped
103: will provide more options without increasing the size of the menu or
104: the documentation.
105: See Section 5 (Beautification) for more on this topic.
106: .NH
107: Organization of PED
108: .NH 2
109: Points, Objects, and Families
110: .PP
111: The basic unit or data structure
112: .I ped
113: is the
114: ``object.''
115: As a rule objects appear as connected polygonal lines,
116: splines, circles, or blocks of text.
117: (See Appendix B for a formal definition of objects.)
118: Internally they consist (usually) of a set of points
119: and a ``type'' flag which determines how
120: the plotting routines will
121: use the points to produced various shapes.
122: .ft I
123: An important consequence
124: is that you must address objects on the screen
125: by pointing at their points rather than at sides or the interior
126: of polygons.
127: .ft
128: .PP
129: We could have added code to
130: .I ped
131: that would relax the above requirement so that people could
132: address polygons by pointing to
133: their interior, etc. We did not do so for two reasons.
134: One is that such code would increase the size of the program
135: and the time of interaction in a nontrivial way. Since users
136: adapted to the current mode quickly we felt that the slow
137: down caused by the new code would not be justified.
138: A second reason is that addressing the
139: interior of polygons would not be a useful action in a cluttered drawing.
140: .PP
141: Objects can become
142: associated in a ``family'' without changing their external
143: appearance. We describe later the menu selections that can do that.
144: When you touch a point
145: .I ped
146: also knows about the object that the points belongs to and,
147: if appropriate, an action is applied to the whole object.
148: If that object is a member of a family, then the action is applied
149: to the whole family.
150: .NH 2
151: The Menus
152: .PP
153: .I Ped
154: displays a menu on the left side of the window. That menu may be changed
155: by selecting from a ``pop up'' menu with button 3 of the mouse. The following
156: selections are possible.
157: .IP "\f(CWbasic\fP: "
158: This is the active menu in the beginning and includes commands for
159: file manipulation, changing the type of display, etc.
160: (See Figure 1.)
161: .IP "\f(CWch size\fP: "
162: Commands that change the size of what has been drawn.
163: Also transformations such as rotation.
164: .IP "\f(CWmove\fP: "
165: Commands that delete, copy, do parallel translations
166: (move) objects, etc. Also commands that break objects in parts or join
167: objects to form new ones.
168: .IP "\f(CWdraw\fP: "
169: Set up a grid, draw lines, text labels, circles, boxes, etc.
170: Also make a family out of a group of objects.
171: .IP "\f(CWreshape\fP: "
172: Convert a polygon into a spline, adjust the position of points,
173: dissolve a family of objects, or restore it, etc.
174: (See Figure 2.)
175: .IP "\f(CWrefine\fP: "
176: Edit text, line form (dashed, solid, double, etc.), change point size, etc.
177: .IP "\f(CWshade\fP: "
178: Fill polygons or splines with texture or unfill them.
179: .IP "\f(CWcolor\fP: "
180: Assign a color to objects. This has no visible effect on the DMD 5620
181: but the color label may be used by other devices.
182: .IP "\f(CWremote\fP: "
183: Commands to perform editing on the host.
184: .1C
185: .KF
186: .BB
187: .so mvpoint.so
188: .fC 2
189: The screen of the DMD 5620 when \fIreshape\fP has been
190: selected from the pop up menu by button 3 of the mouse
191: and then \fImv point\fP from the left side menu by button 1.
192: .KE
193: .2C
194: .PP
195: As a rule, the program remembers the last command given and will
196: execute it repeatedly, as long as it is meaningful to do so
197: or until the user makes another selection.
198: Thus one can fill many polygons with the same texture without
199: having to select it each time. In this case the mouse cursor
200: has the form of the texture. In other menus
201: the effective command is shown in reverse video.
202: .NH 2
203: The Mouse Buttons
204: .PP
205: Button 1 is the ``creative'' or ``start'' button. It is used to select
206: actions from the menu displayed on the left hand side, to draw
207: or edit objects, and, in general,
208: pretty much as pencil could be used to draw or point
209: to things.
210: .PP
211: Button 3 is the ``terminating'' button. When pressed it stops drawing
212: or editing, or it may cancel some commands. It is also used to
213: change the menu on the left.
214: .PP
215: Button 2 is the ``panic'' button. When pressed over a menu item,
216: it causes the display of documentation. When pressed elsewhere,
217: it cause the
218: .I basic
219: menu to be displayed on the left.
220: .PP
221: Typing text disables the mouse so
222: that you cannot exit from that mode by pressing button 3.
223: However, hitting RETURN twice will take you out.
224: .NH 2
225: Files
226: .PP
227: When a file is first read it is kept on the host.
228: It requires user action to bring it to the terminal so that
229: it can be edited (``bring in'' item on the ``basic'' menu).
230: ``View host'' lets you display the complete picture
231: that is the file and is now kept in the host; no data are kept in the terminal
232: part and therefore you cannot edit the file (except by the ``remote''
233: menu commands.)
234: Since large figures will not usually fit in the terminal, you
235: must display them (scaled down) first with the ``view host'' command and
236: then select a part with a window controlled by button 1.
237: After selecting ``bring in'' from
238: a menu the black square cursor appears. Clicking button 1
239: fixes the top left corner, clicking button 1 a second time fixes the
240: bottom right corner of a rectangle.
241: (Note that this is different from the way that windows are controlled
242: under the multiplexing program
243: with button 3.)
244: Any objects found within that rectangle
245: are brought in and displayed on the terminal,
246: and at a bigger scale. Then they can be edited.
247: .PP
248: A unique feature of
249: .I ped
250: is that you may read a file into a particular part of
251: the screen (``read'' command in the ``remote'' menu), or write a
252: part of the screen into a file (``write'' command in the ``remote'' menu).
253: .NH
254: Hard Copy
255: .PP
256: There are two ways to make hard copy of the pictures you draw,
257: either by copying bitmaps from the 5620 screen or by expanding
258: the
259: .I ped
260: files by the
261: .I troff
262: preprocessor
263: .I tped.
264: .NH 2
265: Bitmaps
266: .PP
267: You can get bitmaps by selecting ``blitblt'' from the basic menu (see Figure 1)
268: and then sweeping a rectangular area from the screen.
269: This action will
270: create a file called BLITBLT which is a run length encoded
271: copy of the bitmap. Of course, you can run the
272: .US
273: .I blitblt
274: command from another window if you wish with the same result.
275: If the rectangle has size zero (or nearly so) or button 3 is pressed,
276: then a copy of the whole drawing are is made.
277: The BLITBLT file can be printed on the Gnot
278: printers with the \fIgbcan\fP command or included in \fItroff\fP
279: files by using the \fImbits\fP macros.
280: (This is how all the pictures of the ped screen in this document were made.)
281: The action of the library macro BM depends on the number of its arguments.
282: The
283: .CW .bM
284: macro defined below can be used either as
285: .P1
286: \&.bM fname
287: .P2
288: to print the bitmap of file \fIfname\fP with default setting of dot size (6)
289: or as
290: .P1
291: \&.bM number fname
292: .P2
293: to print with dot size \fI number\fP.
294: .P1
295: \&.de bM
296: \&.sp
297: \&.ie \e\en(.$=1 .BM \e\e$1 6 dX dY
298: \&.el .BM \e\e$2 \e\e$1 dX dY
299: \&.br
300: \&.ne \e\en(dYu
301: \&.in (\e\en(.lu-\e\en(dXu)/2u
302: \&.ie \e\en(.$=1 .BM \e\e$1 6
303: \&.el .BM \e\e$2 \e\e$1
304: \&.in
305: \&.rs
306: \&.sp \e\en(dYu
307: \&..
308: .P2
309: .NH 2
310: Tped
311: .PP
312: This program works like other
313: \fItroff\fP preprocessors with the following specifications.
314: It is run as
315: .P1
316: tped \fIfiles\fP ... | troff \fIoptions\fP
317: .P2
318: The various files can be \fIped\fP files without any modifications.
319: Or they may be \fItroff\fP input files
320: including \fIped\fP files in one of the following ways.
321: .IP (a)
322: The \fIped\fP file is embedded in the \fItroff\fP file
323: between
324: .P1
325: \&.GS
326: \&.....
327: ped file contents
328: \&.....
329: \&.GE
330: .P2
331: .IP (b)
332: The name of the \fIped\fP file is given as argument as in
333: .P1
334: \&.GS file_name
335: .P2
336: .PP
337: .I tped
338: recognizes the following flags:
339: .IP \f(CW-b\fP 6n
340: place a box around each illustration.
341: .IP \f(CW-c\fP
342: produce expanded output.
343: .IP \f(CW-Ta\fP
344: assume that final output will be done in
345: the \fIaps\fP phototypesetter.
346: .IP \f(CW-Td\fP
347: assume final output on the Mergenthaler
348: or the Gnot printers (default).
349: .IP \f(CW-m\fP
350: if used after a set of file names, it causes \fItped\fR
351: to read from the standard input after reading the files.
352: .IP \f(CW-s\fP
353: scale the letter point size.
354: .PP
355: Two of these flags require special discussion.
356: When
357: .I tped
358: expands the
359: .I ped
360: files it can do in one of two ways. It may produce a series of dots
361: that form the lines, textured areas, etc. or it may simply pass on
362: the object description with slight modifications only. Then the
363: plotting is done by the
364: .I troff
365: postprocessor.
366: Plots obtained in this way are of better quality than plots when
367: the expansion is done before
368: .I troff.
369: However the postprocessors must know about
370: .I ped
371: so that version is less portable. (See Appendix C.)
372: The
373: .CW -c
374: flag allows the user to select either option.
375: .PP
376: In addition to the above, it is possible to change parameters
377: with arguments supplied with the
378: .CW .GS
379: line. The following options exist:
380: .KS
381: .TS
382: center;
383: cFCW l.
384: h=\fInumber\fP Make drawing height \fInumber\fP inches.
385: w=\fInumber\fP Make drawing width \fInumber\fP inches.
386: -C Center drawing on page (default).
387: -L Left adjust drawing.
388: -R Right adjust drawing.
389: -s Toggle scaling of text.
390: .TE
391: .KE
392: The adjustment options can be used to print
393: .I ped
394: drawings side by side as the following example illustrates.
395: .P1
396: \&.sp
397: \&.ne 4i
398: \&.sp
399: \&.mk
400: \&.GS \-L left_part
401: \&.sp
402: \&.rt
403: \&.GS \-R right_part
404: \&.sp
405: .P2
406: The above arrangement assumes that both parts have the same dimensions.
407: If not, similar heigh may be forced with the \f(CWh=number\fP option.
408: .NH
409: Special Features
410: .PP
411: All the features of
412: .I ped
413: are documented systematically in Appendix A. We review here only
414: those that we felt they needed a more detailed explanation.
415: .NH 2
416: Markers
417: .PP
418: Sometimes it is not easy to identify the points of an object
419: and for this reason \fIped\fP provides the ``markers'' selection
420: in its ``basic'' menu. If you select that option, then various auxiliary lines
421: and points appear on the screen. In particular, a ``bullet''
422: is used to identify one point on each object,
423: dotted lines connect objects belonging to the same family,
424: and a simplified drawing is used for some
425: of the fancier objects.
426: The use of markers is recommended during preparation
427: of an illustration and you should turn them off only when
428: you want to see how your finished product will look.
429: For example, a text label can be addressed only by placing
430: the mouse at the particular point associated with the label.
431: That point is not visible unless the markers are on.
432: .NH 2
433: Text
434: .PP
435: Text can be included by selecting ``text''
436: in the ``draw'' menu and then typing it. Text labels
437: consisting of many lines. To terminate text entry type an
438: empty line. When text is entered at first it appears as
439: left adjusted. The ``refine'' menu has a command that lets you
440: make text centered or right adjusted. In addition you can edit
441: text by using the command ``edit text'' in the ``refine''
442: menu. The selected text appears at the top area of the screen.
443: Click button 1 over the spot you wish to change.
444: Use back space to erase and type new characters to replace
445: or insert. Hitting return
446: completes the correction at the selected spot.
447: You may make more corrections if you wish
448: by selecting another spot on the label. Otherwise you hit button 3
449: to indicate that text editing is over.
450: .PP
451: It is not possible to edit in
452: .I ped
453: labels that are too long to fit in the top area of the window
454: (over 80 characters for windows that take the full width of the terminal).
455: This is perhaps the only instance that a
456: .I ped
457: file must be edited with a text editor.
458: .PP
459: Text is normally entered in point size 10, but the ``psize''
460: lets specify another size.
461: All new text entered from then on will be in the selected point size.
462: The commands ``expand'' and ``shrink'' of the ``ch size'' menu
463: result in a change of the point size when applied to text.
464: .NH 2
465: Splines
466: .PP
467: The splines used in
468: .I ped
469: consist of parabolic arcs tangent to a polygon drawn by the user.
470: They are the same splines that
471: .I pic
472: uses and they are discussed in detail in |reference(pavlidis image processing).
473: .PP
474: Splines pass through the vertex of the polygon only if that vertex
475: is made a ``corner'' by the ``reshape'' menu selection.
476: The first and last points of an open polygon are made by default into
477: corners when it is converted into a spline.
478: If you wish interpolating splines you must use the command ``isplin''
479: in the ``refine'' menu. In order to let the user have access to the
480: original points the type of the figure is not changed: it is a polygon
481: but it is drawn as a spline.
482: .NH 2
483: Line Forms
484: .PP
485: Polygons or splines may be drawn either by solid or dashed lines
486: in different thickness as specified by the line point size.
487: In addition polygons may use double lines, heavy lines, and interpolating
488: splines (see above). The last three forms require
489: floating point arithmetic so they are not displayed in local
490: mode but only when you do a ``view host.'' (In local mode the
491: sides are marked with a symbol.) Such fleeting drawings forms may
492: be fixed so that the objects appear in tha form even in local mode.
493: However in this case the original points are lost. See Figure 3
494: for an example.
495: .1C
496: .KF
497: .GS h=2 fig1
498: .fC 3
499: The figure displays the original polygon,
500: the interpolating spline, and the guiding polygon for the latter.
501: The ``fix'' command replaces the original polygons by the guiding
502: polygon.
503: .KE
504: .2C
505: .NH 2
506: Families and Links
507: .PP
508: Objects may be associated in a ``family''
509: so that they can be moved around or scaled as a group.
510: The ``draw'' menu has a command ``family/bx.'' When you select it
511: a sweeping rectangle becomes available and any objects enclosed
512: by it become members of the same family. If markers are on,
513: .I ped
514: places dotted lines connecting objects of the same family.
515: .PP
516: Families are groups of objects that have nothing in common
517: except that
518: .I ped
519: thinks of them as a single object. They can have
520: different types and a family may be
521: a member of another family.
522: On the other hand
523: linked objects must be of the same kind: all open polygons,
524: or all closed splines, etc.
525: .PP
526: When objects are linked
527: the visual appearance of the sketch does not change.
528: This is similar to a family but the
529: link is far stronger and the ``dissolve'' command has no effect.
530: On the other hand linked objects can be edited the same way
531: as simple objects.
532: .ft I
533: Warning: \fRPed\fP provides no visible connection between linked objects.
534: Link should be used only between objects that are obviously related.
535: .ft
536: Indeed, the command was introduced with the following two
537: applications in mind. (a) To prepare filled
538: polygons that have holes in them.
539: (In this case ``link'' should be followed immediately by a shading command.)
540: (b) To
541: create a single object after the ``match'' instruction has been
542: applied.
543: In this way a T-shaped figure (or a tree) could become a single object.
544: The ``break'' operation has special effects on linked objects.
545: It simply removes the first link it encounters and breaks the polygon
546: into two. At least one of them has no links at all.
547: .I Ped
548: actually refuses to link splines, but you can defeat that restriction by
549: linking first, and then converting into a spline.
550: Application of ``join'' to an open polygon with links converts all
551: its contours into closed polygons.
552: .PP
553: Users should keep in mind that the ``remote'' menu allows operations
554: on groups of objects so there is no need to make the whole drawing
555: a family in order to apply an operation on all the objects.
556: .NH 2
557: Planning and Clutter
558: .PP
559: A major difference between drawing on paper and
560: drawing by electronic means is that you do not have to worry about the
561: composition until you are ready to do so.
562: Components of the illustration can and should be drawn separatedly
563: and pulled together only at the end. Large drawings may be in separate files
564: and be composed through the ``read'' command of the ``remote''
565: menu. The ``match'' and ``center'' commands of the ``move'' menu
566: allow fine positioning adjustments.
567: .PP
568: Temporary moves are useful for reducing clutter.
569: If you select ``mv obj'' and then press button 3 (or 2)
570: the object is left in the chosen position only temporarily.
571: Next time you return to the basic menu, all such objects
572: resume their original positions.
573: .NH 2
574: Equations
575: .PP
576: Mathematical equations can be included in \fIped\fP drawings by
577: typing
578: .I eqn
579: commands between delimiters (e.g.
580: .CW $$ )
581: as text
582: and then piping the output of
583: .I tped
584: through
585: .I eqn.
586: Since the form of displayed labels is different than those
587: of the final output some experimentation is needed to
588: achieve the desired positioning.
589: .NH
590: Beautification
591: .PP
592: A good draftsman is able to take a rough sketch and convert it into
593: a ``neat'' drawing. It is desirable to have similar facilities
594: in the graphics editor.
595: The menu selection
596: ``formal'' (in the ``reshape'' and the ``remote'' menus) will
597: transform an object or group of objects so that lines that are
598: nearly parallel become parallel, lengths that are
599: nearly equal become equal, etc.
600: The algorithm used for the transformation is described in detail
601: in |reference(pavlidis van wyk beautifier).
602: .1C
603: .KF bottom
604: .BB
605: .so nice.so
606: .fC 4
607: A drawing before and after beautification.
608: .KE
609: .2C
610: .PP
611: Beautification can reduce the need for long menus. Suppose we want
612: to draw a line tangent to a circle. We could add a menu option
613: that would draw a tangent from a point to a circle but we could also
614: leave the problem to the beautifier. You would draw a circle
615: and a line approximating the tangent and then pass these to
616: objects to the beautifier. Nearly tangent can be detected by
617: finding that the distance of the center of the circle from
618: the line is nearly equal to the radius. Then a system of
619: equations and inequalities
620: can be solved to find new objects that are mutually tangent
621: and close to the original objects. The same routines could
622: be generalized to handle the problem of having a line (or lines)
623: tangent to any number of circles, without having to add any more
624: menu instructions.
625: .PP
626: .I Ped
627: is still very far from replacing a good draftsman and it is highly
628: unlikely that it ever will. But it is likely that more
629: features will be added to the beautification transformation.
630: .NH
631: User Operations
632: .PP
633: There is a mechanism for executing
634: .UX
635: commands and incorporating their output in the drawing.
636: A command may be typed in advance (while in the command typing mode) or
637: it may be typed at the time of its invocation.
638: There are two menus offering a ``user oper'' selection:
639: ``draw'' and ``refine.'' In the former you need select only
640: a point on the screen before applying the command.\(dg
641: .FS
642: \(dg The current implementation also expects typing of the command
643: at that moment.
644: .FE
645: In the latter you must select an object as well.
646: If there is no previously defined command you are prompted
647: for it.
648: The following rules are applicable.
649: .PP
650: If the object type is text, then the text is itself is supplied as
651: input to the
652: .UX
653: command. the output is collected as text and replaces
654: the original.
655: .PP
656: If the object type is polygon or spline the two coordinates of each point
657: are supplied to the
658: .UX
659: program, one point per line.
660: The string
661: .CW 1e6
662: is appended as end-of-file indicator.
663: .PP
664: If the object type is family, then the whole object is provided
665: to the command using
666: .I ped
667: format.
668: .PP
669: Often the command is
670: \f(CWa.out\fP,
671: a program written by the user for transforming geometric figures.
672: Text processing commands such as
673: .DS
674: .ft CW
675: tr "[a-z]" "[A-Z]"
676: .ft
677: .DE
678: are also common.
679: Finally, the ``user oper'' command may used in order to include
680: the output of commands such as
681: .I date
682: as part of illustrations prepared by
683: .I ped.
684: The inclusion of the output of programs that produce complex
685: illustrations is best done by having them output
686: their results in
687: .I ped
688: format. (See Appendix B.)
689: .SH
690: Acknowledgments
691: .PP
692: Many people provided considerable input for
693: .I ped,
694: especially its early users and those porting it to new machines.
695: Early users include amongst others Paul Pavlidis, Mary Bittrich,
696: Doug McIlroy, Bob Hutchison, John Cregar, and Sandy Fraser.
697: Bob Hutchison and Jon Sauer contributed significantly
698: to the porting of the program to
699: .UX
700: V and other
701: output devices. Janet Lee wrote the online documentation
702: and also contributed to the porting on 3B machines.
703: .PP
704: The following people either provided parts of the software
705: or let me use their code as prototype:
706: Ken Thompson (routines for creating the double lined objects),
707: Tom Killian (``blitblt'' routines),
708: Tom Szymanski (high level communications protocol),
709: and Tom Cargill (menu design).
710: George Wolberg helped with the implementation of many of the routines
711: in an early version of the program.
712: .PP
713: Lorinda Cherry, Steve Mahaney, and Doug McIlroy made many useful comments on
714: various versions of the documents describing the use and
715: organization of
716: .I ped.
717: .SH
718: References
719: .LP
720: |reference_placement
721: .de hD
722: .ft CW
723: .sp 0.5
724: .NE 1i
725: ..
726: .SH
727: Appendix A: Command Actions
728: .PP
729: The following is a slightly expanded version of the online documentation
730: which becomes available when you press button 2 over
731: a menu selection. It is based on documentation written by Janet Lee.
732: .hD
733: basic
734: .LP
735: Collection of commands that manipulate files and/or groups
736: of objects.
737: .RS
738: .hD
739: type comm
740: .LP
741: Enable the keyboard for file manipulation and
742: .UX
743: commands.
744: Commands are:
745: .CW "w filename"
746: (write to a file),
747: .CW "r filename"
748: (read
749: from a file),
750: .CW "e filename"
751: (edit a file),
752: .CW f
753: (print current file),
754: .CW "u string"
755: (execute `string' as a
756: .UX
757: command when ``user oper'' is
758: selected in the ``refine'' menu),
759: .CW pwd
760: and
761: .CW cd
762: (execute the
763: .UX
764: commands),
765: .CW qq
766: (exit PED) and
767: .CW m
768: (revive the mouse). The mouse is also revived
769: by a newline, or pressing any button.
770: .hD
771: view host
772: .LP
773: Display the file stored on the host machine and make it available
774: for remote editing. The display is made in STORE mode so you
775: can see how the picture would look when printed by the tped|troff
776: combination. Also filled splines, double lines, and other fancy
777: features of PED are shown correctly.
778: When selecting ``view host'' while there is already a display,
779: you can specify the portion of the drawing to be viewed by drawing
780: a rectangle using button one.
781: Buttons two and three cancel the view host.
782: .hD
783: bring in
784: .LP
785: Bring the file into the DMD terminal for local editing.
786: If there is no display the whole file is brought in. Otherwise
787: a sweep rectangle is made available for selecting the portion
788: to be brought in. If the sweep rectangle is too small, the
789: entire file is brought in.
790: .hD
791: markers(t)
792: .LP
793: Mark with black ``bullets'' the first point of each object.
794: Also display the control polygons of splines and show dashed
795: lines
796: connecting the members of each family. It is a good idea to
797: have the markers on when working on a file.
798: The command is a toggle; selecting ``markers'' again erases the
799: markers.
800: .hD
801: HELP/plot
802: .LP
803: Display a summary documentation of PED and then redraw the
804: display of objects.
805: .hD
806: zoom
807: .LP
808: Display a closeup of the image. The apparent size is
809: increased by 1/8. The actual size of the picture is unchanged.
810: .hD
811: unzoom
812: .LP
813: The apparent size of the image is decreased by 1/8.
814: The actual size of picture is unchanged.
815: .hD
816: scroll
817: .LP
818: Scrolls the image on the screen. A line is drawn from the center
819: of the screen. Any button selects the terminating point of the
820: line which becomes the new center of the screen. The entire
821: drawing is shifted to accommodate the new center.
822: .hD
823: size?
824: .LP
825: A sweep rectangle becomes available. After sweeping an area of the
826: screen PED prints the size of that area in inches when the drawing
827: is printed by tped|troff.
828: If the rectangle size is too small, it prints the
829: size of the whole drawing area.
830: .hD
831: blitblt
832: .LP
833: Creates a bit map of the image in the file BLITBLT in your current
834: directory. This can be printed on other devices by appropriate
835: commands. For the Gnot printer the command is
836: .I gbcan .
837: .hD
838: exit
839: .LP
840: Exit PED program. If your file has been modified since the
841: last write it is saved in a file called
842: .CW ped.save
843: in the current
844: directory. PED plays it safe so that if it is not sure
845: whether a file has been modified it will save it anyway.
846: Errors, if any are in
847: .CW .pederr .
848: .RE
849: .hD
850: ch size
851: .LP
852: Commands that scale or apply simple geometrical transformations
853: to the drawing. Mot of them are executed on the host because of
854: the need for floating point.
855: .RS
856: .hD
857: expand
858: .LP
859: Increases the size of an object by a factor of 1.25.
860: Click button one over the object to be expanded.
861: .hD
862: shrink
863: .LP
864: Reduces the size of an object by a factor of 0.8.
865: Click button one over the object to be shrunk.
866: .hD
867: rotate
868: .LP
869: Select an object with button one. This produces a circle around
870: the object and a line drawn from the circle. Selecting a point
871: on the circle with button one rotates the object to this point.
872: Selecting a point on the axis that is not on the circle expands
873: or shrinks the object with the rotation.
874: If the point is selected on the center of the circle, then a 90
875: degree rotation is made.
876: Pressing button three terminates the command.
877: .hD
878: turn 45
879: .LP
880: Select an object with button one and the object rotates 45 degrees.
881: .hD
882: v-flip
883: .LP
884: Select an object with button one and the object is flipped
885: vertically.
886: .hD
887: h-flip
888: .LP
889: Select an object with button one and the object is flipped
890: horizontally.
891: .hD
892: v-elong
893: .LP
894: Select and object with button one and the object is elongated
895: vertically.
896: .hD
897: h-elong
898: .LP
899: Select and object with button one and the object is elongated
900: horizontally.
901: .hD
902: undorot
903: .LP
904: Select an object with button one to undo a previous rotation.
905: Undorot must be used immediately after the rotation command
906: and for the same object.
907: .RE
908: .br
909: .ne 2i
910: .hD
911: move
912: .LP
913: Commands for manipulating and moving around objects
914: .RS
915: .hD
916: del obj
917: .LP
918: Delete the object selected. Clicking button one over any object
919: removes the object and replaces it with a skull and crossbones
920: symbol. Pressing button three completes the delete, any other
921: button cancels it.
922: .hD
923: copy obj
924: .LP
925: Copies the object selected. Click button one over the
926: object to be copied. An image of the object appears.
927: Move the image using the mouse to the desired location
928: and press button one to complete the copy. Pressing button
929: two or three cancels the copy.
930: .hD
931: mv obj
932: .LP
933: Move the selected object. Click button one over the object and
934: an image of the object appears. Move the image using the mouse
935: and click button one to complete the move when the object appears
936: in the desired location. Clicking button 2 or 3 cancels the move
937: but it leaves the object in the new location until one returns
938: to the basic menu. This operation is useful for unscrambling
939: temporarily crowded areas of the drawing.
940: .hD
941: brk obj
942: .LP
943: Used to remove sides of polygons or destroy links.
944: Click button one over the first point and then select the
945: second point. The line between them is removed.
946: If the polygon is not connected then the first application
947: of the command will make two objects out of the commands
948: rather than remove any side.
949: .hD
950: attach
951: .LP
952: It merges two open polygons by moving the second so that
953: the two selected points coincide. The command fails if either
954: of the selected points is not an endpoint. The two points
955: are selected with button one. Using any other button
956: between the two point selections cancels the attachment.
957: .hD
958: join
959: .LP
960: It merges two open polygons by drawing a line between the
961: two selected points without moving anything. The command fails
962: if either of the selected points is not an endpoint.
963: The two points are selected with button one.
964: Using any other button between the two point selections
965: cancels the attachment.
966: .hD
967: link obj
968: .LP
969: Select a polygon using button one. Any polygon selected
970: afterwards with button one is linked to the first polygon
971: (i.e. the objects become one object). You can link any number
972: of polygons together. Terminate the command by pressing button
973: two or three. The polygons may be open or closed but all of
974: them must be the same kind (open or closed). The main use
975: of the command is to prepare contours for filled objects
976: with holes.
977: .hD
978: match
979: .LP
980: Select an object with button one. Then select any number of
981: objects with button one and the touched points will coincide.
982: Pressing any button other than button one terminates the command.
983: The objects remain separate.
984: .hD
985: center
986: .LP
987: Select an object with button one. Then select any number of
988: objects with button one. The objects are moved so their
989: centers coincide (the first object selected dictates which
990: object to center on). Pressing button two or three terminates
991: the command.
992: .hD
993: family/pt
994: .LP
995: Define a family by selecting points of different objects
996: with button one. The family connections can be viewed
997: using the markers option (basic menu). When families are
998: formed in this way, their objects are plotted in the order
999: by which they were placed in the family. Therefore one can
1000: determine sequence of plotting which may be important for
1001: filled objects.
1002: Using button two or three terminates the command.
1003: .RE
1004: .hD
1005: draw
1006: .LP
1007: Used for drawing objects. Must be used to begin a drawing.
1008: .RS
1009: .hD
1010: no grid
1011: .LP
1012: Removes the grid from the screen
1013: .hD
1014: grid:FMC
1015: .LP
1016: Create a grid on the screen either Fine, Medium, or
1017: Coarse (FMC) depending on the number of times the
1018: option is selected.
1019: .hD
1020: lines
1021: .LP
1022: Draws lines. Button one is used to select the starting
1023: and terminating points of a line.
1024: Buttons two and three terminate the command.
1025: .hD
1026: text
1027: .LP
1028: Select a point for the text using button one and type from the
1029: keyboard. Two returns terminates input.
1030: .hD
1031: circle
1032: .LP
1033: Draws circles. Click button one over the center of the circle.
1034: Draw the circle outward and click button one again to define the
1035: radius.
1036: .hD
1037: box
1038: .LP
1039: Draws boxes. Click button one over the upper left (right) corner
1040: of the box and move the mouse right (left) and define the lower
1041: right (left) corner of the box by clicking button one again.
1042: .hD
1043: oval
1044: .LP
1045: Draws ovals. Click button one over the upper left (right) corner
1046: of the oval and move the mouse right (left) and define the lower
1047: right (left) corner of the oval by clicking button one again.
1048: .hD
1049: family/bx
1050: .LP
1051: Define a family by surrounding family elements in a box.
1052: The upper and lower corners of the box are defined with
1053: button one. Any objects whose first point lies within the box
1054: become members of the family and are connected with dashed
1055: lines if the ``markers'' option is on (basic menu). A family
1056: is manipulated as a unit.
1057: .hD
1058: user oper
1059: .LP
1060: Used to incorporate output from a
1061: .UX
1062: command on the screen.
1063: There is no way to provide standard input but arguments
1064: are passed.
1065: Click button one over the area where the output should appear.
1066: Type the command and hit two returns to terminate the input.
1067: The output from the command is printed on the screen.
1068: Typical use is for commands like ``date'', ``who'', etc.
1069: If PED thinks that incorporation of the command output into
1070: a PED file may cause problems (memory overflow for example)
1071: it will cancel the operation.
1072: .hD
1073: fixsz(t)
1074: .LP
1075: Prevents scaling of characters with the drawing. Scaling may be
1076: restored by executing the command a second time. When used
1077: it saves terminal memory since only one font is stored. It is
1078: also desirable in its own right since many users do not like
1079: scaling of text.
1080: .RE
1081: .hD
1082: reshape
1083: .LP
1084: Reshape allows you to change the shape of objects.
1085: .RS
1086: .hD
1087: formal
1088: .LP
1089: Clicking button one over any object will
1090: straighten all lines of the object that are almost completely
1091: vertical or horizontal as
1092: described in section 5.
1093: .hD
1094: spline(t)
1095: .LP
1096: Convert a polygon into a spline controlled by the polygon or
1097: convert a spline into its controlling polygon.
1098: .hD
1099: arrow(t)
1100: .LP
1101: Clicking button one over the end point of
1102: an object will add an arrow. Arrows cannot be added to circles
1103: All arrows must be at an end point of a line (i.e you cannot
1104: add an arrow to the middle of the side of a box. However, for
1105: ovals, the arrow is placed along one side of the oval).
1106: .hD
1107: corner(t)
1108: .LP
1109: Make a spline have a corner by pointing to one of the vertices
1110: of its controlling polygon. If there is already a corner there
1111: make the spline smooth.
1112: .hD
1113: mv point
1114: .LP
1115: Clicking button one over any point on a object (except circles)
1116: moves the point to a location specified by a second click of
1117: button one. This is useful in reshaping splines and creating
1118: distorted boxes and ovals.
1119: .hD
1120: del pnt
1121: .LP
1122: Clicking button one over any point removes the point and reshapes
1123: the object accordingly (i.e a rectangle becomes a triangle).
1124: Circles cannot be used.
1125: .hD
1126: insrt pnt
1127: .LP
1128: This command inserts a point between two points of an object
1129: (except circles). Click button one over any point on a object.
1130: Then select a point where the inserted point will lie.
1131: Finally, select the terminating point of any line drawn from
1132: the first point. The line on the object is removed and two new
1133: lines are created joining the three points selected.
1134: .hD
1135: close
1136: .LP
1137: Click button one over any open point of a spline or polygon
1138: and the shortest possible line is drawn to the other open
1139: end of the object. When you close a spline the first and
1140: last points are corners.
1141: .hD
1142: dis fam
1143: .LP
1144: Click button one over any member of a family and the family
1145: will dissolve.
1146: .hD
1147: rest fam
1148: .LP
1149: Click button one over any previous family and it will be
1150: restored. CAUTION: Some operations on family members after
1151: dissolving may make it impossible to restore it by this
1152: command so you will have to use the make family command
1153: again.
1154: .hD
1155: undo
1156: .LP
1157: Click button one over an object to undo the last command
1158: performed on the object. You MUST select undo immediately
1159: after executing the command you wish to undo.
1160: .RE
1161: .hD
1162: refine
1163: .LP
1164: Assorted commands for changing the form of objects. (They would
1165: not fit all in the reshape menu.)
1166: .RS
1167: .hD
1168: edit text
1169: .LP
1170: Edit a text object selected by button one. A copy of the text
1171: is displayed on the top of the screen.
1172: Newlines are represented by three horizontal lines or whatever
1173: other symbol your DMD uses for control characters.
1174: If the object has more characters than what can be fitted in the
1175: top line of the screen the command is canceled. (It is
1176: suggested that you use a text editor to edit large blocks of
1177: text. PED files are ASCII and can be edited by any text editor such as
1178: .I ed
1179: or
1180: .I sam .)
1181: Button one is used to select a position within the text.
1182: A cursor appears in the selected position.
1183: Insert by typing or delete with backspaces. End an
1184: insert or delete with a return. Press button two or three to
1185: terminate the command.
1186: .hD
1187: adjt(CRL)
1188: .LP
1189: Allows adjustment of text either left, center or right.
1190: Text is initially left adjusted. Click button one over the
1191: object and it will center. A second click will right adjust.
1192: Successive clicks continue the pattern Left, Center, Right.
1193: After such an operation all new text is entered in the
1194: selected mode.
1195: .hD
1196: psize
1197: .LP
1198: Set point size for text. Select a text object with button one. A
1199: cursor appears on the top of the screen. Type a point size and
1200: return and the text will be adjusted to the selected point size.
1201: All successive text uses that point size. Cancel the command
1202: by hitting return.
1203: .hD
1204: what size
1205: .LP
1206: It prints the pointsize for the selected object.
1207: .hD
1208: dashed(t)
1209: .LP
1210: Select an object with button one and the object is
1211: composed of dashed lines. Circles cannot be made dashed.
1212: .hD
1213: double(t)
1214: .LP
1215: Select an object with button one and the object is composed
1216: of double lines. Circles, ovals and splines cannot be made
1217: double. The double lines WILL NOT appear in the local mode
1218: (i.e. ``bring in'') but only on ``view host.''
1219: .hD
1220: heavy(t)
1221: .LP
1222: Select an object with button one and the object is composed
1223: of heavy lines. Circles, ovals and splines cannot be made
1224: heavy. The heavy lines WILL NOT appear in the local mode
1225: (i.e. ``bring in'') but only on ``view host.''
1226: .hD
1227: isplin(t)
1228: .LP
1229: Plot the points of a polygon using an interpolating spline.
1230: The interpolant WILL NOT appear in the local mode
1231: (i.e. ``bring in'') but only on ``view host.''
1232: .hD
1233: fix
1234: .LP
1235: Select (with button one) an object with double or heavy lines
1236: or an interpolating spline (isplin). The object display will
1237: become effective not only under the `view host' mode,
1238: but also under the `local' mode.
1239: However the original object description will be lost.
1240: .hD
1241: user oper
1242: .LP
1243: Allows execution of a host
1244: .UX
1245: command defined using the ``type
1246: comm'' option ``u'' or a command defined now. You must select an
1247: object with button 1. If a command has been defined it will
1248: be executed using the object as input. Otherwise you will be
1249: prompted for the name. The object is used as input for the
1250: command if it expects one. See the user's manual for more
1251: details.
1252: .hD
1253: undo
1254: .LP
1255: Undoes the previous command if you point to the object where
1256: that command was applied.
1257: .RE
1258: .hD
1259: remote
1260: .LP
1261: Commands to perform editing on the host. All commands
1262: request that you enclose the desired area to be edited
1263: within a rectangle.
1264: .RS
1265: .hD
1266: delete
1267: .LP
1268: Using button one, draw a rectangle around the objects to be
1269: deleted. Confirm by pressing button 3.
1270: .hD
1271: copy
1272: .LP
1273: Using button one, draw a rectangle around the objects to be
1274: copied. Use button one to select the location of the copied
1275: object.
1276: .hD
1277: move
1278: .LP
1279: Using button one, draw a rectangle around the objects to be
1280: moved. Use button one to select the location of the moved
1281: object.
1282: .hD
1283: read
1284: .LP
1285: Using button one, draw a rectangle indicating the region where
1286: the read in file will reside. Once the rectangle is defined,
1287: type in the file name and hit return. The file will be scaled
1288: to fit in the rectangle
1289: .hD
1290: write
1291: .LP
1292: Using button one, draw a rectangle around the objects to be
1293: written to the file. Once the rectangle is define, type a
1294: file name and hit return. All objects within the rectangle
1295: are written to the file.
1296: .hD
1297: formal
1298: .LP
1299: Using button one, draw a rectangle around the objects to be
1300: formalized (beautified). Click button one again to initiate
1301: the procedure. See the user's manual for details about the
1302: formalization procedure.
1303: .hD
1304: xpand
1305: .LP
1306: Using button one, draw a rectangle around the objects to be
1307: expanded. Click button one to initiate the expansion. Objects
1308: expand by a factor of 1.25.
1309: .hD
1310: shrink
1311: .LP
1312: Using button one, draw a rectangle around the objects to be
1313: shrunk. Click button one to initiate the shrink command. Objects
1314: shrink by a factor of 0.8.
1315: .hD
1316: v-flip
1317: .LP
1318: Using button one, draw a rectangle around the objects to be
1319: vertically flipped. Click button one to initiate the vertical
1320: flip.
1321: .hD
1322: h-flip
1323: .LP
1324: Using button one, draw a rectangle around the objects to be
1325: horizontally flipped. Click button one to initiate the
1326: horizontal flip.
1327: .RE
1328: .hD
1329: shade
1330: .LP
1331: This menu is used to shade objects. Select a shade with
1332: button one. Your mouse will become a box that resembles
1333: the selected shade. Click button one over any object that
1334: you want filled in with that shade. To remove a shade,
1335: point to `unfill' and then to an object with shading.
1336: .hD
1337: color
1338: .LP
1339: Assign this color to the object selected. There is no visible
1340: effect on the DMD terminal, unless you have set the markers option.
1341: Then the color name appears next to the object (except for the
1342: color black). The assignment of color becomes meaningful when
1343: you display a PED file on a color device.
1344: .EQ
1345: delim !!
1346: .EN
1347: .ds aA \s+2\(->\s-2
1348: .SH
1349: Appendix B: PED File Format
1350: .PP
1351: The following is a specification of the format of
1352: .I ped
1353: files. This information is useful for writing programs to perform
1354: one of the following functions:
1355: (a) display
1356: .I ped
1357: files on new devices;
1358: (b) create illustrations that can be edited by
1359: .I ped
1360: and included in
1361: .I troff
1362: documents by
1363: .I tped.
1364: .PP
1365: It is also a formal definition of
1366: .I ped
1367: objects.
1368: The specification is given as a production system.
1369: Semantics are given in
1370: .I italics .
1371: Nonterminals start with
1372: .CW $ ,
1373: .CW % ,
1374: .CW & ,
1375: or
1376: .CW .
1377: and the following
1378: conventions are observed:
1379: .TS
1380: center;
1381: cfI cfI
1382: lFCW l.
1383: Prefix Interpretation
1384: % number (integer or floating point),
1385: & character string
1386: \&. single character
1387: .TE
1388: All other symbols are terminals.
1389: .SH
1390: Initial Action
1391: .TS
1392: delim(!!);
1393: lFCW lFCW.
1394: File \*(aA o 8i \fIopen version\fP
1395: \^ r %N %N %N %N !x sub "min"! !y sub "min"! !x sub "max"! !y sub "max"!
1396: \^ $$ \fIobject list\fP
1397: \^ e
1398: .TE
1399: .SH
1400: Creation of Object List
1401: .TS
1402: lFCW lFCW.
1403: $$ \*(aA $Q $$
1404: \^ $Q
1405: .TE
1406: .SH
1407: Creation of Objects
1408: .TS
1409: lFCW lFCW.
1410: $Q \*(aA [ $HF $$ ] \fIfamily\fP
1411: \^ [ $H $P ] \fIpolygon\fP
1412: \^ [ $H $U ] \fIfilled polygon\fP
1413: \^ [ $H $S ] \fIspline\fP
1414: \^ [ $HT $T ] \fItext\fP
1415: \^ [ $H $C ] \fIcircle\fP
1416: .TE
1417: .SH
1418: Object Headers
1419: .TS
1420: lFCW lFCW.
1421: $H \*(aA j %N \fIcolor\fP
1422: \^ h %N \fIpoint size\fP
1423: \^ i .N \fIfilled objects: drawing mode\fP
1424: \^ i T.N \fIfilled objects: texture\fP
1425: \^ k.A .N \fIdrawing mode\fP
1426: _
1427: $HF \*(aA j %N \fIignored\fP
1428: \^ h %N \fIignored\fP
1429: \^ f %N %N \fIundefined point\fP
1430: _
1431: $HT \*(aA j %N \fIcolor\fP
1432: \^ h %N \fIpoint size\fP
1433: \^ i P%N \fIpoint size (obsolete)\fP
1434: \^ i F&N \fIfont\fP
1435: _
1436: \&.A \*(aA a \fIarrow on first point\fP
1437: \^ b \fIarrow on last point\fP
1438: \^ c \fIarrow on both points\fP
1439: \^ NULL \fIno arrow\fP
1440: .TE
1441: .SH
1442: Start of Outlines
1443: .TS
1444: lFCW lFCW.
1445: $P \*(aA p %N %N
1446: \^ p %N %N $R
1447: \^ P %N %N $R
1448: _
1449: $S \*(aA s %N %N $R
1450: \^ S %N %N $R
1451: _
1452: $U \*(aA Q %N %N $R
1453: .TE
1454: .SH
1455: Continuation of Outline
1456: .TS
1457: lFCW lFCW.
1458: $R \*(aA .V %N %N
1459: \^ .V %N %N $R
1460: _
1461: \&.V \*(aA v \fIconnected vertex\fP
1462: \^ w
1463: \^ x \fIunconnected vertex\fP
1464: \^ X \fIsame as\fP w \fIand\fP x
1465: .TE
1466: .LP
1467: .CW v
1468: stands for a simple vertex connected to the previous one.
1469: .CW w
1470: is the same as
1471: .CW v
1472: but in the case of splines is
1473: counted as multiple and creates a corner in the curve.
1474: \f(CWx\fP is a simple vertex NOT connected to the previous one.
1475: (The result of a
1476: .I link
1477: operation.)
1478: .SH
1479: Circle
1480: .TS
1481: lFCW lFCW.
1482: $C \*(aA c %xc %yc %rad
1483: .TE
1484: .SH
1485: Text
1486: .TS
1487: lFCW lFCW.
1488: $T \*(aA m %N %N $TT
1489: $TT \*(aA u .M&T $TR
1490: _
1491: $TR \*(aA u &T $TR
1492: \^ t &T
1493: _
1494: \&.M \*(aA L \fIleft adjusted text\fP
1495: \^ C \fIcentered text\fP
1496: \^ R \fIright adjusted text\fP
1497: .TE
1498: .LP
1499: Valid numbers for color are 0 to 7. Valid characters for texture
1500: filling are E through P. Valid characters for drawing mode are
1501: .TS
1502: center;
1503: lFCW l.
1504: s solid
1505: d dashed
1506: t double
1507: h heavy
1508: i interpolating spline
1509: .TE
1510: .PP
1511: The specification is rather awkward at points for historical reason.
1512: Originally, we had hoped that the
1513: .I ped
1514: file format would be the same as that for the PLOT(5) metafile.
1515: This goal was eventually abandoned but by that time there were too many
1516: .I ped
1517: files around to allow a drastic redesign of the format.
1518: .SH
1519: Appendix C: Extensions of TROFF and TROFF postprocessors
1520: needed for expanding the compact output of TPED
1521: .PP
1522: .I Troff
1523: has two primitives for drawing graphics:
1524: .CW \eD
1525: and
1526: .CW \eX .
1527: In both cases, the next letter specifies an action.
1528: If
1529: .I troff
1530: does not understand this letter, it simply passes the whole construct through
1531: to its output so that a post-processor can deal with it.
1532: This Appendix details the constructs
1533: needed to interpret the compact output of
1534: .I tped.
1535: .LP
1536: .CW
1537: \eD'p dx dy ...'
1538: .R
1539: a polygonal line.
1540: .LP
1541: .CW
1542: \eD'q dx dy ...'
1543: .R
1544: a spline
1545: .PP
1546: In either case closure of the curve must be made explicit by repeating the
1547: first point for a polygon and the first two for a spline. Multiplicity
1548: of a spline point is achieved by adding a pair 0 0 after the point. Thus
1549: the current
1550: .P1
1551: \eD'~ dx dy ...'
1552: .P2
1553: is equivalent to
1554: .P1
1555: \eD'q 0 0 dx dy ... 0 0'
1556: .P2
1557: .LP
1558: .CW \eX\'P\fIoption\fP'
1559: is used to supply information about the way a curve
1560: will be plotted. Currently the following options are recognized
1561: .de XX
1562: .IP \f(CW\\$1\f1 10
1563: ..
1564: .XX \eX'Pd'
1565: dashed line (or spline)
1566: .XX \eX'Pd'
1567: dashed line
1568: .XX \eX'Ps'
1569: solid line
1570: .XX \eX'Pf'
1571: do not plot the contours but collect them to create a region
1572: with interior filled by texture.
1573: .XX \eX'Pg'
1574: same as previous but the contour of the regions will also be plotted.
1575: .XX \eX'Pe\fIS\fP'
1576: do the actual scan conversion of collected contours using a texture
1577: specified by the character S. (The textures of \fIped\fP
1578: are described in order by the characters E to P.)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.