v08i017: xfig -- X Drawing Tool, Part08/21

Brian V. Smith envbvs at epb2.lbl.gov
Wed Jul 4 04:00:32 AEST 1990


Submitted-by: envbvs at epb2.lbl.gov (Brian V. Smith)
Posting-number: Volume 8, Issue 17
Archive-name: xfig2.8/part08

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 8 (of 21)."
# Contents:  @figs/house_elev.fig @figs/office.fig @figs/widewatch.fig
#   bound.c intspline.c scale.c
# Wrapped by envbvs at epb2.lbl.gov on Thu Jun 28 08:51:55 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f '@figs/house_elev.fig' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'@figs/house_elev.fig'\"
else
echo shar: Extracting \"'@figs/house_elev.fig'\" \(9063 characters\)
sed "s/^X//" >'@figs/house_elev.fig' <<'END_OF_FILE'
X#FIG 1.4X
X80 2
X1 3 0 1 0 0 0 0 0.000 1 0.000 377 456 3 3 377 456 380 457
X2 2 0 1 0 0 0 0 0.000 0 0
X	 412 397 412 460 425 460 425 397 412 397 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 282 397 282 460 295 460 295 397 282 397 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 459 459 539 459 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 459 449 539 449 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 459 439 539 439 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 459 429 539 429 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 459 419 539 419 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 459 409 539 409 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 459 399 539 399 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 429 459 459 459 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 429 449 459 449 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 429 439 459 439 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 429 429 459 429 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 429 419 459 419 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 429 409 459 409 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 459 409 459 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 449 409 449 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 439 409 439 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 429 409 429 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 419 409 419 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 409 409 409 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 429 399 459 399 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 399 409 399 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 459 279 459 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 449 279 449 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 439 279 439 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 429 279 429 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 299 459 319 459 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 299 449 319 449 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 299 439 319 439 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 299 429 319 429 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 299 419 319 419 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 419 279 419 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 299 409 319 409 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 409 279 409 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 299 399 319 399 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 399 279 399 9999 9999
X2 2 0 2 0 0 0 0 0.000 0 0
X	 409 394 429 394 429 464 409 464 409 394 9999 9999
X2 2 0 2 0 0 0 0 0.000 0 0
X	 279 394 299 394 299 464 279 464 279 394 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 669 379 474 379 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 334 359 369 359 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 369 254 369 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 669 369 449 369 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 349 309 349 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 669 349 394 349 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 369 339 669 339 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 339 339 339 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 239 359 284 359 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 669 359 419 359 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 239 375 239 209 669 209 669 519 239 519 239 394 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 489 389 539 389 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 389 459 389 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 249 389 319 389 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 304 369 399 369 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 279 379 429 379 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 459 389 459 519 9999 9999
X2 3 0 2 0 0 0 0 0.000 0 0
X	 219 399 354 352 484 399 491 385 354 334 213 384 219 399 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 319 519 319 384 389 384 389 519 9999 9999
X2 2 0 2 0 0 0 0 0.000 0 0
X	 539 384 539 469 619 469 619 384 539 384 9999 9999
X2 2 0 2 0 0 0 0 0.000 0 0
X	 319 249 319 314 389 314 389 249 319 249 9999 9999
X2 2 0 2 0 0 0 0 0.000 0 0
X	 519 249 519 314 589 314 589 249 519 249 9999 9999
X2 3 0 2 0 0 0 0 0.000 0 0
X	 219 214 214 198 454 111 695 200 689 214 454 129 219 214 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 469 159 534 159 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 374 159 439 159 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 429 139 479 139 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 399 149 504 149 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 469 169 564 169 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 344 169 439 169 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 469 179 589 179 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 314 179 439 179 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 289 189 619 189 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 259 199 649 199 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 509 669 509 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 499 669 499 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 489 669 489 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 479 669 479 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 469 539 469 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 619 469 669 469 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 619 459 669 459 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 619 449 669 449 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 619 439 669 439 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 619 429 669 429 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 619 419 669 419 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 619 409 669 409 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 619 399 669 399 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 619 389 669 389 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 309 519 309 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 299 519 299 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 289 519 289 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 279 519 279 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 269 519 269 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 389 259 519 259 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 219 669 219 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 229 669 229 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 239 669 239 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 249 669 249 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 319 669 319 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 329 669 329 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 324 389 324 519 384 519 384 389 324 389 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 239 519 669 519 669 554 239 554 239 519 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 544 389 544 424 614 424 614 389 544 389 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 544 400 614 400 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 544 413 614 413 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 558 389 558 424 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 572 389 572 424 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 586 389 586 424 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 600 389 600 424 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 600 429 600 464 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 586 429 586 464 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 572 429 572 464 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 558 429 558 464 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 544 453 614 453 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 544 440 614 440 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 544 429 544 464 614 464 614 429 544 429 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 324 297 384 297 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 369 284 369 309 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 339 284 339 309 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 354 284 354 309 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 324 284 384 284 384 309 324 309 324 284 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 324 254 384 254 384 279 324 279 324 254 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 354 254 354 279 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 339 254 339 279 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 369 254 369 279 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 324 267 384 267 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 524 267 584 267 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 569 254 569 279 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 539 254 539 279 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 554 254 554 279 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 524 254 584 254 584 279 524 279 524 254 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 524 284 584 284 584 309 524 309 524 284 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 554 284 554 309 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 539 284 539 309 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 569 284 569 309 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 524 297 584 297 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 589 259 669 259 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 589 269 669 269 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 589 279 669 279 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 589 289 669 289 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 589 299 669 299 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 589 309 669 309 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 469 319 469 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 479 319 479 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 489 319 489 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 499 319 499 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 509 319 509 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 259 319 259 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 269 319 269 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 279 319 279 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 289 319 289 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 299 319 299 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 239 309 319 309 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 439 154 439 184 469 184 469 154 439 154 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 444 159 464 159 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 444 164 464 164 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 444 169 464 169 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 444 174 464 174 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 444 179 464 179 9999 9999
END_OF_FILE
if test 9063 -ne `wc -c <'@figs/house_elev.fig'`; then
    echo shar: \"'@figs/house_elev.fig'\" unpacked with wrong size!
