Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-04 - decus/20-0110/prcinv.sai
There are 2 other files named prcinv.sai in the archive. Click here to see a list.
Entry;
COMMENT
.SOSPAGE_1
.SEC(PRCINV.SAI - PROC10 Internal Variable Definitions)
.index(PRCINV.SAI - PROC10 Internal Variable Definitions)
.;
Begin "PRCINV.SAI"
COMMENT


               P. LEMKIN, R. GORDON, B. SHAPIRO

                     IMAGE PROCESSING UNIT

           DIVISION OF CANCER BIOLOGY AND DIAGNOSIS
                   NATIONAL CANCER INSTITUTE
                 NATIONAL INSTITUTES OF HEALTH
                      BETHESDA, MD 20014


                         301-496-2394

Rev Oct 12, 1976 - Lemkin, removed I2- and I3-
Revised Oct 2, 1976 - lemkin replaced LAPLACE4 with DIFFERENCE.
Revised Aug 24, 1976 - lemkin, ZOOM for PROP, added thr!density
Revised Aug 6, 1976 - lemkin, removed POLYGON, INFLECTIONPTS,
	AVBOUNDARY, AVCIRCLETRANSFORM, 1DCONVOL, 2DCONVOL
Revised May 26, 1976 - Lemkin, changed seg!list CVN to CVSIX
Revised May 25, 1976 - Lemkin, added SEMANTICS
Revised May 21, 1976 - Lemkin, removed p!seg!list
Revised May 17, 1976 - Lemkin, added TEXTURE cmds
Revised April 21, 1976 - Shapiro added boundary scaling
Revised April 14, 1976 - Lemkin FIXED CIRCLE MASK TO MCIRCLE
Revised April 10, 1976 - Lemkin, added SPLICEMOVIEFRAME, REMOVEMOVIEFRAME
Revised April 6, 1976 - Lemkin, fixed LISTTRANSFORM and R/W for xform
Revised April 3, 1976 - Lemkin, added special commmands taking structs.
Revised April 1, 1976 - Lemkin, added movie stuff and xp,yp
Revised March 31, 1976 - Lemkin, changed LISTARCS TO LISTTRANSFORM
Revised March 30, 1976 - Lemkin, added transform OPR lists
Revised March 26, 1976 - Lemkin, added transform names and operators

;
COMMENT
.SS(REQUIRE files)
.INDEX(REQUIRE files)
.;
Comment
"	================================"
"	=    R E Q U I R E             ="
"	================================"

"	The following files are required for  use  by  PROC10.
They all reside in the Image Processing Unit's common user area
";


Comment	 Permanent REQ's;
Require "DEFINE.REQ" source!file;
Require "PRCMAX.REQ" source!file;
COMMENT
.NEXT PAGE
.SS(Global variables)
.INDEX(Global variables)
;
#	==================================;
#	= G L O B A L   V A R I A B L E S=;
#	==================================;



Internal String
	trm!name,
	file!name,
	com,
	operate,
	outfile, 
	cmd,
	s,
	ss,
	sss,
	Ifn,
	ofn,
	smsg,
	proj!programmer,
	dev!name,
	str,
	strcopy,
	sout,
	sip1,
	sip2,
	sip3,
	sip4,
	sip5,
	sip6;

Internal String Array 
	pix!title[1:max!number!pix],
	cw!title[1:max!number!computing!windows],
	mask!title[1:max!number!masknames],
	bnd!title[1:max!number!boundaries],
	trn!title[1:max!number!transforms];

Internal Boolean
	tim!switch,
	autoOMNInumber,
	setupOMNI,
	cross!hairs,
	auto!title,
	trn!rectangle,
	trn!window,
	ok,
	use!extrema;

Internal Integer
	firstrow, firstcolumn, lastrow, lastcolumn,
	sampled,
	trunc!max,
	imsiz,
	imsiz1,
	imshift,
	imarray!size,
	usemask,
	I10, I11, I12, I13, I14, I15, I16, I17, I18, 
	row!side,
	column!side,
	rect!row!center,
	rect!column!center,
	next!free!boundary,
	p!index,
	m!index,
	b!index,
	t!index,
	w!index,
	r!cross,
	c!cross,
	ran!seed,
	dmin,
	dmax,
	density!value,
	npict,
	db,
	flag,
	index,
	dbsave,
	im!size,
	threshold,
	xp,
	yp,
	cur!window,
	thr!density;

