═══ 1. Introduction to PmDraw ═══ PmDraw uses Presentation Manager's Help facility to present context-sensitive assistance for the user. This assistance is cross-referenced so you can easily get information on related topics. The primary introductory areas of interest are listed below, and can be accessed by using the cursor to highlight the desired keyword and pressing Enter, or by double-clicking directly on the keyword with the mouse. o PmDraw overview o Application window layout o User interface and Mouse Implementation. ═══ 1.1. Overview ═══ PmDraw is a what-you-see-is-what-you-get (WYSIWYG) object-oriented, graphics tool that has been developed under OS/2 Presentation Manager. It has been designed so that a wide variety of objects (text, lines, ellipses,... or groups of them) can be created on screen and manipulated in an intuitive fashion. 16 colors are available on-screen, but hardcopy is limited by your final-output capabilities. Information within PmDraw files is organized into pages, which are viewed one at a time. These pages can be output for hardcopy or even cross-referenced so that a change on one page shows up automatically on other pages. A file can therefore be thought of as a folder or a collection of related pages, as for a particular presentation. These pages are generally independent, having their own sizes, orientations and object attributes. ═══ 1.2. Application Window Layout ═══ PmDraw is layed out with a number of application areas or windows, some standard and some less so. The titlebar has the file name, followed by the current page (in parentheses) and which page it is in the file (eg. 2 of 4). If the file has had any changes since it was last changed, the file name on the titlebar will be followed by an asterix (*). Below the titlebar is the menu bar where major groups of actions are accessed. The pulldown menu items are: File Data load/save, export, hardcopy, exit. Edit Marking and manipulation editing actions. Modify Object-specific editing actions. Pages Page-related actions. Change, rename or delete, etc. Options Alignment grid, draft mode, personalization, save config, etc. Help General information and details regarding operation of PmDraw. Within the app's main client window, there are 5 less-standard areas. The primary area is the Drawing window which displays the current visible area of the current page. In addition to any graphics that are shown, ticmarks and grid pts may be visible. It is in this area that objects may be created and edited as will be explained below. Scroll bars are provided for moving the visible area around on the presentation page without change of magnification or window size, and are even available in the middle of object creation or editing operations. With this feature you can, for example, fix the first box corner and scroll to a different area on the page before setting the second corner. Above the Drawing window is a Prompt window which shows a one-line, context-sensitive indication of what action(s) are available to the user from within the Drawing window. For example, if creating a Box, this line might read "Position first box corner" indicating that the program expects the user to select the position within the Drawing window for the first corner of a new box. The user can either do this or use Menu options to perform an entirely different action or simply change object type (eg. ellipse). To one side (left or right, configurable), there are several windows or areas. The topmost is an Info window which displays the current Drawing window magnification (0.5 means 1/2 life size) and the current cursor coordinates. Coordinates are in inches or centimeters (user configurable), and will follow the cursor as you move it in either the Drawing window, or in the Mini-view window (described below). Next is the the object/selection window. This window contains radio buttons with which the user specifies what object to create (Box, ellipse, etc.) or an object Mark or selection state. For the former, any button actions in the Drawing area will be used to specify points for a new object (such as box corners), whereas when Mark is highlighted the user can use the mouse to select what objects to perform editing actions upon. The Insert key will toggle between Mark and the curren new object type. Beside the Mark button, there is an Unmark ("U") button which will only be enabled if objects are Marked on the current page. Pressing it will unmark any marked objects on the current page. This window is scrollable and will be reduced in size if the main frame is too short to display all side-panel windows. Control buttons are below this, containing: R Redraw the Drawing area + Zoom in (magnify) Drawing area - Zoom out (reduce) Drawing area The last panel area is the Mini-view window. This window shows a miniature view of the current page and can be used to zoom in directly on a specific area. In addition, there are two attribute dialogs whose visibility is controlled with switches on the Options pulldown: Text and Drawing dialogs. They display the current settings for the various object attributes and are used to change those for new and existing objects. ═══ 1.2.1. PmDraw Graphics Files ═══ PmDraw graphics can saved to disk and retrieved for later use through options available on the File menu. These options are: Old Retrieve a previously-saved file Save Store the workspace to disk with the current name Save As Prompts for a filename before saving In addition, New Clears the current workspace ═══ 1.2.2. PmDraw File Dialog ═══ PmDraw utilizes a standard file dialog box for specifying disk file names for load and save operations. It includes and entry field where a filespec or filename may be entered directly, and two listboxes, for files (in the current directory) and drive/directory selection. Only those files in the displayed directory that match the filespec in the entry field will be displayed in the Files listbox - change the filespec to display a different subset of files. The current drive/directory may be changed by clicking on the appropriate listbox entry. A file may be selected by clicking and selecting OK, or by double-clicking. After clicking on a filename, it is placed in the entry field, and may be edited in the usual fashion. Once a file has been saved or loaded successfully, the path and extension are returned to PmDraw and may be saved as defaults for that file type using Save Configuration, under Options. ═══ 1.2.3. Presentation Pages ═══ Information within PmDraw is organized into pages, which are viewed one at a time. These pages can be output for hardcopy or included in other pages as a cross-reference (X-ref) and handled as a single graphic object (moved, scaled, etc.). A file can therefore be thought of as a folder or a collection of related pages, as for a particular presentation. There is no limit on the number of pages in a file or workspace. When starting a new file, the workspace is initialized with one page (named Main), which is blank. From the Pages menu option, one can then: o Create a new page (add one to the list) o Rename the current page o Erase the current page (delete all items, reverse by Un-delete) o Copy the current page (must enter a name for the new page) Once more pages have been added, you can also: o View another page o Overlay another page (temporary, removed by a REFRESH) o Reorder it relative to other pages in the file. o Delete the current page o In addition, the X-ref button is enabled in the object type window. Note that Delete for pages is irreversible! ═══ 1.3. User interface and mouse implementation ═══ PmDraw's user interface has been organized and enabled with CUA (Consistent User Access) in mind. File, Edit and Help menu items are standard, and windows, menus and buttons behave as one familiar with OS/2 PM would expect. Context sensitive help for the main window and all dialogs is available using PF1. Within the Drawing area, the mouse can be used to create and manipulate graphic objects. In many cases, such actions require specifying 3 or more points (such as for an Arc or Polyline), so for consistency each point is specified by a single button click. Alternatively, to assist in aligning and connecting objects a keyboard assist keystroke can be used in place of a mouse click. In general, pressing the Enter key is equivalent to clicking MB1, and means to enter a point at the current cursor position and go to the next step in whatever the user is doing. Conversely, Esc is equivalent to MB2 and means to back up and redo the last point in the current action. "Drag" operations, where the first point is specified by a button press and the second by its release, are generally avoided because: o It is inconsistent o It is inherently limited to pel resolution o It requires that the user physically holds the button down and keeps the focus with the application until the action is complete. All operations in PmDraw have the drag-less behavior as the primary modus operandi, including Move and Copy where a starting and ending point must be specified. CUA specifies a mouse model for object selection and direct manipulation. When Mark is highlighted, objects may be selected for editing by clicking on them with mouse button 1 (MB1). As per the "multiple-select" model, each click will toggle an item's marked state on and off (as indicated by highlight marks on the object). In addition, CUA specs several drag operations for selection and manipulation: Drag MB1 Area select - toggles the marked state of all objects completely within the bounding rectangle. Drag MB2 Direct manipulation Move of all marked objects. Ctl+Drag MB2 Direct manipulation Copy of all marked objects (Ctl key pressed at START of drag). ═══ 2. Object Creation ═══ When one of the object types on the side panel is selected, such as Box or Ellipse, any button clicks (button 1) in the main Drawing area are interpreted as entered points for creating an object of that type. Primary objects include: o BOXES and SQUARES o POLYLINES o LINES o ELLIPSES and CIRCLES o ARCS o FILLETS o Splines o Freehand SKETCH o TEXT OBJECTS o X-REFS A graph is a collection of such objects used to display data from a variety of sources. A group is a set of objects that have been locked together, and is formed and disolved using the Modify pulldown. Bitmaps are also graphic objects, and can be read from disk or pulled in from the clipboard. The process of creating an object typically requires several steps, and once initiated (typically by specifying a point in the Drawing window), must be completed before doing other actions within PmDraw. When created, graphic objects assume the current attribute values as displayed in the Text and Drawing Attribute dialogs. These attributes (color, linestyle, etc.) and object shapes and positions can be easily modified using object editing ═══ 2.1. Object Attributes ═══ Object attributes contol the details of the appearance of different objects. These attributes, such as color and linetype, are stored for each object, so each one can be different if desired. PmDraw maintains a "current set" which are applied to newly-created objects and which can be viewed and changed using the associated popup. These popups are accessed through the Attributes item on the main menu bar; within them, the current attribute value is indicated by highlighting and can be changed by clicking on a new value. Once an object has been created, its attributes can be changed by editing. For graphic objects, attributes include color, line-type, arrowhead (type, ends and size), marker (type and size) and fill pattern. For text strings, attributes include color, font, height and alignment. ═══ 2.2. Boxes and Squares ═══ BOXes are (possibly) filled rectangles that are created by specifying 2 corner points. It is stored as a set of points, so by editing you can skew a BOX into an arbitrary parallelagram. SQUAREs can be created by holding down the SHIFT key while positioning the second corner point. Associated attributes are color, linetype and fill pattern. ═══ 2.3. Polylines ═══ POLYLINEs are objects with multiple, connected, straight line segments, and when edited, all segments are affected. During creation, segments are added by pressing MB1 (or ENTER) or any of the cursor positioning keys Entering the same point twice or double clicking will end creation of a given polyline. During creation, pressing MB2 will "back up", and let you redo the last point entered. The attributes include color and linestyle for individual segments of a POLYLINE. In addition the polyline may be filled, with the final point automatically connected to the first and the enclosed area filled with the current fill pattern. If it is not filled, arrowheads may be added to one or both ends depending on the arrowhead attribute's value. The arrowhead attribute includes values for style, placement and size, and is accessed directly from the Attributes menu. Finally, markers may be drawn at each of a polyline's points. There are a number of marker types, some of which may be filled, as well as a marker size. Holding down the SHIFT key while positioning end points constrains individual segments to be either horizontal or vertical. ═══ 2.4. Lines ═══ A LINE is a single, straight line segment. Two endpoints must be specified during creation, and keyboard asstist keys may be used to position points precisely, connecting to other endpoints, curves, etc. Pressing MB2 (or ESC) aborts creation of a line that has been started. As for all objects, LINE's are created using the current specified attributes. Note that even if a set of LINE's are connected, they can be edited independently (unlike a POLYLINE's segments). The attributes include color, linestyle and arrowhead. Holding down the SHIFT key while positioning end points constrains LINEs to be either horizontal or vertical. ═══ 2.5. Ellipses and Circles ═══ ELLIPSE's are created by setting 2 points: the centroid and then the bounding box corner. ELLIPSES are created with axes parallel to page boundaries, but may be rotated during editing to arbitrary angles. Associated attributes are color, linestyle and fill pattern. Using the SHIFT key while setting the second point (bounding box) constrains the ELLIPSE to a CIRCLE. ═══ 2.6. Arcs ═══ An ARC is created as a piece of a circle, and upon scaling and rotation can become a piece of an arbitrarily oriented ellipse. For creation, you must specify 3 points: the center of the circle of which the ARC is a piece, start point (and thereby, the radius) and the end-point (to specify the total swept angle). Associated attributes are color, linestyle and fill pattern, and if filled yields a pie slice shape. Using the SHIFT key while setting the second point constrains the starting arc angle to multiples of 15 degrees from the horizontal (radius is not affected). With the last point, it constrains the total angle to multiples of 15 degrees. ═══ 2.7. Fillets ═══ A FILLET is a mathematical curve specified by 3 points, 2 being end-points and the 3rd being a "control" point. It is best understood visually; create one and see what it looks like. Attributes for FILLETs are color, linestyle, fill pattern and arrowhead. If filled, the arrowhead attribute is ignored (as for polylines), and the area is bounded by the fillet curve and a line connecting its endpoints. There are no SHIFT key assists for FILLETs. ═══ 2.8. Spline ═══ A spline is a smooth curve which passes through a set of control points. As a spline is created, you will see its shape change as the cursor is moved. Points are added and removed in the usual fashion, with the end signalled by repeating a point twice in a row with the cursor or keyboard. If a spline is "closed" on itself, it will automagically smooth the join. Attributes for SPLINEs are color, linestyle, fill pattern and arrowhead. If filled, the arrowhead attribute is ignored (as for polylines), and the area is bounded by the spline curve and a line connecting its endpoints. There are no SHIFT key assists for SPLINEs. ═══ 2.9. Freehand sketch ═══ This allows the user to enter a POLYLINE with a dense set of points by sketching freehand with the mouse. After entering the starting point, the curve will follow the cursor until MB1 is pressed again. You can connect to the start of the sketched curve using the "e" keyboard assist. Once created, a sketched curve is like any other polyline. ═══ 2.10. Groups ═══ A GROUP is simply a set of objects on a page which have been "locked together" for convenience. Once you have created a set of objects which will maintain fixed relative positions, select them all and form a GROUP. The group can then be selected and manipulated as if it were a single object. Whenever selected, a Group will be outlined by its bounding box. If you wish to add or delete items from a group, it can be broken apart using the appropriate entry from the Edit pulldown. The attributes of objects within a group ARE affected by attribute editing. There are NO attributes associated with groups themselves, objects within a group have their own attributes. There are no SHIFT key assists for groups. ═══ 2.11. Bitmaps ═══ A bitmap is a two dimensional array of pels forming an image. The icons representing applications on the PM desktop are special examples of a bitmap. PmDraw allows the user to import bitmaps for inclusion in a graphics page along with the usual vector-based objects such as boxes and ellipses. When importing bitmaps, the user must first specify the file name or alternatively tell PmDraw to pull a bitmap from the clipboard (after having been placed there by an application). You must then position and size the bitmap in the normal manner, first positioning a corner and then setting the size with the rubber box. Note that PmDraw also supports the export of graphics as bitmaps (images), either to disk or to the PM clipboard. Two apps which are highly recommended for use with bitmaps are SCRAP for capturing images from your PM desktop, and UBU which has powerful half-toning and browsing capability supporting a variety of formats including BMP and GIF files. Both apps are available on OS2TOOLS. LIMITATIONS: Bitmaps cannot be exported to PostScript (directly) or to CGM. The only hardcopy route is using Print and going through PM's Print Manager. In addition, bitmaps CANNOT be rotated. Besides limiting the on-page manipulation, this means that when printing, the PmDraw page containing a bitmap must be oriented the same way (landscape vs. portrait) as the printer page to get correct results. There are NO attributes associated with bitmaps. Use the SHIFT key when sizing a bitmap to maintain its original aspect ratio. ═══ 2.11.1. Clipboard Copy ═══ This action lets the user place PmDraw graphics on the PM clipboard. Three data types are supported, PM metafile, text and bitmap (1.1 format). by default all are selected when the dialog is presented. The user can de-select any formats not desired. This is particularly useful when putting data on the clipboard for subsequent use by an application which uses its own (incorrect) logic to decide which format to take from the clipboard. You can force it to take the correct format by only placing that one on the clipboard. In addition, selecting only the desired format will let the operation complete sooner. PM metafile will be a pic of the entire current page. Text will include only MARKED strings, and will be disabled if no text is marked. Bitmaps will depict the current window area on the current page. An alternative route for bitmaps is to use Export (under File), where you can explicitly set the bitmap resolution and color format, and then place it on the Clipboard from the File dialog. ═══ 2.11.2. Clipboard Paste ═══ PmDraw lets you pull either text or bitmap data in from the clipboard. If only one type is available it is pulled in immediately. If both types are available, this dialog lets the user select the desired format. ═══ 2.12. Clip art ═══ Clipart pics can be imported to easily enhance your graphics using the entry under Import on the File pulldown. Selecting this option will present the file dialog for selecting the source file for the artwork. Once the clipart file is selected, a list of clipart pictures is displayed - select by marking the desired pic and pressing OK or by double-clicking on the pic's name. A bounding box will be displayed on the page for positioning and sizing the clipart in the usual fashion. First button click will fix the first corner, second will set the size and shape. As usual, the SHIFT key can be used to insure that the aspect ratio remains correct. In addition, once the first corner has been positioned you can press "m" and enter an explicit magnification factor (such as 1.0). Clipart is simply a collection of PmDraw objects, and so can be easily edited. At present, clipart is stored in standard PMD format with one picture per page, so the user may produce his own and access it through clipart easily. In the future, this will be enhanced by including a bitmap of the clipart so the user can select objects visually as well as by name. ═══ 2.13. Text Objects ═══ Text strings are also handled within PmDraw as graphic objects. They may be manipulated by all of the usual Editing operations, and have the attributes color, font, alignment and size. Positioning is performed using the cursor, with keyboard assist keys for precise positioning and alignment. Once a location on the screen has been specified, the text-entry dialog is displayed for entering the string. The text can then be typed in manually or pulled in from the Clipboard and will then be displayed on screen. These text objects will be individual lines, with the current size, font, alignment and default line spacing. Two separate font technologies are supported in PmDraw, each with their own strengths and weaknesses. These are the o Hershey fonts o Outline fonts ═══ 2.14. Text Entry/Edit ═══ This dialog box allows the user to enter new text for string objects, pull in a block of text from the Clipboard (to produce any number of text objects), or to edit an existing text object on the current page. When adding new text, the dialog will be displayed with no text in the entry field. Text may be typed in directly, or pulled in from the Clipboard using that button. If clipboard text is pulled in, the text objects are automatically created and displayed, and the dialog box is removed. If text is entered manually, one has the option of entering a single string (by pressing OK button) or continuing to the next string with a linefeed positioning adjustment. Whichever method is used for entering text, the current text attributes of Font, Alignment and Size will be applied to the new text objects. A reference table for the Greek/math characters is available and can be displayed or hidden using the Ref. Table button in the text entry dialog. ═══ 2.14.1. Hershey Fonts ═══ For lack of a better choice, a set of public-domain HERSHEY stroke fonts have been employed (which are also used in GDDM graphics). The advantage of the HERSHEY fonts is that they are rendered as simple line-drawing commands and are thus device independent. This enables us to provide a variety of text formatting capabilities, including: o Greek/math symbols o Superscripts/subscripts o Underlining o Special characters The disadvantages are that o They are designed to be "stroked" rather than filled and so are not as pretty at larger scales. o There is no foriegn language character support in the current fonts. o When exported, string information is "lost" so that if you are importing into another application, it will be able to display but not edit any text strings (except as line segments...). The HERSHEY font set used at present includes one mono-spaced font: Roman Simplex Mono and the following proportionally-spaced fonts: Roman Simplex Roman Complex Roman Duplex Roman Triplex Italic Simplex Italic Complex Script Simplex Script Complex Gothic English Gothic English Gothic English ═══ 2.14.2. Outline fonts ═══ Outline fonts are now available for use within PmDraw. These fonts give excellent resolution at all scales and provide built-in (mostly!) National Language Support. They do NOT at present support the formatting capability that is covered with the Hershey fonts, and cannot yet be properly be rendered using CGM export... Otherwise, they are interchangable with the Hershey fonts, providing high quality rendering of the following font families (under OS/2 1.2 and greater): Courier Helvetica Times Roman Each of these is available in normal, bold, italic and bold-italic forms. In addition, under OS/2 1.3 and greater, any installed Adobe font will be available to the user. These fonts are specified using the VFONT item in the Attributes menu. ═══ 2.14.3. Text Alignment ═══ A text string also has an associated reference point on the presentation page. The orientation attribute determines how the text string is aligned relative to its reference point, allowing horizontal alignments of left, right or centered, and vertical alignments of top, bottom or centered (9 possible combinations). As an aid in entering aligned strings, after a string is entered and displayed, the cursor is automatically shifted down for a "line feed". Pressing ENTER again (or MB1) selects the new reference point and proceeds to entry of the next text string. ═══ 2.14.4. Greek/math symbols ═══ Greek letters and a variety of math symbols may be embedded in strings and will be displayed in simplex or complex, appropriate to the string's font. These symbols are designated by normal characters delimited by ! marks, so that the typed string fav!o!rite would display as favorite, with a Greek omega instead of an o. !O! produces an infinity symbol. A reference table showing the correspondence between typed characters and Greek or math symbols is available under the Attributes menu. If one wants to embed an ! in a string, it must be preceeded by a \ (backslash). If an ! is not paired with another in the typed string, all characters following it are translated to Greek/math symbols. ═══ 2.14.5. Underlining ═══ Underlining is delimited by & characters - all characters between paired &'s (or following an un-paired one) will have a connected horizontal line underneath. The typed string "&Ray& \& &Alan&" will display as "Ray & Alan". In order to display an &, precede it with a \. ═══ 2.14.6. Superscripts/subscripts ═══ For fancier formatting and equations, sub- and superscripts may be embedded in text strings. The subscript operator is _ (underscore), and the superscript operator is ^ (caret). In order to enable nesting of xscripts, they are not delimitted - rather, any "single thing" following an operator is xscripted, where a "single thing" is either a character or a group of characters delimited by { } (curly braces). As a result, 2 10^2a displays as 10 a , while 2a 10^{2a} displays as 10 . Similarly, a 2 10^{2^a} would give 10 . Subscripts work in an analogous fashion, and the two may be mixed arbitrarily. As with other special text characters, ^ and _ must be preceeded by \ to be displayed. ═══ 2.14.7. Special characters ═══ In PmDraw text formatting, a number of characters have "special" meanings. In order to include them for display in a text string, they must be preceeded by a \ ( \\ displays only \ ). At present, there are: \ Display special character ! Greek/math (delimits) ^ Superscript _ Subscript & Underline (delimit) { } Grouping delimiters (for xscripts) ═══ 2.15. X-refs ═══ This button enables the inclusion of all or part of one page, within another as a graphic object. This nesting is NOT limited in depth, and the resulting objects can be moved, scaled, rotated or copied in their entirety. As a cross-reference, attributes of individual objects cannot be altered, although changes in the original page will show up in all places it is used as an x-ref. X-refs are created in three steps. When the user presses the x-ref button, a listbox is displayed with names of the other pages in the current file (Note: a page cannot reference itself either directly or through nesting levels). Once chosen, the x-ref source page is displayed and the user specifies the reference box which defines the source area. Objects outside this box will be clipped (not displayed). Finally, the original page is re-displayed and the user specifies the target area into which the cross reference is to be placed (again with a box). While placing the first corner, a tracking box will indicate the size and shape of the source area (at 1:1 scale). Once positioned, the cursor snaps to the opposite corner allowing easy 1:1 sizing. Alternatively, the user can specify an arbitrary size and scaling or, using the SHFT key, scale the x-ref isotropically. When the second target corner is placed, the x-ref is displayed. Using the Modify pulldown, a cross-reference can be fractured and broken up into individual objects which can then be edited separately. Alternatively, the source page "window" and the destination area may be directly changed using control point editing. ═══ 3. Editing objects ═══ In order to change existing objects on a PmDraw page, you must first select, or mark the objects to edit. Once the desired objects have been selected, general manipulation actions can be initiated using actions from the Edit pulldown: o MOVE o COPY o Array copy o SCALE o ROTATE o DELETE o UNDO In addition, object attributes may be edited directly, and additional actions become avaiable via the Modify pulldown: o Text editing o Form group o Break up group o Fracture x-refs o Z-order: Bring to front o Z-order: Put in back Finally, objects can be re-shaped using control-point editing. ═══ 3.1. Marking objects ═══ When editing, only those objects which have been "marked" can be affected, whether by physical manipulation such as MOVEs or SCALEs, or by Attribute changes. This marking is indicated by highlighted points on the objects themselves which will be marked with a small box that can be either filled or empty. Marking can be performed in several ways, with the simplest being to use the cursor directly, clicking on each object. When using the cursor to mark specific objects, distances are calculated to the nearest point on each object (unless "keyboard assist" is used), and the nearest object is toggled between marked and unmarked. Normal marking is indicated by a filled box highlighting one or two points on an object. This occurs when Mark is selected and the object is clicked on with MB1. A "single-mark" can be made by double-clicking on an object, which will mark the nearest object and unmark all others. In addition, all control points of that object will be marked with hollow boxes indicating that these control points may be moved to re-shape the object. At present, when a new object is created this single-mark action occurs automatically. Additionally, marking actions are provided in the Edit pulldown for changing the marked state of a group of objects. Mark area toggles the marked state of all objects within a box that the user specifies with the cursor. Mark all and Unmark all are self-explanatory. The keyboard assist keys can be used to mark objects of a specific type, either when objects overlap and are difficult to mark with the cursor, or for greater speed. The "t" key, for selecting the nearest TEXT object is particularly useful. ═══ 3.2. Re-shape objects ═══ When an object on the current page is "single-selected" (open boxes at control points), it may be re-shaped by moving these points individually. If CUA manip is enabled, the user may simply click within the cp box with MB2 and drag the point to a new position. Alternatively, the action may be started by selecting Move from the Edit pulldown and clicking within the cp box for the starting point. When either of these is done, the cursor is snapped EXACTLY onto the control point (not pel limited) so the user can position it as desired. If dragging, it is placed by releasing MB2 or by pressing a keyboard assist key. If via Move, it is by a normal second point positioning. Use Esc to abort the action. In general, the re-shaping action will respect the perspective view of the object being edited. If the object had been rotated and scaled so as to appear skewed in three dimensions, the re-shaping will maintain that perspective. For objects with aspect ratios, the SHIFT key can be used to maintain that aspect. When re-shaping text, the size indicator in the Text Attributes dialog will dynamically indicate the height of the text on the page. ═══ 3.3. Move ═══ MOVE operations entail specifying a start point and an end point. All selected objects are moved by the specified amount, and the start and end points may be anywhere on the presentation page. Note that it is possible to move objects outside of the visible page and "lose" them. Using the SHIFT key constrains the move to either horizontal or vertical. ═══ 3.4. Scale ═══ SCALE allows the user to change the size and aspect ratio (X/Y) of selected objects. Three points are required: a reference point which will remain fixed on the page, second corner for the starting box, and second corner for final (destination) box. All marked objects will be scaled by the ratio of the box sizes, and may be mirrored or flipped. Note that in general, objects will be moved as well as sized, so that if you SCALE several objects at once, their relative positioning will remain fixed. If you wish to maintain the original aspect ratio, hold down the SHIFT key while sizing the final box size, its shape will remain the same as the starting box's. ═══ 3.5. Rotate ═══ Rotate permits just that. Again, three points are required: a center of rotation, a start angle and an end angle. Actual values of the starting and ending angles are unimportant, only the difference is used. A start angle at 3 o'clock and an end angle of 12 o'clock would give a 90 degree counter clockwise rotation... but so would 9 o'clock and 6 o'clock. Using the SHIFT key constrains first angle to 15 degree increments, as well as the difference between first and second angles. ═══ 3.6. Copy ═══ COPY lets the user create and positions duplicates of existing objects on the current page. All marked objects are copied and a MOVE operation is initiated so that the copy can be positioned. The copy will first be generated on top of the original, and then the copy is positioned. Unlike subcells, copies are completely independent of the originals, and may have different attributes, scaling, etc. Using the SHIFT key during copy positioning constrains displacement to horizontal or vertical, and helps the user to align copies precisely. ═══ 3.7. Delete ═══ DELETE removes the marked objects from the presentation page. A stack of deleted objects is maintained for each page while in PmDraw, so that if one wishes to restore something they can use UNDO. ═══ 3.8. Undo ═══ UNDO sequentially backs up through the most recent editing actions you have performed on the current page. Such actions include creating new objects, moving, scaling, changing colors, and even changing marking selections. The default number of steps retained for each page is 5 - this can be changed at the user's option using Personalize (under Options). ═══ 3.9. Flip ═══ FLIP allows you to flip all marked objects left-to-right or top-to-bottom. Selecting one or the other will display a "divider" line either horizontal or vertical across which the objects will be flipped. Use the mouse or keyboard assists as usual to specify the location of the mirroring axis, MB2 will abort the action. ═══ 3.10. Fit to page ═══ This option causes all MARKED objects to be rescaled so that they fit entirely within the page. The scaling is uniform (not stretched), and if there is excess space in one or the other direction the objects are centered. ═══ 3.11. Snap to grid ═══ This option causes all MARKED objects to be moved and reshaped so that their control points fall on grid points. ═══ 3.12. Editing Attributes ═══ Attributes of all existing objects can be changed with ease. While Mark is selected, select the objects to be altered (by marking). Once marked, any relevant attribute can be changed using the Text and Drawing attribute dialogs. Click on the attribute of interest and a list of possible choices will be presented. Select the new attribute and it will be applied to the Marked object(s). Only "appropriate" objects will be changed correspondingly - if you have a polyline marked and you change the text font, the polyline will not be affected... Using these techniques, one can create a full page with default attributes, and then go back and "touch it up", setting fonts, linestyles, colors and so forth. ═══ 3.13. Text editing ═══ Text strings may be edited as well. Select the string(s) to be edited and use the "text Edit" option in the Edit menu. Each marked string will, in turn, be placed in the text entry dialog to be edited as desired. Pressing CANCEL from the text editing dialog will leave the string unchanged. ═══ 3.14. Fracture x-refs ═══ An x-ref is actually a pointer to graphic objects on another page in the current PmDraw workspace. As such, the attributes of individual pieces may not be changed, but the x-ref may be manipulated as a single object (attributes can, of course, be changed on their source page - these changes will then be seen everywhere the objects are referenced in x-refs). In order to edit pieces of an x-ref, it must be fractured so that the individual pieces are actually copied into the current page. This action is performed by Marking the X-ref(s) to be fractured, and selecting Fracture under the Modify pulldown. Since the action is irreversible, the user will be prompted for confirmation for each marked subcell before the action is performed. ═══ 3.15. Z-order: Front ═══ If objects overlap on the presentation page, the ones that appear to be on top are the ones that are drawn last. This action takes marked objects and moves them in front of unmarked objects on the page. Note that with IBM's plotter drivers, all objects will be drawn completely - so filled overlapping objects will almost certainly not be rendered "correctly". ═══ 3.16. Z-order: Back ═══ If objects overlap on the presentation page, the ones that appear to be underneath are the ones that are drawn first. This action takes marked objects and moves them behind unmarked objects on the page. Note that with IBM's plotter drivers, all objects will be drawn completely - so filled overlapping objects will almost certainly not be rendered "correctly". ═══ 4. Graphics export ═══ Data from PmDraw graphics may be exported in a variety of formats for eventual hardcopy or import into other applications. The export functions store the data to files which, by default, have extensions corresponding to the format being written. For non-image formats (CGM, MET, etc.), multiple pages can be exported simultaneously. Select the pages to be exported from the left listbox, and the export format from the right listbox. Pressing the export button will initiate an export using the file spec at the bottom of this dialog (which may be edited directly); alternatively, when exporting only one file export as will cause the standard file dialog to be displayed for file/path entry. If installed, the Image Toolkit enables the import and export of a variety of image formats, such as standard OS/2 bitmaps (bmp files), CompuServe GIF files, etc. When the export dialog is opened, the toolkit is queried and all known image formats are added to the type listbox for possible selection. At present, bitmap exports are restricted to current view of the current page ONLY. Checkboxes are included for control over export details - one allows black and white color inversion, while the other controls whether the page background fill is included in the export file. ═══ 5. Graphics import ═══ Import allows one to pull graphics in from files on disk into the current PmDraw workspace. These graphics may be imported onto the current page as additional objects, or onto new pages (page name is derived from the import filename). At present, graphics may be imported from CGM and various image formats, as well as from other PMD files. If importing onto the current page, the data is scanned for size and a bounding box is displayed for positioning and sizing on page. Importing graphics from a page of a PMD file this way is called clipart, and can be performed quickly using its accelerator (Ctl+c). After specifying the clipart file, a list of objects (pmd pages) are displayed for selection. Pages including x-refs may NOT be used as clipart - such pages will be marked with a "*" in the list. If installed, the Image Toolkit enables "smart" loading, in that it will determine the filetype, and if known import it into PmDraw. ═══ 6. Image toolkit ═══ This is a dll-based toolkit that allows one to load and save a variety of image formats, such as standard OS/2 bitmaps, CompuServe GIF files, etc. The toolkit is installed and managed using ITKINSTA.EXE. Image "handlers" can be registered in your system which are then available for applications like PmDraw for loading and saving images. When exporting to an image format, the toolkit is queried (if installed) and all available image formats are added to the appropriate listbox for possible selection. When importing, "intellegent" handling is used whereby the user selects any image file and the toolkit is used to determine the file type and load it (if known). ═══ 7. Printing ═══ Workstation based hardcopy is supported in PmDraw by a, spooling through the PM Print Manager and b, direct copying to PostScript printers (Direct PostScript). The Print Manager enables spooled output so that, to a large extent, it occurs in the background and allows the user to continue doing other things (like producing more graphics!). From the File menu item, Print access the primary print-dialog from which one can select pages to be printed, specify the target printer, set printing options, and start the print job. In addition, a single page at a time may be layed out (formatted) within the print page, or exported to PostScript or HP/GL plotter compatible files. The other printing option within PmDraw is to let PmDraw generate its own PostScript representation of your graphics and copy it directly to an LPT to which a PostScript printer is attached - Direct PostScript. ═══ 7.1. Print dialog ═══ This dialog lets the user select pages to be printed, specify printer and options, and start a print job. The Pages listbox is where the user specifies the pages to be printed. Multiple pages can be highlighted to be printed as a single job. Note that multiple pages can only be Printed, only one page at a time can be Formatted or Exported through the Print Manager. Options allows the user to specify certain printing details. Query job properties causes the printing driver being used to display its configuration dialog at the start of the print job. Fit to margins will force your page to be scaled to fall completely within the margins of the printer's defined page form. Autorotate tells PmDraw to rotate your output automatically if the aspect ratio is different between your page(s) and the printer page. Next is the Printer area. The printer description is displayed here, as well as buttons for invoking the Change printer and printer Information dialogs. Print actually starts the print job. A copy of your workspace is produced and a background thread is started to process all of the pages you have specified. Since the spooling is done from a separate copy, the user is free to return to the main application and make editing changes or load an entirely new file while the print job is running. If you attempt to end PmDraw while this printing thread is running, a warning dialog will be displayed. Print will be disabled if either the selected printer is not connected to a physical port, or if no pages are selected. Format starts up PmDraw's Fantastic Print Formatter (FPF) with the selected page and printer. Export is enabled if the selected printer is a PostScript or plotter type of printer. When selected, PmDraw will prompt the user for a filename and will route the selected page through the Print Manager's printer driver and produce a compatible file on disk. ═══ 7.2. Printer Information ═══ This dialog displays information relevant to the currently selected printer. It shows which physical port the printer is "attached" to, and whether the associated driver is capable of writing its output directly to a file (Export-able). It also lists the current form name, its dimensions and margins. ═══ 7.3. Format print ═══ The "fantastic print formatter" enables powerful control over the layout of PmDraw graphics on your output device. To do this, the current page is written to a metafile (in memory) and the formatter window is displayed. The formatter shows both this metafile (as source, on left) and the printer output page (as target, on right). The source page will reflect the size and orientation of the PmDraw page; the target page will reflect the current "form" for the current printer. Using the formatting options and mouse, the user can lay out his picture as desired. Then from the File menu, he can start the print job, export the formatted output to a file (if enabled), or change printer. Note that once the formatter has been started up with a pic, you can return to PmDraw without closing and do further work (changes will NOT become part of the formatter's pic). You cannot, however, send something new to the formatter without first terminating it. Close the formatter down using the Quit menu option. ═══ 7.3.1. Formatting ═══ Formatting consists of a) selecting the area of the presentation page to print, and b) specifying where on the output page you want it to be put. On the output page, if the current "form" has margins defined they will be greyed-out so that the user can see exactly what area is printable. Options are available for maintaing aspect ratio (the default), rotation and "Mirror clip" (a mystery...), but the primary modus operandi is to set a box on the source area to delineate what will be printed (may be the whole page), and also a target box on the printer page. These boxes are specified in the same manner as boxes in PmDraw (MB1 click for first and second corners). A bounding box is optionally printed depending on the Include-box setting (indicated by a check). ═══ 7.3.2. Selecting printer/driver ═══ *** Changing printer *** This option allows you to specify any printer/driver combination defined in Print Manager as the hardcopy destination. When Change-printer is selected, a dialog is displayed with 2 listboxes. The left box displays all of the printers currently defined, while the right listbox displays the drivers available for the selected (highlighted) printer. Each device driver has a "current form" which specifies the page size, margins, etc. Pressing the Info button displays a dialog with this information, as well as whether the printer is connected to a physical device and if it is export-capable. Selecting Ok changes to the highlighted printer/driver combination, while Cancel leaves the settings unchanged. ═══ 7.3.3. Routing to a file ═══ Using the Print Formatter and either the PSCRIPT or PLOTTERS drivers, PmDraw output can be exported to PostScript or HP/GL format ascii files. Such output is produced by the drivers and is subject to any bugs or quirks they may have, but for some cases may be advantageous - an example is that the PSCRIPT driver has a more sophisticated color-to-greyscale mapping than that built into PmDraw. Perform export routing by formatting your printer output as desired, and selecting Export from the File menu. If Export is disabled, the current driver is not capable of producing such ascii files. ═══ 7.4. Direct PostScript printing ═══ PmDraw supports direct PostScript printing to any PostScript-capable printer that has been associated with an LPT port. This association can be made via a local attachment to the workstation, or via a NET USE of a printer connected over a LAN. Before printing can occur, PmDraw must be informed of the printer's information regarding the connection and its page orientation. This is done via the Direct PostScript -> Setup dialog. After specifying the port and orientation, selecting Save will store the info in the PmDraw INI file (so that it need not be done next time you run the program). Alternatively, selecting OK will setup the printer information, but it will only be valid as long as PmDraw remains active. Important! The orientation specified during Setup is the setting for the printer itself. Your output page will be rotated automatically (if necessary) to match that of the printer. ═══ 8. Miscellaneous features ═══ In addition to its major aspects, there a number of miscellaneous features which greatly enhance the working environment in PmDraw. Among these are: o File handling o Mini-view window o Alignment grid o Tics o Page size/orientation o Popup positioning o Saved configuration (customization) ═══ 8.1. Mini-view window ═══ The Mini-view window displays a view of the entire current page and allows direct specification of the visible area in the Drawing window. This Drawing area will be depicted as a red box in the Mini-view window, and can be changed by defining a new box with the cursor (exactly as boxes are created in PmDraw drawing). Note that the aspect ratio is locked to that which is visible in the Drawing window. An additional feature is that if the graphics in the Mini-view window are "messed up" from improper refresh, it can be refreshed by clicking MB2 with the cursor in its margin area. ═══ 8.2. Alignment grid ═══ A rectangular grid is available in PmDraw to assist in accurately drawing and aligning objects. The grid spacing is customizable via the Options menu, as is its visibility. When "snap" is turned on (via its menu option Snap On), using the cursor and an MB1 click or ENTER to set a point will cause the cursor (and the entered point) to be snapped to the nearest grid point automatically. Whether or not "snap" is turned on, you can always move the cursor to the nearest grid point using the keyboard assist key "g". ═══ 8.3. Tic marks ═══ *** Tic marks *** Tic marks can be displayed to assist the user in scaling and positioning her graphics. Since the mouse coordinates are visible in the Info window tics are not strictly necessary, but they are useful for visualizing the final-output scale. Default is for the grid to be visible, and have tics every 1/2 inch - both of these are customizable. ═══ 8.4. Page size/orientation ═══ Page sizes at present are 8 1/2 by 11 inches (portrait or landscape), or 6 by 6 inches. All dimensions are specified in inches (or thousandths). The page size for a given presentation page is specified in the Options menu, and upon reloading the visible window will be set appropriately. If scaling to other hardcopy page sizes is desired, the best solution at present is to use the print formatter. ═══ 8.5. Attribute popups ═══ Popups for object attributes may be placed anywhere on the Desktop, and their visibility is controlled through the relevant items under the Options drop-down on the main action bar. Position and visibility are stored in the configuration (using Save window positions) as described under customization. There are two windows for attributes, for Drawing and Text. These windows display the current values of each attribute; clicking on these attribute displays will pop up a dialog box or a menu from which a new setting can be selected. If any objects are marked, changing the value of an attribute in the dialogs will change that for the marked object(s). If one marks an object, the attribute dialogs will change their values to indicate those for the newly marked object. They will return to default settings when going back to create a new object (say, by clicking on Box). ═══ 8.5.1. Text attributes ═══ The curren font is displayed at the top. Clicking in its window will pop up the font-change dialog. An array of radio buttons allows you to set the alignment of text strings relative to their reference points. This allows the user to specify lower-left alignment, centered text, etc. The text size is displayed in a normal button with dimensions in English, metric or Point units. Clicking on this button will pop up the textsize-change dialog. ═══ 8.5.2. Font selection ═══ This dialog is displayed by clicking on the current font window in the text attributes dialog. It displays a list of the Hershey and Outline fonts available on your system. Clicking once on an entry will cause that font to be displayed in the preview window, double-clicking or pressing OK will cause the selected font to be made the current font. If any text strings are marked, they will have the selected font applied. ═══ 8.5.3. Text sizing ═══ This dialog is displayed by clicking on the text size button in the text attributes dialog. It contains an entryfield in which the size can be typed in the current units, as well as radio buttons for changing the text size units between Points and either English or metric (depending upon which has been selected in the Options pull-down). ═══ 8.5.4. Sizing dialog ═══ This dialog allows the user to specify a size in the current units (English or metric) for Grid spacing, Ruler division spacing, and for Markers and Arrow heads. ═══ 8.5.5. Array copy ═══ This dialog allows the user to copy all marked items in a rectangular array. The number of rows and columns and their spacings must be entered. ═══ 8.5.6. Fast Hershey ═══ This switch toggles the setting for scaled stroking of the Hershey fonts on-screen. If it is un-checked, the fonts will be scaled as they will be for export and printing - but the performance will be SLOW. For speed check this and the text on-screen will be drawn with the correct font, but MUCH FASTER. ═══ 8.5.7. Window zoom (magnification) ═══ You can control the viewing area in the Drawing area in a number of ways: o Ctl+z will zoom to full page view o Scroll bars and miscellaneous accelerators will move the current drawing window around on the page without changing its size. o The +/- buttons on the side panel can be used to zoom in and out by roughly 60% increments. ═══ 8.5.8. Draft view ═══ Draft view is for increasing the drawing speed on-screen and pre-viewing pages. It causes text to be rendered in the fastest font (Hershey Simplex), lines to be drawn with default width (one pel), and fill patterns to be ignored. At preset, the Draft setting will also affect output through metafile export and Quick and Format print. Text sizing is NOT precise in Draft view! It is only intended as an approximation to what will be seen in normal view. ═══ 8.5.9. Metric units ═══ This Options pull-down selection allows the user to specify whether English or metric units are preferred. The selection will affect the coordinates display in the Info window, and all sizing units. ═══ 8.5.10. CUA mouse model ═══ This Options pull-down selection allows the user to specify whether the CUA model for object selection and manipulation is in effect. It currently applies only to editing operations: Clicking MB1 causes only the nearest object to be selected. Adding the SHIFT key causes the nearest object's state to be toggled and all other objects left un-changed. This lets you add or subtract specific objects to the marked set. Dragging MB1 allows an area mark to be performed, marking all objects within the desired area. Using the SHIFT key causes the marked state of all surrounded objects to be toggled, leaves other objects in their current state. Dragging with MB2 causes a MOVE operation to commence. Using the CTRL key changes the operation to a COPY. (Using the SHIFT key constrains the movement to horizontal or vertical). ═══ 8.5.11. Overwrite confirmation ═══ This Options pull-down selection allows the user to specify whether confirmation is required before overwriting an existing file on a file save. If it is on (checked), a popup will query the user whether the save is to be continued or aborted. ═══ 8.5.12. Drawing attributes ═══ For all attributes, clicking on their display area will pop up a dialog or menu offering a selection for changing the value. Line attributes include Color, style and width. The color affects all outline drawings and borders, as well as text colors. If the line and fill colors are the same and the line color is changed, the fill color will be changed to match. If they are different, the fill color will be left alone. It should be noted that limitations in PM prevent wide, patterened lines from being displayed - if such a combination is selected, the line will display on screen at the proper width with an arbitrary fill pattern (indicating that it is not a SOLID line). These lines CAN be exported to Postscript and CGM with the desired appearance, although at present the line style repeat length is not scaled with line width... Fill patterns include color and style. Current limitation is that direct or exported Postscript maps fill patterns other than SOLID to grey shades. Marker attributes include style and size. Markers are "fancy" now... Arrow attributes include "ends", style and size. The left arrow will cause the arrow head to be drawn at the BEGINNING of a line or curve, the right arrow at the end. Arrow head styles are fancier now as well. ═══ 8.6. Saving configuration ═══ The default configuration for PmDraw is extremely customizable. Under the Options menu item you will find Personalize which opens up a primary dialog for setting various parameters. Some values are set directly in this dialog, while some groups of settings (like default options for print/export, for example) are set from sub-dialogs to the main Personalize dialog. Once parameters have been set, you have the option of saving them so that they are in effect automatically when you start a PmDraw session, or you can "try them out" in which case they are only in effect as long as you have that session running. If you decide to make those settings "permanent", you can re-enter Personalize and Save them. ═══ 8.6.1. Personalize dialog ═══ From this dialog, you can directly set default values controlling a number of options within PmDraw as well as access several sub-dialogs for various configuration areas: o Print/export options o File I/O controls and paths o New-object defaults In addition to the above dialogs, settings for a number of options can be made directly from the Personalize dialog. Unit can be set to either English or Metric, and all dialogs asking for lengths will use these units. The side panels which hold object buttons and mini-view window can be placed either to the left or right of the drawing area at the users preference. Rulers visiblity and tic spacing can be set, as well as the number of Undo steps for each page. Finally the location of the config file which holds this info can be specified - the default path is c:\os2. In addition to these, a Save will also make your current settings in the Options pulldown permanent, for the alignment grid and various viewing controls. Once settings have been made, you can either Save them as your standard defaults, or try them out in which case they will only be in effect for the current session. If you wish to make them permanent later, you can re-enter Personalize and Save them. ═══ 8.6.2. Print/Export options ═══ Use this dialog to set the default values for various controls that affect Printing and Export jobs. Query job props will make PM display a dialog for a print job appropriate to the driver you are sending a print job to. Invert black/white will do exactly that. If you prefer to work with a black background and white text, you will need to invert them when doing normal printing (this is the default). You also have the option of having the background color written into a print or export job. If you wish, you can work on a page background of blue but still have it clear when printed. Finally there are settings for default layout. Fit to margins will scale your page to fit exactly within the margins of the current form for a print job. Auto-rotate will cause the output to be automatically rotated if the aspect ratio dictates it. A landscape page will be automatically rotated if the target is Portrait, for example. Blowup lets you specify a magnification factor for printing larger views of your page (posters!). Default mag is 2X which will cause a standard A or A4 page to be blown up and printed on 4 sheets. Selecting Ok sets these values for the current session - you must select Save from the Personalize dialog to make them permanent. Note that these settings are simply defaults - you still have the option of changing them for individual print and export jobs. ═══ 8.6.3. Files/paths configuration ═══ The two checkboxes in this dialog control file saving behavior. Confirm file overwrite will prompt the user for confirmation when a file save (or export) would overwrite an existing file. Verify saved data will force a re-read of a saved PMD file to verify that it was written correctly. Turning this on will result in slower speed during saves, but will result in greater data integrity. In addition, you can set the default path for all of the filetypes that PmDraw recognizes. Select a file type and the path will be displayed in the edit window. If you change it and press Set, your changes will be retained. Note that you must use SAVE from the main Personalize dialog to retain these values as your permanent defaults. ═══ 8.6.4. New object defaults ═══ Here you can set default attributes and behavior when creating new objects. Page size, orientation and background colors will be the values first applied when you create a new page within PmDraw. Individual page settings can then be changed using the Pages pulldown on the main menu. The "X" button allows you to set your default user page size. Line spacing is a multiplying factor. 1.5 will result in a 50% greater spacing between lines when entering multiple lines from the text dialog or pasting text from the clipboard. New object marking sets the default behavior for marking objects on the page when a new one is created. The three options should be self-explanatory. ═══ 8.6.5. Configuration file ═══ Use this dialog to specify the file and path that you want to keep your PmDraw configuration information in. The default is C:\OS2\PMDRAW.INI. ═══ 8.6.6. Set page size ═══ Use this dialog to set the height and width of a page. If called from Re-size in the Pages pulldown, it will affect the size of the current page (you might find it necessary to then Mark-all and Fit-to-page). If called from the Personalize dialogs, this dialog sets the default height and width of a new (User page size) page. ═══ 8.6.7. Screenshow ═══ Screenshow lets you put PmDraw in a mode where it will flip through pages in a loaded PMD file continuously. Using the setup dialog, you can specify the last page in the file to be cycled through, and the time that each page is displayed before going to the next page. Using the Last Page setting allows you to have clipart and xref pages at the end of the file which are skipped during the screenshow cycle. Start a screenshow by loading a multi-page PMD file and selecting Screenshow under Files on the main menu. This menu option will only be enabled if a multi-page file is loaded. Once you've confirmed the timestep and last page to be shown, the screenshow begins and will run until interrupted. While running you can use the mouse or keyboard to control the show. Pressing Btn 1 or Enter will pause the show or pressing Btn 2 or Esc will end the show. Once paused, pressing Btn 1 will resume the screenshow, while pressing Btn 2 will back up to the previous panel. ═══ 8.7. Graph initialization ═══ Graphs are used to present data or information in an organized fashion. There are a number of standard formats, including xy plots, bar and pie charts. Data within PmDraw is named, so that a set of x values and y values have a name which is used when plotting them against each other. At present, PmDraw only support xy plots. A standard xy plot has numeric axes with data represented by polylines with any combination of line and marker styles. PmDraw allows multiple curves and even multiple axes. For example, you can have different y scales displayed on the left and right side of a graph with displayed curves associated with each (e.g. "x1" vs. "y1" and "x1" vs. "y2"). Data can derive from a variety of sources - at present you can either read in data from a file on disk (ascii format, as from a standard text editor), or supply an equation from which it is calculated. You can even include in the same graph data from a file, and a curve from an equation which theoretically matches the data. Eventually, you will be able to perform fitting of your data so that PmDraw determines the best match of the data with a specified function through least squares fitting. Spreadsheet manual entry of data is not yet supported. When creating a new graph, you must specify the graph type and specify the source of the data. If Auto-size is checked a default centered graph location will be used, otherwise you must specify where on the page you want the graph to be located. The box you give will be the DATA bounding area - any scales and labels will fall outside this. This method allows you to overlay two graphs by making their data areas coincident. ═══ 8.8. Graph edit dialog ═══ The primary graph add/edit dialog consists mainly of a list of graph items and buttons for a variety of possible actions. The graph type, such as "XY plot", is shown in the upper right of the dialog. Below that is the list of graph items. Next is a text display which shows a suggested action or details regarding a selected item. Graph items are listed in order in the main listbox. In displaying the graph, these items are handled sequentially so that the current axes at any point in the list are the last x and y axes encountered in traversing the list. Items usually correspond to displayed objects in the graph, such as Title, and by selecting the relevant graph item in the list the attributes of the associated objects can be edited using the standard text and drawing attribute dialogs. Multiple graph items can be selected by holding MB1 down while dragging through the list, or by using the Ctrl shift key while clicking on items. Once selected, items may be Edited Modified using a dialog Inserted New graph item created and placed in the list Deleted Removed from the list Copied Duplicated with the new object immediately edited Fractured Removed from the graph item list, but with the visible objects left on the page as normal PmDraw objects Reordered Using drag/drop with MB2 ═══ 8.9. Graph data load ═══ Data can be imported into a graph from an ascii data file on disk. When editing or creating a dataload item, a file name must first be given. The file is then read and the dataload dialog is displayed. The dataload dialog contains a listbox with an entry for each column of data found in the file. These entries have a column number and space for the data column name. To specify a name, select the listbox item, type in the name in the entryfield below the listbox, and click on the item again to verify the name. When first creating a graph with data from such a file, the first two columns will be given the names "x1" and "y1" by default - these may be edited as desired. Selecting New File allows one to change the name of the file from which data is to be loaded. Selecting Reload will cause the currently selected file to be re-checked in case you've edited it. Data is only loaded for those columns that you have named. If you've edited the file and added a column of data, pressing "?" will cause the file to be re-scanned and an entry for the new column added to the listbox for naming and subsequent loading. NOT YET ENABLED... ═══ 8.10. Graph data calculation ═══ Calculated data is represented by a set of x values given by a range and a number of evenly spaced values within it, and y values which are calculated from the associated x values. Both the x and y datasets must be given names, and the entered equation should be a function of x. For example, an x min of 0, max of 1 and divisions of 10 would result in the x values of 0.0, 0.1, 0.2, ... 0.9, 1.0. Then, an equation of 2*x+3 would result in y values of 3.0, 3.2, 3.4, ... 4.8, 5.0. Once you have calculated the x and y data, it can be used to produce a curve. ═══ 8.11. XY plot curves ═══ This causes a selected, (named) x and y dataset to be plotted against each other using the current axes in effect. The list of selectable names for x and y will include all available names at the point at which the curve occurs in the list of graph items. ═══ 8.12. Graph axes ═══ X and Y axes are specified using individual axis graph items. They are used to define the scaling for the graph, and to produce labels and tic marks for the axes. In the primary dialog, one specifies the axis type (linear, log, function), and the axis range. One may specify the range explicitly, or determine it automatically from one of the named datasets. For example, if dataload has been used to bring in named x1 and y1, the x axis can be "locked to" x1 so that data can always be displayed with a "nice" axis data range. If the x1 data is subsequently changed, the graph axis will be modified accordingly and all graphed objects updated accordingly. If a named dataset is selected but "Lock to" is NOT checked, Rescale will find a reasonable min and max but not lock you to it. Details allows you to modify exactly how the graph axis is presented. ═══ 8.13. Axis details ═══ Using this dialog, one can specify details regarding the presentation of a graph axis. It allows you to display a grid, or to control the display of ticmarks. Ticmark details include positioning and length specs - if x ranges from -1 to 1, one can use interior to place an axis INSIDE the graph at 0 by checking Interior and giving a Loc(ation) of 0 in the y axis details. Division spacing and number of minor ticmarks are specified explicitly. Finally, axis numbering can be controlled. If tics are to the left and right, for example, you have the choice as to which side to place the numbers. A multiplier can be specified - if the axis ranges from 0 to 1000 and a multiplier of 0.001 is given, the axis numbering will range from 0 to 1.0. Spacing controls how far from the edge of the graph the numbers are positioned. ═══ 8.14. Graph labels ═══ ═══ 8.15. Graph item INSERT ═══ ═══ 9. Keyboard assists/accelerators ═══ Within PmDraw, the keyboard can be used in place of the mouse to perform a number of actions and to assist in the precise entry of points for creating and editing objects. Menu accelerators are given beside the associated menu item; other accelerators include: o Cursor positioning keys o Miscellaneous accelerators ═══ 9.1. Menu accelerators ═══ Ctl+a Toggle grid AUTOSNAP function Ctl+c Clipart import Ctl+d Direct PostScript print Ctl+g Toggle grid visibility Ctl+i Help Index Ctl+k Help Keys Ctl+n New PMD file Ctl+o Open existing file Ctl+p Format Print Ctl+q Quick Print Ctl+s Save PMD file (with same name) Ctl+v View another PMD page ═══ 9.2. Edit accelerators ═══ In general, editing actions will just affect marked items: Alt+a mark ALL Alt+b Put object in BACK Alt+c COPY Alt+e ERASE current page (reverse with Ctl+Del) Alt+f Bring object to Front Alt+g Form Group Alt+m MOVE Alt+r ROTATE Alt+s SCALE Alt+t Text string edit Alt+u Un-mark all Delete usual edit action for marked items Ctrl+Delete un-delete editing action ═══ 9.3. Cursor positioning keys ═══ Positioning keyboard assists: e move to the nearest object "end point" t move to the nearest text reference point c move to the nearest object "center" (box, arc, ellipse, subcell) g snap to the nearest grid point l move to the nearest point on the nearest line segment r move to the closest point on the nearest curve (arc, ellipse, fillet) s move to the closest subcell corner Additional keyboard assists are: arrow keys moves the cursor a pixel at a time (useful for fine positioning) Ctl+arrows fast keyboard-controlled cursor movement SHFT in conjunction with Add/Edit actions offers an assisting constraint. For example, with Rotate, SHIFT constrains angles to multiples of 15 degrees. Creating an ellipse, SHIFT constrains the shape to a CIRCLE. Details are given in descriptions for individual Add/Edit actions. Under Add, works with all but fillet, under Edit works with Move, Scale, Rotate and Copy (Move part). When you specify points and objects by using the cursor and clicking MB1 (or pressing Enter), the accuracy is limited by the conversion of the cursor's position on the screen (in pels) to page coordinates. To circumvent this limitation, a number of cursor assist keys have been implemented which assist the user in precisely positioning the cursor, connecting EXACTLY to existing objects, and SELECTING objects (when Marking). ═══ 9.4. Miscellaneous accelerators ═══ Insert toggle between Mark and current object buttons Alt+F6 CUA switch between PmDraw windows Ctl+z ZOOM out to full page view Ctl+r REFRESH main drawing window + INCREASE MAGnification of current view - DECREASE MAGnification of current view Alt + cut the grid spacing in half Alt - double the grid spacing PgUp/PgDn change page in workspace (also Ctl+) Home/End move window around on page (also Ctl+) ═══ 10. PMDraw Extended Help ═══ PmDraw is a CORE presentation graphics utility aimed at page-format, WYSIWYG foil layout under OS/2 Presentation Manager. The primary design emphasis is on ease-of-use, and it is oriented toward scientific presentation graphics. Help is available for the following areas: o Introduction o Creating objects o Editing objects o Data Import/Export o Hardcopy o Miscellaneous features o Keyboard assists/shortcuts ═══ 11. PMDraw Authors ═══ PmDraw! VERSION 1.0 26 March, 1992 Developed by Alan Warren, with help from Ray Wang, Allan Bednowitz, Genarro Cuomo, Jason Crawford and Larry Salomon. IBM T.J. Watson Research Center Yorktown Heights, NY 10598