fi
# end of '@figs/house_elev.fig'
fi
if test -f '@figs/office.fig' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'@figs/office.fig'\"
else
echo shar: Extracting \"'@figs/office.fig'\" \(9144 characters\)
sed "s/^X//" >'@figs/office.fig' <<'END_OF_FILE'
X#FIG 1.4X
X80 2
X2 3 0 1 0 0 0 9 0.000 0 0
X	 646 105 641 108 636 105 636 93 641 90 646 93 646 105 9999 9999
X2 3 0 1 0 0 0 9 0.000 0 0
X	 379 501 374 504 369 501 369 489 374 486 379 489 379 501 9999 9999
X2 3 0 1 0 0 0 9 0.000 0 0
X	 313 502 308 505 303 502 303 490 308 487 313 490 313 502 9999 9999
X2 3 0 1 0 0 0 9 0.000 0 0
X	 277 106 272 109 267 106 267 94 272 91 277 94 277 106 9999 9999
X2 3 0 1 0 0 0 9 0.000 0 0
X	 710 80 705 83 700 80 700 68 705 65 710 68 710 80 9999 9999
X2 3 0 1 0 0 0 9 0.000 0 0
X	 414 100 409 103 404 100 404 88 409 85 414 88 414 100 9999 9999
X2 3 0 1 0 0 0 9 0.000 0 0
X	 348 124 343 127 338 124 338 112 343 109 348 112 348 124 9999 9999
X2 3 0 1 0 0 0 9 0.000 0 0
X	 459 502 462 507 459 512 447 512 444 507 447 502 459 502 9999 9999
X2 3 0 1 0 0 0 9 0.000 0 0
X	 509 502 512 507 509 512 497 512 494 507 497 502 509 502 9999 9999
X2 3 0 1 0 0 0 9 0.000 0 0
X	 59 54 62 59 59 64 47 64 44 59 47 54 59 54 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 670 221 688 221 688 231 670 231 670 221 9999 9999
X2 4 0 1 0 0 4 0 0.000 0 0
X	 549 79 549 69 564 69 564 79 549 79 9999 9999
X2 2 0 1 0 0 0 5 0.000 0 0
X	 50 580 64 580 64 585 50 585 50 580 9999 9999
X2 2 0 1 0 0 0 5 0.000 0 0
X	 531 62 545 62 545 67 531 67 531 62 9999 9999
X2 2 0 2 0 0 0 0 0.000 0 0
X	 428 44 328 44 328 144 428 144 428 44 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 234 60 234 85 244 85 244 60 234 60 9999 9999
X2 3 0 1 0 0 0 9 0.000 0 0
X	 63 555 66 560 63 565 51 565 48 560 51 555 63 555 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 549 79 564 79 564 87 549 87 549 79 9999 9999
X2 1 0 5 0 0 0 0 0.000 0 0
X	 49 304 89 304 9999 9999
X2 1 0 3 0 0 0 0 0.000 0 0
X	 49 319 89 319 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 49 334 89 334 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 49 349 89 349 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 438 115 438 134 447 134 447 115 438 115 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 433 150 433 179 444 179 444 150 433 150 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 434 199 444 199 444 209 434 209 434 199 9999 9999
X2 1 0 5 0 0 0 0 0.000 0 0
X	 794 414 794 534 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 789 404 799 404 799 414 789 414 789 404 9999 9999
X2 1 0 5 0 0 0 0 0.000 0 0
X	 794 209 794 404 9999 9999
X2 2 0 2 0 0 0 0 0.000 0 0
X	 28 44 128 44 128 144 28 144 28 44 9999 9999
X2 2 0 2 0 0 0 0 0.000 0 0
X	 228 44 128 44 128 144 228 144 228 44 9999 9999
X2 2 0 2 0 0 0 0 0.000 0 0
X	 228 44 328 44 328 144 228 144 228 44 9999 9999
X2 2 0 2 0 0 0 0 0.000 0 0
X	 428 44 528 44 528 144 428 144 428 44 9999 9999
X2 2 0 2 0 0 0 0 0.000 0 0
X	 528 44 578 44 578 144 528 144 528 44 9999 9999
X2 2 0 2 0 0 0 0 0.000 0 0
X	 628 44 578 44 578 144 628 144 628 44 9999 9999
X2 2 0 2 0 0 0 0 0.000 0 0
X	 628 44 768 44 768 244 628 244 628 44 9999 9999
X2 2 0 2 0 0 0 0 0.000 0 0
X	 718 44 768 44 768 124 718 124 718 44 9999 9999
X2 1 0 3 0 0 0 0 0.000 0 0
X	 444 204 789 204 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 789 199 799 199 799 209 789 209 789 199 9999 9999
X2 1 0 5 0 0 0 0 0.000 0 0
X	 794 199 794 9 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 234 199 244 199 244 209 234 209 234 199 9999 9999
X2 1 0 3 0 0 0 0 0.000 0 0
X	 234 204 39 204 9999 9999
X2 1 0 3 0 0 0 0 0.000 0 0
X	 434 204 244 204 9999 9999
X2 4 0 1 0 0 4 0 0.000 0 0
X	 429 84 429 99 439 99 439 84 429 84 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 439 84 439 99 448 99 448 84 439 84 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 205 47 205 47 205 47 205 47 205 47 9999 9999
X2 4 0 1 0 0 4 0 0.000 0 0
X	 764 89 754 89 754 74 764 74 764 89 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 754 74 754 89 746 89 746 74 754 74 9999 9999
X2 4 0 1 0 0 4 0 0.000 0 0
X	 599 114 599 104 614 104 614 114 599 114 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 614 104 599 104 599 96 614 96 614 104 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 51 396 51 421 61 421 61 396 51 396 9999 9999
X2 4 0 1 0 0 4 0 0.000 0 0
X	 63 369 63 379 48 379 48 369 63 369 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 48 379 63 379 63 387 48 387 48 379 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 51 457 51 432 61 432 61 457 51 457 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 52 471 62 471 62 481 52 481 52 471 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 52 493 62 493 62 503 52 503 52 493 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 52 514 62 514 62 524 52 524 52 514 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 614 454 624 454 624 464 614 464 614 454 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 614 469 589 469 589 479 614 479 614 469 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 474 469 474 524 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 444 469 514 469 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 379 469 389 469 389 524 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 324 469 324 524 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 289 469 354 469 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 539 469 539 524 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 534 444 634 444 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 289 444 504 444 504 404 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 264 444 204 444 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 264 524 264 479 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 264 434 264 454 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 264 364 264 409 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 59 249 59 264 74 264 74 249 59 249 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 394 364 394 444 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 289 364 289 419 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 339 364 339 419 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 264 364 284 349 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 264 364 204 364 204 524 634 524 634 364 529 364 509 349 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 504 364 289 364 9999 9999
X3 0 0 1 0 0 0 0 0.000 0 0
X	 751 89 754 234 681 239 679 231 9999 9999
X3 0 0 1 0 0 0 0 0.000 0 0
X	 538 67 538 82 549 83 9999 9999
X3 0 0 1 0 0 0 0 0.000 0 0
X	 705 65 705 15 475 10 445 54 444 84 9999 9999
X3 0 0 1 0 0 0 0 0.000 0 0
X	 414 94 422 94 424 109 445 109 444 99 9999 9999
X3 0 0 1 0 0 0 0 0.000 0 0
X	 244 70 317 72 312 12 640 19 641 91 9999 9999
X3 0 0 1 0 0 0 0 0.000 0 0
X	 244 77 309 78 309 118 338 118 9999 9999
X3 0 0 1 0 0 0 0 0.000 0 0
X	 244 63 258 63 256 17 53 23 54 54 9999 9999
X3 0 0 1 0 0 0 0 0.000 0 0
X	 244 82 259 83 258 100 267 100 9999 9999
X3 0 0 1 0 0 0 0 0.000 0 0
X	 611 479 605 552 452 563 331 557 339 498 313 496 9999 9999
X3 0 0 1 0 0 0 0 0.000 0 0
X	 605 479 599 545 400 551 405 495 379 495 9999 9999
X3 0 0 1 0 0 0 0 0.000 0 0
X	 599 479 595 534 452 535 453 512 9999 9999
X3 0 0 1 0 0 0 0 0.000 0 0
X	 593 479 586 517 506 518 503 512 9999 9999
X3 0 0 2 0 0 0 0 0.000 0 0
X	 444 177 472 181 467 255 74 254 9999 9999
X3 0 0 2 0 0 0 0 0.000 0 0
X	 444 154 469 146 469 127 447 123 9999 9999
X3 0 0 2 0 0 0 0 0.000 0 0
X	 448 92 490 99 490 145 444 159 9999 9999
X3 0 0 3 0 0 0 0 0.000 0 0
X	 439 179 435 188 442 194 439 199 9999 9999
X3 0 0 2 0 0 0 0 0.000 0 0
X	 444 173 650 175 690 124 727 79 746 82 9999 9999
X3 0 0 2 0 0 0 0 0.000 0 0
X	 444 169 520 160 556 129 586 86 601 85 607 96 9999 9999
X3 0 0 2 0 0 0 0 0.000 0 0
X	 556 87 544 114 498 151 444 164 9999 9999
X3 0 0 3 0 0 0 0 0.000 0 0
X	 239 84 256 126 227 158 239 184 239 199 9999 9999
X3 0 0 2 0 0 0 0 0.000 0 0
X	 789 409 719 399 689 464 624 459 9999 9999
X3 0 0 3 0 0 0 0 0.000 0 0
X	 614 459 601 458 599 469 9999 9999
X4 0 0 12 0 0 0 0.000 1 9 30 479 484 x6468
X4 0 0 12 0 0 0 0.000 1 9 30 434 484 x7476
X4 0 0 12 0 0 0 0.000 1 9 30 394 484 x6488
X4 0 0 12 0 0 0 0.000 1 9 30 329 484 x7472
X4 0 0 12 0 0 0 0.000 1 9 12 302 517 03
X4 0 0 12 0 0 0 0.000 1 9 12 370 517 02
X4 0 0 12 0 0 0 0.000 1 9 12 447 498 01
X4 0 0 12 0 0 0 0.000 1 9 18 495 497 CON
X4 0 0 12 0 0 0 0.000 1 9 12 692 229 03
X4 0 0 12 0 0 0 0.000 1 9 36 656 217 Diablo
X4 0 0 12 0 0 0 0.000 1 9 12 535 93 02
X4 0 0 12 0 0 0 0.000 1 9 30 78 588 Modem
X4 0 0 12 0 0 0 0.000 1 9 12 403 116 02
X4 0 0 12 0 0 0 0.000 1 9 12 651 103 01
X4 0 0 12 0 0 0 0.000 1 9 12 48 77 03
X4 0 0 12 0 0 0 0.000 1 9 12 338 106 00
X4 0 0 12 0 0 0 0.000 1 9 18 260 122 CON
X4 0 0 12 0 0 0 0.000 1 9 12 685 78 03
X4 0 0 12 0 0 0 0.000 1 9 48 76 564 Terminal
X4 0 0 12 0 0 0 0.000 1 9 78 99 349 Dumb terminal
X4 0 0 12 0 0 0 0.000 1 9 84 99 334 Thinnet subnet
X4 0 0 12 0 0 0 0.000 1 9 90 99 319 Thicknet subnet
X4 0 0 12 0 0 0 0.000 1 9 78 99 304 Main Backbone
X4 0 0 12 0 0 0 0.000 1 9 12 452 120 AT
X4 0 0 12 0 0 0 0.000 1 9 6 779 404 T
X4 0 0 12 0 0 0 0.000 1 9 12 406 169 DM
X4 0 0 12 0 0 0 0.000 1 9 24 66 59 3088
X4 0 0 12 0 0 0 0.000 1 9 24 163 59 3086
X4 0 0 12 0 0 0 0.000 1 9 24 263 59 3084
X4 0 0 12 0 0 0 0.000 1 9 24 363 59 3082
X4 0 0 12 0 0 0 0.000 1 9 24 463 59 3080
X4 0 0 12 0 0 0 0.000 1 9 24 542 59 3078
X4 0 0 12 0 0 0 0.000 1 9 24 588 59 3076
X4 0 0 12 0 0 0 0.000 1 9 24 658 59 3074
X4 0 0 12 0 0 0 0.000 1 9 30 728 59 3074A
X4 0 0 12 0 0 0 0.000 1 9 6 779 194 B
X4 0 0 12 0 0 0 0.000 1 9 6 224 199 T
X4 0 0 12 0 0 0 0.000 1 9 6 424 199 T
X4 0 0 12 0 0 0 0.000 1 9 90 78 388 Vaxstation 2000
X4 0 0 12 0 0 0 0.000 1 9 78 79 416 Vaxstation II
X4 0 0 12 0 0 0 0.000 1 9 12 26 449 DM
X4 0 0 12 0 0 0 0.000 1 9 30 78 448 DEMPR
X4 0 0 12 0 0 0 0.000 1 9 6 35 480 T
X4 0 0 12 0 0 0 0.000 1 9 60 76 479 Tranceiver
X4 0 0 12 0 0 0 0.000 1 9 6 35 502 B
X4 0 0 12 0 0 0 0.000 1 9 12 32 523 Th
X4 0 0 12 0 0 0 0.000 1 11 36 76 501 Bridge
X4 0 0 12 0 0 0 0.000 1 10 84 76 538 to Thinnet
X4 0 0 12 0 0 0 0.000 1 10 84 76 523 Xceiver Thicknet
X4 0 0 12 0 0 0 0.000 1 9 12 597 455 Th
X4 0 0 12 0 0 0 0.000 1 9 48 42 244 Sun 3/60
END_OF_FILE
echo shar: 51 control characters may be missing from \"'@figs/office.fig'\"
if test 9144 -ne `wc -c <'@figs/office.fig'`; then
    echo shar: \"'@figs/office.fig'\" unpacked with wrong size!