Internal Real	
	bnd!scale!factor,
	scaling,
	x0,
	y0,
	std!dev,
	runtime,
	cputime,
	t!runtime,
	t!cputime;

Internal Integer Array 
	header[0:255],
	pix!in!use[1:max!number!pix],
	mask!in!use[1:max!number!masknames],
	bnd!in!use[1:max!number!boundaries],
	trn!in!use[1:max!number!transforms],
	cw!in!use[1:max!number!computing!windows],
	c!wind[1:7,1:max!number!computing!windows],
	hist[0:511],
	maxima[0:10],
	minima[0:10];



Internal List
	movie;

Internal Set 
	omni!active,
	omni!free,
	omni!post,
	omni!unpost;


Internal Itemvar
	a!active,
	a!transform,
	v!circletransform,
	v!centfouriertransform,
	v!Fouriertransform,
	v!Walshtransform,
	v!HISTtransform,
	none;


Internal Integer Array Itemvar
	mskimage,
	image1,
	image2,
	image3,
	iname,
	mask1,
	mask2,
	mask3,
	bnd1,
	bnd2,
	bnd3;

Internal Real Array Itemvar
	riv,
	trn1,
	trn2,
	trn3;


"	The following variables are external and are defined in
	BOUND.SAI:

		Integer inspool, inspeof, terse;"
COMMENT
.NEXT PAGE
.SS(Special commands)
.INDEX(Special commands)
;
#	==================================;
#	= S P E C I A L   C O M M A N D S=
#	==================================;

#	ADD COMMANDS HERE IN  UPPER  CASE  WHEN  ENLARGING  THE
SYSTEM;

#	Note that test and dispatch for the commands is made in
CMDLOOP,  SPECIAL!COMMAND!ASSIGNMENT,  and  LIST!COMMANDS. Note
that  lgl!spclcmds[max!number!special!commands]  must
be  null  as  it is used to denote the End of the legal command
list;

	preload!with

"HELP",
"ACTIVEDATA",
"AUTOTITLETOGGLE",
"CMD",
"--FREE1--",
"DELETE",
"ENDSESSION",
"GETWINDOW",
"PARAMETERS",
"SAVEWINDOW",
"SETDENSITY",
"SETSAMPLING",
"SETSIZE",
"SETTERMINAL",
"SETTITLE",
"SETWINDOW",
"SETLCS",
"TERSE",
"TIMERTOGGLE",
"VERBOSE",
"DO",
"ENTER2001",
"AUTOOMNINUMBERTOGGLE",
"KILLOMNI",
"UNPOSTOMNI",
"POSTOMNI",
"DOOMNI",
"SETSCALING",
"NEWMOVIE",
"APPENDMOVIE",
"RUNMOVIE",
"SPLICEMOVIEFRAME",
"REMOVEMOVIEFRAME",
"SETBOUNDARYSCALEFACTOR";

Internal Own String Array 
		lgl!spclcmds[1:max!number!special!commands];
COMMENT
.NEXT PAGE
.SS(Special commands)
.INDEX(Special commands)
;
#	==================================;
#	= S P E C   C O MS  U S I N G  S T R U C T S=
#	==================================;

#	ADD COMMANDS HERE IN  UPPER  CASE  WHEN  ENLARGING  THE
SYSTEM;

#	Note that test and dispatch for the commands is made in
CMDLOOP,      SPECIAL!COMMAND!ASSIGNMENT.       Note       that
l!spcstructures[max!number!special!commands]  must be null as
it is used to denote the End of the legal command list;

	preload!with

"ACTIVEDATA",
"SETTITLE",
"KILLOMNI",
"UNPOSTOMNI",
"POSTOMNI",
"APPENDMOVIE",
"SPLICEMOVIEFRAME",
"REMOVEMOVIEFRAME";

Internal Own String Array 
		l!spcstructures[1:max!number!special!commands];
COMMENT
.NEXT PAGE
.SS(Picture names)
.INDEX(Picture names)
;
#	==================================;
#	= P I C T U R E    N A M E S     =;
#	==================================;

#	ADD picture names HERE IN UPPER CASE WHEN ENLARGING THE SYSTEM;

#	Note  that  test  for the picture names must be made in
procedures using them (CMDLOOP, PIX!ASSIGNMENT, ACTIVE!DATA).

	The   pix!in!use[1:max!number!pix]  array  is  used  to
