home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-04-06 | 31.2 KB | 1,082 lines |
-
- #! /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 16 (of 32)."
- # Contents: starchart/spo.c.ab
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'starchart/spo.c.ab' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'starchart/spo.c.ab'\"
- else
- echo shar: Extracting \"'starchart/spo.c.ab'\" \(29553 characters\)
- sed "s/^X//" >'starchart/spo.c.ab' <<'END_OF_FILE'
- X/* 0 */ { 1.0, 1.0, 1.0 }, /* BLACK */
- X/* 1 */ { 0, 0, 0 }, /* WHITE */
- X/* 2 */ { 1.0, 0, 0 }, /* RED */
- X/* 3 */ { 1.0, 0.4, 0 }, /* ORANGE */
- X/* 4 */ { 1.0, 1.0, 0 }, /* YELLOW */
- X/* 5 */ { 0, 1.0, 0 }, /* GREEN */
- X/* 6 */ { 0, 1.0, 1.0 }, /* CYAN */
- X/* 7 */ { 0, 0, 1.0 }, /* BLUE */
- X/* 8 */ { 1.0, 0, 1.0 }, /* VIOLET */
- X/* 9 */ { .5, .5, 1.0 }, /* BLUE_WHITE */
- X /* Red Green Blue Nameby which
- X type is known */
- X/* 10 */ { 0.38937, 0.46526, 0.79493 }, /* B0 */
- X/* 11 */ { 0.39501, 0.47146, 0.78847 }, /* B1 */
- X/* 12 */ { 0.40103, 0.47792, 0.78151 }, /* B2 */
- X/* 13 */ { 0.40640, 0.48355, 0.77526 }, /* B3 */
- X/* 14 */ { 0.41341, 0.49071, 0.76701 }, /* B5 */
- X/* 15 */ { 0.43251, 0.50914, 0.74412 }, /* B8 */
- X/* 16 */ { 0.44342, 0.51897, 0.73079 }, /* B9 */
- X/* 17 */ { 0.45181, 0.52618, 0.72042 }, /* A0 */
- X/* 18 */ { 0.46931, 0.54026, 0.69847 }, /* A2 */
- X/* 19 */ { 0.47958, 0.54792, 0.68541 }, /* A3 */
- X/* 20 */ { 0.48538, 0.55205, 0.67797 }, /* A5 */
- X/* 21 */ { 0.50879, 0.56731, 0.64752 }, /* F0 */
- X/* 22 */ { 0.51732, 0.57231, 0.63627 }, /* F2 */
- X/* 23 */ { 0.52348, 0.57573, 0.62810 }, /* F5 */
- X/* 24 */ { 0.54076, 0.58447, 0.60496 }, /* F8 */
- X/* 25 */ { 0.54853, 0.58799, 0.59446 }, /* G0 */
- X/* 26 */ { 0.56951, 0.59623, 0.56584 }, /* G5 */
- X/* 27 */ { 0.58992, 0.60244, 0.53765 }, /* K0 */
- X/* 28 */ { 0.61098, 0.60693, 0.50828 }, /* K2 */
- X/* 29 */ { 0.63856, 0.60977, 0.46950 }, /* K5 */
- X/* 30 */ { 0.68698, 0.60595, 0.40110 }, /* M0 */
- X/* 31 */ { 0.72528, 0.59434, 0.34744 }, /* M2 */
- X/* 32 */ { 0.75182, 0.58144, 0.31097 }, /* M3 */
- X/* 33 */ { 0.78033, 0.56272, 0.27282 }, /* M4 */
- X/* 34 */ { 0.81066, 0.53676, 0.23394 }, /* M5 */
- X/* 35 */ { 0.84247, 0.50195, 0.19570 }, /* M6 */
- X/* 36 */ { 0.87512, 0.45667, 0.16004 }, /* M7 */
- X/* 37 */ { 0.71033, 0.59983, 0.36829 }, /* N0 */
- X/* 38 */ { 0.78625, 0.55816, 0.26507 }, /* N3 */
- X/* 39 */ { 0.93792, 0.33011, 0.10649 }, /* N8 */
- X/* 40 */ { 0.94897, 0.29906, 0.10012 }, /* N9 */
- X/* 41 */ { 0.79832, 0.54811, 0.24950 }, /* S4 */
- X/* 42 */ { 0.38241, 0.45743, 0.80282 }, /* O */
- X
- X/* 43 */ { 0.500, 0, 0}, /* r0 */
- X/* 44 */ { 0.750, 0, 0}, /* r3 */
- X/* 45 */ { 0.875, 0, 0}, /* r6 */
- X/* 46 */ { 1.000, 0, 0}, /* r9 */
- X/* 47 */ { 0, 0.500, 0}, /* g0 */
- X/* 48 */ { 0, 0.750, 0}, /* g3 */
- X/* 49 */ { 0, 0.875, 0}, /* g6 */
- X/* 50 */ { 0, 1.000, 0}, /* g9 */
- X/* 51 */ { 0, 0, 0.500}, /* b0 */
- X/* 52 */ { 0, 0, 0.750}, /* b3 */
- X/* 53 */ { 0, 0, 0.875}, /* b6 */
- X/* 54 */ { 0, 0, 1.000}, /* b9 */
- X/* 55 */ { 0.500, 0.500, 0}, /* y0 */
- X/* 56 */ { 0.750, 0.750, 0}, /* y3 */
- X/* 57 */ { 0.875, 0.875, 0}, /* y6 */
- X/* 58 */ { 1.000, 1.000, 0}, /* y9 */
- X/* 59 */ { 0, 0.500, 0.500}, /* c0 */
- X/* 60 */ { 0, 0.750, 0.750}, /* c3 */
- X/* 61 */ { 0, 0.875, 0.875}, /* c6 */
- X/* 62 */ { 0, 1.000, 1.000}, /* c9 */
- X/* 63 */ { 0.500, 0, 0.500}, /* p0 */
- X/* 64 */ { 0.750, 0, 0.750}, /* p3 */
- X/* 65 */ { 0.875, 0, 0.875}, /* p6 */
- X/* 66 */ { 1.000, 0, 1.000}, /* p9 */
- X/* 67 */ { 0.500, 0.250, 0.000}, /* o0 */
- X/* 68 */ { 0.750, 0.375, 0.000}, /* o3 */
- X/* 69 */ { 0.875, 0.4375, 0.000}, /* o6 */
- X/* 70 */ { 1.000, 0.500, 0.000}, /* o9 */
- X/* 71 */ { 0.500, 0.500, 0.500}, /* w0 */
- X/* 72 */ { 0.750, 0.750, 0.750}, /* w3 */
- X/* 73 */ { 0.875, 0.875, 0.875}, /* w6 */
- X/* 74 */ { 1.000, 1.000, 1.000}, /* w9 */
- X };
- X
- X if (!color_postscript) return;
- X
- X class = 0;
- X while (table[class] && (table[class] != color_str[0])) class++;
- X
- X subclass = isdigit(color_str[1]) ? color_str[1] - '0' : 0;
- X colr = table[class] ? 10 + super_spectra[class][subclass] : WHITE;
- X
- X/*
- X fprintf(outf, "%d '%s' scolor\n", colr, color_str);
- X*/
- X if (colr != cur_colr)
- X if (colr == WHITE)
- X fprintf(outf, "0 0 0 srgb\n");
- X else
- X fprintf(outf, "%f %f %f srgb\n",
- X ctab[colr].r, ctab[colr].g, ctab[colr].b);
- X/*
- X fprintf(outf, "%f %f %f setrgbcolor\n%% %s\n",
- X ctab[colr].r, ctab[colr].g, ctab[colr].b, color_str);
- X*/
- X
- X cur_colr = colr;
- X}
- X
- X/*
- Xstatic int c_font = -1, c_size = -1;
- Xstatic char *c_fname = "/Times-Roman";
- X*/
- X/* Set the font and font size to be used for text. */
- X/* Note order of args */
- XD_fontsize(fsize, font)
- X int fsize; /* Size of font */
- X int font; /* e.g. TIMES, HELV, TIMES+ITALIC */
- X{
- X
- X/* fprintf(outf, "%%fontsize %d %d\n", font, fsize);*/
- X
- X /* override some requests */
- X switch(cur_function) {
- X case CHRTOUTLN:
- X break;
- X case CHRTHTICK:
- X case CHRTVTICK:
- X font = TIMESBOLD;
- X break;
- X case GRID_RA:
- X case GRID_DEC:
- X case ECLIPT:
- X break;
- X case CONSTBOUND:
- X case CONSTPATTRN:
- X break;
- X case CONSTNAME:
- X font = HELVITAL;
- X break;
- X case CHARTFILE:
- X break;
- X }
- X
- X if ((fsize == c_size) && (font == c_font)) return;
- X
- X switch(font) {
- X case TIMESROMAN:
- X c_fname = "/Times-Roman";
- X break;
- X case TIMESBOLD:
- X c_fname = "/Times-Bold";
- X break;
- X case TIMESITAL:
- X c_fname = "/Times-Italic";
- X break;
- X case TIMESBOLDITAL:
- X c_fname = "/Times-BoldItalic";
- X break;
- X case HELV:
- X c_fname = "/Helvetica";
- X break;
- X case HELVBOLD:
- X c_fname = "/Helvetica-Bold";
- X break;
- X case HELVITAL:
- X c_fname = "/Helvetica-Oblique";
- X break;
- X case HELVBOLDITAL:
- X c_fname = "/Helvetica-BoldOblique";
- X break;
- X case COURIER:
- X c_fname = "/Courier";
- X break;
- X case COURBOLD:
- X c_fname = "/Courier-Bold";
- X break;
- X case COURITAL:
- X c_fname = "/Courier-Oblique";
- X break;
- X case COURITALBOLD:
- X c_fname = "/Courier-BoldOblique";
- X break;
- X default:
- X font = CURNTFONT;
- X break;
- X };
- X
- X/* This doesn't work, since currentfont is already scaled
- X if (font == CURNTFONT)
- X fprintf(outf, "%d cfsize\n", fsize);
- X else
- X fprintf(outf, "%d %s fontsz\n", fsize, c_fname);
- X*/
- X
- X fprintf(outf, "%d %s fontsz\n", fsize, c_fname);
- X c_size = fsize;
- X c_font = font;
- X}
- X/* This routine is encouraged to look at the extern cur_funtion
- X and change the font used as desired */
- X
- X/*
- X * Additions for Greek fonts
- X */
- Xstatic char *intable = " abgdezh@iklmnEoprstu0x%w";
- Xstatic char *outtable = " abgdezhqiklmnxoprstujcyw";
- X
- X/* Display text string str at x,y, in current font and font size.
- X if star_lbl is TRUE, string is a star label, use
- X greek characters (if possible) */
- XD_text(x, y, str, star_lbl)
- X int x, y;
- X char *str;
- X int star_lbl;
- X{
- X char ch;
- X int i, j, k;
- X
- X
- X /* Note: this ends current line */
- X D_move(x,y);
- X
- X /* Always issue a moveto. D_move won't if current point is the point
- X to move to. For text which follows a previous text, this is wrong.
- X e.g. "100 100 mt (asdf) lbshw (jkl) lbshw" produces "asdfjkl" instead
- X of overwriting asdf with jkl. */
- X fprintf(outf, "%d %d mt\n", x, y);
- X
- X if (!star_lbl) {
- X fprintf(outf, "(%s) lbshw\n", str);
- X } else {
- X if (isgreek(str[0]) && (isdigit(str[1]) || (str[1] == ' '))) {
- X /* Greek if first character is greek encoded,
- X and the second is space or a digit */
- X /* Translate yaleformat greek encoding to Symbol font encoding */
- X#ifdef OLD_GREEK
- X i = 0;
- X while (ch = str[i])
- X {
- X j = 0;
- X while (intable[j] && (intable[j] != ch)) j++;
- X str[i] = intable[j] ? outtable[j] : str[i];
- X /* If not in translation table, leave it alone */
- X i++;
- X }
- X#endif
- X fprintf(outf, "(%s) gshow\n", str);
- X } else { /* Star label, but not greek */
- X /* remove leading spaces */
- X while (*str == ' ') str++;
- X fprintf(outf, "(%s) obshw\n", str);
- X }
- X }
- X
- X vecstate = S_UNDEF;
- X}
- X
- Xisgreek(c)
- Xchar c;
- X{
- X char *cp;
- X
- X#ifdef OLD_GREEK
- X cp = "abgdezh@iklmnEoprstuOx%w";
- X#else
- X cp = "abgdezhqiklmnxoprstujcywf"; /* f and j are both phi */
- X#endif
- X while (*cp && (*cp != c)) cp++;
- X return (*cp != '\0'); /* True if letter was in greek string */
- X}
- X
- X
- X
- X/* Return input coordinate in device coords where there are pointing devices */
- XD_inxy(x, y)
- X int *x, *y;
- X{
- X}
- X
- X
- X/* Put non-displayed comment in output. Allowed in postscript, but
- X few other drivers will be able to support this. */
- XD_comment(str)
- X char *str;
- X{
- X fprintf(outf, "%%%s\n", str);
- X}
- X
- X
- X/**
- XHigher level functions
- X**/
- X
- X/* Point sizes for font calls */
- X#define TITLESIZE 16
- X#define SUBTLSIZE 12
- X#define NAMESIZE 10
- X#define LBLSIZE 8
- X#define MAGSIZE 8
- X
- X/* Fonts for font calls */
- X#define NAMEFNT TIMESROMAN
- X#define LBLFNT HELV
- X#define MAGFNT COURIER
- X#define TITLEFNT TIMESBOLD
- X#define SUBTLFNT TIMESROMAN
- X
- Xint x_nameoffset = MAG0_RAD+ResPT, y_nameoffset = 0;
- Xint x_lbloffset = MAG3_RAD, y_lbloffset = MAG3_RAD+ResPT/2;
- Xint x_magoffset = MAG3_RAD+ResPT, y_magoffset = -MAG3_RAD-ResPT;
- X
- X/* Interface Function */
- X/* Draw object at x, y. properties set by other parameters */
- Xdrawobj(x, y, mag, type, color_str, label_field, con_str, obj_name,
- X comment_str, file_line,
- X draw_glyph, draw_text, use_lbl, use_name, use_mag)
- X
- X int x, y;
- X double mag; /* Magnitude of object */
- X char *type; /* 2 chars, object code and subcode */
- X char *color_str; /* 2 chars, spectral type for stars,
- X color code otherwise */
- X char *label_field; /* 2 chars, Bayer or flamsteed for stars,
- X size in seconds for nebulae and
- X planets */
- X char *con_str; /* 3 chars, the constellation the object is in */
- X char *obj_name; /* Name of object */
- X char *comment_str; /* Comment field */
- X char *file_line; /* The full line from the file,
- X containing the above if it is in
- X standard format */
- X int draw_glyph; /* Draw object symbol */
- X int draw_text; /* Draw text */
- X int use_lbl; /* Label object with the label_field string */
- X int use_name; /* Label object with the obj_name string */
- X int use_mag; /* Label object with a 2 or 3 character string
- X containing the magnitude * 10 without
- X decimal point */
- X{
- X char magstr[10];
- X
- X/*fprintf(stderr, "%d %d %f <%s> <%s> <%s> <%s> <%s> <%s> <%s>\n", x, y, mag,
- X type, color_str, label_field, con_str, obj_name, comment_str,
- X file_line);*/
- X
- X if (draw_glyph)
- X switch(type[0]) {
- X case 'S': drawStar(x,y,mag,type[1],color_str);
- X break;
- X case 'P': drawPlan(x,y,mag,type[1],color_str, size_obj(label_field),
- X comment_str);
- X break;
- X case 'N': drawNebu(x,y,mag,type[1],color_str, size_obj(label_field));
- X break;
- X case 'G': drawGalx(x,y,mag,type[1],color_str, size_obj(label_field));
- X break;
- X case 'C': drawClus(x,y,mag,type[1],color_str, size_obj(label_field));
- X break;
- X case 'U':
- X drawUnknown(x,y,mag,type[1],color_str, size_obj(label_field));
- X break;
- X case 'O':
- X drawOther(x,y,mag,type[1],color_str, size_obj(label_field));
- X break;
- X case 'V':
- X case 'A':
- X case 'I':
- X break;
- X case '#':
- X default:
- X break;
- X };
- X
- X
- X/*
- X * use name or label
- X */
- X if (draw_text) {
- X if (type[0] == 'I')
- X D_color(color_str);
- X else
- X D_color(" ");
- X
- X if (use_name && obj_name[0]) {
- X D_fontsize(NAMESIZE, NAMEFNT);
- X D_text(x+x_nameoffset, y+y_nameoffset, obj_name, FALSE);
- X } else if (use_lbl &&
- X ((label_field[0] != ' ') || (label_field[1] != ' '))) {
- X D_fontsize(LBLSIZE, LBLFNT);
- X D_text(x+x_lbloffset, y+y_lbloffset, label_field, TRUE);
- X }
- X/* If you want to mag label other objects, change this */
- X if (use_mag && (type[0] == 'S')) {
- X sprintf(magstr, "%02d", (int)(mag*10.0+0.5));
- X D_fontsize(MAGSIZE, MAGFNT);
- X D_text(x+x_magoffset, y+y_magoffset, magstr, FALSE);
- X }
- X }
- X}
- X
- XdrawStar(x, y, mag, type, color)
- X int x, y;
- X double mag;
- X char type, *color;
- X{
- X char *code;
- X double truemag = mag;
- X
- X/* Not used anymore, all labels are the same size.
- X switch ((int)(mag+0.5))
- X {
- X case -1: D_fontsize(18, CURNTFONT); break;
- X case 0: D_fontsize(18, CURNTFONT); break;
- X case 1: D_fontsize(16, CURNTFONT); break;
- X case 2: D_fontsize(14, CURNTFONT); break;
- X case 3: D_fontsize(12, CURNTFONT); break;
- X case 4: D_fontsize(8, CURNTFONT); break;
- X default: D_fontsize(6, CURNTFONT); break;
- X }
- X*/
- X
- X if (cur_map_type == THUMBNAIL) mag += thumbshift;
- X /* Shrink stars for thumbnail */
- X else {
- X if (mag < brightest_used) brightest_used = mag;
- X if (mag > faintest_used) faintest_used = mag;
- X }
- X
- X if (mag<MAG_BRIGHT) mag = MAG_BRIGHT;
- X if (mag>MAG_DIM) mag = MAG_DIM;
- X
- X switch (type)
- X {
- X default:
- X case 'S': code = "s"; break;
- X case 'D': code = "d"; break;
- X case 'V': code = "v"; break;
- X }
- X
- X /* Note: this ends current line */
- X D_move(x,y);
- X
- X D_color(color);
- X if (use_fine_mag) {
- X /* use fine magnitude scale */
- X#ifdef USE_FINE_MACROS
- X if ((mag*10+0.5) < 0)
- X fprintf(outf, "%d %d s%s_%02d\n", x, y, code, - (int) (mag*10+0.5));
- X else
- X fprintf(outf, "%d %d s%s%02d\n", x, y, code, (int) (mag*10+0.5));
- X#else
- X fprintf(outf, "%d %d %d %s %% %.2f\n", x, y,
- X mag10sizes[(int) ((mag - MAG_BRIGHT)*10.0)], code, truemag);
- X#endif
- X }else {
- X if (mag < -0.5) /* rounded mag is less than 0 */
- X fprintf(outf, "%d %d %s_1\n", x, y, code); /* MAG_BRIGHT == -1 */
- X else
- X fprintf(outf, "%d %d %s%d\n", x, y, code, (int) (mag+0.5));
- X }
- X
- X vecstate = S_UNDEF;
- X}
- X
- XdrawPlan(x, y, mag, type, color, plansize, comment_str)
- X int x,y;
- X double mag;
- X char type, *color;
- X long plansize;
- X char *comment_str;
- X{
- X int diam;
- X int n;
- X double phase, chi;
- X
- X /* Note: this ends current line */
- X D_move(x,y);
- X
- X D_color(color);
- X fprintf(outf, "%%diam %.3f\n", (plansize/(3600.*xf_c_scale)+.5));
- X diam = (int) (plansize/(3600.*xf_c_scale)+.5);
- X if (diam < 12*ResPT)
- X diam = 12*ResPT;
- X/*
- Xfprintf(outf, "%%xf_c_scale %f\n", xf_c_scale);
- Xfprintf(outf, "%%size %d\n", plansize);
- Xfprintf(outf, "%%points %f\n", plansize/(3600.*xf_c_scale));
- Xfprintf(outf, "%%diam %d\n", diam);*/
- X
- X switch(type)
- X {
- X case 'A': fprintf(outf, "%d %d %d asteroid\n", x, y, diam); break;
- X case 'C':
- X phase = 45.0;
- X n = sscanf(comment_str, "%lf", &phase);
- X fprintf(outf, "%%phase %f\n", phase);
- X if (cur_win->invert) phase = 180 - phase;
- X fprintf(outf, "%d %d %f %d comet\n", x, y, phase, diam);
- X break;
- X
- X case 'S': fprintf(outf, "%d %d %d sun\n", x, y, diam); break;
- X case 'L':
- X phase = 0.0;
- X chi = 90.0;
- X n = sscanf(comment_str, "%lf %lf", &phase, &chi);
- X fprintf(outf, "%%phase: %f chi: %f\n", phase, chi);
- X if (cur_win->invert) chi = 180 - chi;
- X fprintf(outf, "%d %d %d %f %f moon\n", x, y, diam, phase, chi);
- X break;
- X
- X case 'M': fprintf(outf, "%d %d %d mercury\n", x, y, diam); break;
- X case 'V': fprintf(outf, "%d %d %d venus\n", x, y, diam); break;
- X case 'm': fprintf(outf, "%d %d %d mars\n", x, y, diam); break;
- X case 'J': fprintf(outf, "%d %d %d jupiter\n", x, y, diam); break;
- X case 's': fprintf(outf, "%d %d %d saturn\n", x, y, diam); break;
- X case 'U': fprintf(outf, "%d %d %d uranus\n", x, y, diam); break;
- X case 'N': fprintf(outf, "%d %d %d neptune\n", x, y, diam); break;
- X case 'P': fprintf(outf, "%d %d %d pluto\n", x, y, diam); break;
- X default: fprintf(outf, "%d %d %d planet\n", x, y, diam);
- X }
- X
- X vecstate = S_UNDEF;
- X D_color(" ");
- X}
- X
- XdrawGalx(x, y, mag, type, color, nebsize)
- X int x,y;
- X double mag;
- X char type, *color;
- X long nebsize; /* -1 should give default size */
- X{
- X int diam;
- X
- X /* Note: this ends current line */
- X D_move(x,y);
- X D_color(color);
- X
- X diam = (int) (nebsize/(3600.*xf_c_scale)+.5);
- X if (diam < 6*ResPT)
- X diam = 6*ResPT;
- X/*
- Xfprintf(outf, "%%xf_c_scale %f\n", xf_c_scale);
- Xfprintf(outf, "%%size %d\n", nebsize);
- Xfprintf(outf, "%%points %f\n", nebsize/(3600.*xf_c_scale));
- Xfprintf(outf, "%%diam %d\n", diam);*/
- X
- X switch(type)
- X {
- X case 'a':
- X case 'b':
- X case 'c':
- X case 'd':
- X case 'B':
- X case 'S':
- X case 'O':
- X fprintf(outf, "%d %d %d galaxys\n", x, y, diam);
- X break;
- X case 'Q':
- X fprintf(outf, "%d %d %d galaxyq\n", x, y, diam);
- X break;
- X case 'E':
- X case 'I':
- X case 'G':
- X fprintf(outf, "%d %d %d galaxye\n", x, y, diam);
- X break;
- X default:
- X fprintf(outf, "%d %d %d galaxy\n", x, y, diam);
- X }
- X
- X vecstate = S_UNDEF;
- X D_color(" ");
- X}
- X
- XdrawNebu(x, y, mag, type, color, nebsize)
- X int x,y;
- X double mag;
- X char type, *color;
- X long nebsize; /* -1 should give default size */
- X{
- X int diam;
- X
- X /* Note: this ends current line */
- X D_move(x,y);
- X D_color(color);
- X
- X diam = (int) (nebsize/(3600.*xf_c_scale)+.5);
- X if (diam < 6*ResPT)
- X diam = 6*ResPT;
- X/*
- Xfprintf(outf, "%%xf_c_scale %f\n", xf_c_scale);
- Xfprintf(outf, "%%size %d\n", nebsize);
- Xfprintf(outf, "%%points %f\n", nebsize/(3600.*xf_c_scale));
- Xfprintf(outf, "%%diam %d\n", diam);*/
- X
- X switch(type)
- X {
- X case 'P': fprintf(outf, "%d %d %d nebulap\n", x, y, diam); break;
- X case 'D': fprintf(outf, "%d %d %d nebulad\n", x, y, diam); break;
- X default: fprintf(outf, "%d %d %d nebula\n", x, y, diam);
- X }
- X
- X vecstate = S_UNDEF;
- X D_color(" ");
- X}
- X
- XdrawClus(x, y, mag, type, color, nebsize)
- X int x,y;
- X double mag;
- X char type, *color;
- X long nebsize; /* -1 should give default size */
- X{
- X int diam;
- X
- X /* Note: this ends current line */
- X D_move(x,y);
- X D_color(color);
- X
- X diam = (int) (nebsize/(3600.*xf_c_scale)+.5);
- X if (diam < 6*ResPT)
- X diam = 6*ResPT;
- X/*
- Xfprintf(outf, "%%xf_c_scale %f\n", xf_c_scale);
- Xfprintf(outf, "%%size %d\n", nebsize);
- Xfprintf(outf, "%%points %f\n", nebsize/(3600.*xf_c_scale));
- Xfprintf(outf, "%%diam %d\n", diam);*/
- X switch(type)
- X {
- X case 'G': fprintf(outf, "%d %d %d clusterg\n", x, y, diam); break;
- X case 'O': fprintf(outf, "%d %d %d clustero\n", x, y, diam); break;
- X default: fprintf(outf, "%d %d %d cluster\n", x, y, diam);
- X }
- X
- X vecstate = S_UNDEF;
- X D_color(" ");
- X}
- X
- XdrawUnknown(x, y, mag, type, color, nebsize)
- X int x,y;
- X double mag;
- X char type, *color;
- X long nebsize; /* -1 should give default size */
- X{
- X int diam;
- X
- X /* Note: this ends current line */
- X D_move(x,y);
- X D_color(color);
- X
- X diam = (int) (nebsize/(3600.*xf_c_scale)+.5);
- X if (diam < 6*ResPT)
- X diam = 6*ResPT;
- X/*
- Xfprintf(outf, "%%xf_c_scale %f\n", xf_c_scale);
- Xfprintf(outf, "%%size %d\n", nebsize);
- Xfprintf(outf, "%%points %f\n", nebsize/(3600.*xf_c_scale));
- Xfprintf(outf, "%%diam %d\n", diam);*/
- X
- X switch(type)
- X {
- X default: fprintf(outf, "%d %d %d unknown_u\n", x, y, diam);
- X }
- X
- X vecstate = S_UNDEF;
- X D_color(" ");
- X}
- X
- X
- XdrawOther(x, y, mag, type, color, nebsize)
- X int x,y;
- X double mag;
- X char type, *color;
- X long nebsize; /* -1 should give default size */
- X{
- X int diam;
- X
- X /* Note: this ends current line */
- X D_move(x,y);
- X D_color(color);
- X
- X diam = (int) (nebsize/(3600.*xf_c_scale)+.5);
- X if (diam < 6*ResPT)
- X diam = 6*ResPT;
- X/*
- Xfprintf(outf, "%%xf_c_scale %f\n", xf_c_scale);
- Xfprintf(outf, "%%size %d\n", nebsize);
- Xfprintf(outf, "%%points %f\n", nebsize/(3600.*xf_c_scale));
- Xfprintf(outf, "%%diam %d\n", diam);*/
- X switch(type)
- X {
- X default: fprintf(outf, "%d %d %d other_o\n", x, y, diam);
- X }
- X
- X vecstate = S_UNDEF;
- X D_color(" ");
- X}
- X
- X
- X/* Want three legend columns, in 10 rows, with a title and subtitle above:
- Xtitle
- Xsubtitle (ra, dec, lim)
- X
- X -1 0 1
- X 2 3 4
- X 5 6 7
- X 8 9 10
- X double variable
- X planet asteroid comet
- X cluster globular open
- X nebula planetary diffuse
- X galaxy elliptical spiral
- X unknown other quasar
- X
- Xstar columns x coordinates are at star_x_col[];
- Xstar row y coordinates are star_y_row[];
- Xother at oth_x_col[] and oth_y_row[];
- X
- Xtitle and subtitle coordinates are defined by L_TIL_{X,Y} and L_STIL_{X,Y}
- XLabels are placed as in drawobj().
- X
- Xfor fullpage map, only the title and subtitle are displayed, on one line. */
- X
- Xstatic int star_x_col[] = {
- X 36*ResPT,
- X 108*ResPT,
- X 180*ResPT,
- X 36*ResPT,
- X 108*ResPT,
- X 180*ResPT,
- X 36*ResPT,
- X 108*ResPT,
- X 180*ResPT,
- X 36*ResPT,
- X 108*ResPT,
- X 180*ResPT,
- X 36*ResPT,
- X 108*ResPT,
- X 180*ResPT};
- X
- Xstatic int oth_x_col[] = {
- X 36*ResPT,
- X 108*ResPT,
- X 180*ResPT,
- X 36*ResPT,
- X 108*ResPT,
- X 180*ResPT,
- X 36*ResPT,
- X 108*ResPT,
- X 180*ResPT,
- X 36*ResPT,
- X 108*ResPT,
- X 180*ResPT,
- X 36*ResPT,
- X 108*ResPT,
- X 180*ResPT};
- X
- X
- X#define L_TIL_X 36*ResPT
- X#define L_TIL_Y 180*ResPT
- X#define L_STIL_X 36*ResPT
- X#define L_STIL_Y (L_TIL_Y - 18*ResPT)
- X
- X/* (let ((i 0))
- X (while (< i 10)
- X (princ (format "\n %d*ResPT," (+ 36 (* (- 9 i) 12))))
- X (setq i (1+ i)))
- X nil) */
- X
- Xstatic int star_y_row[] = {
- X 144*ResPT,
- X 144*ResPT,
- X 144*ResPT,
- X 132*ResPT,
- X 132*ResPT,
- X 132*ResPT,
- X 120*ResPT,
- X 120*ResPT,
- X 120*ResPT,
- X 108*ResPT,
- X 108*ResPT,
- X 108*ResPT,
- X 96*ResPT,
- X 96*ResPT,
- X 96*ResPT
- X};
- X
- Xstatic int oth_y_row[] = {
- X 84*ResPT,
- X 84*ResPT,
- X 84*ResPT,
- X 72*ResPT,
- X 72*ResPT,
- X 72*ResPT,
- X 60*ResPT,
- X 60*ResPT,
- X 60*ResPT,
- X 48*ResPT,
- X 48*ResPT,
- X 48*ResPT,
- X 36*ResPT,
- X 36*ResPT,
- X 36*ResPT};
- X
- Xstatic int starmags[12];
- Xstatic int magbright, magfaint;
- X#define L_X_FULLPAGE_CAPT 18*ResPT
- X#define L_Y_FULLPAGE_CAPT 25*ResPT
- X
- Xchartlegend(win)
- X mapwindow *win;
- X{
- X char ras[20], dls[20], outstr[40], magstr[20];
- X int i, j, xcen, ycen;
- X int nummags;
- X
- X if (!title[0]) title = "LEGEND";
- X rastr(ras, win->racen);
- X declstr(dls, win->dlcen);
- X
- X if (win->map_type != FULLPAGEMAP) {
- X sprintf(outstr, "(%s,%s lim: %2.1f)", ras, dls, win->maglim);
- X D_fontsize(TITLESIZE, TITLEFNT); D_text(L_TIL_X, L_TIL_Y, title, FALSE);
- X D_fontsize(SUBTLSIZE, SUBTLFNT); D_text(L_STIL_X, L_STIL_Y, outstr, FALSE);
- X
- X D_fontsize(10, NAMEFNT);
- X
- X /* set magnitudes in legend */
- X
- X if (brightest_used > faintest_used) {
- X brightest_used = 0.0;
- X faintest_used = 10.0;
- X }
- X
- X magbright = brightest_used - 0.5;
- X magfaint = faintest_used + 0.5;
- X if (magfaint > MAG_DIM) magfaint = MAG_DIM;
- X if (magbright < MAG_BRIGHT) magbright = MAG_BRIGHT;
- X if (magbright < (magfaint - 11)) magbright = (magfaint - 11);
- X nummags = magfaint - magbright + 1;
- X for (i = magbright; i <= magfaint; i++) {
- X starmags[i-magbright] = i;
- X }
- X
- X for (i = 0; i < nummags; i++) {
- X drawStar(star_x_col[i], star_y_row[i], (double) starmags[i], 'S', " ");
- X sprintf(magstr, " %d", starmags[i]);
- X D_text(star_x_col[i]+x_nameoffset, star_y_row[i]+y_nameoffset,
- X magstr, FALSE);
- X }
- X
- X drawStar(star_x_col[13], star_y_row[13],
- X ((magbright+magfaint)/2.0),
- X 'D', " ");
- X D_text(star_x_col[13]+x_nameoffset, star_y_row[13]+y_nameoffset,
- X "double", FALSE);
- X
- X drawStar(star_x_col[14], star_y_row[14],
- X ((magbright+magfaint)/2.0),
- X 'V', " ");
- X D_text(star_x_col[14]+x_nameoffset, star_y_row[14]+y_nameoffset,
- X "variable", FALSE);
- X
- X
- X
- X i = 0;
- X drawPlan(oth_x_col[i], oth_y_row[i], 1.0, 'u', " ", (long) -1, "");
- X D_text(oth_x_col[i]+x_nameoffset, oth_y_row[i]+y_nameoffset,
- X "Planet", FALSE);
- X i++;
- X
- X drawPlan(oth_x_col[i], oth_y_row[i], 1.0, 'A', " ", (long) -1, "");
- X D_text(oth_x_col[i]+x_nameoffset, oth_y_row[i]+y_nameoffset,
- X "Asteroid", FALSE);
- X i++;
- X
- X drawPlan(oth_x_col[i], oth_y_row[i], 1.0, 'C', " ", (long) -1, "");
- X D_text(oth_x_col[i]+x_nameoffset, oth_y_row[i]+y_nameoffset,
- X "Comet", FALSE);
- X i++;
- X
- X drawClus(oth_x_col[i], oth_y_row[i], 1.0, 'u', " ", (long) -1);
- X D_text(oth_x_col[i]+x_nameoffset, oth_y_row[i]+y_nameoffset,
- X "Cluster", FALSE);
- X i++;
- X
- X drawClus(oth_x_col[i], oth_y_row[i], 1.0, 'G', " ", (long) -1);
- X D_text(oth_x_col[i]+x_nameoffset, oth_y_row[i]+y_nameoffset,
- X "Globular", FALSE);
- X i++;
- X
- X drawClus(oth_x_col[i], oth_y_row[i], 1.0, 'O', " ", (long) -1);
- X D_text(oth_x_col[i]+x_nameoffset, oth_y_row[i]+y_nameoffset,
- X "Open", FALSE);
- X i++;
- X
- X
- X drawNebu(oth_x_col[i], oth_y_row[i], 1.0, 'u', " ", (long) -1);
- X D_text(oth_x_col[i]+x_nameoffset, oth_y_row[i]+y_nameoffset,
- X "Nebula", FALSE);
- X i++;
- X
- X drawNebu(oth_x_col[i], oth_y_row[i], 1.0, 'P', " ", (long) -1);
- X D_text(oth_x_col[i]+x_nameoffset, oth_y_row[i]+y_nameoffset,
- X "Planetary", FALSE);
- X i++;
- X
- X drawNebu(oth_x_col[i], oth_y_row[i], 1.0, 'D', " ", (long) -1);
- X D_text(oth_x_col[i]+x_nameoffset, oth_y_row[i]+y_nameoffset,
- X "Diffuse", FALSE);
- X i++;
- X
- X
- X drawGalx(oth_x_col[i], oth_y_row[i], 1.0, 'u', " ", (long) -1);
- X D_text(oth_x_col[i]+x_nameoffset, oth_y_row[i]+y_nameoffset,
- X "Galaxy", FALSE);
- X i++;
- X
- X drawGalx(oth_x_col[i], oth_y_row[i], 1.0, 'E', " ", (long) -1);
- X D_text(oth_x_col[i]+x_nameoffset, oth_y_row[i]+y_nameoffset,
- X "Elliptical", FALSE);
- X i++;
- X
- X drawGalx(oth_x_col[i], oth_y_row[i], 1.0, 'S', " ", (long) -1);
- X D_text(oth_x_col[i]+x_nameoffset, oth_y_row[i]+y_nameoffset,
- X "Spiral", FALSE);
- X i++;
- X
- X
- X drawUnknown(oth_x_col[i], oth_y_row[i], 1.0, 'u', " ", (long) -1);
- X D_text(oth_x_col[i]+x_nameoffset, oth_y_row[i]+y_nameoffset,
- X "Unknown", FALSE);
- X i++;
- X
- X drawOther(oth_x_col[i], oth_y_row[i], 1.0, 'o', " ", (long) -1);
- X D_text(oth_x_col[i]+x_nameoffset, oth_y_row[i]+y_nameoffset,
- X "Other", FALSE);
- X i++;
- X
- X drawGalx(oth_x_col[i], oth_y_row[i], 1.0, 'Q', " ", (long) -1);
- X D_text(oth_x_col[i]+x_nameoffset, oth_y_row[i]+y_nameoffset,
- X "Quasar", FALSE);
- X i++;
- X
- X /* Notebook mode */
- X#define NOTE_LEFT_COL 306
- X#define NOTE_RIGHT_COL 486
- X#define NOTE_TOP_ROW 144
- X#define NOTE_ROW_SPACE 14*ResPT
- X i = 0;
- X if (notebook_mode) {
- X /* draw views */
- X out("gsave");
- X out("1 setlinewidth 2 setlinecap");
- X out("[] 0 setdash 0 setgray");
- X xcen = win->width/2 + win->x_offset;
- X ycen = win->height/2 + win->y_offset;
- X for (j = 0; j< numviews; j++) {
- X fprintf(outf, " newpath %d %d %f 0 360 arc stroke\n",
- X xcen, ycen, viewrad[j]/win->c_scale);
- X };
- Xout("grestore");
- X out("12 /Helvetica fontsz");
- X out("/rjust { dup stringwidth pop neg 0 rmoveto show} def");
- X fprintf(outf, "%d %d mt", NOTE_LEFT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("(Date:) rjust");
- X fprintf(outf, "%d %d mt", NOTE_RIGHT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("(Time:) rjust");
- X i++;
- X
- X fprintf(outf, "%d %d mt", NOTE_LEFT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("(Object Altitude:) rjust");
- X fprintf(outf, "%d %d mt", NOTE_RIGHT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("() rjust");
- X i++;
- X
- X fprintf(outf, "%d %d mt", NOTE_LEFT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("(Instrument:) rjust");
- X fprintf(outf, "%d %d mt", NOTE_RIGHT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("() rjust");
- X i++;
- X
- X fprintf(outf, "%d %d mt", NOTE_LEFT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("(Eyepiece:) rjust");
- X fprintf(outf, "%d %d mt", NOTE_RIGHT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("(Filter:) rjust");
- X i++;
- X
- X fprintf(outf, "%d %d mt", NOTE_LEFT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("(Site:) rjust");
- X fprintf(outf, "%d %d mt", NOTE_RIGHT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("() rjust");
- X i++;
- X
- X fprintf(outf, "%d %d mt", NOTE_LEFT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("(Seeing:) rjust");
- X fprintf(outf, "%d %d mt", NOTE_RIGHT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("(Transparency:) rjust");
- X i++;
- X
- X fprintf(outf, "%d %d mt", NOTE_LEFT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("(Darkness:) rjust");
- X fprintf(outf, "%d %d mt", NOTE_RIGHT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("(Magnitude limit:) rjust");
- X i++;
- X
- X fprintf(outf, "%d %d mt", NOTE_LEFT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("(Wind:) rjust");
- X fprintf(outf, "%d %d mt", NOTE_RIGHT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("() rjust");
- X i++;
- X
- X fprintf(outf, "%d %d mt", NOTE_LEFT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("(Temperature:) rjust");
- X fprintf(outf, "%d %d mt", NOTE_RIGHT_COL*ResPT,
- X NOTE_TOP_ROW*ResPT - i*NOTE_ROW_SPACE);
- X out("(Dew:) rjust");
- X i++;
- X };
- X
- X } else {
- X D_fontsize(8, NAMEFNT);
- X sprintf(outstr, "%s: %s,%s lim: %2.1f", title, ras, dls, win->maglim);
- X D_text(L_X_FULLPAGE_CAPT, L_Y_FULLPAGE_CAPT, outstr, FALSE);
- X }
- X}
- X
- X
- X
- END_OF_FILE
- if test 29553 -ne `wc -c <'starchart/spo.c.ab'`; then
- echo shar: \"'starchart/spo.c.ab'\" unpacked with wrong size!
- fi
- # end of 'starchart/spo.c.ab'
- fi
- echo shar: End of archive 16 \(of 32\).
- cp /dev/null ark16isdone
- 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 22 23 24 25 26 27 28 29 30 31 32 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 32 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
-
-
-