|Publication number||CA1238425 A|
|Application number||CA 491491|
|Publication date||21 Jun 1988|
|Filing date||25 Sep 1985|
|Priority date||1 Oct 1984|
|Also published as||CA1238425A1, EP0176833A2, EP0176833A3, US4625288|
|Publication number||CA 1238425 A, CA 1238425A, CA 491491, CA-A-1238425, CA1238425 A, CA1238425A|
|Inventors||Herbert S. Weiner, William L. Mills, Charles E. Perkins, Chi-Leung Lau, Jeffrey P. Mayhew, Samuel Y. Gordon|
|Applicant||Herbert S. Weiner, William L. Mills, Charles E. Perkins, Chi-Leung Lau, Jeffrey P. Mayhew, Samuel Y. Gordon, Tektronix, Inc.|
|Export Citation||BiBTeX, EndNote, RefMan|
|Classifications (6), Legal Events (1)|
|External Links: CIPO, Espacenet|
METHOD AND APPARATUS FOR CREATING A STRUCTURED IMAGE
DATA SET BASED ON ACQUIRED Image DATA
Background of the Invention The present invention relates in general to computer-aided drawing systems and in particular to a method and apparatus for structuring data acquired by vectorizing a drawing so that such data may be accessed and manipulated by a computer-aided drawing or design system.
Computer-aided drawing or design (CAD) systems permit users to create and modify drawings formed on a CUT
screen, and to store and retrieve data which may be used to recreate the drawing either on the CRT or on paper using a hard copy graphics output device such as a plotter or a printer. In the prior art, attempts have been made to improve the usefulness of CAD systems by providing digitizing means to convert a drawing on paper to a set of representative data compatible with the data used by a CAD
system, permitting the CAD system to use the data to store modify and reprint the original or modified drawing.
One such digitizing means is the automatic picture coding system described in cop ending Canadian Patent application Serial No. ~8~,318, filed June 18~ 1985, by Benjamin E. McCann and Michael L. Ringer for "Method of Pixel to Vector Conversion in an Automatic Picture Coding System", wherein a bit-map image or the drawing is created by a scanning means such as a facsimile drum scanner, and then encoded into a set of representative line segments which are converted into vectorial representations compatible with the data used by many CAD systems.
While this raw vectorial data representing the drawing may be in a CAD system compatible form, the image recreated by the CAD system using it will generally not be structured in a way that can be easily manipulated by the CAD system.
For instance, the drawing image may contain irrelevant I I
marks or stains appearing on the original drawing along with erroneous inclusions or omissions resulting from inaccuracies in the digitizing process. Operators can sometimes use CAD systems to restructure the raw vectorial data correcting these problems but Q D systems are typically designed to operate on images created by the systems themselves and use of the CAD system itself to restructure the data can be time consuming and sometimes ineffectual.
Therefore what is needed is a method and apparatus or receiving raw vectorial data produced by a digitizing means and allowing an operator to quickly and easily restructure the data in a structural Norm compatible with a CAD system.
Summary of the Invention In accordance with an aspect ox the invention there is provided a method of creating a structured image data set based on acquired image data, comprising the steps of:
creating a template based on the acquired image data and displaying this template on a computer controlled screen, selecting portions of the template to be used for the construction of a new drawing superimposed on the display template, and saving the new drawing as a structured image data set.
In accordance with another aspect ox the invention there is provided apparatus or restructuring acquired image data, comprising: a computer controlled display screen, means to display a template comprising template lines and nodes corresponding to the acquired image data means to control a movable selection means on the screen, means to select portions of the acquired image data -to be temporarily designated for inclusion in a restructured image data set by moving the selection means to the vicinity of corresponding template lines and nodes displayed on the screen, means to remove as desired the pa temporary designations from selected portions of the acquired image data by moving the cursor to the vicinity of the corresponding lines and nodes on the screen, and means to copy all temporarily designated image data into the restructured data set exclusive of undesignated data.
In accordance with one aspect of the invention, a vectorial data representation of a picture produced by a digitizing means is stored in a computer memory and used by the computer to display an image of the picture on a cathode ray tube (CRT) screen. The image is formed by a set of nodes and line connections there between, the arrangement of the nodes and connections being defined by the vector data. An operator uses the image as a "template" to restructure the stored vectorial data for subsequent use by a computer-aided design and drafting (CAD) system.
An operator controls the movement of a cursor on the screen by operating a graphic input device such as a tablet and stylus. If the data repro-setting a line displayed on the screen is to be included in the restructured vectorial data set a user may temporarily tag the data as being so included by using the stylus to select a "pencil"
mode from a menu displayed on the screen and then approximately tracing or identifying the line on the template with the cursor in much the same way that a draftspersons would use a pencil and template to trace a pencil drawing. The line on the them-plate is identified as being penciled in by a change in color The totality of lisps so traced in pencil mode becomes a "penciled structure"
representing all such data temporarily tagged for inclusion in the restructured vectorial data set.
In another aspect of the invention, a user may delete penciled lines from the penciled structure by selecting an "erase" mode and then tracing or identifying the pencil line with the cursor acting like an eraser. The corresponding vector data is untagged and the template line image on the screen returns to original color.
In a further aspect of the invention, a user may permanently tag the data corresponding to a pencil structure he has thus created by using the stylus to select an "Ink Penciled Structure" command appearing on the menu in much the tame way that a draftsman might ink in a penciled drawing ennui he is satisfied that the pencil drawing is correct.
ED Permanently lagged data is sent to an output data j file, becomes a permanent part of the restructured data set and cannot be erased. "Inked" lines are represented on screen by a further change in color ox the template line.
According to still another aspect of the Jo present invention, the user may select lines for penciling or erasing by locating the cursor in the vicinity of the lines, the selected template lines being automatically traced. The maximum distance between cursor and line for a line selection to occur is adjustable. Thus the operator does not have to laboriously trace over each line.
In a further aspect of the present invention, template lines may be temporarily removed from view ("masked") by selecting thy lines with a cursor and the masked template lines may be restored to view my selecting an "unmask" command from the menu.
In view of the foregoing, it it an object of the present invention to provide an improved method of structuring data produced by a drawing vector-icing Nancy for use by a CUD system.
It is another object of the present invention to minimize the amount of manual labor required to restructure data produced by a drawing digitizer, thereby reducing opportunity for human error.
It is a further object of the present invent lion to provide means to temporarily and permanently restructure digitized drawing data, such means being operated in a similar fashion as a drafts-person may use a template to create pencil and ink drawings, so that operation seems familiar to a skilled draftspersons thereby reducing operator training requirements.
The subject matter of the present invention is particularly pointer out and distinctly claimed in the concluding portion of this specification.
However, both the organization and method of o'er lion, together with further advantages and objects thereof, may best ye understood by reference to the following description taken in conjunction with the accompanying drawings wherein like reference characters refer to like elements.
Description of thy Drawings FIG. 1 is a hock diagram of a system suitable for use with the present invention, FIX. 2 is Jo diaqraln depicting the areas of the graphics input device of FIND 1 used to select display of the menu and the drawing on the screen of FIG. 1, FIGS. 3~10 are flow charts generally illustrating computer implemented portion of the process in accordance with the pronto invention, FIGS. 11-32 are flow charts generally depicting subroutines called by the computer implemented process illustrated in Fogs. 2-9, Fig 11 is a flow chart of the Initialize-Variables subroutine of FIGS. 3-10, FIG. 12 is a flow chart of the ParseFileNames subroutine of FIGS. 3-10, FIG. 13 is a flow chart of the Process Header-File subroutine of FIGS. 3-10, FIGS. 14-15 are a flow chart of the Ini~ializeGraphics subroutine of FIGS. 3-10, FIG. 16 is a flow chart of the Build Menu subroutine of FIGS. 3~10r FIG. 17 is a flow chart of the Issue Status-Message subroutine of FIGS. 3-10, FIG. 18 is a flow chart of the Initialize Bank-Switched Memory subroutine of FIGS. 3-10, FIG. 19 is a flow chart of the Initialize-CursorDrawin~ subroutine ox FIGS. 3-10, FIG. 20 is a flow chart of the Initialize-Nibble Cursor subroutine of FIGS 3-10, FIG. 21 is a flow chart of the Initialize-Draying subroutine of FIGS. 3-10, FIGS. 22-25 are a flow chart of the Read-Drawing subroutine of FIGS. 3-10, FIGS. 26-27 are a flywheel chart of the Get Gin subroutine of FIGS. 3-10, FIG. 28 is a flow chart of the CrossHairOff subroutine of FIGS. 3-10, Fig 29 it a flow chart of the TabletDemulti-plexer suhroutille of FIGS. 3-10~
FIG. 30 is a flow chart of the Open Tablet subroutine FIGS. 3-10, FIGS. 31-32 are a flow chart of the Exit subroutine of FIGS. 3~10, FIG. 33 is a flow chart of the ~landleTablet-- 15 vent subroutine of FIGS. 3-10, and FIG. 34 is a flow chart of the Chicano subroutine of FIGS. 3-10.
Detailed Discretion FIG. 1 is a block dia~ranlof a system in which the present invention may be used. ~utovectorizer 10 is a device, controlled by computer 20, which scans a drawing and transmits to computer 20 a set of data comprising vector formatted representations of tile draying. Computer 20 stores the data under a suitable file name on a floppy disk in disk drive 30. In the preferred embodiment autovectorizer 10 is A Tektronix model 4991 ~utovectorizer and camp-ton 20 is a Tektronix model ~115B Color Graphics Terminal with CP/~2 disk operating system and including a three-port interface for connecting to a graphics input device I floppy disc drive 30~
keyboard 60, dual 10-~esabyte discs (not shown) and
2 megabytes of random access memory Also employed to practice the invention in the preferred errand-;
mint area Tektronix yodel 4957 graphics tab~et(graphics interface device 40) with one Sutton stylus" a Tektronix model lapel Assembler program, a Pascal language compiler, and a data restructuring program as flow charted in FIGS. 3 to 34.
Referring to FIG. 1, autovectorizer 10 is device for scanning a drudging, obtaining a bit map representation of the drawing, and then encoding the bit map into a data set of vectorial represent stations compatibly with the data used by Ann CUD
systems. In the vector format, the drawing is represented by a set of nodes correspon~ins to points on the drawing and by a set of straight lines beginning and ending on nodes A node may therefore represent an independent dot on the drawing, the end of a line, or a convection between two or more lines. For instance a circle on the drawing Jay be represented by a large number of short, straight lines connecter by nodes and arranged in a loop. This date is passed to computer 20 or another interfaced computer and stored in a file having a drawing file name on a floppy or hard disk controlled by the interfaced computer An operator, wishing to restructure the data contained on the disk, for instance to eliminate unwanted portions of the drawing image or to reform poorly represented portions, can insert the disk into disk drive 30 of FIG. 1, and load and run a data restructuring program passing to i-t the drawing file name.
The program formats a portion of its memory into a tile structure and then reads drawing data from Exile AL I 2 So into the tile structure in a spatial format.
In the spatial format, A printer to informal lion about each node is stored in the tile struck lure. The pointer indicates the location in memory containing information about the node including the zoo coordinates of thy node and pointers indicating the storage address siesta with Avery other node in the drawing to which the node Jay be connected along with information about the characteristics of the connection or line wounded by the two nodes. As the drawing data is read into the tile str~ctl3ref arlimage of the drawing is displayed on screen 50.
A line may hove any of four characteristics:
-- 15 it may be a "template" line, a "pencil" line, an "ink" line, or a "masked template" line or a comb-nation thereof. Inch when the drawing data is read into the tile structure, all the lines in the drawing are template lines. Once the drawing data is fully read into the tile structure and the drawing is displayed on screen 50, the operator may use a screen cursor controlled by the movement of a stylus on tablet 40 to select template lines to ye penciled in much the same way a draftsman may use a pencil and a template to create a pencil line.
Here, an operator moves the cursor to the line by moving the stylus on tablet 40 and then depressing the stylus to overate a switch to indicate that the line is selected. By Cowan the stylus depressed he may select all lines the cursor crosses as he moves it along the drawing. When a line is penciled, the data in the tile structure represented my that 1 ire is accordingly f lagged Once the operator has selected a number of template lines Jo be penciled he may convert the , r "pencil structure" thus created to an "ink struck lure" by using the stylus and tablet to access a menu and election an "in pencil structure"
command from thy menu. This causes tile stored data representing the inlaid lines to be so flagged and it also causes vector orated kowtow representing the in fines to by sturdy in an output file.
The operator may erase a pencil line by selecting an "Roy" loose from thy menu and then using tile cursor to select pencil lines to be erased. Ryan a pencil lint- its erased, the indicating slag which is associated with the tile structure data is reset to indicate a template line only. The operator may also cause the program to I- 15 erase the entire penciled structure by selecting an "erase anvil structure" comsnand from the menu.
however in anal template lines are permanent end are not erased.
An operator may mask a template line from vie! however, by using the menu to select a "assay template" mode and then selecting the template lines to by misused using the cursor. This permits the orator to temporarily remove template lines for clarity, particularity in a densely lined drawing. Layer the operator may unmask 311 masked template lines by using eye menu to select an unmask tumult' command. The software will Zen automatically unmask anal display all template 1 ins .
Usually an operator itches to create 2 new vector data set which can be used to create a nudge drawing not having unwanted lines and nodes which may hove r~.sult~d from slides on the original drown, errors in the vectorizin~ process, or he may want to create a new drunk consisting of only .
Jo ~3~L~5 a portion of the original. Once the drawing is displayed on the screen, he selects a pencil cursor mode from the menu an then uses the cursor to select template lines to be penciled in. If he includes an unwanted line by mistake, he may select the erase mode and select pencil lines to be erased.
Once the operator is satisfied that all lines in the pencil structure are to be saved, he selects the "ink pencil" structure command from the menu and all pencil lines are transformed into ink lines and the vector data representing the in lines only is sent to an output file If he closes, the operator may continue to create pencil and ink lines in the same manner until he as inked all lines he wants to save in the output film. Thus the operator uses the template to create a new, restructured data set which can be used by a CAD
system to create a new drawing devoid of unwanted lines, smudqes-and the like.
The operator may save the current status of the drawing, including ink, pencil, masked and template lines by selecting a "save drawing"
command on the menu. This stones the contents of the tile structure in a disk file in vector form.
The operator may access the file later if he wishes to continue restructuring the data in it. Isle may Allah save in a disk file only the current pencil structure by selections a "save pencil structure"
command from the menu. This allows the operator to separately store separate or overlapping portions of the original drawing.
The menu is displayed on the screen only when needed. Referring to FIG. 2, tablet 40 has three areas, "constrained", "unconstrained", and "Menu".
When the operator touches menu area 42 of tablet 40 i, .
Jo 3 with the stylus, the drawing displayed on the screen is dimmed and thy menu is displayed on t.
screen along with a crusher cursor centered on the menu at a point corresponding to the zoo coordinates of the stylus on the tablet. The menu consists of a number of boxes labeled with commands and cursor modes. To select a command or mode the operator uses the stylus Jo move the crusher over the selected menu item and then depresses the stylus to operate a switch therein. The menu item is highlighted to indicate the selection and any command selected is performed. If a cursor mode is selected then the cursor will remain in that mode until another mode is selected.
- lo When the operator lifts the stylus from menu area 42, the selected menu item is diluted, the menu disappears no the drawing is restored to full intensity. When he places the stylus on the constrained portion 44 of tables 40~ the crusher cursor appears on the screen in a location cores-pondiny to the locatiorl of the stylus on the tablet When he depresses the stylus in the constrained area, the crusher cursor dţsap~ears and a small circular cursor symbol indicating the nibble cursor is active appears in the same location. when the operator places the stylus in the unconstrained graphics area 46 of the tubule, the menu disappears but the nibble cursor aloes not appear since the drawing is not displayed in the corresponding port lion of the screen In the preferred embodiment, the cursor used to select lines is a "nibble" cursor meaning that an entire line or string ox lines, from nudity node will be penciled, erased or masked when any portion ox that line is selected Thus it is not . .
necessary for the operator to move the cursor o'er the entire line to pencil, erase or mask it;
thereby saving operator effort Also in the preferred embodiment, the operator may select either of two cursor selection modes: single line or polyline. In the single line mode an entire line from node-to-node is selected if the cursor is pointed to any portion ox it. In the polyline mode entire strings of lines interconnected by nodes are selected up to nodes having other than two connected lines.
In the preferred embodiment it is not necessary that the cursor touch the line being selected; it is only necessary that the cursor be in the vicinity of the line when the stylus switch is operated. The selection radius of the cursor may be adjusted to large or small my selection of the appropriate menu item. The Noel cursor appears on the screen as a circle of diameter sufficient to depict the selection radius and is illustrated at 48 in FIG 2 for selecting line 70.
The tile structure used by the program is equivalent to a grid of memory locations, the grit hying sized to match the size of the available memory. Each rid, or "tile"
corresponds to a portion of the original drawing, and when the tile structure is loaded with drawing image data, each tile contains address pointers at zoo locations corresponding to nodes in the original drawing, A node being an isolated point or an end of a line. Where a line passes through a tile boundary, or grid line, a "soddened" is created and a jointer is stored to an address containing the location of all nodes in adjoining tiles connected to the soddened. Use of the tile Jo .
structure helps to speed us search operations during the line selection process.
The operation of the data structuring program used in the preferred embodiment ox the present invention is flow charted in FIGS. 3 to 34 and a description of the flow chart is included horribly.
Before running the data structuring program the opcr~tor inserts a disk containing the vector-iced Ryan data from the autovectorizer into the terminal disk drive along with a file containing data defining the structure of the menu used in the data structuring program. Jo start the data struck Turin routine the operator types the file nave of the data structuring program along with toe file I- 15 name ox the file containing the vectorized drawing data and the name of the menu data file. The data structuring program is flow charted in FOX 3 to 34.
Referring to FIG. 3 the data structuring program begins in block 100. In block 102 the Initialize Variables subroutine is called.
Referring to FIG. 11 where the subroutine is flow-charted, the subroutine is entered in block 200 and program variables dependent on the terminal type are initialized in block 201. Next, in block 202, variables used to determine which combinations of surfaces are to be displayed are initialized and in block 20~ variables used to draw to a surface are initialized. In block 206 variables used to change the cursor are initialized. Finally in block 208 variables used in saving the drawing to an output disk file ore initialized. The subroutine ends in bloc 209 and program flow is returned to block 104 I
of FIG. JO
In block 10~ of FIG. 3 the terminal screen is cleared by calling the LLVISF subroutine All subroutines or functions with name beginning iota "LO" are library subroutines or functions, part of thy Tektronix Local Programmability option of top 4115B terminal and are described in 4100 Series Low-Level Terminal Interface Manual, Tektronix part number 070-4534-00. In block 106 subroutine Parse-Filenames flow charted in FIG. 12, is called to check to see if the data and menu file names are valid. Referring to FIG. 12, the subroutine is entered in block 210 and in block 211 the names are validated and extensions are added. If one or both of top file names is invalid, then a flay is set indicating the invalidity of the file names and an error message it smitten to the screen. In block 2~2 the subroutine ends and returns to block 108 of the main program module on FIG. 3. The file name error flag is tested in block 10S. If one of the file names is invalid then the program is stopped in block 109. If both file names are correct then subroutine Processl~eaderFile is called in block 110 .
Referring to FIG. 13 flow charting the ProcessHeaderFile subroutine, the subroutine is entered in hloclc 220 an then, in block 221, sub-routine GetFileName is galled to obtain the file name of the drawing Dwight file as amended in bloc 30 211 of FIG. 12. In block 222 the data file it opened and in block 223 "header file" data, generated by the autovectoriŠer specifying size of the drawing scanned by the autovectorizer, is read.
the subroutine ends in block 224 and program flow returns tile the main program module block 112 in FIG. 3.
In bloc 112, the Initialize Graphics Siberia-tine is called. Referring to FIG 14, detailing the subroutine, the routine is entered at block 300 and then moves to block 302 where keys associated with the terminal which could be used to manipulate the viewing screen are locked by calling system subroutine LLV~LK to prevent the inadvertent use of these keys during execution of the data structuring program. Next in block 304, the screen is cleared by calling the Erase Surface subroutine.
The Tektronix 4115B terminal may operate with different sizes of segmented screens. The portion of the screen actually available for displaying graphics information (the view port may also be specified. In the present application the screen and view port are initialized so that the entire drawing will initially appear on the screen.
Screen segmenting is not used. Thoroughfare in blocks 306 and 308 of FIG. 14, library subroutines LLDLVW and LLDLSG are called to delete the pane muters specifying the current screen, view and segmenting. The parameters specifying the sizes of the view port and screen are then initialized in hock 310 to the maximum screen size availably an the initial view port is set to fit the drawing to the screen based on the drawing size information obtained from the header data by library subroutine I.LVWPT caller on block 312.
Then, following reference point G in FIG. 14 to point G in FIG. 15, library routines LLDAVS, LLDASF, L1DALN, LLD~XY an LLCLMD are called to initialize a number of parameters used to control the display attributes of tile dialog surface including visuality, surface type, number of lines, and color mode. In lock 316, parameters specifying the color map used with the each surface for intensity and color value are initialized. In block 318 color maps for all surfaces are set and in block 320 library routine LLVISF is called to set the initial visibility of all surfaces Zoom and pan functions are available in the Tektronix graphics terminal and in block 322 the zoom and pan limits are set However zoom and pan capability is not included in the preferred embodiment of the data structuring program disclosed herein but may be added thereto by one skilled in the art. Block 324 ends the Initialize Graphic subroutine and the data structuring program returns to the main I- 15 module, block 114 -of FIG. I
In block 114, a Build Menu subroutine teen in detail in FIG. 16) is called to create the menu on the menu surface. Referring to FIG. 16, the sub-routine is entered in block 330 and then calls an Initialize Menu subroutine in block 331. The Initiali2eMenu subroutine obtain data contained in the menu file named by the op~xator when he called the data structuring program to initialize pane-meters used in creating the menu. Next, in block 25 332 a flag is set indicating that the menu surface is initially no visible on the screen. In block 334, a SelectMenuSurfacc subroutine is called to select the menu surface to be modified in block 335. Block 335 draws the menu on the surface using data from the menu file. With the menu drawn on the menu surface, hut with the menu surface not yet displayed on the screen, the Build Menu sub-routine calls the SelectGraphics5urfaces subroutine in block 336 to make the drawing surface available for later use and then ends in block 338 returning to bloc 116 of the main module seen in FIG. 3.
It block 116, an IssueStatusMessage subroutine is called to generate a message to the operator on the screen. This subroutine is entered in block 340 of FIG. 17. text, in block 342 of FIG. 17, parameters specifying the screen coordinates where the message is to be displayed, the length of the message and the text of the message itself are passed to the subroutine from the main. In this case the message to be displayed is "Initializing Bank Switch Memory". In hock 344 library sub-routine LLGPRC is caller to set the appropriate ("alpha") text writing mode and when in block 346 library subroutine LLVWAT is called to set the appropriate view attributes of the text to be written on the screen based on parameters initialized in block 314 of FIG. 15.
Next, in block 348, library subroutine LLMOVE
uses the data passed in block 342 to locate a portion of the screen to display the message and the message is actually displayed using library sub-routine LLTEXT called in block 350. After the message is written to the isle area the view attributes used for subsequent screen writing operations are resew to the states occurring prior to block 346 by recalling the L~VWAT library sup-routine in block 352. Finally, the writing toga-lion is move to a default position on the screen by calling the LLMOVE subroutine in block 354. In block 356 the IssueStatus.~essage ends and operation is returned to the calling joint of the main module, in this case point A of FIG. 3.
Point A of FIG. 3 leads the data structuring program to point A of FIG. and then to bloc 118.
In lock 118~ while the "Initializing Bank Switched Memory" message is displayed the banked switched memory available in the terminal is linked and formatted by called subroutine Initialize Bank-Switched Memory detailed in FIG. 18. In the Tektronix 4115B Terminal random access memory is grouped into buoyancy mounted on separate boards installed in ports along the terminal back plane.
This subroutine formats all available memory for use by the data structuring program entering the subroutine at block 360 and then moving to block 362, variables used to identify the particular bank, or port, being checked and fur counting memory banks checked are zeroed. Then to prevent interrupts when checking memory banks not I installed, block 364 current interrupt and status flags are saved and cleared.
Starting with memory port 0, the port is checked in block 366 to see if a memory board is installed in the port. If the memory board is installed a parameter containing a logical true is passed to block 368 which directs thy subroutine to block 370 calling an InitializeOneBank subroutine to format the memory. The subroutine then moves to bloclc 372 from block 370~ or directly from block 368 if no memory board was installed in the port.
In bloc 372, the port counter is incremented. If the memory port counter is less then the highest numbered port available then operation is redirected by block 374 to block 366 where the next port is checked When all ports have been checked and all memory banks have been formatted block 374 directs subroutine operation to block 376 where top total amount of memory is ascertained and stored in a register available to the main program module.
The InitializeBankSwitchMemory subroutine ends at Lo 5 block 378 and is returned to block 120 of the main module seen in FIG. 4.
Referring to Fig I block 120 calls the InitializeTileStructure and GetTileStructurePara-5 meters subroutines which adjust the tile structure in memory for storing drawing information. The number of tiles and the size of each tile is adjusted to suit the amount of memory available.
Next, in block 122 an InitializeCursorDrawing subroutine is called. This subroutine, retailed in FIG. 19, is entered in block 380~ In block 382 the cursor surface is made invisible and the curser is initialized to the pencil mode. In blocks 384 and 386 the yo-yo coordinates of all tile block corners and the length ("radius") of each tile block side is set. The subroutine ends in block 3~8 and returns to block 124 of the main procure module in FIG. 4.
Block 124 calls the InitializeNibbleCursor subroutine of FIG. 20. In FIG. 20 several variables associated with the nibble cursor are initialized A Cursor Status variable is initialized to "limbo"
(described later) and a Save Open variable is initialized to "true" indicating that only one cursor at a time is being used. PixelContactRadius variable, controlling the radius of the nibble cursor, is set to five pixels and the polyline mode is turned off so that the nibble cursor will be initially in the wine mode. The subroutine ends in 30 block 394 returning to block 126 of the main module, FIG. 4.
Next in blocks 126, 128 and 130, Wrested-Traversed Flags SetTransitionMask, and SetDupli-cateOutputEnabled fiubroutines are called to initialize parameters anal flags later used in converting the drawing data into the spatial struck lure. The program flow then moves to block 132 where the IssueStatusMessage subroutine of PIG. 17 (previously described) it called to display a "Reading DrawincJ" message on the screen. With the message displayed, an Initiali7.eDrawing Siberia-tine is called in block 13~. Referring to FIG 21 charting the called subroutine, after entry at point 400, the routine initializes the zoo cordon-ales for the lower left and upper right corners of the drawing in brooks 402 and 404 and then sets a FirstNodeInDrawing flag to logical true in block 406. In blocs 408, 410 and 412 three error flags, used to indicate errors encountered while attempt tying to write the data in the draying file into the tile structure, are reset indicating that no such errors have yet occurred. The errors which may be subsequently flagged are errors associated with "failed attempt to connect a node" block 20 408), "failed attempt to create a node" (block 410), and "out of memory" Luke 412).
Next, in block 414 of FIX. 21, a "new connect lion" variable is set to "template" and in block 413 a "previous node" variable and a "current node"
I variable are initialized to zero. The purposes of these variables are explained below. Finally a "SelectGraphicsSurface" subroutine is called in block 418 which selects the drawing surface for subsequent modification. The Initialize Drawing ED subroutine than ends in block 420 returning to block 136 of the main program module on FIG. 4.
In block 136 of Pig 4 a ReadDrawinq Siberia-tine, detailed in FIG. 22, is called to read the drawing Lotte from the file and, using this data, to loan drawing information into the tile struck I
lure in a spatial format. At the same Timothy image of the drawing is written to the drawing surface and displayed on the screen.
The drawing data file is a serifs of data lines consisting of a draw-flag and an zoo coordinate or a dra~-fla~ and a code indicating a line type (pencil, template, ink or mask). The draw-flags will ho either an "L", a "P", an "M" or a "D".
It is convenient to think of the reflex as directions to a plotter for drawing lines because the drawing structure is written into the tiles in much the same fashion. An "M" draw-fla~
indicates that the plotter pen is lifted and Roved to the point indicated by the sly keyword-Nate data on the data file line containing the Mile A "D" draw-fla~ indicates that the "plotter pen" remains "Drown while moving Jo the indicated zoo coordinate from the last zoo coordinate. A "P"
draw-flag indicates that the next zoo coordinate is an isolated "Point so that the plotter pen is moved to the indicated point and momentarily dropped to create z dot. The data following an "L"
draw-flag indicates the type of Kline that all subsequent lines are to be designated (pencil, template, ink or mask). When the first line of the data file does not contain an "L" type draw lag the program assumes all lines to be drawn are template lines until an "L" draw-flag line occurs.
In FIG. 22, the Redrying subroutine is 30 entered at block 500 and then in block 502 the name of the drawing file and the scanner and drawing limits contained in the drown file header are obtained. In block 504 the IssueStatusMessage subroutine is called to display a "Reading Drawing"
message on the screen while the Redrawn Siberia-. ,, tine is in operation. Bloclc 506 then checks for flags indicating end of data file or out of memory conditions. If no such flags are set then block 514 chucks for flags indicating a failure to create a connection or a new node Initially, however, before any data lines are read, these flags are all reset. Thus, prior to the reading of the first line in the drawing file, block 514 directs program flow to block 516 of FIG.
22 where the first line in the drawing file is read. Normally the first line will contain an L or an M draw-fla~. If it contains an L flag, block 518 directs program flow to block 520 where a SetAppropriateTransition~ask subroutine is called to cause all subsequent connections to be labeler as pencil, ink, template or masked template lines or a combination thereof) as determined by the data following the L flag. IJhen a file is initially received from the autovectorizer all lines are template lines. However, as seen below, restruck lured drawing files created by the data structuring program containing pencil, ink and masked template lines along with unmasked template lines may be recalled and further restructurec3.
If the first data line contains an M flag, then locks 518, 512 and 524 lo FIG. 23) direct program flow to point M and then to block 530 of FIG 23. In block 530 a MoveToPoint subroutine is called causing a new node to he written into the tile structure at the indicated zoo coordinates If the coordinates are out of range or if there is insufficient memory to store the new node, a "failure to create a node" ox an "out of memory' flag is returned. If no such error occurs then the coordinates or the current node are saved as the coordinates of the previous node in block 534 and program flow returns to point Z of FIG. 22. However if such an error occurs, the current node informal lion is not saved and program flow returns directly to point Z from block 532.
Assuming that the out of memory and end of file flags have not been set and that no failure to create a connection or failure to create a new node flags have been set, blocks 506 and 514 again direct program flow to block 516 where a new data line is read If the new line contains a "P" flag, the program flow is directed through blocks 51~ and 522 to point P FIG. 24. Then in block 536 of FIX.
24, the FirstNodeInDrawing flag is tested. If true '- 15 an error message }'Maoist be Move" is written to screen in block 538 and program flow is directed Jack to point Z of FIG. 22. If the current data line does not contain the first node read then the flag will be false and block 536 isle direct program 20 wow to block 540 where the MoveToPoint subroutine is called to enter the node into the tile structure without a connection to the previous node Again in block 542 any error flags generated by the MoveToPoint subroutine are tested and if errors have occurred program flow is directed back to point Z of FIX. 22 without saving the current node data.
In the absence of an out of memory or a failure to create a node error, block 542 routes program flow through block 544 to save the current node as the previous node.
referring back to FIG. 22 and assuming again that the out of memory and end of file Elac3s have not been set and that no failure to create a connection or failure to create a new node flags 35 have been set blocks 506 and 514 again direct ( --program flow to block 516 where another (data line is read. If the new line contains a P flea, to program flow/ is directed through hloclcs 518 and 522 to point 2 of FIG. 23 and ton through blocks 524 and 526 to point D of FIG. 25. Then in block 546 of FIG 25 the FirstNodeInDrawing flag is tested.
If true an error louses us be Jove is written to screen and program flow is directed Jo point Z of FIG. 22. If toe current data fine does not contain the first node read then the flag will be false and block 536 Jill direct program flow to block 540 where the MoveToPoint subroutine is called TV enter the node into the tile structure without a connection to the previous node. Again - 15 in block 542 any error flags enroot by the MoveToPoint subroutine are testes and if errors have occurred program flow is directed back; to point Z of FIG. 22 without saving the current note data.
In the absence of an out of memory or a failure to create a node error bloc 5~2 routes program flow through bloc 544 to save the current note as the Reeves Noah With the drawing written into memory and apron on screen the amount of Mueller available before storing the drawing aye and the amount of available memory remaining after storing the drawing dell are displayed in to dialog Roy of the screen in block 138.
The tablet input device is then enabled in block 140 by calling subroutine Open Tablet.
Turning now to FIG. 26, the O~enTablet routine begins in block 600. Then in block 602 the con-tents of a number of registers currently in use are saved in memory along with the present interrupt status. All interrupts are disable.. In bloc 60 :L2~8 subroutine Unit is called to initialize the drivers for the tablet and the terminal port connecting the tablet and to synchronize the tablet with the data structuring program. The interrupts are enabled in block 610 and the registers saved in block 602 are reloaded in bloc 612. The subroutine ends in block G14 and program flow is returned to joint C
of the main program module chutney in both FIGS. 4 and 5.
loath the drawing data loaded into the tile structure and the draying displayed on the screen and with the graphics input tablet enable and synchronize with the data structuring program, the operator may Hun exiting the drawing by monopoly-tying the stylus on the tablet to control the move-nonwhites of cursors on tile screen. However any tire the operator itches to exit prom the data struck luring program he may type a Control C on the terminal keyboard On block 142 program flow is then directed to block 14~ where an Exit subroutine is called to return terminal operation to the CPJM
operating system, the data structuring program thereby ending as indicated in block 146.
The Exit subroutine is flow charted in FIGS. 27 25 and 28. After subroutine entry in block 620 the output file is closed in luckily 62~ by calling a Ter~inate~ritePix certain. The crusher is then turned off if it was on in block ~24 by calling a Crusher Off routine and the cursor surface is erased in blockier 626 by calling an Erase-Surface subroutine. The tablet is disabled in block foe by calling a Close Tablet subroutine which restores interrupt vectors taken ho the Open-Tablet subroutine The dialog area is restore and 35 repositioned in blocks 630 and 632 my calling library subroutines LLDASF and LLDAXY and, in FIG.
28 the dialog area is dimensioned and made visible by calling library routines LLDALN and LLD~VS in blocks 63~ and 63G. The color and intensity of the screen are set in block G38 by calling the Select-Color Map subroutine and the drying and menu sun faces are also jade visible if not already so in bloc 640 by calling library subroutine LLVISF~
Terminal operation is then returned to CAM level in block 6~2.
Returning now to the main rewarm module in JIG. 5, assuming the operator does not want to exit the program by typing Control-C at the terminal, block 142 directs program flow to block 148 where a Get Gin subroutine is called. The Get Gin subroutine determines the position and state of the stylus on the tablet and returns the information to the calling routine. Get Gin it flowch~rted in FIG.
2g. Rcferrill~ to FIG. 29, the Get Gin subroutine begins in block 700 and in block 702 says the contents of any requesters in use by thy calling routine along with a pointer to the storage toga-lion of the current stylus data. Then in block 704 errors associated with message transmission from the tablet are ah eked including overrun data arriving twos ~uic~;ly for the interrupt handling routines to keep us), framing (incorrect baud rate), and rarity (warbled transmission errors.
If any of these errors arc present, then program flow is directed to point A of FIG. 30 leading to bloc 726 where procedures to store any incoming interrupt flags for the duration of the subroutine are enabled, interrupts Roy disabled, the appear-private error status flay is reset and a buffer pointer is established. Then in block 728 the Unit ,:
subroutine is called to reinitialize the port and tablet thereby s~chronizin~ tablet operation with the program. Operation of toe Get Gin subroutine is then terminated without a return and program flow is redirected to point C of FIG. 5.
Turning again to the Get Gin subroutine of FIG.
29, if there are no overrun, framing or purity errors detected in lock 704 t preparations are made to save interrupt flags occurring during the sub-routine in Luke 706 and interrupts are disabled inblocX 707. Synchronization between tablet and the program is checked in block 70~ with subroutine flow redirected to joint A of FIG. 30 for tablet reinitialization as described above if the tablet and the program are not synchronized.
If the tablet and program are synchronize then block 708 of FIG. 29 directs program flow to block 710 were the prompt of the stylus to the tablet is shackled. A stylus connation indicator returned from the tablet with the zoo coordinates of the stylus represent any of three values: "out of prompt," if the stylus is not on the tablet, "in proximity if the stylus is on the tablet but a select switch on the end of the stylus is not activated, or "depressed" if the stylus is on the on the tablet and the stylus stitch is activated.
It the stylus is not on the tablet then in block 712 a "I" parameter is set to indicate the "not in proximity" condition, the caller's registers are restored and, in block 71~, the Get Gin subroutine is ended and program flow is returned talk 150-of FIG. JO On the other hand, if the stylus is on the tablet, block 710 directs program flow to block 716 where subroutine Compact is called to convert to Pascal format data transmitted from the tablet I
to the terming Dakotan lie zoo stylus position on the tablet.
The converted zoo coordinates of the stylus are stored in memory in block 718. Then block 720 checks for operation of any keys on the terminal.
Since the operator is supposed to use only the tablet for input at this point, an error is siqn~led in block 722 using a tone generator in the terminal if any keys are Claris end the Siberia-line is terminated in block 724 my returningprosram flow to the calling routine. Assuming no terminal keys are depressed, bloc 72~ directs program flow to point B of FIG. 29 leading to block 712 where toe z parameter indicating either the Jo 15 depressed or the in proximity condition is stored and the caller's resisters are reloaded with data store in block 702. The subroutine then ends in block 714 and program operation is returned to the calling routine, in this case to block 150 of FIG
Referring again to FIG 5, in block 150 the condition of the stylus is determined by checking the value of the z ~rametcr returned from the Get Gin subroutine Cole in Blake If the z parameter indicates the out proximity position, then the stylus is not on the tablet and program flow is directed to point C1 on FIGS. 5 and I.
Then in block 152 of FIG. G a Cross~lairOLE Siberia-tine is called to remove the crusher front the screen, if it is presently on.
The CrossH~irOff Syrian is flo~charted in FIG 31. After subroutine entry in block 740, the cursor surface is selected to receive graphics input by calling the SelectCursorSurface subroutine I in lock 742~ The operation to he performer on the cursor surface is selected to be an erase in block 744 by calling a SetLineIn~ex subroutine The x and y crushers of the Chrysler cursor are then erased from the cursor surface in blocks 746 end 748 my calling subroutines Pi~elMoveClipped and PixelDrawClipped. The crusher then disappears from the screen. The drawing surface is reselected for graphics input in block 750 and then in block 752 the subroutine ends returning program foe to block 154 ox FIG. 6.
Whenever the operator removes the stylus after selecting a menu item the highlighted menu item is dimmed by calling a ~lighlightMenuItem subroutine in bloc 154 of FIX. 6 also if the nibble cursor is lo present on the screen, the cursor is erased by calling a SuspendTablctllandle subroutine in lock 156~ Then the IssueStatusMessage subroutine it called in block 15B to generate a "Waiting for Tablet" message on the screen dialog area and a "tablet waiting" flag is set to "true" in block 150. Program flow it then redirected to joint C of Fig. 5. the program will continue to cycle through the C/C1 loop on FIGS. and 6 until the operator places the stylus on the toolkit. At that point the z parameter returner by the Get Gin subroutine of block 14~ will be in either the proximate/on or proximate/off condition and lock 150 of FIG. 5 will direct program flow to point C2 of FIG. 7 and then to lock 162 where the 1'abletMessageVisible subroutine is called to remove the twilight waiting"
message Eros the screen.
Next, in block 16~ tile twilight waiting flag is checked and if in the off condition program flywheel is directed to block 170. On the other hand if the tablet waiting flag is in Tao on condition program flow is directed to block 16~ where the "tablet waiting" message is removed from the screen and the tablet waiting flay is reset to off in block 168.
Program flow is then also directed to block 170~
In bloc. 170 a TabletDernultiplexer subroutine is eel led to check the position of the stylus on the tablet and return a TahletDemultiplexer pane-meter indicating the stylus position. Referring to FIG. 32 where the TablctDemultiplexer subroutine is flow charted, the routine is entered at bloat; 760 and receives the zoo coordinates of the cursor in block 762. Next, in hlocl~ 764, the zoo coordinates are checJced to see if they lie in the constrained rancJe. If so, the TabletDemultiplexer parameter is set to "constrained" in bloat; 76G and the Siberia-tine is ended and returner to the caller in block 774. Alternately, if the yo-yo coordinates of the stylus lie in the unconstrained range, block 764 directs program flow to bloc 768 which in turn directs flow to block 77n err the TabletDemulti-plexer parameter is set to "unconstrained" before the subroutine is ended in block 774. Finally, if the zoo coordinates of the stylus lie in the menu area, then blocks 764 and 76~ direct program flow to hock 772 where the TahletDemultiplexer pane-meter is set Jo Menu Selection Thereafter the subroutine is ended in block 774 and program flow is returned to block 170 of FIG. 7.
In FIG 7 blokes 172, 173 and 174 direct program flow Aquarian to the state of the Tablet-Demultiple~:er parameter and therefore according to the area of the tablet the operator has selected with the stylus If he has selected the constrained graphics area then hock 172 to direct program flow to point D of FIG. 3 to call I) subroutine along the operator to use a cursor to make changes to the drawing. If the operator has selected the unconstrained graphics area then blocs 172 an 174 will direct program flow to S point of FIG. 9 to call subroutines to remove the menu from vie if it is visible and undid the drudging if it has been slimmed. Finally, if the operator has selectee the menu area, then Tablet-Demultiple:~er parameter Jill be in the "menu" state and blocks 172, 17~ and 176 will direct program flow to point F of FIG. 10 to display the menu on the screen Assuming now that tile operator has selected the menu area with his stylus and referring to FIG.
10, a Menu Visible slag its checked to determine if the menu is on in block 173 and if the menu is on progralr,flow is directed to bloc 1n3 to turn the crusher on. HotJever if the menu is not on bloc 173 directs program flow to lock 175 where the SuspendTabletHandler subroutine is called to make the nibble cursor invisible if it is currently visible. Then in bloc}; 177 the menu an drawing surface intensities are set by the Set Intensity subroutine, with the drawing surface being dived an the LLVISF library subroutine in block 17~
displays the menu surface and the dimmed drawing surface on the screen. The t~enuVisible flay it set in lock lB1 and then in block 183 the crusher is turned on lay calling a CrosshairOn subroutine. The crusher appears on the screen in the yo-yo location corres~on(ling to tile zoo location of the stylus on the tablet. At this point the Check Menu subroutine of FIG. 34 is galled to enable the operator to select a menu item.
I Referring to FIG. I the Chicano subroutine ' ) begins in block 900 and then in hock 902 obtains the zoo and z parameter values. If the crusher is not on a menu item then block 904 directs action to block 906 where the llighlightMenuItem subroutine is called to dim any highlighted menu item, the subroutine then ending in lock 936~ If a menu item was selected, then block 904 directs program flow to block 908 where a PickMenuItem subroutine is called to determine the number of the menu item selected and to return that number as a "menu item"
variable. Program flywheel is then directed by blocks 910, 914~ 918, ~22, 926 and 930 depending on the menu item number selected by the operator.
If menu item 1 was chosen, fabled "Exit" on the screen then bloc]; 910 directs program flow to block 912 where the Exit subroutine described earlier is called to end program operation anti return to CAM operating system.
If menu item number 2, labeled "Save Drying on the screen, is selected then block 914 directs operation to block 916 where a SavcDrawing Siberia tine is called which stores the present state of the drawing data representing all template, ink pencil and masked template lines in a disk file.
This file may later be recalled and restructured if desired. The subroutine then ends in bloc 936.
If the operator has selected menu item number
3, "Save Pencil", then block 918 directs program flow to block 920. A SaveSelectedStructure Siberia-tine is called which saves only the current pencil structure in a disk file for later use. This feature permits the operator to save a selected portion of the drawing for later restrueturins.
The subroutine then ends in block 936~
If the operatorllas selected menu items 15~ 17 ) or 13, Sweeney on the green as "Unwise All", "Erase All Porously", and "In ill Pencil", respectively, then subroutine Transfer Structure is coequal in block 92~ to perform thy indicated operation. If "~nmas'.c All" is selected, then all massed timely lines are unr~askcd and misplayed on Tao screen. If "Erase All Pencil" is selected the pencil structure is deleted althougil an corresponding template lines remain. If the "Ink All Pencil" operation is selected, all lines and points in the pencil struck lure are convert to ink titles and the data corresponding to the inked structure is stored in an output disk file for later use by a CUD system.
After performing the indicate operation the Chicano su~routinc in ended in block g36.
When a menu item 34, 35 or 36 is chosen the cursor operation is selected as either "l~las'.c Tam-plate", "Erase", or "Pencil". Block 926 diverts program flow to block 92S where subroutine Set-Tr~nsitionMask it caller to set the cursor modc.Thereafter lines anal nodes selected by the nibble cursor will either be masked rued or pcncilea in ~epen~.in~ on the mode selected.
When Nile itelns 69, "Select Small Radius", 70, "Select Large Radius", 71, "Set Lowe Elude' or 72 "Set Polyline Mode" are sleeted bloclc 930 directs program flow to block 932 to call a Secondary handler subroutine to chancre the selection kirk-teristics of the cursor If item 69 is selected the maximum distance the cursor must be prom a line in order to select the line the cursor radius) is set to a small, pre~eterr,~ine~ distance If men item 70 was selected, then the cursor radius is set to a larger, ~rede~.er;nine~ value. It item 71 is chosen, the cursor is placed in the single line ( I
mode so that lines must be selected by the cursor one line at a time. Finally, if menu item 72 is selected the cursor is placed in the polyline mode so that all lines connected in a node-to-node string up to all nodes having other than two connected lines if the Nobel cursor is pointed to any one line in the string.
If the operator points the cursor to a toga-lion in the gnu area not containing a selection I item then block ~30 directs program fly to block 934 to call subroutine RingBcll to generate a tone indicting an incorrect cursor position. There-after, and after all selected menu aerations have boon executed, the CheckMcnu subroutine is terming axed at Blake and returned to the Cain pro~rammodule at point C, FIG. 5.
Patterning now to FIG. 7 an assuring that the operator has placed toe crusher in the unwon-strained Greek-; area in the lower right comer of the screen, bloclc 174 ('treats program operation to point E of FIG. 9 leading to block 194. In bloc 194 the cross Blair is turned off, if it was on, my calling subroutine CrosshairOff. Then in bloclc 195 the menu visible flay is checked. If the menu is not visible then rewarm flow is returner to point C of FIG. 5. If the menu is visible, then the menu is turned off before returning to point C of FIG.
5. Blake 1~5 directs the pro~rarl to Blake 19~ were the LLVISF library subroutine is called to male the menu invisible and male the Ryan visible. The intensity of ho drawing is inquiries by calling the Set Intensity subroutine in block 1~7 and the Highli~htMenuItem subroutine in block 19& to dwelt any higllli~hted Molly item. Then in block 199 the menu visible flay is set to indicate " .
that the menu is not visible. Program operation then returns to joint C of FIG. 5.
Again returning to FIG. 7, if the operator moves the cursor to the constrained graphics area in the upper portion of the screen 'clod; 172 directs roarer slow to point D of FIG. 8 and then to block 1~0. In bloc; aye thy menu visible flay is shucked. If tile menu is visible, block 180 diverts ~roqram fledge to bloc 182 7here the Cross-horrify subroutine it called to turn off the cross-hair, to block 14 where the LLVISF library routine makes the menu invisible end tile drawing visible, to block 1~6 where the Set Intensity subroutine is keelhaul to increase the drown intensity, to block 18~ where the hli~htMenuItem subroutine is called to dehighligllt any highlicJhtecl menu item an to block 190 err the menu visible flag is set to indicate menu not visible. Once the menu is not visible then program flow is directed either from block 1~0 or block 1~0 to bloats 192 tlilere a handle-Tabl_tEvent subroutine is cowlick.
The ~ndleTablet~vent subroutine is flow-charter' in FIG. 33. Entered in block S00 the subroutine calls a Dra~Curser suhrou~illc in hock 802 Welch drays the circular nimble queerer on the cursor surface in the location on the screen correspondinc3 to the position of the stylus on the tablet. Thy pixel zoo coordinates of the cursor are Tony converted to drawing yo-yo coordinate in block I Next, in bloc ~06 certain Singly-~Cursor~ction is caller to analyze the current and previous z parameter value, indicating the current an previous condition of the stylus, arc' to sat a Sin~lcCursor~ction variable to indicate the next appropriate action. If the concussion of the stylus Jo ) I
is not c3cpressc-3 and ha. not shanked singe the last time the 11andleTabletE:vent sllbroutine was caller, block 808 directs pro ram floss to block 810 where the CrosshairOn subroutine is called to urn on the 5 crusher and then the HandleTabletEvent subroutine is tcr~inatct3 in block ~24.
If, ho Yen, the stylus has }ennui depresses since the last time the HandleTabletEvent routine was called, block 812 directs program flow to point 10 A of FIX. 33 where operations affecting the status of lists selected by the cursor begin to occur. In block 82~ a Reset~odeTraversedFlags subroutine resets all "node traverse?" flags which have been previous lye set. Each note in the drawing has an -- 15 associated "node traverse flag w Hayakawa is set during any operation modifying data in the data structure. Next in lock ~28, subroutine Cross-horrify is Colette to turn of E thy crusher and in Luke 30 the contact Ritz parameter of to 20 nibble cursor is converted to drawing units from pixel units by calling the PixelToDrawingSize lung-lion. In block ~32 the nibble cursor is placed in the erase, pencil ox ask mode an' in the polyline or single line mode; as previously selected by the 25 operator using the menu. Final lye in block 83~ the line or lint s selectec1 by the nibble cursor are eeriest, penciled or Moscow according to thy selected cursor mode and the ~}andlt.aTabletEvent subroutine ends in bloc; ~24.
Returning to bloc'; ~12, if the operator has }wept the nibble cursor switch on but ho moved the position of the cursor, then blokes 812 an. 814 tairect program motto to bloc}: ~16 jury thus Uptight-Noah leCursor swallower ire is called so that any new 35 lines selected by the cursor are erased, penciler " .
I) or Rosetta' according to the current cursor Mohawk If the operator then raises the stylus ennui to turn off the stylus switch but does not remove the stylus prom the twilight, then hock ~13 directs program fly to bloc 820 calling the CrosshairOn routine, to turn the crusher on, and to block 822 to sot the Cursor Status parameter to "limbo". The l~andleTabletEvent then ends in block 82~ and program flow returns to the Ann program module at point C of FIG. 5.
This completes thy ascription of FIGS. 3 -34. It should ye noted that other cursor selection modes may be include according to alternative embodiments of the resent invention and incur-portly into the program of Bendix I by anypro~rammer swilled in the art. These would include, for instance, "bleakly" selection using the cursor to describe an area, all lines interjecting the area, "gobble" selection jury all inter-connected lines are selected, using the cursor to select a portion of any one link "pelican" select lion, where all lines forming the closest polygon surrounding the cursor are selected also, in alternate embodiments, a Tao cursor may format areas to receive text entered on keyboard 60. In this way vectorizecl Tut may ye erased and replace' with better formatted text. These alternative cursor selection methods may ye used with the present invention, Hoover only the "nimble" cursor is included in the preferred embodiment part-ocularly by way of example. Finally, in alternative moo ens, an "entry mode" cursor may allow the operator to enter Noah template pencil or in lines not existing in the original drawing.
Thus Wylie a preEcrrec' emboc'i~ent of tile .. , -- ) I
present invention has been shown and described, it will be apparent to those skilled in the art that many changes and modifications may be made without departing from the invention in its broader aspects.
The appended claims are therefore intended to cover all such changes and modifications as fall within _ the true spirit and score of the invention.
|International Classification||G06F17/50, G06T19/20|
|Cooperative Classification||G06F3/04845, G06T2219/2012, G06T11/60, G06T19/20|