denote if a particular picture is active  (if  entry  is  true,
else does not exist if false). Furthermore, pictures are stored
as the DATUM of an item (Max size 16K integer array for 256x256
image). The print name field of a picture item is used to store
the  picture  name.  The  picture  title  is  stored  in  array
pix!title[1:max!number!pix].  If  the  picture  is  in use, the
pix!in!use[1:max!number!pix] is set to true else to false;

	preload!with

"P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9",
"P10", "P11", "P12", "P13", "P14", "P15", "P16", "P17", "P18", "P19",
"P20", "P21", "P22", "P23", "P24", "P25", "P26", "P27", "P28", "P29",
"P30", "P31", "P32";

Internal Own String Array lgl!pnames[1:max!number!pix];


"	An  image  which  is  the result of a segment operation
(i.e. the connected components image)  may  have  leap  triples
(Pi*Bq=seglist) associated with it. The seglist consists of:

	Segment property list[0] = component number
	Segment property list[1] = r
	Segment property list[2] = c
	Segment property list[3] = area
	Segment property list[4] = perimeter
	Segment property list[5] = density (masked from original image)
	Segment property list[6] = CVSIX(boundary NAME)
	Segment property list[7] = touching comput. window predicate 
	Segment property list[8] = CVSIX(original picture NAME)
"
COMMENT
.NEXT PAGE
.SS(Boundary names)
.INDEX(Boundary names)
.;
#	==================================;
#	= B O U N D A R Y    N A M E S     =;
#	==================================;

#	ADD boundary names HERE IN UPPER CASE WHEN ENLARGING THE SYSTEM;

#	Note  that  test for the boundary names must be made in
procedures   using    them    (CMDLOOP,    BOUNDARY!ASSIGNMENT,
ACTIVE!DATA).

	The boundary!in!use[1:max!number!boundaries]  array  is
used  to denote if a particular boundary is active (if entry is
true, else does not exist if false). Furthermore, boundarys are
stored  as  the DATUM of an item (Max size 1K integer array for
2K point boundary). The print name field of a boundary item  is
used  to  store the boundary name.  The PROPS field of the item
contains the length of the boundary (not  including  the  (0,0)
eof).       The    boundary    title   is   stored   in   array
boundary!title[1:max!number!boundaries]. If the boundary is  in
use,  the  boundary!in!use[1:max!number!boundaries]  is  set to
true else to false;

	preload!with

"B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9",
"B10", "B11", "B12", "B13", "B14", "B15", "B16", "B17", "B18", "B19",
"B20", "B21", "B22", "B23", "B24", "B25", "B26", "B27", "B28", "B29",
"B30", "B31", "B32";

Internal Own String Array lgl!bnames[1:max!number!boundaries];

"	note - set the starting point for free boundary names!!!"
COMMENT
.NEXT PAGE
.SS(Mask names)
.INDEX(Mask names)
.;
#	==================================;
#	= M A S K   N A M E S            =;
#	==================================;

#	ADD Mask names HERE IN UPPER CASE WHEN ENLARGING THE SYSTEM;

#	Note  that  test  and  dispatch for the Mask names must
be made in procedure CMDLOOP as well (CMDLOOP, MASK!ASSIGNMENT,
PIX!ASSIGNMENT, ACTIVE!DATA);

	preload!with

"M1",  "M2",  "M3",  "M4", "M5", "M6", "M7", "M8", "M9", "M10",
"M11", "M12", "M13", "M14", "M15", "M16", "M17", "M18",  "M19",
"M20",  "M21", "M22", "M23", "M24", "M25", "M26", "M27", "M28",
"M29", "M30", "M31", "M32";

Internal Own String Array lgl!mnames[1:max!number!masknames];
COMMENT
.NEXT PAGE
.SS(Transform names)
.INDEX(Transform names)
.;
#	==================================;
#	= T R A N S F O R M   N A M E S  =;
#	==================================;

#	ADD Transform names HERE IN UPPER CASE WHEN ENLARGING THE SYSTEM;

#	Note  that  test  and  dispatch for the Transform names must
be made in procedure CMDLOOP as well (CMDLOOP, BND!ASSIGNMENT,
ANALYZE!CMD, ACTIVE!DATA);

	preload!with

"T1",  "T2",  "T3",  "T4", "T5", "T6", "T7", "T8", "T9", "T10",
"T11", "T12", "T13", "T14", "T15", "T16", "T17", "T18",  "T19",
"T20",  "T21", "T22", "T23", "T24", "T25", "T26", "T27", "T28",
"T29", "T30", "T31", "T32";

