home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-05-15 | 76.7 KB | 1,963 lines |
- Newsgroups: comp.sources.x
- From: ecdowney@pobox.cca.cr.rockwell.com (Elwood Downey)
- Subject: v19i100: xephem - astronomical ephemeris program, Part12/21
- Message-ID: <1993May10.221114.8891@sparky.imd.sterling.com>
- X-Md4-Signature: 888f48c42f2b47418574d92b93fcdf8b
- Date: Mon, 10 May 1993 22:11:14 GMT
- Approved: chris@sparky.imd.sterling.com
-
- Submitted-by: ecdowney@pobox.cca.cr.rockwell.com (Elwood Downey)
- Posting-number: Volume 19, Issue 100
- Archive-name: xephem/part12
- Environment: X11r4, OSF/Motif
- Supersedes: xephem: Volume 16, Issue 112-134
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then feed it
- # into a shell via "sh file" or similar. To overwrite existing files,
- # type "sh file -c".
- # The tool that generated this appeared in the comp.sources.unix newsgroup;
- # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
- # Contents: smallfm.xbm.3 solsysmenu.c
- # Wrapped by chris@nova on Mon May 10 16:41:48 1993
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- echo If this archive is complete, you will see the following message:
- echo ' "shar: End of archive 12 (of 21)."'
- if test -f 'smallfm.xbm.3' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'smallfm.xbm.3'\"
- else
- echo shar: Extracting \"'smallfm.xbm.3'\" \(30676 characters\)
- sed "s/^X//" >'smallfm.xbm.3' <<'END_OF_FILE'
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x50, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x5d, 0x55, 0xd5, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xaa, 0x0a, 0x82, 0xa0, 0x20, 0x02,
- X 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x80, 0xa2, 0x2a,
- X 0x00, 0xaa, 0x2a, 0xaa, 0xaa, 0xaa, 0xae, 0xfe, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x45, 0x01, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x5d, 0x55, 0xff, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0xaa, 0x22, 0x20, 0x88, 0x8a, 0x00,
- X 0x28, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x2a, 0x00,
- X 0xaa, 0x8a, 0xaa, 0xaa, 0xaa, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57, 0x55, 0x5d, 0x55, 0x55, 0x55,
- X 0x55, 0x05, 0x04, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x55, 0x55, 0x57, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xaa, 0x80, 0x08, 0x28, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xaa, 0xa0,
- X 0xa8, 0xa2, 0xaa, 0xaa, 0xaa, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x05, 0x51, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x55, 0x55, 0x55, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x8a, 0xaa, 0x20, 0x80, 0x20,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xa2, 0xaa, 0x8a,
- X 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x15, 0x15, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x55, 0x57, 0x55, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0xaa, 0x2a, 0x0a, 0x20, 0x88,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x28, 0x0a, 0xa8, 0xaa,
- X 0xaa, 0xaa, 0x2a, 0xaa, 0xea, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff,
- X 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x45, 0x50, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x55, 0x55, 0x55, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xaa, 0xaa, 0x02, 0x02, 0xa2,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0xaa, 0x82,
- X 0x88, 0x8a, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5d, 0x55, 0x55, 0x55,
- X 0x55, 0x45, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x55, 0xd5, 0x5f, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0xaa, 0x02, 0x80, 0x28,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x80, 0x88, 0x22,
- X 0xa0, 0xaa, 0xaa, 0xaa, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x55, 0x55, 0x55,
- X 0x55, 0x55, 0x05, 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x55, 0x5d, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x2a, 0x0a, 0x08, 0xa2,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00,
- X 0x00, 0x00, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57, 0x55, 0x55,
- X 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x55, 0x55, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0x0a, 0x00, 0x22,
- X 0x82, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00,
- X 0x00, 0xa0, 0xaa, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x55, 0x55,
- X 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x55, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x80, 0x82,
- X 0x22, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
- X 0x00, 0x28, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55,
- X 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x8a, 0xaa,
- X 0x80, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00,
- X 0xa0, 0xaa, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x57,
- X 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
- X 0x55, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xaa,
- X 0x82, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x22, 0x82,
- X 0xaa, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0x5f, 0x55, 0x55, 0x55, 0x15, 0x51, 0x54, 0x55, 0x55, 0x55, 0x55, 0xd5,
- X 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa,
- X 0xaa, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xaa,
- X 0xaa, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0x5f, 0x55, 0x55, 0x15, 0x51, 0x55, 0x55, 0x55, 0x55, 0x57, 0xfd,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
- X 0xaa, 0xaa, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x82, 0x88, 0xaa, 0xaa,
- X 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0x5d, 0x55, 0x55, 0x55, 0x11, 0x55, 0x55, 0x55, 0xf5, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xbf, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0xaa, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0x57, 0x5d, 0x55, 0xd5, 0x55, 0x7d, 0xf5, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xbb, 0xaa, 0xaa, 0x02, 0xa8, 0xa2, 0xaa, 0xaa, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x5f, 0xfd, 0xdf, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xeb, 0xff, 0xff, 0xff,
- X 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
- END_OF_FILE
- if test 30676 -ne `wc -c <'smallfm.xbm.3'`; then
- echo shar: \"'smallfm.xbm.3'\" unpacked with wrong size!
- fi
- # end of 'smallfm.xbm.3'
- fi
- if test -f 'solsysmenu.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'solsysmenu.c'\"
- else
- echo shar: Extracting \"'solsysmenu.c'\" \(43023 characters\)
- sed "s/^X//" >'solsysmenu.c' <<'END_OF_FILE'
- X/* code to manage the stuff on the solar system display.
- X * functions and data to support the main display begin with ss_.
- X * function and data to support the stereo display begin with st_.
- X */
- X
- X#include <stdio.h>
- X#include <ctype.h>
- X#include <math.h>
- X#if defined(__STDC__)
- X#include <stdlib.h>
- X#endif
- X#include <X11/Xlib.h>
- X#include <Xm/Xm.h>
- X#include <Xm/Form.h>
- X#include <Xm/Frame.h>
- X#include <Xm/DrawingA.h>
- X#include <Xm/RowColumn.h>
- X#include <Xm/Label.h>
- X#include <Xm/PushB.h>
- X#include <Xm/ToggleB.h>
- X#include <Xm/Text.h>
- X#include <Xm/Scale.h>
- X#include "astro.h"
- X#include "circum.h"
- X
- X/* heliocentric coordinates, and enough info to locate it on screen */
- Xtypedef struct {
- X Obj o; /* copy of Obj at the given moment */
- X double smjd; /* mjd when Obj was valid */
- X int sx, sy; /* main view window coords of object */
- X int stx; /* stereo view x coord (y is the same in both) */
- X float x, y, z; /* heliocentric cartesian coords */
- X} HLoc;
- X
- X#if defined(__STDC__) || defined(__cplusplus)
- X#define P_(s) s
- X#define Const const
- X#else
- X#define P_(s) ()
- X#define Const
- X#endif
- X
- Xextern Now *mm_get_now P_((void));
- Xextern Obj *db_basic P_((int id));
- Xextern double mjd_hr P_((double jd));
- Xextern void db_update P_((Obj *op));
- Xextern void f_angle P_((Widget w, double a));
- Xextern void f_date P_((Widget w, double jd));
- Xextern void f_double P_((Widget w, char *fmt, double f));
- Xextern void f_ra P_((Widget w, double ra));
- Xextern void f_string P_((Widget w, char *s));
- Xextern void f_time P_((Widget w, double t));
- Xextern void get_something P_((Widget w, char *resource, char *value));
- Xextern void hlp_dialog P_((char *tag, char *deflt[], int ndeflt));
- Xextern void obj_pickgc P_((Obj *op, Widget w, GC *gcp));
- Xextern void set_something P_((Widget w, char *resource, char *value));
- Xextern void set_xmstring P_((Widget w, char *resource, char *txt));
- Xextern void timestamp P_((Now *np, Widget w));
- X
- Xvoid ss_manage P_((void));
- Xvoid ss_newobj P_((int dbidx));
- Xint ss_ison P_((void));
- Xvoid ss_update P_((Now *np, int how_much));
- Xvoid ss_cursor P_((Cursor c));
- Xstatic void ss_create_form P_((void));
- Xstatic void st_create_form P_((void));
- Xstatic Widget ss_create_pot P_((Widget form_w, Widget bot_w));
- Xstatic void ss_activate_cb P_((Widget w, XtPointer client, XtPointer call));
- Xstatic void ss_obj_cb P_((Widget w, XtPointer client, XtPointer call));
- Xstatic void ss_changed_cb P_((Widget w, XtPointer client, XtPointer call));
- Xstatic void ss_close_cb P_((Widget w, XtPointer client, XtPointer call));
- Xstatic void ss_help_cb P_((Widget w, XtPointer client, XtPointer call));
- Xstatic void ss_da_exp_cb P_((Widget w, XtPointer client, XtPointer call));
- Xstatic void ss_da_input_cb P_((Widget w, XtPointer client, XtPointer call));
- Xstatic void st_parallax_cb P_((Widget w, XtPointer client, XtPointer call));
- Xstatic void st_map_cb P_((Widget wid, XtPointer client, XtPointer call));
- Xstatic void st_da_exp_cb P_((Widget w, XtPointer client, XtPointer call));
- Xstatic void st_da_input_cb P_((Widget w, XtPointer client, XtPointer call));
- Xstatic void ss_popup P_((XEvent *ev, HLoc *lp));
- Xstatic void ss_create_popup P_((void));
- Xstatic int cmpHLoc P_((Const void *lp1, Const void *lp2));
- Xstatic void ss_all P_((int preclr));
- Xstatic void solar_system P_((HLoc *lp, double scale, double elt, double elg, unsigned nx, unsigned ny));
- X
- X#undef P_
- X
- Xextern Widget toplevel_w;
- X#define XtD XtDisplay(toplevel_w)
- X
- Xstatic Widget ssform_w; /* main solar system form dialog */
- Xstatic Widget hr_w, hlng_w, hlat_w; /* scales for heliocentric R, long, lat */
- Xstatic Widget ssda_w; /* solar system drawring area */
- Xstatic Widget dt_w; /* date/time stamp label widget */
- X
- Xstatic Widget stform_w; /* main stereo form dialog */
- Xstatic Widget parallax_w; /* scale to set amount of parallax */
- Xstatic Widget stda_w; /* stereo solar system drawring area */
- X
- Xenum {TRAILS, BIGDOTS, CONNECT, TAGS, STEREO}; /* toggle button ids */
- X
- X#define MINMAG 3.0 /* minimum mag factor, pixels/AU */
- X#define MAXMAG 250.0 /* maximum mag factor, pixels/AU */
- X
- X/* whether each option is currently on */
- Xstatic int trails;
- Xstatic int bigdots;
- Xstatic int connectdots;
- Xstatic int nametags;
- Xstatic int stereo;
- X
- X/* current value of desired parallax */
- Xstatic int parallax;
- X
- Xstatic HLoc *points[NOBJ]; /* malloc'd set of points on screen now */
- Xstatic int npoints[NOBJ]; /* number of points */
- X
- Xstatic char obj_on[NOBJ]; /* 1 of object is on */
- Xstatic Widget obj_w[NOBJ]; /* toggle buttons for each object */
- X
- X/* info about the popup widget */
- Xtypedef struct {
- X Widget pu_w;
- X Widget name_w;
- X Widget ud_w, udl_w;
- X Widget ut_w, utl_w;
- X Widget ra_w, ral_w;
- X Widget dec_w, decl_w;
- X Widget hlong_w, hlongl_w;
- X Widget hlat_w, hlatl_w;
- X Widget eadst_w, eadstl_w;
- X Widget sndst_w, sndstl_w;
- X Widget elong_w, elongl_w;
- X} Popup;
- Xstatic Popup pu;
- X
- Xstatic char earthname[] = "Earth";
- X
- X/* called when the solar system view is activated via the main menu pulldown.
- X * if never called before, create and manage all the widgets as a child of a
- X * form. otherwise, just toggle whether the form is managed.
- X */
- Xvoid
- Xss_manage ()
- X{
- X if (!ssform_w) {
- X ss_create_form();
- X ss_create_popup();
- X st_create_form();
- X }
- X
- X if (XtIsManaged(ssform_w)) {
- X if (XtIsManaged(stform_w))
- X XtUnmanageChild(stform_w);
- X XtUnmanageChild (ssform_w);
- X } else {
- X XtManageChild (ssform_w);
- X if (stereo)
- X XtManageChild (stform_w);
- X }
- X}
- X
- X/* called when one of the user defined objects has changed.
- X * discard the points for that object.
- X * if the object is now defined in the SS manage the toggle button.
- X * N.B. no need to rebuild the scene -- ss_update() will be called for us.
- X */
- Xvoid
- Xss_newobj (dbidx)
- Xint dbidx;
- X{
- X static char me[] = "ss_newobj()";
- X Obj *op;
- X
- X /* we might get called before we are ever brought up the first time */
- X if (!ssform_w)
- X return;
- X
- X if (dbidx >= NOBJ) {
- X printf ("%s: dbidx=%d but NOBJ=%d\n", me, dbidx, NOBJ);
- X exit (1);
- X }
- X
- X if (points[dbidx])
- X XtFree ((char *)points[dbidx]);
- X points[dbidx] = NULL;
- X npoints[dbidx] = 0;
- X
- X op = db_basic(dbidx);
- X switch (op->type) {
- X case ELLIPTICAL: case HYPERBOLIC: case PARABOLIC:
- X XtManageChild (obj_w[dbidx]);
- X XmToggleButtonSetState (obj_w[dbidx], True, False);
- X set_xmstring (obj_w[dbidx], XmNlabelString, op->o_name);
- X obj_on[dbidx] = 1;
- X break;
- X default:
- X XtUnmanageChild (obj_w[dbidx]);
- X XmToggleButtonSetState (obj_w[dbidx], False, False);
- X obj_on[dbidx] = 0;
- X break;
- X }
- X
- X}
- X
- Xss_ison()
- X{
- X return (ssform_w && XtIsManaged(ssform_w));
- X}
- X
- X/* called when we are to update our view.
- X * don't bother if we are unmanaged unless trails is on - in that case,
- X * compute the new locations but don't display them.
- X */
- X/* ARGSUSED */
- Xvoid
- Xss_update (np, how_much)
- XNow *np;
- Xint how_much;
- X{
- X HLoc *lp;
- X int up;
- X int dbidx;
- X
- X up = ssform_w && XtIsManaged(ssform_w);
- X if (!up && !trails)
- X return;
- X
- X /* tag earth's data (from SUN object) as object MOON */
- X for (dbidx = 0; dbidx < NOBJ; dbidx++) {
- X Obj *op;
- X double sd;
- X int inss;
- X
- X /* see if object is still a solar system object */
- X op = db_basic(dbidx);
- X switch (op->type) {
- X case PLANET: case ELLIPTICAL: case HYPERBOLIC: case PARABOLIC:
- X inss = 1;
- X break;
- X default:
- X inss = 0;
- X break;
- X }
- X
- X /* discard previous set if not leaving trails or obj no longer
- X * in solar system.
- X */
- X if (!inss || !trails) {
- X if (points[dbidx])
- X XtFree ((char*)points[dbidx]);
- X points[dbidx] = NULL;
- X npoints[dbidx] = 0;
- X }
- X
- X if (!inss)
- X continue;
- X
- X /* just one SUN will do */
- X if (dbidx == SUN && npoints[SUN] > 0)
- X continue;
- X
- X npoints[dbidx]++;
- X points[dbidx] = (HLoc *) XtRealloc ((char *)points[dbidx],
- X npoints[dbidx]*sizeof(HLoc));
- X lp = &points[dbidx][npoints[dbidx]-1];
- X if (dbidx == MOON) {
- X /* really want earth info here; get it from SUN */
- X op = db_basic (SUN);
- X db_update(op);
- X sd = op->s_edist;
- X } else {
- X sd = op->s_sdist;
- X }
- X lp->x = sd*cos(op->s_hlat)*cos(op->s_hlong);
- X lp->y = sd*cos(op->s_hlat)*sin(op->s_hlong);
- X lp->z = sd*sin(op->s_hlat);
- X lp->o = *op;
- X if (dbidx == MOON)
- X lp->o.pl.code = MOON;
- X lp->smjd = mjd;
- X
- X /* keep points array sorted in increasing time order */
- X qsort ((char *)points[dbidx], npoints[dbidx], sizeof(HLoc),
- X cmpHLoc);
- X }
- X
- X if (up) {
- X ss_all(!trails);
- X timestamp (np, dt_w);
- X }
- X
- X}
- X
- X/* called to put up or remove the watch cursor. */
- Xvoid
- Xss_cursor (c)
- XCursor c;
- X{
- X Window win;
- X
- X if (ssform_w && (win = XtWindow(ssform_w))) {
- X Display *dsp = XtDisplay(ssform_w);
- X if (c)
- X XDefineCursor (dsp, win, c);
- X else
- X XUndefineCursor (dsp, win);
- X }
- X}
- X
- X/* create the main solarsystem form */
- Xstatic void
- Xss_create_form()
- X{
- X Widget close_w;
- X Widget stereo_w;
- X Widget trails_w;
- X Widget frame_w;
- X Widget form_w;
- X Widget fr_w;
- X Widget help_w;
- X Widget big_w;
- X Widget con_w;
- X Widget tags_w;
- X Widget pot_w;
- X XmString str;
- X Arg args[20];
- X int n;
- X
- X /* create form */
- X n = 0;
- X XtSetArg (args[n], XmNautoUnmanage, False); n++;
- X XtSetArg (args[n], XmNdefaultPosition, False); n++;
- X XtSetArg (args[n], XmNresizePolicy, XmRESIZE_NONE); n++;
- X ssform_w = XmCreateFormDialog (toplevel_w, "SolarSystem", args, n);
- X
- X /* set some stuff in the parent DialogShell.
- X * setting XmNdialogTitle in the Form didn't work..
- X */
- X n = 0;
- X XtSetArg (args[n], XmNtitle, "xephem Solar System"); n++;
- X XtSetValues (XtParent(ssform_w), args, n);
- X
- X /* make a form for the bottom controls */
- X
- X n = 0;
- X XtSetArg (args[n], XmNfractionBase, 13); n++;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
- X form_w = XmCreateForm (ssform_w, "CtlForm", args, n);
- X XtManageChild (form_w);
- X
- X /* make the "close" push button */
- X
- X n = 0;
- X XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNleftAttachment, XmATTACH_POSITION); n++;
- X XtSetArg (args[n], XmNleftPosition, 1); n++;
- X XtSetArg (args[n], XmNrightAttachment, XmATTACH_POSITION); n++;
- X XtSetArg (args[n], XmNrightPosition, 4); n++;
- X close_w = XmCreatePushButton (form_w, "Close", args, n);
- X XtAddCallback (close_w, XmNactivateCallback, ss_close_cb, 0);
- X XtManageChild (close_w);
- X
- X /* make the "stereo" toggle button in a frame */
- X
- X n = 0;
- X XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNleftAttachment, XmATTACH_POSITION); n++;
- X XtSetArg (args[n], XmNleftPosition, 5); n++;
- X XtSetArg (args[n], XmNrightAttachment, XmATTACH_POSITION); n++;
- X XtSetArg (args[n], XmNrightPosition, 8); n++;
- X fr_w = XmCreateFrame (form_w, "StereoFrame", args, n);
- X XtManageChild (fr_w);
- X stereo_w = XmCreateToggleButton (fr_w, "Stereo", args, n);
- X XtAddCallback (stereo_w, XmNvalueChangedCallback, ss_activate_cb,
- X (XtPointer)STEREO);
- X XtManageChild (stereo_w);
- X stereo = XmToggleButtonGetState (stereo_w);
- X
- X /* make the "help" push button */
- X
- X n = 0;
- X XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNleftAttachment, XmATTACH_POSITION); n++;
- X XtSetArg (args[n], XmNleftPosition, 9); n++;
- X XtSetArg (args[n], XmNrightAttachment, XmATTACH_POSITION); n++;
- X XtSetArg (args[n], XmNrightPosition, 12); n++;
- X help_w = XmCreatePushButton (form_w, "Help", args, n);
- X XtAddCallback (help_w, XmNactivateCallback, ss_help_cb, 0);
- X XtManageChild (help_w);
- X
- X /* make the planet on/off table */
- X
- X pot_w = ss_create_pot(ssform_w, form_w);
- X XtManageChild (pot_w);
- X
- X /* make the "big dots" toggle button */
- X
- X str = XmStringCreate("Big dots", XmSTRING_DEFAULT_CHARSET);
- X n = 0;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;
- X XtSetArg (args[n], XmNbottomWidget, pot_w); n++;
- X XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNlabelString, str); n++;
- X big_w = XmCreateToggleButton(ssform_w, "BigDots", args, n);
- X XmStringFree (str);
- X XtManageChild (big_w);
- X bigdots = XmToggleButtonGetState (big_w);
- X XtAddCallback(big_w, XmNvalueChangedCallback, ss_activate_cb,
- X (XtPointer)BIGDOTS);
- X
- X /* make the "connect" toggle button */
- X
- X str = XmStringCreate("Connect dots", XmSTRING_DEFAULT_CHARSET);
- X n = 0;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;
- X XtSetArg (args[n], XmNbottomWidget, big_w); n++;
- X XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNlabelString, str); n++;
- X con_w = XmCreateToggleButton(ssform_w, "ConnectDots", args, n);
- X XmStringFree (str);
- X XtManageChild (con_w);
- X connectdots = XmToggleButtonGetState (con_w);
- X XtAddCallback(con_w, XmNvalueChangedCallback, ss_activate_cb,
- X (XtPointer)CONNECT);
- X
- X /* make the "leave trails" toggle button */
- X
- X str = XmStringCreate("Leave trails", XmSTRING_DEFAULT_CHARSET);
- X n = 0;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;
- X XtSetArg (args[n], XmNbottomWidget, pot_w); n++;
- X XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNlabelString, str); n++;
- X trails_w = XmCreateToggleButton(ssform_w, "Trails", args, n);
- X XmStringFree (str);
- X XtManageChild (trails_w);
- X trails = XmToggleButtonGetState (trails_w);
- X XtAddCallback(trails_w, XmNvalueChangedCallback, ss_activate_cb,
- X (XtPointer)TRAILS);
- X
- X /* make the "tags" toggle button */
- X
- X str = XmStringCreate("Names", XmSTRING_DEFAULT_CHARSET);
- X n = 0;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;
- X XtSetArg (args[n], XmNbottomWidget, trails_w); n++;
- X XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNlabelString, str); n++;
- X tags_w = XmCreateToggleButton(ssform_w, "Names", args, n);
- X XmStringFree (str);
- X XtManageChild (tags_w);
- X nametags = XmToggleButtonGetState (tags_w);
- X XtAddCallback(tags_w, XmNvalueChangedCallback, ss_activate_cb,
- X (XtPointer)TAGS);
- X
- X /* make the time/date stamp label */
- X
- X n = 0;
- X XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;
- X XtSetArg (args[n], XmNbottomWidget, con_w); n++;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_CENTER); n++;
- X dt_w = XmCreateLabel (ssform_w, "DateStamp", args, n);
- X XtManageChild (dt_w);
- X
- X /* make the bottom scale */
- X
- X n = 0;
- X XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;
- X XtSetArg (args[n], XmNbottomWidget, dt_w); n++;
- X XtSetArg (args[n], XmNmaximum, 359); n++;
- X XtSetArg (args[n], XmNminimum, 0); n++;
- X XtSetArg (args[n], XmNscaleMultiple, 1); n++;
- X XtSetArg (args[n], XmNorientation, XmHORIZONTAL); n++;
- X XtSetArg (args[n], XmNprocessingDirection, XmMAX_ON_RIGHT); n++;
- X XtSetArg (args[n], XmNshowValue, True); n++;
- X hlng_w = XmCreateScale (ssform_w, "HLongScale", args, n);
- X XtAddCallback (hlng_w, XmNdragCallback, ss_changed_cb, 0);
- X XtAddCallback (hlng_w, XmNvalueChangedCallback, ss_changed_cb, 0);
- X XtManageChild (hlng_w);
- X
- X /* make the left scale */
- X
- X n = 0;
- X XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;
- X XtSetArg (args[n], XmNbottomWidget, hlng_w); n++;
- X XtSetArg (args[n], XmNdecimalPoints, 1); n++;
- X XtSetArg (args[n], XmNmaximum, 100); n++;
- X XtSetArg (args[n], XmNminimum, 0); n++;
- X XtSetArg (args[n], XmNscaleMultiple, 1); n++;
- X XtSetArg (args[n], XmNorientation, XmVERTICAL); n++;
- X XtSetArg (args[n], XmNprocessingDirection, XmMAX_ON_TOP); n++;
- X /* XtSetArg (args[n], XmNshowValue, True); n++; */
- X hr_w = XmCreateScale (ssform_w, "DistScale", args, n);
- X XtAddCallback (hr_w, XmNdragCallback, ss_changed_cb, 0);
- X XtAddCallback (hr_w, XmNvalueChangedCallback, ss_changed_cb, 0);
- X XtManageChild (hr_w);
- X
- X /* make the right scale */
- X
- X n = 0;
- X XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;
- X XtSetArg (args[n], XmNbottomWidget, hlng_w); n++;
- X XtSetArg (args[n], XmNmaximum, 90); n++;
- X XtSetArg (args[n], XmNminimum, -90); n++;
- X XtSetArg (args[n], XmNscaleMultiple, 1); n++;
- X XtSetArg (args[n], XmNprocessingDirection, XmMAX_ON_TOP); n++;
- X XtSetArg (args[n], XmNprocessingDirection, XmMAX_ON_TOP); n++;
- X XtSetArg (args[n], XmNshowValue, True); n++;
- X hlat_w = XmCreateScale (ssform_w, "HLatScale", args, n);
- X XtAddCallback (hlat_w, XmNdragCallback, ss_changed_cb, 0);
- X XtAddCallback (hlat_w, XmNvalueChangedCallback, ss_changed_cb, 0);
- X XtManageChild (hlat_w);
- X
- X /* make a frame for the drawing area */
- X
- X n = 0;
- X XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;
- X XtSetArg (args[n], XmNbottomWidget, hlng_w); n++;
- X XtSetArg (args[n], XmNleftAttachment, XmATTACH_WIDGET); n++;
- X XtSetArg (args[n], XmNleftWidget, hr_w); n++;
- X XtSetArg (args[n], XmNrightAttachment, XmATTACH_WIDGET); n++;
- X XtSetArg (args[n], XmNrightWidget, hlat_w); n++;
- X XtSetArg (args[n], XmNshadowType, XmSHADOW_ETCHED_OUT); n++;
- X frame_w = XmCreateFrame (ssform_w, "SolarFrame", args, n);
- X XtManageChild (frame_w);
- X
- X /* make a drawing area for drawing the solar system */
- X
- X n = 0;
- X ssda_w = XmCreateDrawingArea (frame_w, "SolarDA", args, n);
- X XtAddCallback (ssda_w, XmNexposeCallback, ss_da_exp_cb, 0);
- X XtAddCallback (ssda_w, XmNinputCallback, ss_da_input_cb, 0);
- X XtManageChild (ssda_w);
- X}
- X
- X/* create the stereo solarsystem form */
- Xstatic void
- Xst_create_form()
- X{
- X Widget frame_w;
- X Arg args[20];
- X int n;
- X
- X /* create form */
- X n = 0;
- X XtSetArg (args[n], XmNautoUnmanage, False); n++;
- X XtSetArg (args[n], XmNdefaultPosition, False); n++;
- X XtSetArg (args[n], XmNnoResize, True); n++; /* user can't resize */
- X stform_w = XmCreateFormDialog (toplevel_w, "StereoSolarSystem", args,n);
- X XtAddCallback (stform_w, XmNmapCallback, st_map_cb, NULL);
- X
- X /* set some stuff in the parent DialogShell.
- X * setting XmNdialogTitle in the Form didn't work..
- X */
- X n = 0;
- X XtSetArg (args[n], XmNtitle, "xephem Stereo Solar System"); n++;
- X XtSetValues (XtParent(stform_w), args, n);
- X
- X /* make the parallax scale at the bottom */
- X
- X n = 0;
- X XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNmaximum, 10); n++;
- X XtSetArg (args[n], XmNminimum, -10); n++;
- X XtSetArg (args[n], XmNscaleMultiple, 1); n++;
- X XtSetArg (args[n], XmNorientation, XmHORIZONTAL); n++;
- X XtSetArg (args[n], XmNprocessingDirection, XmMAX_ON_RIGHT); n++;
- X parallax_w = XmCreateScale (stform_w, "Parallax", args, n);
- X XtAddCallback (parallax_w, XmNdragCallback, st_parallax_cb, 0);
- X XtAddCallback (parallax_w, XmNvalueChangedCallback, st_parallax_cb, 0);
- X XtManageChild (parallax_w);
- X XmScaleGetValue (parallax_w, ¶llax);
- X
- X /* make a frame for the drawing area */
- X
- X n = 0;
- X XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;
- X XtSetArg (args[n], XmNbottomWidget, parallax_w); n++;
- X XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNshadowType, XmSHADOW_ETCHED_OUT); n++;
- X frame_w = XmCreateFrame (stform_w, "StereoFrame", args, n);
- X XtManageChild (frame_w);
- X
- X /* make a drawing area for drawing the stereo solar system */
- X
- X n = 0;
- X stda_w = XmCreateDrawingArea (frame_w, "StereoDA", args, n);
- X XtAddCallback (stda_w, XmNexposeCallback, st_da_exp_cb, 0);
- X XtAddCallback (stda_w, XmNinputCallback, st_da_input_cb, 0);
- X XtManageChild (stda_w);
- X}
- X
- X/* create the planet on/off table.
- X * don't manage it yet; return the outtermost Widget.
- X */
- Xstatic Widget
- Xss_create_pot (form_w, bot_w)
- XWidget form_w; /* form host */
- XWidget bot_w; /* attach our bottom to this one */
- X{
- X Widget frame_w;
- X Widget rc_w;
- X Arg args[20];
- X int n;
- X int i;
- X
- X n = 0;
- X XtSetArg (args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;
- X XtSetArg (args[n], XmNbottomWidget, bot_w); n++;
- X XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
- X XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
- X frame_w = XmCreateFrame (form_w, "ObjTblF", args, n);
- X
- X n = 0;
- X XtSetArg (args[n], XmNpacking, XmPACK_COLUMN); n++;
- X XtSetArg (args[n], XmNnumColumns, 4); n++;
- X rc_w = XmCreateRowColumn (frame_w, "ObjTblRC", args, n);
- X XtManageChild (rc_w);
- X
- X /* make the toggle buttons.
- X * fill in the names we can now.
- X * default the planets to all on.
- X */
- X for (i = 0; i < NOBJ; i++) {
- X Obj *op = db_basic(i);
- X n = 0;
- X obj_w[i] = XmCreateToggleButton (rc_w, "ObjTB", args, n);
- X XtAddCallback (obj_w[i], XmNvalueChangedCallback, ss_obj_cb,
- X (XtPointer)i);
- X switch (op->type) {
- X case ELLIPTICAL: case PARABOLIC: case HYPERBOLIC: case PLANET:
- X set_xmstring (obj_w[i], XmNlabelString,
- X is_planet(op,MOON)? earthname : op->o_name);
- X XtManageChild (obj_w[i]);
- X XmToggleButtonSetState (obj_w[i], True, False);
- X break;
- X }
- X obj_on[i] = XmToggleButtonGetState (obj_w[i]);
- X }
- X
- X return (frame_w);
- X}
- X
- X/* callback from the control toggle buttons
- X */
- X/* ARGSUSED */
- Xstatic void
- Xss_activate_cb (w, client, call)
- XWidget w;
- XXtPointer client;
- XXtPointer call;
- X{
- X int what = (int) client;
- X
- X switch (what) {
- X case TRAILS:
- X trails = XmToggleButtonGetState(w);
- X break;
- X case BIGDOTS:
- X bigdots = XmToggleButtonGetState(w);
- X ss_all (1);
- X break;
- X case CONNECT:
- X connectdots = XmToggleButtonGetState(w);
- X ss_all (1);
- X break;
- X case TAGS:
- X nametags = XmToggleButtonGetState(w);
- X ss_all (1);
- X break;
- X case STEREO:
- X stereo = XmToggleButtonGetState(w);
- X if (stereo) {
- X XtManageChild(stform_w);
- X ss_all (1);
- X } else
- X XtUnmanageChild(stform_w);
- X break;
- X default:
- X printf ("solsysmenu.c: unknown toggle button\n");
- X exit(1);
- X }
- X}
- X
- X/* callback from the object on/off toggle buttons.
- X * client is the dbidx.
- X */
- X/* ARGSUSED */
- Xstatic void
- Xss_obj_cb (w, client, call)
- XWidget w;
- XXtPointer client;
- XXtPointer call;
- X{
- X int who = (int) client;
- X
- X obj_on[who] = XmToggleButtonGetState(w);
- X ss_all(1);
- X}
- X
- X/* callback when any of the scales change value.
- X */
- X/* ARGSUSED */
- Xstatic void
- Xss_changed_cb (w, client, call)
- XWidget w;
- XXtPointer client;
- XXtPointer call;
- X{
- X XmScaleCallbackStruct *sp = (XmScaleCallbackStruct *)call;
- X
- X if (w != hr_w && w != hlng_w && w != hlat_w) {
- X printf ("solsysmenu.c: Unknown scaled callback\n");
- X exit(1);
- X }
- X
- X ss_all(1);
- X
- X /* some of these get a bit lengthy, so discard remaining events.
- X * TODO: don't discard pending Expose events
- X */
- X if (sp->reason == XmCR_DRAG)
- X XSync (XtDisplay(w), True);
- X}
- X
- X/* callback from the Close button.
- X */
- X/* ARGSUSED */
- Xstatic void
- Xss_close_cb (w, client, call)
- XWidget w;
- XXtPointer client;
- XXtPointer call;
- X{
- X if (XtIsManaged(stform_w))
- X XtUnmanageChild (stform_w);
- X XtUnmanageChild (ssform_w);
- X}
- X
- X/* callback from the Help button.
- X */
- X/* ARGSUSED */
- Xstatic void
- Xss_help_cb (w, client, call)
- XWidget w;
- XXtPointer client;
- XXtPointer call;
- X{
- X static char *msg[] = {
- X"This displays the solar system. The sun is always at the center. The left",
- X"slider controls your distance from the sun - further up is closer. The",
- X"bottom slider controls your heliocentric longitude. The right slider controls",
- X"your heliocentric latitude - your angle above the ecliptic."
- X};
- X
- X hlp_dialog ("Solar System View", msg, sizeof(msg)/sizeof(msg[0]));
- X}
- X
- X/* expose of solar system drawing area.
- X */
- X/* ARGSUSED */
- Xstatic void
- Xss_da_exp_cb (w, client, call)
- XWidget w;
- XXtPointer client;
- XXtPointer call;
- X{
- X XmDrawingAreaCallbackStruct *c = (XmDrawingAreaCallbackStruct *)call;
- X
- X switch (c->reason) {
- X case XmCR_EXPOSE: {
- X /* turn off gravity so we get expose events for either shrink or
- X * expand.
- X */
- X static before;
- X XExposeEvent *e = &c->event->xexpose;
- X
- X if (!before) {
- X XSetWindowAttributes swa;
- X swa.bit_gravity = ForgetGravity;
- X XChangeWindowAttributes (e->display, e->window,
- X CWBitGravity, &swa);
- X before = 1;
- X }
- X /* wait for the last in the series */
- X if (e->count != 0)
- X return;
- X break;
- X }
- X default:
- X printf ("Unexpected ssda_w event. type=%d\n", c->reason);
- X exit(1);
- X }
- X
- X ss_update (mm_get_now(), 1);
- X}
- X
- X/* a dot has been picked: find what it is and report it. */
- X/* ARGSUSED */
- Xstatic void
- Xss_da_input_cb (w, client, call)
- XWidget w;
- XXtPointer client;
- XXtPointer call;
- X{
- X XmDrawingAreaCallbackStruct *c = (XmDrawingAreaCallbackStruct *)call;
- X XEvent *ev;
- X
- X#define PICKRANGE 100 /* sqr of dist allowed from pointer */
- X int x, y, mind;
- X int dbidx;
- X HLoc *lp;
- X int i;
- X
- X if (c->reason != XmCR_INPUT)
- X return;
- X ev = c->event;
- X if (ev->xany.type != ButtonPress || ev->xbutton.button != Button3)
- X return;
- X
- X x = ((XButtonPressedEvent *)ev)->x;
- X y = ((XButtonPressedEvent *)ev)->y;
- X
- X lp = NULL;
- X for (dbidx = 0; dbidx < NOBJ; dbidx++)
- X for (i = 0; i < npoints[dbidx]; i++) {
- X int d = (x-points[dbidx][i].sx)*(x-points[dbidx][i].sx) +
- X (y-points[dbidx][i].sy)*(y-points[dbidx][i].sy);
- X if (!lp || d < mind) {
- X lp = &points[dbidx][i];
- X mind = d;
- X }
- X }
- X
- X if (lp && mind <= PICKRANGE)
- X ss_popup (ev, lp);
- X}
- X
- X/* ARGSUSED */
- Xstatic void
- Xst_parallax_cb (w, client, call)
- XWidget w;
- XXtPointer client;
- XXtPointer call;
- X{
- X XmScaleCallbackStruct *sp = (XmScaleCallbackStruct *)call;
- X
- X XmScaleGetValue (w, ¶llax);
- X ss_all (1);
- X
- X /* some of these get a bit lengthy, so discard remaining events.
- X * TODO: don't discard pending Expose events
- X */
- X if (sp->reason == XmCR_DRAG)
- X XSync (XtDisplay(w), True);
- X}
- X
- X/* called whenever the stereo scene is mapped.
- X * we set the size of the DrawingArea the same as the main window's.
- X * we also try to position it just to the left, but it doesn't always work :-(
- X */
- X/* ARGSUSED */
- Xstatic void
- Xst_map_cb (wid, client, call)
- XWidget wid;
- XXtPointer client;
- XXtPointer call;
- X{
- X Dimension w, h;
- X Position x, y;
- X Arg args[20];
- X int n;
- X
- X n = 0;
- X XtSetArg (args[n], XmNwidth, &w); n++;
- X XtSetArg (args[n], XmNheight, &h); n++;
- X XtGetValues (ssda_w, args, n);
- X
- X n = 0;
- X XtSetArg (args[n], XmNwidth, w); n++;
- X XtSetArg (args[n], XmNheight, h); n++;
- X XtSetValues (stda_w, args, n);
- X
- X n = 0;
- X XtSetArg (args[n], XmNx, &x); n++;
- X XtSetArg (args[n], XmNy, &y); n++;
- X XtGetValues (ssform_w, args, n);
- X
- X n = 0;
- X XtSetArg (args[n], XmNx, x-w); n++;
- X XtSetArg (args[n], XmNy, y); n++;
- X XtSetValues (stform_w, args, n);
- X}
- X
- X/* expose of stereo solar system drawing area.
- X */
- X/* ARGSUSED */
- Xstatic void
- Xst_da_exp_cb (w, client, call)
- XWidget w;
- XXtPointer client;
- XXtPointer call;
- X{
- X XmDrawingAreaCallbackStruct *c = (XmDrawingAreaCallbackStruct *)call;
- X
- X switch (c->reason) {
- X case XmCR_EXPOSE: {
- X /* turn off gravity so we get expose events for either shrink or
- X * expand.
- X */
- X static before;
- X XExposeEvent *e = &c->event->xexpose;
- X
- X if (!before) {
- X XSetWindowAttributes swa;
- X swa.bit_gravity = ForgetGravity;
- X XChangeWindowAttributes (e->display, e->window,
- X CWBitGravity, &swa);
- X before = 1;
- X }
- X /* wait for the last in the series */
- X if (e->count != 0)
- X return;
- X break;
- X }
- X default:
- X printf ("Unexpected stda_w event. type=%d\n", c->reason);
- X exit(1);
- X }
- X
- X ss_update (mm_get_now(), 1);
- X}
- X
- X/* a dot has been picked on the stereo map: find what it is and report it. */
- X/* ARGSUSED */
- Xstatic void
- Xst_da_input_cb (w, client, call)
- XWidget w;
- XXtPointer client;
- XXtPointer call;
- X{
- X XmDrawingAreaCallbackStruct *c = (XmDrawingAreaCallbackStruct *)call;
- X XEvent *ev;
- X
- X#define PICKRANGE 100 /* sqr of dist allowed from pointer */
- X int x, y, mind;
- X int dbidx;
- X HLoc *lp;
- X int i;
- X
- X if (c->reason != XmCR_INPUT)
- X return;
- X ev = c->event;
- X if (ev->xany.type != ButtonPress || ev->xbutton.button != Button3)
- X return;
- X
- X x = ((XButtonPressedEvent *)ev)->x;
- X y = ((XButtonPressedEvent *)ev)->y;
- X
- X lp = NULL;
- X for (dbidx = 0; dbidx < NOBJ; dbidx++)
- X for (i = 0; i < npoints[dbidx]; i++) {
- X int d = (x-points[dbidx][i].stx)*(x-points[dbidx][i].stx) +
- X (y-points[dbidx][i].sy)*(y-points[dbidx][i].sy);
- X if (!lp || d < mind) {
- X lp = &points[dbidx][i];
- X mind = d;
- X }
- X }
- X
- X if (lp && mind <= PICKRANGE)
- X ss_popup (ev, lp);
- X}
- X
- X/* fill in the popup with goodies from lp.
- X * display fields the same way they are in main data menu.
- X * position the popup as indicated by ev and display it.
- X * it goes down by itself.
- X */
- Xstatic void
- Xss_popup (ev, lp)
- XXEvent *ev;
- XHLoc *lp;
- X{
- X Obj *op = &lp->o;
- X double d;
- X
- X if (is_planet(op, MOON)) {
- X /* MOON is used to denote Earth */
- X f_string (pu.name_w, earthname);
- X XtManageChild (pu.ud_w);
- X XtManageChild (pu.udl_w);
- X XtManageChild (pu.ut_w);
- X XtManageChild (pu.utl_w);
- X XtManageChild (pu.ra_w);
- X XtManageChild (pu.ral_w);
- X set_xmstring (pu.ral_w, XmNlabelString, "Sun RA:");
- X XtManageChild (pu.dec_w);
- X XtManageChild (pu.decl_w);
- X set_xmstring (pu.decl_w, XmNlabelString, "Sun Dec:");
- X XtManageChild (pu.hlong_w);
- X XtManageChild (pu.hlongl_w);
- X XtUnmanageChild (pu.hlat_w);
- X XtUnmanageChild (pu.hlatl_w);
- X XtUnmanageChild (pu.eadst_w);
- X XtUnmanageChild (pu.eadstl_w);
- X XtManageChild (pu.sndst_w);
- X XtManageChild (pu.sndstl_w);
- X XtUnmanageChild (pu.elong_w);
- X XtUnmanageChild (pu.elongl_w);
- X set_something (pu.pu_w, XmNnumColumns, (char *)7);
- X } else {
- X f_string (pu.name_w, op->o_name);
- X if (is_planet (op, SUN)) {
- X XtUnmanageChild (pu.ud_w);
- X XtUnmanageChild (pu.udl_w);
- X XtUnmanageChild (pu.ut_w);
- X XtUnmanageChild (pu.utl_w);
- X XtUnmanageChild (pu.ra_w);
- X XtUnmanageChild (pu.ral_w);
- X XtUnmanageChild (pu.dec_w);
- X XtUnmanageChild (pu.decl_w);
- X XtUnmanageChild (pu.hlong_w);
- X XtUnmanageChild (pu.hlongl_w);
- X XtUnmanageChild (pu.hlat_w);
- X XtUnmanageChild (pu.hlatl_w);
- X XtUnmanageChild (pu.eadst_w);
- X XtUnmanageChild (pu.eadstl_w);
- X XtUnmanageChild (pu.sndst_w);
- X XtUnmanageChild (pu.sndstl_w);
- X XtUnmanageChild (pu.elong_w);
- X XtUnmanageChild (pu.elongl_w);
- X set_something (pu.pu_w, XmNnumColumns, (char *)1);
- X } else {
- X XtManageChild (pu.ud_w);
- X XtManageChild (pu.udl_w);
- X XtManageChild (pu.ut_w);
- X XtManageChild (pu.utl_w);
- X XtManageChild (pu.ra_w);
- X XtManageChild (pu.ral_w);
- X set_xmstring (pu.ral_w, XmNlabelString, "RA:");
- X XtManageChild (pu.dec_w);
- X XtManageChild (pu.decl_w);
- X set_xmstring (pu.decl_w, XmNlabelString, "Dec:");
- X XtManageChild (pu.hlong_w);
- X XtManageChild (pu.hlongl_w);
- X XtManageChild (pu.hlat_w);
- X XtManageChild (pu.hlatl_w);
- X XtManageChild (pu.eadst_w);
- X XtManageChild (pu.eadstl_w);
- X XtManageChild (pu.sndst_w);
- X XtManageChild (pu.sndstl_w);
- X XtManageChild (pu.elong_w);
- X XtManageChild (pu.elongl_w);
- X set_something (pu.pu_w, XmNnumColumns, (char *)10);
- X }
- X }
- X
- X f_date (pu.ud_w, lp->smjd);
- X f_time (pu.ut_w, mjd_hr(lp->smjd));
- X f_ra (pu.ra_w, op->s_ra);
- X f_angle (pu.dec_w, op->s_dec);
- X f_angle (pu.hlong_w, op->s_hlong);
- X f_angle (pu.hlat_w, op->s_hlat);
- X
- X d = op->s_edist;
- X f_double (pu.eadst_w, d >= 9.99995 ? "%6.3f" : "%6.4f", d);
- X
- X d = is_planet(op, MOON) ? op->s_edist
- X : op->s_sdist;
- X f_double (pu.sndst_w, d >= 9.99995 ? "%6.3f" : "%6.4f", d);
- X
- X f_double (pu.elong_w, "%6.1f", op->s_elong);
- X
- X XmMenuPosition (pu.pu_w, (XButtonPressedEvent *)ev);
- X XtManageChild (pu.pu_w);
- X}
- X
- X/* create the id popup */
- Xstatic void
- Xss_create_popup()
- X{
- X Arg args[20];
- X Widget w;
- X int n;
- X
- X /* create the outer form */
- X n = 0;
- X XtSetArg (args[n], XmNorientation, XmHORIZONTAL); n++;
- X XtSetArg (args[n], XmNpacking, XmPACK_COLUMN); n++;
- X XtSetArg (args[n], XmNisAligned, False); n++;
- X pu.pu_w = XmCreatePopupMenu (toplevel_w, "SSPopup", args, n);
- X
- X /* create the widgets */
- X
- X /* name */
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
- X w = XmCreateLabel (pu.pu_w, "SSPopNameL", args, n);
- X set_xmstring (w, XmNlabelString, "Name:");
- X XtManageChild (w);
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_END); n++;
- X pu.name_w = XmCreateLabel (pu.pu_w, "SSPopName", args, n);
- X XtManageChild (pu.name_w);
- X
- X /* UT date */
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
- X pu.udl_w = XmCreateLabel (pu.pu_w, "SSPopupUTDateL", args, n);
- X set_xmstring (pu.udl_w, XmNlabelString, "UT Date:");
- X XtManageChild (pu.udl_w);
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_END); n++;
- X pu.ud_w = XmCreateLabel (pu.pu_w, "SSPopUTDate", args, n);
- X XtManageChild (pu.ud_w);
- X
- X /* UT time */
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
- X pu.utl_w = XmCreateLabel (pu.pu_w, "SSPopupUTTimeL", args, n);
- X set_xmstring (pu.utl_w, XmNlabelString, "UT Time:");
- X XtManageChild (pu.utl_w);
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_END); n++;
- X pu.ut_w = XmCreateLabel (pu.pu_w, "SSPopUTTime", args, n);
- X XtManageChild (pu.ut_w);
- X
- X /* ra */
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
- X pu.ral_w = XmCreateLabel (pu.pu_w, "SSPopRAL", args, n);
- X XtManageChild (pu.ral_w);
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_END); n++;
- X pu.ra_w = XmCreateLabel (pu.pu_w, "SSPopRA", args, n);
- X XtManageChild (pu.ra_w);
- X
- X /* dec */
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
- X pu.decl_w = XmCreateLabel (pu.pu_w, "SSPopDecL", args, n);
- X XtManageChild (pu.decl_w);
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_END); n++;
- X pu.dec_w = XmCreateLabel (pu.pu_w, "SSPopDec", args, n);
- X XtManageChild (pu.dec_w);
- X
- X /* hlong */
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
- X pu.hlongl_w = XmCreateLabel (pu.pu_w, "SSPopupHLongL", args, n);
- X set_xmstring (pu.hlongl_w, XmNlabelString, "HeLong:");
- X XtManageChild (pu.hlongl_w);
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_END); n++;
- X pu.hlong_w = XmCreateLabel (pu.pu_w, "SSPopHLong", args, n);
- X XtManageChild (pu.hlong_w);
- X
- X /* hlat */
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
- X pu.hlatl_w = XmCreateLabel (pu.pu_w, "SSPopupHLatL", args, n);
- X set_xmstring (pu.hlatl_w, XmNlabelString, "HeLat:");
- X XtManageChild (pu.hlatl_w);
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_END); n++;
- X pu.hlat_w = XmCreateLabel (pu.pu_w, "SSPopHLat", args, n);
- X XtManageChild (pu.hlat_w);
- X
- X /* earth dist */
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
- X pu.eadstl_w = XmCreateLabel (pu.pu_w, "SSPopupEaDstL", args, n);
- X set_xmstring (pu.eadstl_w, XmNlabelString, "EaDst:");
- X XtManageChild (pu.eadstl_w);
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_END); n++;
- X pu.eadst_w = XmCreateLabel (pu.pu_w, "SSPopEaDst", args, n);
- X XtManageChild (pu.eadst_w);
- X
- X /* sun dist */
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
- X pu.sndstl_w = XmCreateLabel (pu.pu_w, "SSPopupSnDstL", args, n);
- X set_xmstring (pu.sndstl_w, XmNlabelString, "SnDst:");
- X XtManageChild (pu.sndstl_w);
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_END); n++;
- X pu.sndst_w = XmCreateLabel (pu.pu_w, "SSPopSnDst", args, n);
- X XtManageChild (pu.sndst_w);
- X
- X /* elong */
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
- X pu.elongl_w = XmCreateLabel (pu.pu_w, "SSPopupElongL", args, n);
- X set_xmstring (pu.elongl_w, XmNlabelString, "Elong:");
- X XtManageChild (pu.elongl_w);
- X n = 0;
- X XtSetArg (args[n], XmNalignment, XmALIGNMENT_END); n++;
- X pu.elong_w = XmCreateLabel (pu.pu_w, "SSPopElong", args, n);
- X XtManageChild (pu.elong_w);
- X}
- X
- X/* sort by time.
- X */
- Xstatic int
- XcmpHLoc (lp1, lp2)
- XConst void *lp1, *lp2;
- X{
- X double dt = ((HLoc *)lp1)->smjd - ((HLoc *)lp2)->smjd;
- X return (dt < 0 ? -1 : dt > 0 ? 1 : 0);
- X}
- X
- X/* draw everything in the points arrays from the current vantage to the
- X * current screen size.
- X * always draw the main window; also the stereo one if it's up.
- X */
- X/* ARGSUSED */
- Xstatic void
- Xss_all(preclr)
- Xint preclr;
- X{
- X#define CACHE_SZ 100 /* collect these many X commands */
- X#define CACHE_PAD 10 /* flush when only this many left */
- X#define CACHE_HWM (CACHE_SZ - CACHE_PAD) /* hi water mark */
- X static Pixmap ss_pm;
- X static Pixmap st_pm;
- X static GC ss_bgc;
- X static GC st_bgc;
- X static XFontStruct *ss_fs;
- X static XFontStruct *st_fs;
- X static unsigned ss_last_nx, ss_last_ny;
- X static unsigned st_last_nx, st_last_ny;
- X static int ss_cw;
- X static int st_cw;
- X Display *dsp = XtDisplay(ssda_w);
- X Window ss_win = XtWindow(ssda_w);
- X Window st_win = XtWindow(stda_w);
- X Window root;
- X unsigned int ss_nx, ss_ny;
- X unsigned int st_nx, st_ny;
- X int x, y;
- X unsigned int bw, d;
- X int dbidx;
- X int sv; /* ScaleValue tmp */
- X double scale;
- X double elt; /* heliocentric lat of eye, rads */
- X double elg; /* heliocentric lng of eye, rads */
- X int n;
- X
- X if (!ss_bgc) {
- X XGCValues gcv;
- X unsigned int gcm;
- X gcm = GCForeground;
- X get_something (ssda_w, XmNbackground, (char *)&gcv.foreground);
- X ss_bgc = XCreateGC (dsp, ss_win, gcm, &gcv);
- X ss_fs = XQueryFont (dsp, XGContextFromGC (ss_bgc));
- X ss_cw = ss_fs->max_bounds.width;
- X }
- X
- X if (!st_bgc && stereo) {
- X XGCValues gcv;
- X unsigned int gcm;
- X gcm = GCForeground;
- X get_something (stda_w, XmNbackground, (char *)&gcv.foreground);
- X st_bgc = XCreateGC (dsp, st_win, gcm, &gcv);
- X st_fs = XQueryFont (dsp, XGContextFromGC (st_bgc));
- X st_cw = st_fs->max_bounds.width;
- X }
- X
- X XGetGeometry(dsp, ss_win, &root, &x, &y, &ss_nx, &ss_ny, &bw, &d);
- X if (!ss_pm || ss_nx != ss_last_nx || ss_ny != ss_last_ny) {
- X if (ss_pm)
- X XFreePixmap (dsp, ss_pm);
- X ss_pm = XCreatePixmap (dsp, ss_win, ss_nx, ss_ny, d);
- X ss_last_nx = ss_nx;
- X ss_last_ny = ss_ny;
- X }
- X
- X if (stereo) {
- X XGetGeometry(dsp, st_win, &root, &x, &y, &st_nx, &st_ny, &bw, &d);
- X if (!st_pm || st_nx != st_last_nx || st_ny != st_last_ny) {
- X if (st_pm)
- X XFreePixmap (dsp, st_pm);
- X st_pm = XCreatePixmap (dsp, st_win, st_nx, st_ny, d);
- X st_last_nx = st_nx;
- X st_last_ny = st_ny;
- X }
- X }
- X
- X XFillRectangle (dsp, ss_pm, ss_bgc, 0, 0, ss_nx, ss_ny);
- X if (stereo)
- X XFillRectangle (dsp, st_pm, st_bgc, 0, 0, st_nx, st_ny);
- X
- X XmScaleGetValue (hr_w, &sv);
- X scale = MINMAG * pow (MAXMAG/MINMAG, sv/100.);
- X XmScaleGetValue (hlat_w, &sv);
- X elt = degrad(sv);
- X XmScaleGetValue (hlng_w, &sv);
- X elg = degrad(sv);
- X
- X /* display each point and optionally connect with line segments. */
- X for (dbidx = 0; dbidx < NOBJ; dbidx++) {
- X XPoint ss_xpoints[CACHE_SZ], *ss_xp = ss_xpoints;
- X XPoint st_xpoints[CACHE_SZ], *st_xp = st_xpoints;
- X XSegment ss_xsegments[CACHE_SZ], *ss_xs = ss_xsegments;
- X XSegment st_xsegments[CACHE_SZ], *st_xs = st_xsegments;
- X GC gc;
- X obj_pickgc (db_basic(dbidx), ssda_w, &gc);
- X if (npoints[dbidx] > 0 && obj_on[dbidx]) {
- X HLoc *flp, *lp;
- X flp = points[dbidx];
- X for (lp = flp; lp < flp + npoints[dbidx]; lp++) {
- X solar_system(lp, scale, elt, elg, ss_nx, ss_ny);
- X ss_xp->x = lp->sx; ss_xp->y = lp->sy; ss_xp++;
- X if (bigdots) {
- X ss_xp->x = lp->sx+1; ss_xp->y = lp->sy; ss_xp++;
- X ss_xp->x = lp->sx; ss_xp->y = lp->sy+1; ss_xp++;
- X ss_xp->x = lp->sx+1; ss_xp->y = lp->sy+1; ss_xp++;
- X }
- X if (connectdots && lp > flp) {
- X ss_xs->x1 = lp[-1].sx;
- X ss_xs->y1 = lp[-1].sy;
- X ss_xs->x2 = lp->sx;
- X ss_xs->y2 = lp->sy;
- X ss_xs++;
- X }
- X if (stereo) {
- X st_xp->x = lp->stx; st_xp->y = lp->sy; st_xp++;
- X if (bigdots) {
- X st_xp->x = lp->stx+1; st_xp->y = lp->sy; st_xp++;
- X st_xp->x = lp->stx; st_xp->y = lp->sy+1; st_xp++;
- X st_xp->x = lp->stx+1; st_xp->y = lp->sy+1; st_xp++;
- X }
- X if (connectdots && lp > flp) {
- X st_xs->x1 = lp[-1].stx;
- X st_xs->y1 = lp[-1].sy;
- X st_xs->x2 = lp->stx;
- X st_xs->y2 = lp->sy;
- X st_xs++;
- X }
- X }
- X if (dbidx == SUN) {
- X XDrawArc (dsp, ss_pm, gc, lp->sx-3, lp->sy-3,
- X 7, 7, 0, 64*360);
- X if (stereo)
- X XDrawArc (dsp, st_pm, gc, lp->stx-3, lp->sy-3,
- X 7, 7, 0, 64*360);
- X }
- X if ((n = ss_xp - ss_xpoints) >= CACHE_HWM) {
- X XDrawPoints (dsp,ss_pm,gc,ss_xpoints,n,CoordModeOrigin);
- X ss_xp = ss_xpoints;
- X }
- X if ((n = st_xp - st_xpoints) >= CACHE_HWM) {
- X XDrawPoints (dsp,st_pm,gc,st_xpoints,n,CoordModeOrigin);
- X st_xp = st_xpoints;
- X }
- X if ((n = ss_xs - ss_xsegments) >= CACHE_HWM) {
- X XDrawSegments (dsp, ss_pm, gc, ss_xsegments, n);
- X ss_xs = ss_xsegments;
- X }
- X if ((n = st_xs - st_xsegments) >= CACHE_HWM) {
- X XDrawSegments (dsp, st_pm, gc, st_xsegments, n);
- X st_xs = st_xsegments;
- X }
- X }
- X if (nametags) {
- X char *name;
- X if (dbidx == MOON)
- X name = earthname;
- X else {
- X Obj *op = db_basic (dbidx);
- X name = op->o_name;
- X }
- X XDrawString (dsp, ss_pm, gc, flp->sx+ss_cw, flp->sy,
- X name, strlen(name));
- X if (stereo)
- X XDrawString (dsp, st_pm, gc, flp->stx+st_cw, flp->sy,
- X name, strlen(name));
- X }
- X }
- X if ((n = ss_xp - ss_xpoints) > 0) {
- X XDrawPoints (dsp, ss_pm, gc, ss_xpoints, n, CoordModeOrigin);
- X ss_xp = ss_xpoints;
- X }
- X if ((n = st_xp - st_xpoints) > 0) {
- X XDrawPoints (dsp, st_pm, gc, st_xpoints, n, CoordModeOrigin);
- X st_xp = st_xpoints;
- X }
- X if ((n = ss_xs - ss_xsegments) > 0) {
- X XDrawSegments (dsp, ss_pm, gc, ss_xsegments, n);
- X ss_xs = ss_xsegments;
- X }
- X if ((n = st_xs - st_xsegments) > 0) {
- X XDrawSegments (dsp, st_pm, gc, st_xsegments, n);
- X st_xs = st_xsegments;
- X }
- X }
- X
- X XCopyArea (dsp, ss_pm, ss_win, ss_bgc, 0, 0, ss_nx, ss_ny, 0, 0);
- X
- X if (stereo)
- X XCopyArea (dsp, st_pm, st_win, st_bgc, 0, 0, st_nx, st_ny, 0, 0);
- X}
- X
- X/* compute location of HLoc in window of size [nx,ny] */
- Xstatic void
- Xsolar_system(lp, scale, elt, elg, nx, ny)
- XHLoc *lp;
- Xdouble scale; /* mag factor */
- Xdouble elt; /* heliocentric lat of eye, rads */
- Xdouble elg; /* heliocentric lng of eye, rads */
- Xunsigned nx, ny;/* size of drawing area, in pixels */
- X{
- X double x, y, z; /* progressive transform values... */
- X double xp, yp, zp;
- X double xpp, ypp, zpp;
- X double tmp;
- X double back;
- X
- X /* initial loc of points[i] */
- X x = lp->x;
- X y = lp->y;
- X z = lp->z;
- X
- X /* rotate by -elg about z axis to get to xz plane.
- X * once we rotate up about x to the z axis (next step) that will put
- X * +x to the right and +y up.
- X */
- X tmp = -elg;
- X xp = x*cos(tmp) - y*sin(tmp);
- X yp = x*sin(tmp) + y*cos(tmp);
- X zp = z;
- X
- X /* rotate by -(PI/2-elt) about x axis to get to z axis.
- X * +x right, +y up, +z towards, all in AU.
- X */
- X tmp = -(PI/2-elt);
- X xpp = xp;
- X ypp = yp*cos(tmp) - zp*sin(tmp);
- X zpp = yp*sin(tmp) + zp*cos(tmp);
- X
- X /* now, straight ortho projection */
- X lp->sx = nx/2 + xpp*scale;
- X lp->sy = ny/2 - ypp*scale;
- X
- X /* back is y coord, in AU, behind which there is no parallax.
- X */
- X back = -20.0/scale;
- X if (zpp < back)
- X lp->stx = lp->sx;
- X else
- X lp->stx = lp->sx + parallax*(zpp-back)*(scale/50);
- X}
- END_OF_FILE
- if test 43023 -ne `wc -c <'solsysmenu.c'`; then
- echo shar: \"'solsysmenu.c'\" unpacked with wrong size!
- fi
- # end of 'solsysmenu.c'
- fi
- echo shar: End of archive 12 \(of 21\).
- cp /dev/null ark12isdone
- 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
- echo Building ephem.db
- cat > ephem.db.Z.uu ephem.db.Z.uu.?
- uudecode ephem.db.Z.uu
- rm ephem.db.Z.uu ephem.db.Z.uu.?
- uncompress ephem.db.Z
- echo Building skyviewmenu.c
- cat > skyviewmenu.c skyviewmenu.c.?
- rm skyviewmenu.c.?
- echo Building smallfm.xbm
- cat > smallfm.xbm smallfm.xbm.?
- rm smallfm.xbm.?
- else
- echo You still must unpack the following archives:
- echo " " ${MISSING}
- fi
- exit 0
- exit 0 # Just in case...
- --
- // chris@IMD.Sterling.COM | Send comp.sources.x submissions to:
- \X/ Amiga - The only way to fly! |
- "It's intuitively obvious to the most | sources-x@imd.sterling.com
- casual observer..." |
-