fi
# end of '@figs/office.fig'
fi
if test -f '@figs/widewatch.fig' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'@figs/widewatch.fig'\"
else
echo shar: Extracting \"'@figs/widewatch.fig'\" \(8647 characters\)
sed "s/^X//" >'@figs/widewatch.fig' <<'END_OF_FILE'
X#FIG 1.4X
X80 2
X1 4 0 1 0 0 0 0 0.000 1 0.000 180 334 15 8 167 334 194 334
X1 4 0 3 0 0 0 21 0.000 1 0.000 180 334 5 3 176 334 185 334
X2 3 0 1 0 0 0 21 0.000 0 0
X	 171 323 147 300 149 298 152 298 171 323 9999 9999
X2 4 0 1 0 0 5 0 0.000 0 0
X	 615 254 615 274 637 274 637 254 615 254 9999 9999
X2 4 0 1 0 0 5 0 0.000 0 0
X	 615 414 615 434 637 434 637 414 615 414 9999 9999
X2 4 0 1 0 0 5 0 0.000 0 0
X	 10 414 10 434 32 434 32 414 10 414 9999 9999
X2 1 0 3 0 0 0 0 0.000 0 0
X	 388 379 388 384 9999 9999
X2 1 0 3 0 0 0 0 0.000 0 0
X	 388 349 388 354 9999 9999
X2 3 0 1 0 0 0 21 0.000 0 0
X	 555 372 552 375 552 397 555 400 559 397 559 375 555 372 9999 9999
X2 3 0 1 0 0 0 21 0.000 0 0
X	 555 340 552 343 552 365 555 368 559 365 559 343 555 340 9999 9999
X2 3 0 1 0 0 0 21 0.000 0 0
X	 555 370 550 368 510 368 504 370 510 372 550 372 555 370 9999 9999
X2 3 0 1 0 0 0 21 0.000 0 0
X	 468 400 462 398 422 398 417 400 422 402 462 402 468 400 9999 9999
X2 3 0 1 0 0 0 21 0.000 0 0
X	 415 371 411 374 411 396 415 399 419 396 419 374 415 371 9999 9999
X2 3 0 1 0 0 0 21 0.000 0 0
X	 470 340 466 343 466 365 470 368 473 365 473 343 470 340 9999 9999
X2 3 0 1 0 0 0 21 0.000 0 0
X	 466 339 460 337 420 337 415 339 420 341 460 341 466 339 9999 9999
X2 3 0 1 0 0 0 21 0.000 0 0
X	 369 371 366 374 366 396 369 399 373 396 373 374 369 371 9999 9999
X2 3 0 1 0 0 0 21 0.000 0 0
X	 369 339 366 342 366 364 369 367 373 364 373 342 369 339 9999 9999
X2 3 0 1 0 0 0 21 0.000 0 0
X	 466 369 460 367 420 367 415 369 420 371 460 371 466 369 9999 9999
X2 3 0 1 0 0 0 21 0.000 0 0
X	 315 371 311 374 311 396 315 399 318 396 318 374 315 371 9999 9999
X2 3 0 1 0 0 0 21 0.000 0 0
X	 315 339 311 342 311 364 315 367 318 364 318 342 315 339 9999 9999
X2 3 0 1 0 0 0 21 0.000 0 0
X	 504 340 501 343 501 365 504 368 508 365 508 343 504 340 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 17 253 17 274 32 274 32 253 17 253 9999 9999
X2 1 0 1 0 0 0 21 0.000 0 0
X	 96 334 123 334 9999 9999
X2 1 0 1 0 0 0 21 0.000 0 0
X	 269 334 242 334 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 178 384 178 399 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 178 259 178 274 9999 9999
X2 3 0 1 0 0 0 21 0.000 0 0
X	 194 344 240 372 238 375 233 374 194 344 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 508 303 532 303 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 510 281 535 281 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 513 258 537 258 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 539 282 535 302 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 543 259 539 279 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 506 282 502 302 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 510 259 506 279 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 479 282 475 302 9999 9999
X2 1 0 2 0 0 0 0 0.000 0 0
X	 482 259 479 279 9999 9999
X2 4 0 1 0 0 7 0 0.000 0 0
X	 287 249 287 409 570 409 570 249 287 249 9999 9999
X2 4 0 1 0 0 7 0 0.000 0 0
X	 78 249 78 409 287 409 287 249 78 249 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 251 414 68 414 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 333 414 251 414 251 449 333 449 333 414 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 333 414 415 414 415 449 333 449 333 414 9999 9999
X2 2 0 1 0 0 0 0 0.000 0 0
X	 497 414 415 414 415 449 497 449 497 414 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 579 414 497 414 9999 9999
X2 4 0 2 0 0 8 0 0.000 0 0
X	 68 244 68 449 579 449 579 244 68 244 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 205 234 543 234 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 205 229 543 229 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 205 224 543 224 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 205 219 543 219 9999 9999
X2 1 0 1 0 0 0 0 0.000 0 0
X	 205 214 543 214 9999 9999
X2 3 0 2 0 0 0 0 0.000 0 0
X	 87 209 68 229 78 239 570 239 579 229 561 209 87 209 9999 9999
X2 3 0 2 0 0 0 0 0.000 0 0
X	 78 204 50 234 50 454 78 484 570 484 597 454 597 234 570 204 78 204 9999 9999
X2 3 0 3 0 0 0 0 0.000 0 0
X	 68 194 32 234 32 454 68 494 579 494 615 454 615 234 579 194 68 194 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 87 194 87 179 233 179 233 159 269 159 269 179 305 179 305 159 342 159 342 179 378 179 378 159 415 159 415 179 561 179 561 194 87 194 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 96 174 233 174 233 139 114 139 96 174 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 233 134 233 99 136 99 118 134 233 134 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 233 94 233 59 149 59 138 94 233 94 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 150 54 233 54 233 19 156 19 150 54 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 233 119 233 159 269 159 269 119 233 119 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 269 139 269 179 305 179 305 139 269 139 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 378 -1 378 39 415 39 415 -1 378 -1 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 305 119 305 159 342 159 342 119 305 119 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 269 99 269 139 305 139 305 99 269 99 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 233 79 233 119 269 119 269 79 233 79 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 269 59 269 99 305 99 305 59 269 59 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 305 79 305 119 342 119 342 79 305 79 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 342 139 342 179 378 179 378 139 342 139 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 342 99 342 139 378 139 378 99 342 99 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 378 119 378 159 415 159 415 119 378 119 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 378 79 378 119 415 119 415 79 378 79 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 342 59 342 99 378 99 378 59 342 59 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 305 39 305 79 342 79 342 39 305 39 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 233 39 233 79 269 79 269 39 233 39 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 269 19 269 59 305 59 305 19 269 19 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 233 -1 233 39 269 39 269 -1 233 -1 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 342 19 342 59 378 59 378 19 342 19 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 305 -1 305 39 342 39 342 -1 305 -1 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 378 39 378 79 415 79 415 39 378 39 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 552 174 415 174 415 139 533 139 552 174 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 415 134 415 99 512 99 530 134 415 134 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 415 94 415 59 499 59 510 94 415 94 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 497 54 415 54 415 19 491 19 497 54 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 497 634 415 634 415 669 491 669 497 634 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 415 594 415 629 499 629 510 594 415 594 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 415 554 415 589 512 589 530 554 415 554 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 552 514 415 514 415 549 533 549 552 514 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 378 649 378 609 415 609 415 649 378 649 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 305 689 305 649 342 649 342 689 305 689 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 342 669 342 629 378 629 378 669 342 669 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 233 689 233 649 269 649 269 689 233 689 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 269 669 269 629 305 629 305 669 269 669 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 233 649 233 609 269 609 269 649 233 649 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 305 649 305 609 342 609 342 649 305 649 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 342 629 342 589 378 589 378 629 342 629 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 378 609 378 569 415 569 415 609 378 609 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 378 569 378 529 415 529 415 569 378 569 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 342 589 342 549 378 549 378 589 342 589 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 342 549 342 509 378 509 378 549 342 549 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 305 609 305 569 342 569 342 609 305 609 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 269 629 269 589 305 589 305 629 269 629 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 233 609 233 569 269 569 269 609 233 609 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 269 589 269 549 305 549 305 589 269 589 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 305 569 305 529 342 529 342 569 305 569 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 378 689 378 649 415 649 415 689 378 689 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 269 549 269 509 305 509 305 549 269 549 9999 9999
X2 2 0 1 0 0 0 4 0.000 0 0
X	 233 569 233 529 269 529 269 569 233 569 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 150 634 233 634 233 669 156 669 150 634 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 233 594 233 629 149 629 138 594 233 594 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 233 554 233 589 136 589 118 554 233 554 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 96 514 233 514 233 549 114 549 96 514 9999 9999
X2 3 0 1 0 0 0 4 0.000 0 0
X	 87 494 87 509 233 509 233 529 269 529 269 509 305 509 305 529 342 529 342 509 378 509 378 529 415 529 415 509 561 509 561 494 87 494 9999 9999
X4 0 0 12 0 0 0 0.000 1 9 12 324 284 AM
X4 1 0 16 0 0 0 0.000 1 11 34 533 434 CHR
X4 1 0 16 0 0 0 0.000 1 11 36 460 434 TMR
X4 1 0 16 0 0 0 0.000 1 11 46 378 434 DUAL
X4 1 0 16 0 0 0 0.000 1 11 37 296 434 ALM
X4 0 0 18 0 0 0 0.000 1 13 57 87 229 CASIO
END_OF_FILE
echo shar: 6 control characters may be missing from \"'@figs/widewatch.fig'\"
if test 8647 -ne `wc -c <'@figs/widewatch.fig'`; then
    echo shar: \"'@figs/widewatch.fig'\" unpacked with wrong size!