Internal Own String Array lgl!tnames[1:max!number!Transforms];
COMMENT
.NEXT PAGE
.SS(Window names)
.INDEX(Window names)
.;

#	==================================;
#	= W I N D O W   N A M E S            =;
#	==================================;

#	ADD window names HERE IN UPPER CASE WHEN ENLARGING THE SYSTEM;

#	Note that test and dispatch for the window  names  must
be made in procedures (GET!WINDOW, SAVE!WINDOW);

	preload!with

"W1",  "W2",  "W3",  "W4", "W5", "W6", "W7", "W8", "W9", "W10",
"W11", "W12", "W13", "W14", "W15", "W16", "W17", "W18",  "W19",
"W20",  "W21", "W22", "W23", "W24", "W25", "W26", "W27", "W28",
"W29", "W30", "W31", "W32";

Internal Own String Array 
		lgl!wnames[1:max!number!computing!windows];
COMMENT
.NEXT PAGE
.SS(Picture Operators)
.INDEX(Picture Operators)
.;

#	=====================================;
#	= P I C T U R E   O P E R A T O R S =;
#	=====================================;

#	ADD picture operators HERE IN UPPER CASE WHEN ENLARGING
#	THE SYSTEM

#	Note that test for the operators must also be  made  in
procedures  using  them  (ANALYZE!CMD, CMDLOOP, PIX!ASSIGNMENT,
LIST!COMMANDS)

#	Note single character operator symbols must be preceeded
#	with a space for the GUESSER routine to be able
#	to operate on them;

	preload!with

" +",
"MINUS",
" *",
" /",
"MAX",
"MIN",
"SCALE",
"ROTATE",
"COPY",
"AVG4",
"AVG8",
"GRAD4",
"GRAD8",
"FILLPINHOLES",
"SLICE",
"NOT",
"EXPAND",
"SHRINK",
"SHIFT",
"SEGMENT",
"WHITENOISE",
"ZERO",
"DELSQPIX",
"FINDWINDOW",
"HISTOGRAMPIX",
"SHOW",
"READ",
"WRITE",
"DELETE",
"AREA",
"DENSITY",
"PERIMETER",
"MOMENTS",
"DIFFERENCE",
"LAPLACE8",
"INSERT",
"EXTRACT",
"EXTREMA",
"LINCOMB",
"LISTSEGMENTS",

"ZOOM",
"MAKEPIX",
"PRINT",
"TEXTURE1",
"TEXTURE2",
"TEXTURE3",
"FILTER";


Internal Own String Array lgl!pops[1:max!number!pixops];
COMMENT
.NEXT PAGE
.SS(Mask operators)
.INDEX(Mask operators)
.;

#	=====================================;
#	= M A S K         O P E R A T O R S =;
#	=====================================;

#	ADD maskoperators HERE IN UPPER CASE WHEN ENLARGING THE SYSTEM;

#	Note  that test for the maskoperators must also be made
in    procedures    using    them    (ANALYZE!CMD,     CMDLOOP,
MASK!ASSIGNMENT, LIST!COMMANDS);

#	Note single character maskoperator symbols must be preceeded
#	with a space for the GUESSER routine to be able
#	to maskoperate on them;

	preload!with

"AND",
"OR",
"MINUS",
"COPY",
"NOT",
"ZERO",
"READ",
"WRITE",
"DELETE",
"MCIRCLE",
"RECTANGLE",
"MSLICE",
"MSEGMENT",
"SPHERE",
"SQUARE",
"WHOLE",
"AREA",
"PERIMETER";


Internal Own String Array lgl!mops[1:max!number!maskops];
COMMENT
.NEXT PAGE
.SS(Boundary operators)
.INDEX(Boundary operators)
.;

#	=====================================;
#	= B O U N D A R Y         O P E R A T O R S =;
#	=====================================;

#	ADD boundary operators HERE IN UPPER CASE WHEN ENLARGING
#	THE SYSTEM;

#	Note that test for the boundary operators must also  be
made     in     procedures     using     them     (ANALYZE!CMD,
BOUNDARY!ASSIGNMENT, CMDLOOP, LIST!COMMANDS);

#	Note single character boundary operator symbols must be 

#	preceeded with a space for the GUESSER routine to be able
#	to boundary operate on them;

	preload!with

