CNTSTG.DOC: FORMAT OF CONTORING METAFILE (UPDATED 11/30/84 RB) (RE-WRITTEN 11/3/86 al) (ISHAP ADDED 8/19/87 al) (DISPAR ADDED 8/26/87 al) (TEXT CONTOURS ALTERED 3/4/88 al) (VOLUME VIEW MARKER 7/19/88 al) (FILL LIMIT ADDED 8/9/88 al) C.. VARIABLES: C.. C.. IRECLN = THE RECORD LENGTH (IN 4 BYTE OR FLOATING POINT WORDS) C.. OF THE RECORDS. CURRENTLY PROGRAMMED TO ACCEPT MAX SIZE MXRCLN. C.. C.. IMAXTX = MAXIMUM NO. OF INDIVIDUAL TEXTS THE FILE CAN HANDLE C.. IMAXTX = MXRCLN / 5 C.. C.. IMAXCT = MAXIMUM NO. OF INDIVIDUAL CONTOURS THE FILE CAN HANDLE C.. BASED ON ARRAY ALLOCATION. THIS CAN BE CHANGED IF NEEDED C.. TO A HIGHER NUMBER. C.. C.. LSRECD = LAST RECORD READ/WRITTEN DURING A SESSION C.. THIS VARIABLE IS ONLY IN THE COMMON NOT WRITTEN IN THE FILE. C.. C.. ICSPR = FLAG FOR WRITING OUT DETAILED FILE DATA ( WRITE IF = 1) C.. C.. ITFLG = FLAG FOR ASKING TITLE (ASK IF = 1) C.. C.. MAXCNT = MAXIMUM NO OF CONTOURS THE FILE CAN HOLD C.. C.. MAXTXT = MAXIMUM NO OF TEXT THIS FILE CAN HOLD (DEPENDS ON IRECLN C.. AND IS IRECLN / 5) C.. MAXIMUM NO. OF CHARACTERS THAT CAN BE STORED IS (4 * IRECLN) C.. THIS LIMIT IS DIFFERENT FROM MAXTXT! C.. C.. MAXREC = TOTAL NUMBER OF RECORDS IN USE. THIS INCLUDES THE LABEL C.. RECORDS AND THE DATA RECORDS. C.. C.. NDTSUF = NEXT AVAILABLE POSITION IN THE MAXREC-TH RECORD. C.. WHEN NDTSUF EXCEEDS THE RECORD LENGTH, A NEW RECORD IS C.. USED AND MAXREC IS UPDATED. C.. C.. NTXSUF = NEXT AVAILABLE POSITION IN REC NO 4 FOR STORING IMBEDDED TEXT. C.. C.. IFRMCS = FILE TYPE SPECIFIER. C.. = 0 DEFAULT. C.. = 4 FILES CONTAINING 3-D CONTOURS. C.. = 6 FILES CONTAINING TEXT CONTOURS. C.. = -6 FILES CONTAINING NEW STYLE TEXT CONTOURS. C.. C.. SCALE = THIS IS THE SCALING APPLIED TO ORIGINAL PICTURE. C.. C.. XMAX = MAXIMUM VALUE OF X CO-ORDINATE. C.. XMIN = MINIMUM VALUE OF X CO-ORDINATE. C.. YMAX = MAXIMUM VALUE OF Y CO-ORDINATE. C.. YMIN = MINIMUM VALUE OF Y CO-ORDINATE. C.. C.. ICOMP = FLAG INDICATING IF THE FILE IS COMPACT OR NOT. C.. WHENEVER A DELETE IS EXECUTED ON THE FILE C.. THIS FLAG IS SET(=1). DURING CLOSING OF THE C.. FILE THE FILE IS COMPACTED AND FLAG CLEARED. C.. C.. NDTCTL = NUMBER OF RECORDS USED FOR KEEPING CONTROL INFORMATION C.. FOR ALL CONTOURS IN THE FILE. THIS NUMBER IS CALCULATED C.. BASED ON THE MAXIMUM NUMBER OF CONTOURS TO BE STORED IN C.. THE FILE. ( NDTCTL = CEILING OF (MAXCNT / 42)) C.. C.. NCNTRS = NO. OF CONTOURS PRESENTLY IN THE FILE. C.. C.. ISTCON = NEXT AVAILABLE CELL IN CONTROL ARRAY. C.. C.. LSTCON = HIGHEST AVAILABLE CELL IN CONTROL ARRAY. C.. C.. ISTTXT = NEXT AVAILABLE CELL IN TXTCTR ARRAY. C.. C.. LSTTXT = HIGHEST AVAILABLE CELL IN TXTCTR ARRAY. C.. C.. NTXT = NO. OF TEXT IN THE FILE. C.. C.. DATECS = CHARACTER * 10, CONTAINING C.. DATE OF CREATION (10 CHARACTERS). C.. TIMECS = CHARACTER * 8, CONTAINING C.. TIME OF CREATION (8 CHARACTERS). C.. TITLCS = CHARACTER *40, CONTAINING 40-CHARACTER TITLE. C.. C** ISJIFP = TEXT ANGLE, SIZE, JUSTIFICATION, INTENSITY, FONT AND PEN. C.. C.. ITANGL = TEXT ANGLE. C.. C.. ITSIZE = TEXT SIZE. C.. C.. JUST = TEXT JUSTIFICATION. C.. C.. IFON = TEXT FONT. C.. C.. INTEN = LINE OR TEXT INTENSITY. C.. C.. IPEN = LINE OR TEXT PEN NUMBER (COLOR ETC.). C.. C.. MARK = LINE MARKER, ETC. C.. C.. LINTP = LINE TYPE. C.. C.. ISYMBL = SYMBOL FOR TEXT CONTOURS. C.. C.. ZCOO = Z COORDINATE OF CONTOUR. C.. C** PIXPCM = PIXELS PER CM. (USED IN SSRECN) ADDED al SEPT 86. C.. C** OKVMS = LOGICAL FLAG THAT VMS CALL IS ALLOWABLE (NOT FROM SUBTASK). C.. C** LENCOR = ONE IF FILE RECORD LENGTH IS COMPLETELY USED (FIXES OLD BUG). C.. C.. SERSEC = LOGICAL FLAG THAT CURRENT CONTOUR FILE HAS A SSR FILE ALSO. C.. C.. TXTCTR = TEXT CONTROL ARRAY (5 X IMAXTX). C.. THE SECOND INDEX OF THE ARRAY REFERS TO DIFFERENT TEXTS C.. IN THE FILE. C.. THE FIRST INDEX OF THE ARRAY REFERS TO DIFFERENT VARIABLES C.. AS FOLLOWS: C.. C.. SUBSCRIPT NO. 1 - IFRSUF = STARTING POSITION RECORD NO. C.. 2 -- ITOSUF = ENDING POSITION RECORD NO. C.. 3 -- ISJIFP = ANGLE 0..999 DEGREES (0 IS HORIZ.) C.. SIZE 0..99 UNITS (24 IS NORMAL) C.. JUSTIFICATION 0 LEFT, 1 - CENTER C.. 2 RIGHT C.. INTEN 0..9 INTENSITY. C.. ORIENTATION 0 HORIZ., 1 - VERTICAL C.. FONT 0 NORMAL C.. PEN TYPE SAME AS CONTOURS C.. ALL ZERO'S INDICATES DELETED TEXT. C.. 4 -- XPOS = SCALED X CO-ORDINATE OF THE TEXT . C.. 5 -- YPOS = SCALED Y CO-ORDINATE OF THE TEXT. C.. C.. CONTRL = CONTOUR CONTROL ARRAY(6,IMAXCT). C.. THE SECOND INDEX OF THE ARRAY REFERS TO DIFFERENT CONTOURS C.. IN THE FILE. C.. THE FIRST INDEX OF THE ARRAY REFERS TO DIFFERENT VARIABLES C.. AS FOLLOWS: C.. C... SUBSCRIPT NO. 1 -- ISTREC = STARTING RECORD POSITION. C.. 2 -- ISTSUF = STARTING SUFFIX IN THE ISTREC. C.. 3 -- LSTREC = ENDING RECORD POSITION . C.. 4 -- LSTSUF = ENDING SUFFIX POSITION IN IFNREC. C.. 5 -- MPT = CONTROL VARIABLE FOR MARKER, PEN, ETC. C.. IF IFRMCS = -6 AND MPT < 0 THEN MPT IS TREATED C.. LIKE IFJIFP FOR A NEW STYLE TEXT CONTOUR. C.. OTHERWISE IF IFRMCS + 6 THE FIRST HALF OF MPT C.. IS THE SYMBOL FOR TEXT CONTOURS, (ISYMBL) AND C.. THE SECOND HALF BECOMES MPT. C.. IN MPT: C.. THE UNITS DIGIT DENOTES INTENSITY (INTEN) C.. 0 LEAST INTENSE. C.. 9 MOST INTENSE. C.. C.. THE HUNDREDS DIGIT DENOTES THE LINE TYPE (LINTP) C.. WHICH IS DEVICE DEPENDANT C.. 0 IS SOLID LINE FOR ALL DEVICES. C.. C.. THE THOUSANDS DIGIT DENOTES THE PEN TYPE (IPEN) C.. WHICH CAN BE USED TO DENOTE DIFFERENT COLORS, OR C.. WIDTHS OF PEN IN PLOTTER OUTPUT. NOT USED WITH C.. (DEC) VT100 TERMINALS. C.. 0 USUALLY BLACK OR WHITE COLOR. C.. C.. THE THOUSANDS DIGIT DENOTES TYPE OF MARKER. (MARK) C 0 DEFAULT MARKER. C.. 1 3D CONTOUR (E.G. 3D TUBULE). C.. 2 TEXT CONTOUR. C.. -2 NEW STYLE TEXT CONTOUR. C.. 3 HIDDEN LINE CONTOUR. C.. 4 FILLED CONTOUR. C.. 5 FILLED SPHERES C.. 6 VOLUME VIEW CONTOUR C.. 7 FILLED CONTOUR WITH FILL LIMIT. C.. C.. THE 10000'S DIGIT DENOTES CONTOUR SHAPE. (ISHAP) C.. 0 DEFAULT STANDARD. C.. 1 CIRCULAR CONTOUR HAVING CENTER AS C.. THE FIRST POINT FOLLOWED BY POINTS ON RADIUS. C.. THIS METHOD OF STORING CIRCLES IS INDEPENDENT C.. OF DEVICE CIRCLE DRAWING ROUTINES. C.. C.. THE 100,000'S DIGIT DENOTES FILL LIMIT PEN (LIMFIL) C.. FOR USE WITH MARKER = 7 C.. 0 FILL TILL PEN 0 COLOR, ETC. C.. C.. 6 -- ZCOO = USED FOR STORING THE CONTOUR'S Z COORDINATE. C.. C.. THIS ARRAY IS UPDATED CONTINUOUSLY WHEN PUSHING EACH CONTOUR INTO C.. THE FILE. THE RECORDS ARE FINALLY WRITTEN TO THE FILE BEFORE CLOSING. C.. C........................................................................... EACH RECONSTRUCTION IS CONSIDERED AS A SET OF SEVERAL CONTOURS. EACH CONTOUR MAY HAVE A DIFFERENT Z-LEVEL VALUE ASSOCIATED WITH IT. THE CONTOURS ARE STORED IN AN UNFORMATTED, DIRECT ACCESS FILE CONTAINING A TOTAL OF MAXREC RECORDS. EACH RECORD CONTAINS (IRECLN*4) BYTES WHICH ARE INTERPRETED AS INTEGERS, FLOATING POINT NUMBERS OR TEXT DEPENDING ON THE RECORD NO. RECORDS NO. 1 & 3 CONTAIN FLOATING POINT DATA. RECORDS NO. 2 & 4 CONTAIN TEXT DATA ONLY. THE SEQUENCE IN WHICH THE INFORMATION IS STORED IN THE FILE IS AS FOLLOWS: RECORD NO. 1 -- CONTOUR STORAGE LABEL. RECORD NO. 2 -- CONTOUR STORAGE TITLE STORED AS CHARACTER FORMAT. RECORD NO. 3 -- TEXT CONTROL DATA. RECORD NO. 4 -- IMBEDDED TEXT. RECORDS NO. 5 TO (NDTCTL + 4) -- CONTROL DATA RELATING TO X-Y CO-ORDS OF THE CONTOURS. RECORDS NO (NDTCTL+5) TO MAXREC-- DATA RELATING TO THE X & Y CO-ORDINATES OF THE CONTOURS. . . . >>>>>>>>> RECORD NO. 1 LAYOUT OF THE CONTOUR STORAGE LABEL IS AS FOLLOWS: WORD NO.1 -- MAXCNT = MAXIMUM NO. OF CONTOURS THE FILE CAN HOLD. 2 -- MAXTXT = MAXIMUM NO. OF TEXT THE FILE CAN HOLD. 3 -- MAXREC = TOTAL NO. OF RECORDS IN USE. THIS INCLUDES LABEL RECORDS AND THE DATA RECORDS. 4 -- NDTSUF = NEXT AVAILABLE POSITION IN THE MAXREC-TH RECORD. WHEN NDTSUF EXCEEDS THE RECORD LENGTH, A NEW RECORD IS USED AND MAXREC IS UPDATED. 5 -- NTXSUF = NEXT AVAILABLE POSITION IN REC NO. 4 FOR STORING IMBEDDED TEXT. WHEN THIS NUMBER EXCEEDS (IRECLN*4), A GARBAGE COLLECTION WILL BE DONE AND IF NO MORE SPACE AVAILABLE THEN A WARNING MESSAGE WILL BE SENT TO THE TERMINAL. NO FURTHER IMBEDDED TEXT WILL BE PROCESSED. 6 -- IFRMCS = FILE TYPE SPECIFIER. = 0 DEFAULT = 4 3-D FILE = 6 FILE CONTAINING TEXT CONTOURS = -6 FILE CONTAINING NEW STYLE TEXT CONTOURS 7 -- SCALE = THIS IS THE SCALING APPLIED TO ORIGINAL PICTURE. (CALLER MUST SUPPLY THIS) 8 -- XMAX = MAXIMUM VALUE OF X CO-ORDINATE. 9 -- XMIN = MINIMUM VALUE OF X CO-ORDINATE. 10 -- YMAX = MAXIMUM VALUE OF Y CO-ORDINATE. 11 -- YMIN = MINIMUM VALUE OF Y CO-ORDINATE. 12 -- ICOMP = FLAG INDICATING IF THE FILE IS COMPACT OR NOT. WHENEVER A DELETE IS EXECUTED ON THE FILE THIS FLAG IS SET. DURING CLOSING OF THE FILE THE FILE IS COMPACTED. 13 -- NDTCTL = NO. OF RECORDS USED FOR KEEPING CONTROL INFORMATION FOR ALL CONTOURS IN THE FILE. THIS NUMBER IS CALCULATED BASED ON THE MAX NUMBER OF CONTOURS TO BE STORED IN THE FILE. ( NDTCTL = CEILING OF (MAXCNT / 42). 14 -- NCNTRS = NO. OF CONTOURS PRESENTLY IN THE FILE. 15 -- ISTCON = NEXT AVAILABLE CELL IN THE CONTRL ARRAY. 16 -- LSTCON = HIGHEST CELL USED IN THE CONTRL ARRAY. 17 -- ISTTXT = NEXT AVAILABLE CELL IN THE TXTCTR ARRAY. 18 -- LSTTXT = HIGHEST AVAILABLE CELL IN THE TXTCTR ARRAY. 19 -- NTXT = NO. OF TEXTS PRESENTLY IN THE FILE. 20 -- PIXPCM = DIGITIZER CONSTANT. 21 -- LENCOR = ONE DENOTES RECORD LENGTH IS CORRECT. ZERO DENOTES OLD FILE WHICH MAY HAVE UNUSED LENGTH IN THE RECORDS. 22 -- ICNTFMT = ZERO DENOTES CONTOUR FILE ONE DENOTES GRAPH FILE (ADDED JULY 92 al) TOTAL USED LENGTH OF THIS RECORD IS ONLY 88 BYTES! NOTE : ALL INTEGERS OR INTEGER ARRAYS ARE RETRIEVED FROM THE FLOATING PT. BUFFER ARRAY CONTAINING THE FIRST RECORD BY ARITHMETIC ASSIGNMENTS; I.E., MAXCNT = BUF(1) ,ETC. >>>>>>>>>> RECORD NO. 2 LAYOUT OF THE CONTOUR STORAGE TITLE IS AS FOLLOWS: WORD NO. 01 -- DATECS = CHARACTER * 10, CONTAINING THE DATE OF CREATION (10 CHARACTERS) -- TIMECS = CHARACTER * 8, CONTAINING THE TIME OF CREATION (8 CHARACTERS) -- TITLCS = CHARACTER *40, CONTAINING 40-CHARACTER TITLE TOTAL USED LENGTH OF RECORD IS ONLY 58 BYTES. >>>>>>>>>>>>> RECORD NO. 3. CONTROL RECORD FOR TEXT DATA. UPON OPENING THE FILE ALL POSITIONS IN THIS RECORD ARE INITIALIZED TO ZERO. DURING EXECUTION THIS RECORD IS READ INTO TXTCTR ARRAY. TXTCTR (5,MAXTXT). THE SECOND INDEX OF THE ARRAY REFERS TO DIFFERENT TEXT IN THE FILE. THE FIRST INDEX OF THE ARRAY REFERS TO DIFFERENT VARIABLES AS FOLLOWS: SUBSCRIPT NO. 1 - IFRSUF = STARTING POSITION RECORD NO. ( A NEGATIVE INTEGER IN THIS VARIABLE INDICATES DELETED TEXT) 2 -- ITOSUF = ENDING POSITION RECORD NO. 3 -- ISJIFP = ANGLE 0..360, 0 IS HORIZONTAL SIZE 0..99, 24 IS NORMAL JUSTIFICATION 0 LEFT, 1 - CENTER, 2 RIGHT INTENSITY 0..9, 9 IS MAXIMAL FONT 0 NORMAL PEN TYPE SAME AS CONTOURS 4 -- XPOS = SCALED X CO-ORDINATE OF THE TEXT. 5 -- YPOS = SCALED Y CO-ORDINATE OF THE TEXT. TOTAL USED LENGTH OF RECORD IS (MAXTXT*5). >>>>>>>>>>>>>> RECORD NO. 4 CONTAINS TEXT IN CHARACTER FORMAT. (IRECLN*4) CHARACTERS AVAILABLE FOR TEXT. >>>>>>>>>>>>>>> RECORD NO. 5 THRU (NDTCTL+4) NDTCTL RECORDS CONTAINING CONTROL DATA RELATING TO CONTOURS. UPON OPENING THE FILE ALL POSITIONS IN THIS RECORD ARE INITIALIZED TO ZERO. DURING EXECUTION THIS RECORD IS READ INTO THE CONTRL ARRAY. THE RECORD IS THEN READ INTO A REAL ARRAY CONTRL(6 X (42 X NDTCTL)) NOTE: ONLY FIRST 1008 BYTES TO BE READ FROM EACH RECORD. REST OF DATA IS GARBAGE. SO EACH RECORD CONTAINS CONTROL DATA FOR 42 CONTOURS. THE SECOND INDEX OF THE ARRAY REFERS TO EACH CONTOUR IN THE FILE. CONTRL(6,MAXCNT). THE SECOND INDEX OF THE ARRAY REFERS TO DIFFERENT CONTOURS IN THE FILE. THE FIRST INDEX OF THE ARRAY REFERS TO DIFFERENT CONTOUR CONTROL VARIABLES AS FOLLOWS: SUBSCRIPT NO. 1 -- ISTREC = STARTING RECORD POSITION. (A NEGATIVE INTEGER IN THIS FIELD INDICATES DELETED CONTOUR) 2 -- ISTSUF = STARTING SUFFIX IN THE ISTREC. 3 -- LSTREC = ENDING RECORD POSITION. 4 -- LSTSUF = ENDING SUFFIX POSITION IN IFNREC. 5 -- MPT = CONTROL VARIABLE FOR MARKER TYPE, PEN TYPE, LINE TYPE & INTENSITY. THE UNIT'S DIGIT DENOTES LINE INTENSITY. THE TEN'S DIGIT DENOTES LINE TYPE (0 - 9). THE HUNDRED'S DIGIT DENOTES PEN TYPES (0 - 9). THE PEN TYPE CAN BE USED TO DENOTE DIFFERENT COLORS, OR DIFFERENT WIDTHS OF PENS. THE THOUSAND'S DIGIT CAN DENOTE THE TYPE OF MARKER TO BE USED. 0 MEANS NO MARKER. OTHER 9 MARKERS CAN BE MADE DEVICE DEPENDENT. PRESENTLY A MARKER OF 1 IS A FLAG FOR A 3-D CONTOUR WITH X, Y, AND Z VALUES FOR EACH POINT ON THE CONTOUR. MARKER 2 DENOTES A CHARACTER CONTOUR. MARKER THREE DENOTES A CIRCULAR CONTOUR,ETC. (SEE ABOVE) 6 -- ZCOO = USED FOR STORING THE Z CO-ORDINATE VALUE FOR EACH CONTOUR. THIS ARRAY IS UPDATED CONTINUOUSLY DURING PUSHING EACH CONTOUR INTO THE FILE. THE RECORDS ARE FINALLY WRITTEN TO THE FILE BEFORE CLOSING. >>>>>>>>>>>> RECORD NO. (NDTCTL+5) TO (MAXREC) X, Y CO-ORDINATES OF THE CONTOURS. A COUPLE OF NUMBERS IN CONSECUTIVE STORAGE LOCATIONS DENOTES THE X-Y CO-ORDINATES OF THE CONTOUR POINT. ALL CO-ORDINATES ARE SCALED BETWEEN 0 & 1.0 SUCH THAT THE PAGE SIZE IS 1 BY 1. THE Z CO-ORDINATE IS KEPT IN THE CONTOUR CONTROL ARRAY. THE Z CO-ORDINATES ARE NOT SCALED. FOR A 3-D CONTOUR X,Y, AND Z ARE STORED IN CONSECUTIVE STORAGE LOCATIONS AND Z IS SCALED SIMILARLY TO X AND Y. FOR EACH CONTOUR, THE POINTS (1...NPNTS) ARE CONNECTED TO EACH OTHER BY A LINE. THE LINE TYPE, PEN TYPE, AND MARKER TYPE ARE SELECTED ACCORDING TO THE VALUE OF THE VARIABLE 'MPT'. THIS VARIABLE 'MPT' FOR EACH CONTOUR IS STORED IN THE CONTOUR CONTROL RECORD DESCRIBED ABOVE. >>>>>>>>>>>> THE DISPAR COMMON CONTAINS LOGICAL FLAGS TO SIGNAL THE DISPLAY ROUTINES HOW TO DRAW THE CONTOURS AND LABEL THEM. THESE FLAGS MAY NOT BE APPLICABLE TO SOME DEVICES. THE DISPLAY ROUTINE FOR THE RASTER TECH TERMINAL MAKES USE OF MOST OF THE POSSIBLE FLAGS BUT THE PLOTTERS USE ONLY A FEW OF THEM. IDEVIC FLAG FOR DISPLAY DEVICE HIDE FLAG FOR HIDDEN LINE REMOVAL FOR ALL CONTOURS CLEARS FLAG TO CLEAR SCREEN BEFORE DRAWING CENTER FLAG TO CENTER OUTPUT MIRROR FLAG TO MIRROR AROUND Y AXIS INVERZ FLAG TO INVERT Z LEVELS CWISE FLAG TO INVERT CONTOUR DIRECTION ANGLES FLAG TO LABEL VIEW ANGLE FRAMES FLAG TO DRAW BOUNDARY FRAMES MICBAR FLAG TO DRAW MICRON BAR LABELS FLAG TO LABEL EACH CONTOUR TITLE FLAG TO LIST TITLE THIN FLAG TO THIN CONTOURS TO DISPLAY ARRAY LIMIT VARINT FLAG TO VARY INTENSITY WITH DEPTH SPHERE FLAG TO DRAW CIRCLES AS SPHERES RECALC FLAG TO RECALCULATE DISCN ARRAY EXPLOD EXPLOSION FACTOR FOR Z LEVELS ADDROT FLAG FOR ADDITIVE ROTATIONS PLSGOT FLAG FOR PLOT SCALE PROVIDED TO DISPLAY PROGRAM MONTAG FLAG FOR A MONTAGE OF ROTATIONAL VIEWS MOVIE FLAG FOR BITPLANE ANIMATED ROTATION WINGOT FLAG FOR WINDOW SENT TO DISPLAY PROGRAM IXULD UPPER LEFT X OF WINDOW IYULD UPPER LEFT Y OF WINDOW IXLRD LOWER RIGHT X OF WINDOW IYLRD LOWER RIGHT Y OF WINDOW