fi
# end of '@figs/widewatch.fig'
fi
if test -f 'bound.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bound.c'\"
else
echo shar: Extracting \"'bound.c'\" \(9245 characters\)
sed "s/^X//" >'bound.c' <<'END_OF_FILE'
X/* 
X *	FIG : Facility for Interactive Generation of figures
X *
X *	Copyright (c) 1985 by Supoj Sutanthavibul (supoj at sally.UTEXAS.EDU)
X *	January 1985.
X *	1st revision : August 1985.
X *	2nd revision : April 1988.
X *
X *	%W%	%G%
X*/
X#include "fig.h"
X#include "object.h"
X
X#define		Ninety_deg		M_PI_2
X#define		One_eighty_deg		M_PI
X#define		Two_seventy_deg		(M_PI + M_PI_2)
X#define		Three_sixty_deg		(M_PI + M_PI)
X#define		round(x)		((int)((x) + .5))
X#define		half(z1 ,z2)		((z1+z2)/2.0)
X#define		max(a, b)		(((a) > (b)) ? (a) : (b))
X#define		min(a, b)		(((a) < (b)) ? (a) : (b))
X
Xarc_bound(arc, xmin, ymin, xmax, ymax)
XF_arc	*arc;
Xint	*xmin, *ymin, *xmax, *ymax;
X{
X	float	alpha, beta;
X	double	dx, dy, radius;
X	int	bx, by, sx, sy;
X
X	dx = arc->point[0].x - arc->center.x;
X	dy = arc->center.y - arc->point[0].y;
X	alpha = atan2(dy, dx);
X	if (alpha < 0.0) alpha += Three_sixty_deg;
X	/* compute_angle returns value between 0 to 2PI */
X	
X	radius = sqrt((double)(dx * dx + dy * dy));
X
X	dx = arc->point[2].x - arc->center.x;
X	dy = arc->center.y - arc->point[2].y;
X	beta = atan2(dy, dx);
X	if (beta < 0.0) beta += Three_sixty_deg;
X
X	bx = max(arc->point[0].x, arc->point[1].x);
X	bx = max(arc->point[2].x, bx);
X	by = max(arc->point[0].y, arc->point[1].y);
X	by = max(arc->point[2].y, by);
X	sx = min(arc->point[0].x, arc->point[1].x);
X	sx = min(arc->point[2].x, sx);
X	sy = min(arc->point[0].y, arc->point[1].y);
X	sy = min(arc->point[2].y, sy);
X
X	if (arc->direction == 1) { /* counter clockwise */
X	    if (alpha > beta) {
X		if (alpha <= 0 || 0 <= beta)
X		    bx = (int)(arc->center.x + radius + 1.0);
X		if (alpha <= Ninety_deg || Ninety_deg <= beta)
X		    sy = (int)(arc->center.y - radius - 1.0);
X		if (alpha <= One_eighty_deg || One_eighty_deg <= beta)
X		    sx = (int)(arc->center.x - radius - 1.0);
X		if (alpha <= Two_seventy_deg || Two_seventy_deg <= beta)
X		    by = (int)(arc->center.y + radius + 1.0);
X		}
X	    else {
X		if (0 <= beta && alpha <= 0)
X		    bx = (int)(arc->center.x + radius + 1.0);
X		if (Ninety_deg <= beta && alpha <= Ninety_deg)
X		    sy = (int)(arc->center.y - radius - 1.0);
X		if (One_eighty_deg <= beta && alpha <= One_eighty_deg)
X		    sx = (int)(arc->center.x - radius - 1.0);
X		if (Two_seventy_deg <= beta && alpha <= Two_seventy_deg)
X		    by = (int)(arc->center.y + radius + 1.0);
X		}
X	    }
X	else {	/* clockwise	*/
X	    if (alpha > beta) {
X		if (beta <= 0 && 0 <= alpha)
X		    bx = (int)(arc->center.x + radius + 1.0);
X		if (beta <= Ninety_deg && Ninety_deg <= alpha)
X		    sy = (int)(arc->center.y - radius - 1.0);
X		if (beta <= One_eighty_deg && One_eighty_deg <= alpha)
X		    sx = (int)(arc->center.x - radius - 1.0);
X		if (beta <= Two_seventy_deg && Two_seventy_deg <= alpha)
X		    by = (int)(arc->center.y + radius + 1.0);
X		}
X	    else {
X		if (0 <= alpha || beta <= 0)
X		    bx = (int)(arc->center.x + radius + 1.0);
X		if (Ninety_deg <= alpha || beta <= Ninety_deg)
X		    sy = (int)(arc->center.y - radius - 1.0);
X		if (One_eighty_deg <= alpha || beta <= One_eighty_deg)
X		    sx = (int)(arc->center.x - radius - 1.0);
X		if (Two_seventy_deg <= alpha || beta <= Two_seventy_deg)
X		    by = (int)(arc->center.y + radius + 1.0);
X		}
X	    }
X	*xmax = bx; *ymax = by;
X	*xmin = sx; *ymin = sy;
X	}
X
Xcompound_bound(compound, xmin, ymin, xmax, ymax)
XF_compound	*compound;
Xint		*xmin, *ymin, *xmax, *ymax;
X{
X	F_arc		*a;
X	F_ellipse	*e;
X	F_compound	*c;
X	F_spline	*s;
X	F_line		*l;
X	F_text		*t;
X	int		bx, by, sx, sy, first = 1;
X	int		llx, lly, urx, ury;
X
X	for (a = compound->arcs; a != NULL; a = a->next) {
X	    arc_bound(a, &sx, &sy, &bx, &by);
X	    if (first) {
X		first = 0;
X		llx = sx; lly = sy;
X		urx = bx; ury = by;
X		}
X	    else {
X		llx = min(llx, sx); lly = min(lly, sy);
X		urx = max(urx, bx); ury = max(ury, by);
X		}
X	    }
X
X	for (c = compound->compounds; c != NULL; c = c->next) {
X	    compound_bound(c, &sx, &sy, &bx, &by);
X	    if (first) {
X		first = 0;
X		llx = sx; lly = sy;
X		urx = bx; ury = by;
X		}
X	    else {
X		llx = min(llx, sx); lly = min(lly, sy);
X		urx = max(urx, bx); ury = max(ury, by);
X		}
X	    }
X
X	for (e = compound->ellipses; e != NULL; e = e->next) {
X	    ellipse_bound(e, &sx, &sy, &bx, &by);
X	    if (first) {
X		first = 0;
X		llx = sx; lly = sy;
X		urx = bx; ury = by;
X		}
X	    else {
X		llx = min(llx, sx); lly = min(lly, sy);
X		urx = max(urx, bx); ury = max(ury, by);
X		}
X	    }
X
X	for (l = compound->lines; l != NULL; l = l->next) {
X	    line_bound(l, &sx, &sy, &bx, &by);
X	    if (first) {
X		first = 0;
X		llx = sx; lly = sy;
X		urx = bx; ury = by;
X		}
X	    else {
X		llx = min(llx, sx); lly = min(lly, sy);
X		urx = max(urx, bx); ury = max(ury, by);
X		}
X	    }
X
X	for (s = compound->splines; s != NULL; s = s->next) {
X	    spline_bound(s, &sx, &sy, &bx, &by);
X	    if (first) {
X		first = 0;
X		llx = sx; lly = sy;
X		urx = bx; ury = by;
X		}
X	    else {
X		llx = min(llx, sx); lly = min(lly, sy);
X		urx = max(urx, bx); ury = max(ury, by);
X		}
X	    }
X
X	for (t = compound->texts; t != NULL; t = t->next) {
X	    text_bound(t, &sx, &sy, &bx, &by);
X	    if (first) {
X		first = 0;
X		llx = sx; lly = sy;
X		urx = bx; ury = by;
X		}
X	    else {
X		llx = min(llx, sx); lly = min(lly, sy);
X		urx = max(urx, bx); ury = max(ury, by);
X		}
X	    }
X
X	*xmin = llx; *ymin = lly;
X	*xmax = urx; *ymax = ury;
X	}
X
Xellipse_bound(e, xmin, ymin, xmax, ymax)
XF_ellipse	*e;
Xint		*xmin, *ymin, *xmax, *ymax;
X{
X	*xmin = e->center.x - e->radiuses.x;
X	*ymin = e->center.y - e->radiuses.y;
X	*xmax = e->center.x + e->radiuses.x;
X	*ymax = e->center.y + e->radiuses.y;
X	}
X
Xline_bound(l, xmin, ymin, xmax, ymax)
XF_line	*l;
Xint	*xmin, *ymin, *xmax, *ymax;
X{
X	points_bound(l->points, xmin, ymin, xmax, ymax);
X	}
X
Xspline_bound(s, xmin, ymin, xmax, ymax)
XF_spline	*s;
Xint		*xmin, *ymin, *xmax, *ymax;
X{
X	if (int_spline(s)) {
X	    int_spline_bound(s, xmin, ymin, xmax, ymax);
X	    }
X	else {
X	    normal_spline_bound(s, xmin, ymin, xmax, ymax);
X	    }
X	}
X
Xint_spline_bound(s, xmin, ymin, xmax, ymax)
XF_spline	*s;
Xint		*xmin, *ymin, *xmax, *ymax;
X{
X	F_point		*p1, *p2;
X	F_control	*cp1, *cp2;
X	float		x0, y0, x1, y1, x2, y2, x3, y3, sx1, sy1, sx2, sy2;
X	float		tx, ty, tx1, ty1, tx2, ty2;
X	float		sx, sy, bx, by;
X
X	p1 = s->points;
X	sx = bx = p1->x;
X	sy = by = p1->y;
X	cp1 = s->controls;
X	for (p2 = p1->next, cp2 = cp1->next; p2 != NULL;
X		p1 = p2, cp1 = cp2, p2 = p2->next, cp2 = cp2->next) {
X	    x0 = p1->x; y0 = p1->y;
X	    x1 = cp1->rx; y1 = cp1->ry;
X	    x2 = cp2->lx; y2 = cp2->ly;
X	    x3 = p2->x; y3 = p2->y;
X	    tx = half(x1, x2); ty = half(y1, y2);
X	    sx1 = half(x0, x1); sy1 = half(y0, y1);
X	    sx2 = half(sx1, tx); sy2 = half(sy1, ty);
X	    tx2 = half(x2, x3); ty2 = half(y2, y3);
X	    tx1 = half(tx2, tx); ty1 = half(ty2, ty);
X
X	    sx = min(x0, sx); sy = min(y0, sy);
X	    sx = min(sx1, sx); sy = min(sy1, sy);
X	    sx = min(sx2, sx); sy = min(sy2, sy);
X	    sx = min(tx1, sx); sy = min(ty1, sy);
X	    sx = min(tx2, sx); sy = min(ty2, sy);
X	    sx = min(x3, sx); sy = min(y3, sy);
X
X	    bx = max(x0, bx); by = max(y0, by);
X	    bx = max(sx1, bx); by = max(sy1, by);
X	    bx = max(sx2, bx); by = max(sy2, by);
X	    bx = max(tx1, bx); by = max(ty1, by);
X	    bx = max(tx2, bx); by = max(ty2, by);
X	    bx = max(x3, bx); by = max(y3, by);
X	    }
X	*xmin = round(sx);
X	*ymin = round(sy);
X	*xmax = round(bx);
X	*ymax = round(by);
X	}
X
Xnormal_spline_bound(s, xmin, ymin, xmax, ymax)
XF_spline	*s;
Xint		*xmin, *ymin, *xmax, *ymax;
X{
X	F_point	*p;
X	float	cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4;
X	float	x1, y1, x2, y2, sx, sy, bx, by;
X	float	px, py, qx, qy;
X
X	p = s->points;
X	x1 = p->x;  y1 = p->y;
X	p = p->next;
X	x2 = p->x;  y2 = p->y;
X	cx1 = (x1 + x2) / 2.0;   cy1 = (y1 + y2) / 2.0;
X	cx2 = (cx1 + x2) / 2.0;  cy2 = (cy1 + y2) / 2.0;
X	if (closed_spline(s)) {
X	    x1 = (cx1 + x1) / 2.0;
X	    y1 = (cy1 + y1) / 2.0;
X	    }
X	sx = min(x1, cx2); sy = min(y1, cy2);
X	bx = max(x1, cx2); by = max(y1, cy2);
X
X	for (p = p->next; p != NULL; p = p->next) {
X	    x1 = x2;  y1 = y2;
X	    x2 = p->x;  y2 = p->y;
X	    cx4 = (x1 + x2) / 2.0; cy4 = (y1 + y2) / 2.0;
X	    cx3 = (x1 + cx4) / 2.0; cy3 = (y1 + cy4) / 2.0;
X	    cx2 = (cx4 + x2) / 2.0;  cy2 = (cy4 + y2) / 2.0;
X
X	    px = min(cx2, cx3); py = min(cy2, cy3);
X	    qx = max(cx2, cx3); qy = max(cy2, cy3);
X
X	    sx = min(sx, px); sy = min(sy, py);
X	    bx = max(bx, qx); by = max(by, qy);
X	    }
X	if (closed_spline(s)) {
X	    *xmin = round(sx); *ymin = round(sy);
X	    *xmax = round(bx); *ymax = round(by);
X	    }
X	else {
X	    *xmin = round(min(sx, x2)); *ymin = round(min(sy, y2));
X	    *xmax = round(max(bx, x2)); *ymax = round(max(by, y2));
X	    }
X	}
X
Xtext_bound(t, xmin, ymin, xmax, ymax)
XF_text	*t;
Xint	*xmin, *ymin, *xmax, *ymax;
X{
X	*xmin = t->base_x;
X	*ymin = t->base_y - t->height;
X	*xmax = t->base_x + t->length;
X	*ymax = t->base_y;
X
X	if(t->type == T_RIGHT_JUSTIFIED) {
X	    *xmin -= t->length;
X	    *xmax -= t->length;
X	    }
X	else if(t->type == T_CENTER_JUSTIFIED) {
X	    *xmin -= t->length / 2;
X	    *xmax -= t->length / 2;
X
X	    }
X	}
X
Xpoints_bound(points, xmin, ymin, xmax, ymax)
XF_point	*points;
Xint	*xmin, *ymin, *xmax, *ymax;
X{
X	int	bx, by, sx, sy;
X	F_point	*p;
X
X	bx = sx = points->x; by = sy = points->y;
X	for (p = points->next; p != NULL; p = p->next) {
X	    sx = min(sx, p->x); sy = min(sy, p->y);
X	    bx = max(bx, p->x); by = max(by, p->y);
X	    }
X	*xmin = sx; *ymin = sy;
X	*xmax = bx; *ymax = by;
X	}
END_OF_FILE
if test 9245 -ne `wc -c <'bound.c'`; then
    echo shar: \"'bound.c'\" unpacked with wrong size!