"COPY",
"ZERO",
"READ",
"WRITE",
"DELETE",
"SHOW",
"AREA",
"PERIMETER",
"CIRCLETRANSFORM",
"ICIRCLETRANSFORM",
"SUBARCS",
"LISTTRANSFORM",
"FOURIERTRANSFORM",
"IFOURIERTRANSFORM",
"WALSHTRANSFORM",
"IWALSHTRANSFORM",
"--FREE2--",
"--FREE3--",
"CENTFOURIERTRANSFORM",
"ICENTFOURIERTRANSFORM",
"LISTBOUNDARY";

Internal Own String Array lgl!bops[1:max!number!boundaries];
COMMENT
.NEXT PAGE
.SS(Nullary input ops)
.INDEX(Nullary input ops)
.;

#	=====================================;
#	= N U L L A R Y   I N P U T   O P S =;
#	=====================================;

"	Note this duplicate set of names is used for tests  for
null INPUT operators for both picture, boundary, and mask
operations"

	Preload!with
"MCIRCLE",
"DELETE",
"READ",
"MSLICE",
"RECTANGLE",
"MSEGMENT",
"SPHERE",
"SQUARE",
"WHOLE",
"WHITENOISE",
"ZERO",
"SHRINK",
"EXPAND",
"ZOOM",
"LISTTRANSFORM",
"ICIRCLETRANSFORM",
"IFOURIERTRANSFORM",
"ICENTFOURIERTRANSFORM",
"IWALSHTRANSFORM",
"SUBARCS",
"MAKEPIX";
Internal Own String Array lgl!nINPUT!ops[1:max!number!pixops];
COMMENT
.NEXT PAGE
.SS(Nullary output ops)
.INDEX(Nullary output ops)
.;

#	=====================================;
#	= N U L L A R Y   O U T P U T  O P S =;
#	=====================================;

"	Note this duplicate set of names is used for tests  for
null OUTPUT operators for both picture, boundary, and mask
operations"

	Preload!with
"DELSQPIX",
"WRITE",
"FINDWINDOW",
"HISTOGRAMPIX",
"SHOW",
"PRINT",
"AREA",
"PERIMETER",
"ARCLENGTH",
"CIRCLETRANSFORM",
"FOURIERTRANSFORM",
"CENTFOURIERTRANSFORM",
"WALSHTRANSFORM",
"SUBARCS",
"LISTTRANSFORM",
"LISTBOUNDARY",
"MOMENTS",
"DENSITY",
"LISTSEGMENTS",
"EXTREMA",
"TEXTURE1",
"TEXTURE2",
"TEXTURE3";
Internal Own String Array lgl!nOUTPUT!ops[1:max!number!pixops];
COMMENT
.NEXT PAGE
.SS(No shift ops)
.INDEX(No shift ops)
.;

#	=====================================;
#	= N O   S H I F T   O P S            =;
#	=====================================;

"	Note this duplicate set of names is used for tests  for
not shifting operators in BINTRP operations"

	Preload!with
"WRITE",
"CIRCLETRANSFORM",
"FOURIERTRANSFORM",
"CENTFOURIERTRANSFORM",
"WALSHTRANSFORM",
"SUBARCS";
Internal Own String Array lglNoSHIFT!ops[1:max!number!pixops];
COMMENT
.NEXT PAGE
.SS(Transform input ops)
.INDEX(Transform input ops)
.;

#	=====================================;
#	= T R A N S F O R M  I N P U T  O P S =;
#	=====================================;

"	Note this duplicate set of names is used for tests  for
transform input operators in BINTRP operations"

	Preload!with
"ICIRCLETRANSFORM",
"IFOURIERTRANSFORM",
"ICENTFOURIERTRANSFORM",
"IWALSHTRANSFORM",
"LISTTRANSFORM",
"SUBARCS";
Internal Own String Array l!T!input!ops[1:max!number!pixops];
COMMENT
.NEXT PAGE
.SS(Transform output ops)
.INDEX(Transform output ops)
.;

#	=====================================;
#	= T R A N S F O R M  O U T P U T  O P S =;
#	=====================================;

"	Note this duplicate set of names is used for tests  for
transform output operators in BINTRP operations"

	Preload!with
"CIRCLETRANSFORM",
"FOURIERTRANSFORM",
"CENTFOURIERTRANSFORM",
"WALSHTRANSFORM",
"SUBARCS";
Internal Own String Array l!T!output!ops[1:max!number!pixops];
End "PRCINV.SAI";