|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: R T
Length: 22069 (0x5635)
Types: TextFile
Names: »README«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦this⟧ »EUUGD11/euug-87hel/sec1/utep/README«
.pn 0
.po 1.25i
.ll 6i
.pl 11i
.hy
.lt 6i
.de hd
.if \\n%>0 \{\
'sp .5i
.tl '''Page %' \}
'sp |1i
.ns
..
.de fo
'bp
..
.wh 0 hd
.wh -1.33333i fo
.de pp
.sp
.ti+5
..
.de HL
.br
\l'\\n(.lu-\\n(.iu'
.sp
..
.bp 0
.br
.rs
.sp 20
.ce 6
AN INTERACTIVE DRAWING BOARD PACKAGE
.sp 20
David H. Williams and Inaam Bakir
The University of Texas at El Paso
El Paso, Texas 79968
.sp
(915) 747-5470
.sp
ihnp4!ut-sally!utep-vaxa!williams
.bp
.fi
I. INSTALLATION
.sp
.fi
.in+17
.ti-14
cd to directory where software will be installed.
.sp
.ti-14
mkdir utep (make utep directory)
.sp
.ti-14
tar vx0 * (extract all of the files)
.sp
.ti-14
cd utep (enter the working directory)
.sp
.ti-17
To run the interactive program:
.sp
.ti-14
make (compile and link the routines)
.sp
.ti-14
drawit.out > /dev/aed (execute the program, redirecting the output
to an AED display. Commands for executing
the program will be issued on the user
terminal, and the output will be displayed
on the AED.)
.sp
.ti-17
To run the demo program:
.sp
.ti-14
make -f demo.makefile (compile and link the routines)
.sp
.ti-14
demo.out >/dev/aed (execute the program, redirecting the output
to an AED display. Commands for executing the
program will be issued on the user terminal,
and the output will be displayed on the AED.
The demo output consists of a series of images
depicting a scene from sunrise to nightime.)
.sp
.ti-14
GOOD LUCK!
.sp 2
.in-17
II. SUMMARY OF WORK
.pp
An interactive drawing board software package has been designed for any user
who has no knowledge of computers but is able to interact with the computer
through the use of the keyboard.
This package is menu driven and has a segmented display file where entites like
circles, squares, lines, etc. can be created by inputting
corresponding commands.
They then can be changed in many ways to assemble the required design.
Images can be saved and recalled on the display device for editing.
The package is structured to be device independent. It have the ability to
drive different devices with slight modification for each new device. It is
also structured to be machine independent by implementing the package in
FORTRAN 77. (One C language routine is also required.)
.bp
III. REQUIRED HARDWARE AND SOFTWARE
.sp
The required hardware and sofware is:
.sp
.in+5
.ti-5
.br
(a) A computer with UNIX. (The output program requires about 120k
bytes of memory on a VAX 11/780.)
.ti-5
.br
(b) FORTRAN 77 and C compilers.
.ti-5
.br
(b) AED 512 Graphics/Imaging Terminal (Output Device).
.br
.ti-5
(c) Micro-Term or other Terminal (Input Device). The alpha-
numeric keyboard is used to enter commands and
parameter values.
.in-5
.sp 2
IV. PROGRAM DESIGN
.sp
.pp
This package has been designed to enable the user to develop an image, modify it
and store it easily.
The generation of an image on the display devices screen consists of the
following steps:
.sp 2
.nf
(1) initialize the variables.
(2) enter the graphics mode.
(3) set window,screen and viewports limits.
(4) identify item by inputting its type, position,
color and measurements.
(5) clip item to window edges (if necessary).
(6) perform world-to-screen transformation.
(7) display item.
(8) edit image.
(9) exit graphics mode.
.fi
.sp 2
The following table lists all of the routines:
.sp 2
.ls 1
.nf
axes- draw x and y axes along page sides.
blnkrow- blank row and column that corresponds to
segments number in overlapping table.
block data- assign default values to common variables.
boxit- build boxes four corners out of boxes (blc) and
(trc).
boxitm- box current item by returning its boxes four
corners coordinates.
boxlin- compare two boxes for overlapping- at least
one box must represent a horizontal or a vertical
line.
boxout- check if item box lies outside page boundary.
boxsitm- box current standard item (square,rectangle,
triangle,circle and line).
buldcod- build a background segment or a (ucp) segments
code.
cat- perform concatenation transformation.
change- display a question on the screen regarding
making changes to current item.
check- check if one point coordinates lie inside
a boxed item.
checkit- check if one point coordinates lie outside
page boundary.
cir- draw a 360 line segment unit circle in world
coordinates.
ckchang- check issued change on current item for validity.
ckovlap- check if current item overlaps other segments;
if so, set the appropriate entries in
overlapping table.
clean- insert a character in display file.
clip- clip line to window bounds using Conley's
Algorithm.
clr- (re) initialize transformation matrix.
clrbkgd- change background color.
compare- compare two boxes for overlapping.
cpnums- change polygon number after deletion of an item.
csif- close and save image files.
dcl- use an AED 512 built in command to draw
a filled circle.
dcode- transform one point device coordinates into
a three byte xy20 code (AED 512 code).
delitm- delete item from image.
delucp- delete a (ucp) from image.
dfplyln- set deletion flags of current (ucp)s lines
OFF.
dfr- use an AED 512 built in command to draw
a filled rectangle.
dlbkgd- delete segment background from image.
dlentry- delete one entry from list of overlapping
segments.
dmove- define command m (move and fill).
drawp- output display file contents on AED 512 screen
driver- transform one point screen coordinates into
device coordinates.
dsimage- display recalled image.
dspage- draw saved image's segments according to
their priorities.
edit- edit current image.
eight- draw digit 8.
eraitm- erase item from image.
eraucp- erase a (ucp) from image.
entaxes- enter segment axes in auxiliary table.
enterbp- enter a background segment or a (ucp) segment
information in segments table.
entpage- enter segment page in auxiliary table.
error- display an error message on I/P devices screen.
fclose- close image files.
findsg- find if one segment number exists in list.
five- draw digit 5.
fopen- open image files.
four- draw digit 4.
gcmenu- display image editing menu.
hmarker- draw a horizontal unit marker.
howmpg- inquire about how many saved images exist.
ifl- use an AED 512 built in command to interior
fill closed polygons.
init- initialize variables and set encoding scheme
intrprt- interpret code on the output devices screen.
isblin- inquire if current box represents a horizontal
or vertical line.
isboxpg- check if current box represents page bounds.
ispdone- inquire if user is done with current (ucp).
issovlp- build a list of items numbers that overlaps
item in question.
itmmsin- check new measurements of item for validity.
itmptin- check new position of item for validity.
lcmenu- display item editing menu.
line- draw line if visible (within window bounds).
lsitems- list segments table content on I/P devices
screen.
makmove- make a move to a point on output devices screen.
matmlt- perform multiplication between two matrices.
mfoptns- display command (m) options on the screen.
move- check if point coordinates are within bounds
before making a move.
movepr- move to a certain point on screen.
movitm- move item to a new position.
mvwhere- read and process issued command.
newpage- reinitialize variables and supply user with a
blank page.
nine- draw digit 9.
oif- open image files.
one- draw digit 1.
openfl- open image files,save image,close files.
osegp- find out if current segment overlaps segment
page.
pgdone- exit output devices graphic mode and return
to alpha mode.
pickitm- pick one item by inputting its number.
pobound- check if one point coordinates actually lie
on page boundary.
procitm- specify,display and edit current item.
rdcomnd- read & process issued command on picked item.
rdinf- read image information back into program.
rdjpg- read display file content back into program.
readat- read auxiliary table .
readol- read overlapping table.
readst- read segment table.
readup- read (ucp)s common block.
recall- recall an image on the output devices screen.
redmitm- draw moved item into its new position.
replac- replace one of the previously stored pages
with current page.
resave- resave current image.
respfy- respecify current item according to issued
command.
rstable- (re) initialize segments table.
rstotbl- (re) initialize overlapping table.
rstplst- (re) initialize (ucp)s list.
sat- establish the auxiliary table.
savat- save auxiliary table.
savinf- write image information into storage files.
savjpg- write display file content into storage files.
savpag- save current page for later use.
savol- save overlapping table.
savst- save segments table.
savup- save (ucp)s common block.
sbpovlp- set a background segment or a (ucp) segment
overlapping.
scl- build scaling matrix.
screen- (re) specify screen boundaries.
sct- call an AED 512 built in command to create
a color table.
sctable- (re) initialize color table.
search- search for one segment entry in list of
overlapping segments.
sec- call an AED 512 built in command to set
drawing color.
sendcod- send one segment code to be interpreted on
output devices screen.
sendsgs- send a number of segments to be displayed on
output devices screen.
setovlp- set two overlapped items entries in overlapping
table.
seven- draw digit 7.
showbg- show a background segment on output devices
screen.
showbp- show a user constructed polygon (ucp) on
output devices screen.
six- draw digit 6.
sndscd- establish type of segment and send its code to
be interpreted.
snpage- save current page as a new page.
sortlst- sort list of overlapping segments.
splyflg- set (ucp) flag ON (meaning that (ucp) under
construction).
sqr- draw a unit square in world coordinates.
srchlst- return one (ucp)s entry in list of (ucp)s.
srchtbl- search segments table for background color.
star- draw a star in world coordinates.
stovlap- process two segments for overlapping.
swap- swap two points.
tempinf- temporarily transfer information from segments
table into items (twb).
term- terminate graphics mode by returning to alpha
mode.
three- draw digit 3.
tlt- build translation matrix.
triang- draw a unit triangle in world coordinates.
two- draw digit 2.
uftabl- store units numbers and files names in a table.
updf- update display file after deletion of an item.
upentry- update segments table after deletion of an item.
upinfo- update items (twb) after changing that item.
upolyln- mark current line to be a component of a (ucp).
upotble- update overlapping table after deletion of an
item.
uppoly- update (ucp)s common block after deleting one (ucp).
uptable- update segments table after changing an item.
usrpoly- construct current (ucp).
vmarker- draw a vertical unit marker.
vwport- (re) specify viewport boundaries.
wdscrn- transform one point world coordinates into
screen coordinates.
whichf- inquire about saved image files.
whichp- inquire about recalled image number.
whichu- inquire about saved image units.
windo- (re) specify window boundaries.
wtitems- write items (twb) into (pwb).
zero- draw digit 0.
zeroone- check if an array contains zeros or ones.
for output device.
.fi
.sp 2
V. DESCRIPTION OF SOFTWARE MODELS
.sp
.pp
The modular design of this package exhibits a clear division
of tasks among its modules. Basically, there are four sections
to be considered in some detail:
.sp
.nf
(1) Create an item.
(2) Edit an item.
(3) Edit an image.
(4) Save an image and/or Recall a saved image.
.fi
.sp
.ce
CREATE AN ITEM
.sp
A. Main Routine
.pp
Subroutine PROCITM will access the items specification, which is stored in
the items temporary working block (twb), to construct an item and display
it on the output device screen. The information, which is in the temporary
working block will then be stored in the permanent working block (pwb).
.sp
B. Called Routines
.sp
1. SPFYITM (specify item)
.in+5
Calls upon four interactive routines to read and
store users input concerning the item's position,
measurement, color and type of interior (outlined
or solid object).
.ti-3
2. DSPLYIT (display item on output devices screen)
.sp
Basically, subroutine SHOWITM is called to use
the items specifications stored in its (twb) to
construct the item as follows:
.sp
.in-5
.sp
CIRCLE- uses center coordinates, radius value and
.in+16
color value; calls DCL routine to use
an AED 512 built in command (dcl)
to draw a filled circle or call CIR
which is a routine to draw a 360 line
segments circle.
.ti-11
.sp
SQUARE
.sp
.ti-11
OR
.sp
.ti-11
RECTANGLE- uses bottom left corner coordinates (blc),
top right corner coordinates (trc) and
color value to call routine DFR which
uses an AED 512 built in command (dfr)
to draw a filled square or rectangle or
call routine SQR to draw an outlined
square or use four lines segments to draw
an outlined rectangle.
.sp
.ti-11
TRIANGLE- uses (blc) coordinates, side length value
and color value to draw an outlined triangle.
If solid triangle is specified, fill
triangle interior with specified color.
.sp
.ti-11
LINE- uses (blc) coordinates, (trc) coordinates
and color value to draw a line by calling
subroutine LINE.
.sp
.in-16
.pp
Now that the item has been constructed according to the specification, the next step is
to show the item on the output device screen by calling subroutine SENDCOD which
will send that segment code to be interpreted and the result to be
displayed on the output device.
.sp
3. WTITEMS (write items (twb) into (pwb))
.sp
.in+5
This routine copies items (twb) information into
the next available slot in the segments table
which is also called the permanent working block
(pwb).
.in-5
.sp
EXAMPLE:
.sp
General Case:
.pp
Items are square, rectangle, triangle, circle and line.
To draw a square at position (1.0,1.0) with a side length of 2.5
units and fill with light brown color,the user must:
.sp
.nf
1. input real x-value blank real y-value
followed by carriage return.
(ex): 1.0 1.0 <CR>
2. input real side length value followed by
carriage return.
(ex): 2.5 <CR>
3. input integer color value followed by
carriage return.
(ex): 10 <CR>
4. answer yes to a type of interior question
followed by carriage return.
(ex): y <CR>
.fi
.sp
RESULT:
.sp
A solid, light brown square positioned at (1.0,1.0) with
(2.5) units side length.
.sp
Special Case:
.sp
Item is a user constructed polygon (ucp) or background
segment.
.pp
The user needs to pick the m-command (for move and fill)
from the items menu. There are two options available within this command
to handle those two special cases, (u- (ucp) and
b- background).
To draw a (ucp) that has three lines with the following
begining and ending points,
.nf
(1.0,1.0) , (4.0,3.0)
(4.0,3.0) , (6.0,1.0)
(6.0,1.0) , (1.0,1.0)
and is filled with red color, the user must:
1. input the following for the 1st line
1.0 1.0 <CR>
4.0 3.0 <CR>
7 <CR> (lines will be
drawn with white color)
2. input the following for 2nd line
4.0 3.0 <CR>
6.0 1.0 <CR>
7 <CR>
3. input the following for 3rd line
6.0 1.0 <CR>
1.0 1.0 <CR>
7 <CR>
4. input 1 <CR> to color (ucp) with red.
5. input 4.0 2.0 <CR> which is the interior
fill point for (ucp).
.fi
.sp
RESULT:
.sp
.pp
A red filled (ucp) positioned at (1.0,1.0) which has three lines
as specified.
.pp
The user needs to be aware of several things when creating
a (ucp). A user constructed polygons building
components should be lines ONLY. It also must be a
closed polygon and have an interior fill point that lies
clearly inside the polygon. The user has the responsibility
to see to it that it is inputted correctly on the first trial
, (i.e) there is no room for error.
.sp
.ce
EDIT ITEM
.sp
A. Main Routine
.pp
Subroutine PROCITM converses with the user interactivly. It inquires about a need to
issue changes on the current item. If so, the item will be erased from the image
followed by a redrawing of that part of the image which has overlapped with the item.
This routine will ask the user to respecify the item.
.sp
B. Called Routines
.sp
1. subroutine ISSOVLP will build a list of all segments
.in+5
that overlap the item in question.
.ti-3
2. subroutine SENDSGS will send those segments to the
output devices screen in the order in which they were
created.
.ti-3
3. subroutine RESPFY will inquire about the type of
change (position, color or measurement). It will check
the issued change for validation. Subroutine CKCHANG
(check change) will return an answer to this question
and inform the user about the reason if the issued
change could not be approved. The condition for
validation of the requested change is that the changed
item falls within the page bounds.
.in-5
.sp
EXAMPLE:
.sp
General Case:
.sp
Items are square, rectangle, triangle, circle and line.
To edit a square by moving it from
position (1.0,1.0) to (2.0,3.5),the user must:
.sp
.nf
1. pick command p (position) from
items editing menu,
p <CR>
2. input new position,
2.0 3.5 <CR>
.fi
RESULT:
.sp
The same solid, light brown square positioned at (2.0,3.5)
instead of (1.0,1.0).
.sp
Special Case:
.sp
Items are (ucp) and background segments.
This program has not been designed to include these
special cases in items editing session.
.ce
CREATE AND EDIT IMAGE
.sp
.ul
Create An Image
.sp
.pp
In one drawing session, the user is allowed to create
up to five images. On each image he/she can draw up to
five (ucp)s, one background segment and any number of
regular items for a total of up to 20 items on
each page.
.sp
.ul
Edit image
.sp
A. Main Routine
.pp
Subroutine EDIT converses with the user interactively to inquire about a user's need
to issue changes on the current image. If so, the user must identify the item by
inputting its number and the change command. The changed item and updated image
will then be displayed on the screen.
.sp
B. Called Routines
.sp
.nf
LSITEMS- list image items on the input devices screen.
PICKITM- ask user to identify item by inputting its
number.
GCMENU- display image editing commands as follows:
m- move item
e- erase item
a- add item
RDCOMND- read command character and call corresponding
routines as follows:
subroutine MOVITM- erase item from image, redraw only
.fi
.in+25
that part of image that
has overlapped with item, redraw
item in new position and redraw
that part of image that has
overlapped with moved item.
.ti-19
subroutine DELITM- erase item from image, redraw only
part of image that has overlapped
with deleted item, update display
file by erasing segments code,
update segments records where
needed.
.in-25
.sp
EXAMPLE:
.sp
To Edit an image, a menu of commands will be displayed
as follows:
.sp
.nf
m- move item
e- erase item
a- add item
.fi
.sp
Each item will be handled one at a time by specifying
its number and the needed command. The user should be aware
of the following special cases in image editing :
.sp
.nf
1. cannot move a (ucp) or a background segment.
2. cannot move a line that belongs to a (ucp).
3. cannot erase a line that belongs to a (ucp)
without erasing that (ucp) first.
.fi
.sp
.pp
If these special cases are tried by the user, error messages
or warning messages will be displayed on the screen
to inform the user about these situations.
.ce
.sp
SAVE IMAGE AND/OR RECALL SAVED IMAGE
.sp
.ul
Save Image
.sp
A. Main Routine
.pp
Subroutine SAVPAG converses interactively with the user to find out
if the created image is to be saved. If it is, the image must be checked
to see if it is a recalled image that has undergone some changes. If so
, the image is resaved. If not, nothing is done because the image will be
saved automatically, since an image file is designed to be saved after
execution. If it is a new image that has just been created, it will be saved
as a new page.
.sp
B. Called Routines
.sp
.nf
SNPAGE- save new page
RESAVE- resave image
PGDONE- exit graphics mode
NEWPAGE- reinitialize variables and supply a blank page.
.fi
.sp
.ul
Recall Saved Image
.sp
A. Main Routine
.pp
Subroutine RECALL converses interactively with the user to find out if the user
wants to call a previously saved image on the screen. If so, it will
display the image on the screen, edit the image if needed and resave the image again
.sp
B. Called Routines
.sp
.nf
HOWMPG- return the number of saved images
WHICHP- which page need to be recalled
DSIMAGE- display and edit image
FOPEN- open image files
FCLOSE- close image files