fi
# end of 'bound.c'
fi
if test -f 'intspline.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'intspline.c'\"
else
echo shar: Extracting \"'intspline.c'\" \(8264 characters\)
sed "s/^X//" >'intspline.c' <<'END_OF_FILE'
X/* 
X *	FIG : Facility for Interactive Generation of figures
X *
X *	Copyright (c) 1985 by Supoj Sutanthavibul (supoj at sally.UTEXAS.EDU)
X *	January 1985.
X *	1st revision : Aug 1985.
X *
X *	%W%	%G%
X*/
X#include "fig.h"
X#include "resources.h"
X#include "alloc.h"
X#include "func.h"
X#include "object.h"
X#include "paintop.h"
X
Xextern			(*canvas_kbd_proc)();
Xextern			(*canvas_locmove_proc)();
Xextern			(*canvas_leftbut_proc)();
Xextern			(*canvas_middlebut_proc)();
Xextern			(*canvas_rightbut_proc)();
Xextern			null_proc();
Xextern			set_popupmenu();
X
Xextern int		line_style, line_thickness;
Xextern float		cur_styleval;
Xextern int		cur_color;
Xextern int		cur_areafill;
Xextern int		fill_mode;
Xextern int		fix_x, fix_y, cur_x, cur_y;
Xextern int		cur_command;
Xextern int		manhattan_mode, mountain_mode;
Xextern int		autoforwardarrow_mode;
Xextern int		autobackwardarrow_mode;
Xextern F_compound	objects;
Xextern int		num_point;
Xextern F_point		*first_point, *cur_point;
Xextern appresStruct	appres;
X
Xextern int		create_intsplineobject();
Xextern int		init_intspline_drawing();
X
Xdraw_intspline_selected()
X{
X	canvas_kbd_proc = null_proc;
X	canvas_locmove_proc = null_proc;
X	canvas_leftbut_proc = init_intspline_drawing;
X	canvas_middlebut_proc = null_proc;
X	canvas_rightbut_proc = set_popupmenu;
X	set_cursor(&arrow_cursor);
X	reset_action_on();
X	}
X
Xinit_intspline_drawing(x, y)
Xint	x, y;
X{
X	init_line_drawing(x, y);
X	canvas_middlebut_proc = create_intsplineobject;
X	canvas_rightbut_proc = null_proc;
X	}
X
Xcreate_intsplineobject(x, y)
Xint	x, y;
X{
X	extern F_arrow	*forward_arrow(), *backward_arrow();
X	F_spline	*spline;
X
X	if (x != fix_x || y != fix_y) get_intermediatepoint(x, y);
X	draw_elasticline();
X	if (num_point <= 2) {
X	    pw_vector(canvas_win, first_point->x, first_point->y,
X			cur_point->x, cur_point->y, PAINT, 1, SOLID_LINE, 0.0);
X	    if (num_point == 1) {
X		free((char*)cur_point);
X		cur_point = NULL;
X	    }
X	    free((char*)first_point);
X	    first_point = NULL;
X	    draw_intspline_selected();
X	    return;
X	    }
X	if (NULL == (Spline_malloc(spline))) {
X	    if (num_point == 1) {
X		free((char*)cur_point);
X		cur_point = NULL;
X	    }
X	    free((char*)first_point);
X	    first_point = NULL;
X	    put_msg(Err_mem);
X	    return;
X	    }
X	spline->style = line_style;
X	spline->thickness = line_thickness;
X	spline->style_val = cur_styleval;
X	spline->color = cur_color;
X	spline->depth = 0;
X	spline->area_fill = 0;
X	spline->pen = 0;
X	spline->points = first_point;
X	spline->controls = NULL; 
X	spline->next = NULL; 
X	cur_x = cur_y = fix_x = fix_y = 0; /* used in draw_movingpoint */
X	draw_movingpoint(spline->points, INV_PAINT); /* erase control vector */
X	spline->for_arrow = NULL;
X	spline->back_arrow  = NULL;
X	if (cur_command == F_CLOSED_INTSPLINE) {
X	    spline->type = T_CLOSED_INTERPOLATED;
X	    /* added 3/1/89 B.V.Smith */
X	    /* The current area fill color will be saved in the object if 
X	       fill_mode is != 0, but the method presently used to draw
X	       the spline doesn't easily lend itself to area fill,
X	       so it is not filled.
X	       The spline is drawn in sections that aren't adjacent, 
X	       and have overlapping sections. */
X	    spline->area_fill = fill_mode? cur_areafill : 0;
X	    num_point++;
X	    append_point(first_point->x, first_point->y, &cur_point);
X	    }
X	else {
X	    spline->type = T_OPEN_INTERPOLATED;
X	    if (autoforwardarrow_mode) spline->for_arrow = forward_arrow();
X	    if (autobackwardarrow_mode) spline->back_arrow = backward_arrow();
X	    }
X	make_control_points(spline);
X	draw_intspline(spline, PAINT);
X	if (appres.DEBUG) {
X	    int	xmin, ymin, xmax, ymax;
X	    spline_bound(spline, &xmin, &ymin, &xmax, &ymax);
X	    draw_rectbox(xmin, ymin, xmax, ymax, PAINT);
X	    }
X	clean_up();
X	set_action_object(F_CREATE, O_SPLINE);
X	insert_spline(&objects.splines, spline);
X	set_latestspline(spline);
X	set_modifiedflag();
X	draw_intspline_selected();
X	}
X
X/* Tension : 0 (min) -> 1 (max)	*/
X
X#define		round(x)	((int) (x + .5))
X
Xcreate_control_list(s)
XF_spline	*s;
X{
X	F_point		*p;
X	F_control	*cp;
X
X	if (NULL == (Control_malloc(cp))) {
X	    put_msg(Err_mem);
X	    return(-1);
X	    }
X	s->controls = cp;
X	for (p = s->points->next; p != NULL; p = p->next) {
X	    if (NULL == (Control_malloc(cp->next))) {
X		put_msg(Err_mem);
X		return(-1);
X		}
X	    cp = cp->next;
X	    }
X	cp->next = NULL;
X	return(1);
X	}
X
Xmake_control_points(s)
XF_spline	*s;
X{
X	if (-1 == create_control_list(s)) return;
X
X	remake_control_points(s);
X	}
X
Xremake_control_points(s)
XF_spline	*s;
X{
X	if (s->type == T_CLOSED_INTERPOLATED)
X	    compute_cp(s->points, s->controls, CLOSED_PATH);
X	else
X	    compute_cp(s->points, s->controls, OPEN_PATH);
X	}
X
Xdraw_intspline(s, op)
XF_spline	*s;
Xint		op;
X{
X	F_point		*p1, *p2;
X	F_control	*cp1, *cp2;
X
X	p1 = s->points;
X	cp1 = s->controls;
X	cp2 = cp1->next;
X	if (s->back_arrow)
X	    draw_arrow(round(cp2->lx), round(cp2->ly), p1->x, p1->y, 
X		       s->back_arrow, op);
X	for (p2 = p1->next, cp2 = cp1->next; p2 != NULL;
X		p1 = p2, cp1 = cp2, p2 = p2->next, cp2 = cp2->next) {
X	    bezier_spline((float)p1->x, (float)p1->y, cp1->rx, cp1->ry,
X			cp2->lx, cp2->ly, (float)p2->x, (float)p2->y, op, 
X			s->thickness, s->style, s->style_val);
X	    }
X	if (s->for_arrow)
X	    draw_arrow(round(cp1->lx), round(cp1->ly), p1->x,
X			p1->y, s->for_arrow, op);
X	}
X
X#define		T		0.45
X#define		_2xPI		6.2832
X#define		_1dSQR2		0.7071
X#define		_SQR2		1.4142
X
Xcompute_cp(points, controls, path)
XF_point		*points;
XF_control	*controls;
Xint		path;
X{
X	F_control	*cp, *cpn;
X	F_point		*p, *p2, *pk;	/* Pk is the next-to-last point. */
X	float		dx, dy;
X	float		x1, y1, x2, y2, x3, y3;
X	float		l1, l2, theta1, theta2;
X
X	x1 = points->x;  y1 = points->y;
X	pk = p2 = points->next;
X	x2 = p2->x;  y2 = p2->y;
X	p = p2->next;
X	x3 = p->x;  y3 = p->y;
X
X	dx = x1 - x2;
X	dy = y2 - y1;
X	l1 = sqrt((double)(dx*dx + dy*dy));
X	theta1 = atan2((double)dy, (double)dx);
X	dx = x3 - x2;
X	dy = y2 - y3;
X	l2 = sqrt((double)(dx*dx + dy*dy));
X	theta2 = atan2((double)dy, (double)dx);
X	/* -PI <= theat1, theta2 <= PI */
X	if (theta1 < 0) theta1 += _2xPI;
X	if (theta2 < 0) theta2 += _2xPI;
X	/* 0 <= theat1, theta2 < 2PI */
X
X	cp = controls->next;
X	control_points(x2, y2, l1, l2, theta1, theta2, T, cp);
X	/* control points for (x2, y2) */
X	if (path == OPEN_PATH) {
X	    controls->lx = 0.0; controls->ly = 0.0;
X	    controls->rx = (x1 + 3*cp->lx)/4; controls->ry = (y1 + 3*cp->ly)/4;
X	    cp->lx = (3*cp->lx + x2)/4; cp->ly = (3*cp->ly + y2)/4;
X	    }
X
X	while (1) {
X	    x2 = x3; y2 = y3;
X	    l1 = l2;
X	    if (theta2 >= M_PI)
X		theta1 = theta2 - M_PI;
X	    else
X		theta1 = theta2 + M_PI;
X	    if ((p = p->next) == NULL) break;
X	    pk = pk->next;
X	    x3 = p->x; y3 = p->y;
X	    dx = x3 - x2;
X	    dy = y2 - y3;
X	    l2 = sqrt((double)(dx*dx + dy*dy));
X	    theta2 = atan2((double)dy, (double)dx);
X	    if (theta2 < 0) theta2 += _2xPI;
X	    cp = cp->next;
X	    control_points(x2, y2, l1, l2, theta1, theta2, T, cp);
X	    };
X
X	if (path == CLOSED_PATH) {
X	    dx = p2->x - x2;
X	    dy = y2 - p2->y;
X	    l2 = sqrt((double)(dx*dx + dy*dy));
X	    theta2 = atan2((double)dy, (double)dx);
X	    if (theta2 < 0) theta2 += _2xPI;
X	    cp = cp->next;
X	    control_points(x2, y2, l1, l2, theta1, theta2, T, cp);
X	    controls->lx = cp->lx; controls->ly = cp->ly;
X	    controls->rx = cp->rx; controls->ry = cp->ry;
X	    }
X	else {
X	    cpn = cp->next;
X	    cpn->lx = (3*cp->rx + x2) / 4; cpn->ly = (3*cp->ry + y2) / 4;
X	    cpn->rx = 0.0; cpn->ry = 0.0;
X	    cp->rx = (pk->x + 3*cp->rx) / 4; cp->ry = (pk->y + 3*cp->ry) / 4;
X	    }
X	}
X
X/*
XThe parameter t is the tension.  It must range in [0, 1].
XThe bigger the value of t, the higher the tension.
X*/
X
Xcontrol_points(x, y, l1, l2, theta1, theta2, t, cp)
Xfloat	x, y, l1, l2, theta1, theta2, t;
XF_control	*cp;
X{
X	float	s, theta, r = 1 - t;
X
X	/* 0 <= theat1, theta2 < 2PI */
X
X	theta = (theta1 + theta2) / 2;
X
X	if (theta1 > theta2) {
X	    s = sin((double)(theta-theta2));
X	    theta1 = theta + M_PI_2;
X	    theta2 = theta - M_PI_2;
X	    }
X	else {
X	    s = sin((double)(theta2-theta));
X	    theta1 = theta - M_PI_2;
X	    theta2 = theta + M_PI_2;
X	    }
X	if (s > _1dSQR2) s = _SQR2 - s;
X	s *= r;
X	l1 *= s; l2 *= s;
X	cp->lx = x + l1 * cos((double)theta1);
X	cp->ly = y - l1 * sin((double)theta1);
X	cp->rx = x + l2 * cos((double)theta2);
X	cp->ry = y - l2 * sin((double)theta2);
X	}
END_OF_FILE
if test 8264 -ne `wc -c <'intspline.c'`; then
    echo shar: \"'intspline.c'\" unpacked with wrong size!
fi
# end of 'intspline.c'
fi
if test -f 'scale.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'scale.c'\"
else
echo shar: Extracting \"'scale.c'\" \(8293 characters\)
sed "s/^X//" >'scale.c' <<'END_OF_FILE'
X/* 
X *	FIG : Facility for Interactive Generation of figures
X *
X *	Copyright (c) 1985 by Supoj Sutanthavibul (supoj at sally.UTEXAS.EDU)
X *	January 1985.
X *	1st revision : Aug 1985.
X *
X *	%W%	%G%
X*/
X#include "fig.h"
X#include "resources.h"
X#include "func.h"
X#include "object.h"
X#include "paintop.h"
X
X#define			TOLERANCE	7
X#define			min(a, b)	(((a) < (b)) ? (a) : (b))
X#define			max(a, b)	(((a) > (b)) ? (a) : (b))
X#define			round(a)	(int)(a + 0.5)
X
Xextern int		fix_x, fix_y, cur_x, cur_y;
Xextern F_pos		last_position, new_position;  /* used in undo */
X
Xextern F_compound	*compound_point_search(), *compound_search();
Xextern			(*canvas_kbd_proc)();
Xextern			(*canvas_locmove_proc)();
Xextern			(*canvas_leftbut_proc)();
Xextern			(*canvas_middlebut_proc)();
Xextern			(*canvas_rightbut_proc)();
Xextern			null_proc();
Xextern			set_popupmenu();
X
Xextern int		prescale_compound(), elastic_compoundbox();
X
Xstatic enum		{WEST, NORTH, EAST, SOUTH, CORNER} side;
Xstatic int		save_coord;
Xstatic F_compound	*cmpnd;
Xstatic double		cosa, sina;
Xstatic int		fromx, fromy;
Xextern int		init_scale_compound();
X
Xscale_compound_selected()
X{
X	canvas_kbd_proc = null_proc;
X	canvas_locmove_proc = null_proc;
X	canvas_leftbut_proc = init_scale_compound;
X	canvas_middlebut_proc = null_proc;
X	canvas_rightbut_proc = set_popupmenu;
X	set_cursor(&pick15_cursor);
X	reset_action_on();
X	}
X
Xinit_scale_compound(x, y)
Xint	x, y;
X{
X	double	dx, dy, l;
X	
X	if ((cmpnd = compound_point_search(x, y, TOLERANCE, &cur_x,
X					      &cur_y)) != NULL)
X	{
X		if (cmpnd->nwcorner.x == cur_x) 
X			fix_x = cmpnd->secorner.x;
X		else
X			fix_x = cmpnd->nwcorner.x;
X		if (cmpnd->nwcorner.y == cur_y) 
X			fix_y = cmpnd->secorner.y;
X		else
X			fix_y = cmpnd->nwcorner.y;
X		
X		side = CORNER;
X		dx = cur_x - fix_x;  dy = cur_y - fix_y;
X		l = sqrt(dx*dx + dy*dy);
X		cosa = fabs(dx / l);  sina = fabs(dy / l);
X		
X		fromx = cur_x;  fromy = cur_y;
X		win_setmouseposition(canvas_win, cur_x, cur_y);
X		draw_compoundbox(cmpnd, INV_PAINT);
X		draw_rectbox(fix_x, fix_y, cur_x, cur_y, INV_PAINT);
X		set_latestcompound(cmpnd);
X		canvas_locmove_proc = elastic_compoundbox;
X		canvas_middlebut_proc = prescale_compound;
X		canvas_leftbut_proc = canvas_rightbut_proc = null_proc;
X		set_action_on();
X		set_temp_cursor(&null_cursor);
X		win_setmouseposition(canvas_win, x, y);
X	}
X	else if ((cmpnd = compound_search(x, y, TOLERANCE, &cur_x, &cur_y))
X		 != NULL )
X	{
X		/* figure out which side the cursor is close to. */
X		if (cmpnd->nwcorner.x == cur_x)
X			side = WEST;
X		else if (cmpnd->nwcorner.y == cur_y)
X			side = NORTH;
X		else if (cmpnd->secorner.x == cur_x)
X			side = EAST;
X		else if (cmpnd->secorner.y == cur_y)
X			side = SOUTH;
X		else
X			return;
X		
X		/* figure out a fixed point of the compound for scaling */
X		switch (side) {
X		case WEST:
X		case NORTH:
X			fix_x = cmpnd->secorner.x;
X			fix_y = cmpnd->secorner.y;
X			cur_x = cmpnd->nwcorner.x;
X			cur_y = cmpnd->nwcorner.y;
X			break;
X		case EAST:
X		case SOUTH:
X			fix_x = cmpnd->nwcorner.x;
X			fix_y = cmpnd->nwcorner.y;
X			cur_x = cmpnd->secorner.x;
X			cur_y = cmpnd->secorner.y;
X			break;
X		}
X		
X		/* save initial corner position */
X		fromx = cur_x;  fromy = cur_y;
X		/* save x or y coordinate for restoring the cursor */
X		/* at the end of the scaling */
X		switch (side) {
X		case NORTH: case SOUTH:
X			save_coord = x;
X			break;
X		case EAST: case WEST:
X			save_coord = y;
X			break;
X		}
X		/*  erase the compound box. */
X		win_setmouseposition(canvas_win, cur_x, cur_y);
X		draw_compoundbox(cmpnd, INV_PAINT);
X		draw_rectbox(fix_x, fix_y, cur_x, cur_y, INV_PAINT);
X		set_latestcompound(cmpnd);
X		canvas_locmove_proc = elastic_compoundbox;
X		canvas_middlebut_proc = prescale_compound;
X		canvas_leftbut_proc = canvas_rightbut_proc = null_proc;
X		set_action_on();
X		set_temp_cursor(&null_cursor);
X		win_setmouseposition(canvas_win, x, y);
X	}
X}
X
X
Xelastic_compoundbox(x, y)
Xint	x, y;
X{
X	draw_rectbox(fix_x, fix_y, cur_x, cur_y, INV_PAINT);
X	compute_adjustposition(x, y);
X	win_setmouseposition(canvas_win, cur_x, cur_y);
X	draw_rectbox(fix_x, fix_y, cur_x, cur_y, INV_PAINT);
X	}
X
Xcompute_adjustposition(x, y)
Xint	x, y;
X{
X	double	xx, yy, d;
X
X	switch(side) {
X	case CORNER:
X		xx = x - fix_x;
X		yy = y - fix_y;
X		d = sqrt(xx*xx + yy*yy);
X		if (xx < 0)
X			cur_x = fix_x - round(d * cosa);
X		else
X			cur_x = fix_x + round(d * cosa);
X		if (yy < 0)
X			cur_y = fix_y - round(d * sina);
X		else
X			cur_y = fix_y + round(d * sina);
X		break;
X	case NORTH:
X	case SOUTH:
X		cur_y = y;
X		break;
X	case EAST:
X	case WEST:
X		cur_x = x;
X		break;
X	}
X}
X
Xprescale_compound(x, y)
Xint	x, y;
X{
X	float		scalex, scaley;
X
X	draw_rectbox(fix_x, fix_y, cur_x, cur_y, INV_PAINT);
X	compute_adjustposition(x, y);
X	erase_compound(cmpnd);
X
X	scalex = ((float) (cur_x - fix_x)) / (fromx - fix_x);
X	scaley = ((float) (cur_y - fix_y)) / (fromy - fix_y);
X	scale_compound(cmpnd, scalex, scaley, fix_x, fix_y);
X
X	draw_compound(cmpnd);
X	draw_compoundbox(cmpnd, INV_PAINT);
X	last_position.x = fromx;
X	last_position.y = fromy;
X	new_position.x = cur_x;
X	new_position.y = cur_y;
X	/* update cursor position for single axis scaling. */
X	switch (side) {
X	case NORTH: case SOUTH:
X		/* maintain old horiz. pos. */
X		cur_x = save_coord;
X		break;
X	case EAST: case WEST:
X		/* maintain old vert. pos. */
X		cur_y = save_coord;
X		break;
X	}
X	clean_up();
X	set_action_object(F_SCALE, O_COMPOUND);
X	set_latestcompound(cmpnd);
X	set_modifiedflag();
X	scale_compound_selected();
X	}
X
Xscale_compound(c, sx, sy, refx, refy)
XF_compound	*c;
Xfloat		sx, sy;
Xint		refx, refy;
X{
X	F_line		*l;
X	F_spline	*s;
X	F_ellipse	*e;
X	F_text		*t;
X	F_arc		*a;
X	F_compound	*c1;
X	int		x1, y1, x2, y2;
X
X	x1 = round(refx + (c->nwcorner.x - refx) * sx);
X	y1 = round(refy + (c->nwcorner.y - refy) * sy);
X	x2 = round(refx + (c->secorner.x - refx) * sx);
X	y2 = round(refy + (c->secorner.y - refy) * sy);
X	c->nwcorner.x = min(x1, x2);
X	c->nwcorner.y = min(y1, y2);
X	c->secorner.x = max(x1, x2);
X	c->secorner.y = max(y1, y2);
X
X	for (l = c->lines; l != NULL; l = l->next) {
X	    scale_line(l, sx, sy, refx, refy);
X	    }
X	for (s = c->splines; s != NULL; s = s->next) {
X	    scale_spline(s, sx, sy, refx, refy);
X	    }
X	for (a = c->arcs; a != NULL; a = a->next) {
X	    scale_arc(a, sx, sy, refx, refy);
X	    } 
X	for (e = c->ellipses; e != NULL; e = e->next) {
X	    scale_ellipse(e, sx, sy, refx, refy);
X	    }
X	for (t = c->texts; t != NULL; t = t->next) {
X	    scale_text(t, sx, sy, refx, refy);
X	    }
X	for (c1 = c->compounds; c1 != NULL; c1 = c1->next) {
X	    scale_compound(c1, sx, sy, refx, refy);
X	    }
X	}
X
Xscale_line(l, sx, sy, refx, refy)
XF_line	*l;
Xfloat	sx, sy;
Xint	refx, refy;
X{
X	F_point		*p;
X
X	for (p = l->points; p != NULL; p = p->next) {
X	    p->x = round(refx + (p->x - refx) * sx);
X	    p->y = round(refy + (p->y - refy) * sy);
X	    }
X	}
X
Xscale_spline(s, sx, sy, refx, refy)
XF_spline	*s;
Xfloat		sx, sy;
Xint		refx, refy;
X{
X	F_point		*p;
X	F_control	*c;
X
X	for (p = s->points; p != NULL; p = p->next) {
X	    p->x = round(refx + (p->x - refx) * sx);
X	    p->y = round(refy + (p->y - refy) * sy);
X	    }
X	for (c = s->controls; c != NULL; c = c->next) {
X	    c->lx = refx + (c->lx - refx) * sx;
X	    c->ly = refy + (c->ly - refy) * sy;
X	    c->rx = refx + (c->rx - refx) * sx;
X	    c->ry = refy + (c->ry - refy) * sy;
X	    }
X	}
X
Xscale_arc(a, sx, sy, refx, refy)
XF_arc	*a;
Xfloat	sx, sy;
Xint	refx, refy;
X{
X	int		i;
X
X	for (i = 0; i < 3; i++) {
X	    a->point[i].x = round(refx + (a->point[i].x - refx) * sx);
X	    a->point[i].y = round(refy + (a->point[i].y - refy) * sy);
X	    }
X	compute_arccenter(a->point[0], a->point[1], a->point[2], 
X		&a->center.x, &a->center.y);
X	a->direction = compute_direction(a->point[0], a->point[1], a->point[2]);
X	} 
X
Xscale_ellipse(e, sx, sy, refx, refy)
XF_ellipse	*e;
Xfloat		sx, sy;
Xint		refx, refy;
X{
X	e->center.x = round(refx + (e->center.x - refx) * sx);
X	e->center.y = round(refy + (e->center.y - refy) * sy);
X	e->start.x = round(refx + (e->start.x - refx) * sx);
X	e->start.y = round(refy + (e->start.y - refy) * sy);
X	e->end.x = round(refx + (e->end.x - refx) * sx);
X	e->end.y = round(refy + (e->end.y - refy) * sy);
X	e->radiuses.x = round(e->radiuses.x * sx);
X	e->radiuses.y = round(e->radiuses.y * sy);
X	}
X
Xscale_text(t, sx, sy, refx, refy)
XF_text	*t;
Xfloat	sx, sy;
Xint	refx, refy;
X{
X	t->base_x = round(refx + (t->base_x - refx) * sx);
X	t->base_y = round(refy + (t->base_y - refy) * sy);
X	}
END_OF_FILE
if test 8293 -ne `wc -c <'scale.c'`; then
    echo shar: \"'scale.c'\" unpacked with wrong size!
fi
# end of 'scale.c'
fi
echo shar: End of archive 8 \(of 21\).
cp /dev/null ark8isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 21 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0

dan
----------------------------------------------------
O'Reilly && Associates   argv at sun.com / argv at ora.com
Opinions expressed reflect those of the author only.



More information about the Comp.sources.x mailing list