|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 6986 (0x1b4a) Types: TextFile Names: »shgetopt.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z« └─⟦2109abc41⟧ └─⟦this⟧ »./X.V10R4/showimg/shgetopt.c«
/* collect and interpret runtime options for showimg, * * 8/12/86 Bill Wyatt * * Also opens the display, since to set up certain color * options, the display must be accessible. */ #include <stdio.h> #include <X/Xlib.h> #include "shimg.h" #include "shopt.h" short gray_bits[16] = { 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa, 0x5555}; shgetopt(argc, argv, maininfo, colorinfo, imageinfo) int argc; char *argv[]; struct windmain *maininfo; struct colorwind *colorinfo; struct imagewind *imageinfo; { Color cdef; char *option, *border_color, *back_color; int i, strcmp(), atoi(); char *index(); if ((option = XGetDefault(argv[0],"BorderWidth")) != NULL) maininfo->frame.bdrwidth = atoi(option); else maininfo->frame.bdrwidth = 0; if ((border_color = XGetDefault(argv[0],"Border")) == NULL) border_color = XGetDefault(argv[0],"BorderColor"); back_color = XGetDefault(argv[0],"Background"); for (i = 1; i < argc; i++) { if (argv[i][0] == '=') { maininfo->geometry = argv[i]; continue; } if (index(argv[i], ':') != NULL) { /* host:display */ maininfo->display = argv[i]; continue; } if (strcmp(argv[i], "-bw") == 0 || strcmp(argv[i], "-border") == 0) { /* border width */ if (++i >= argc) usage(argv[0]); maininfo->frame.bdrwidth = atoi(argv[i]); continue; } if (strcmp(argv[i], "-bd") == 0 || strcmp(argv[i], "-color") == 0) { /* border color */ if (++i >= argc) usage(argv[0]); border_color = argv[i]; continue; } if(strcmp(argv[i], "-bg") == 0 || strcmp(argv[i], "background") == 0) { /* background color */ if(++i >= argc) usage(argv[0]); back_color = argv[i]; continue; } if (strcmp(argv[i], "-p") == 0 || strcmp(argv[i], "-planes") == 0) { /* # of planes */ if (++i >= argc) usage(argv[0]); colorinfo->nplanes = (atoi(argv[i]) > 8) ? 8 : atoi(argv[i]); continue; } if (strcmp(argv[i],"-n") == 0 || strcmp(argv[i],"-neg") == 0) { /* negative map */ imageinfo->VOP_Flags |= VOP_Inverse; continue; } if (strcmp(argv[i],"-rgb") == 0) { /* manipulate RGB */ /* rgbmap++; */ imageinfo->VOP_Flags &= ~(VOP_GrayScale); imageinfo->VOP_Flags |= VOP_RGB; continue; } if(strcmp(argv[i],"-skip") == 0 || strcmp(argv[i],"-sk") == 0) { /* skip header */ if(++i >= argc) usage(argv[0]); imageinfo->headskip = atoi(argv[i]); if(imageinfo->headskip < 0) usage(argv[0]); continue; } if(strcmp(argv[i],"-nrows") == 0 || strcmp(argv[i],"-nr") == 0) { /* explicit set */ if(++i >= argc) usage(argv[0]); imageinfo->nrows = atoi(argv[i]); if(imageinfo->nrows <= 0) usage(argv[0]); continue; } if(strcmp(argv[i],"-ncols") == 0 || strcmp(argv[i],"-nc") == 0) { /* explicit set */ if(++i >= argc) usage(argv[0]); imageinfo->ncols = atoi(argv[i]); if(imageinfo->ncols <= 0) usage(argv[0]); continue; } if(strcmp(argv[i],"-sqrt") == 0 || strcmp(argv[i],"-sq") == 0) { /* sqrt scaling */ imageinfo->SOP_Flags = SOP_Sqrt; continue; } if(strcmp(argv[i],"-test") == 0 || strcmp(argv[i],"-t") == 0) { /* test gray scale*/ imageinfo->calibration++; continue; } if(strcmp(argv[i],"-saturate") == 0 || /* set sat. lev.*/ strcmp(argv[i],"-sat") == 0) { if(++i >= argc) usage(argv[0]); if((imageinfo->pmax = atoi(argv[i])) > 16383) usage(argv[0]); continue; } if(strcmp(argv[i],"-threshold") == 0 || /* set thresh lev.*/ strcmp(argv[i],"-thr") == 0) { if(++i >= argc) usage(argv[0]); if((imageinfo->pmin = atoi(argv[i])) < -16383) usage(argv[0]); continue; } if(strcmp(argv[i],"-fits") == 0) { /* select fits file*/ imageinfo->fitsflag = 1; continue; } if(strcmp(argv[i],"-dfits") == 0) { /* select disk fits file*/ imageinfo->fitsflag = 2; continue; } #ifdef XRAY /* added by egm */ if(strcmp(argv[i],"-ein") ==0 ){ if(++i >= argc) usage(argv[0]); imageinfo->iy = atoi(argv[i]); if(++i >= argc) usage(argv[0]); imageinfo->iz = atoi(argv[i]); if(++i >= argc) usage(argv[0]); imageinfo->zoom = atoi(argv[i]); if(++i >= argc) usage(argv[0]); imageinfo->energy = atoi(argv[i]); imageinfo->ein = 1; imageinfo->ncols = 512; imageinfo->nrows = 512; continue; } if(strcmp(argv[i],"-ros") ==0 ){ if(++i >= argc) usage(argv[0]); imageinfo->iy = atoi(argv[i]); if(++i >= argc) usage(argv[0]); imageinfo->iz = atoi(argv[i]); if(++i >= argc) usage(argv[0]); imageinfo->zoom = atoi(argv[i]); imageinfo->ros = 1; imageinfo->ncols = 512; imageinfo->nrows = 512; continue; } /* end of egm code */ #endif if (argv[i][0] == '-') usage(argv[0]); imageinfo->filename = argv[i]; } /* do some consistency checks on selected options */ if(imageinfo->headskip > 0 && (imageinfo->nrows == 0 || imageinfo->ncols == 0)) usage(argv[0]); if((imageinfo->pmax == -3000 && imageinfo->pmin != 70000) || (imageinfo->pmin == 70000 && imageinfo->pmax != -3000)) usage(argv[0]); if(imageinfo->fitsflag != 0 && (imageinfo->headskip > 0 || imageinfo->nrows != 0 || imageinfo->ncols != 0)) usage(argv[0]); if (!XOpenDisplay(maininfo->display)) { perror(argv[0]); exit(1); } if (border_color && DisplayCells() > 2 && XParseColor(border_color, &cdef) && XGetHardwareColor(&cdef)) maininfo->frame.border = XMakeTile(cdef.pixel); else if (border_color && strcmp(border_color, "black") == 0) maininfo->frame.border = BlackPixmap; else if (border_color && strcmp(border_color, "white") == 0) maininfo->frame.border = WhitePixmap; else maininfo->frame.border = XMakePixmap (XStoreBitmap (16, 16, gray_bits), BlackPixel, WhitePixel); if (back_color && DisplayCells() > 2 && XParseColor(back_color, &cdef) && XGetHardwareColor(&cdef)) maininfo->frame.background = XMakeTile(cdef.pixel); else if (back_color && strcmp(back_color, "white") == 0) maininfo->frame.background = WhitePixmap; else maininfo->frame.background = BlackPixmap; return; } usage (program) char *program; { fprintf(stderr,"usage: %s [ options ] filename\n",program); fprintf(stderr," where options are one or more of:\n"); fprintf(stderr," [host:display] [=geom] [-bw] [-bd] [-bg]\n"); fprintf(stderr," [-planes #] [-rgb] [-neg] [-sqrt]\n"); fprintf(stderr," [-skip # -nrows # -ncols #]\n"); fprintf(stderr," [-saturate # -threshold #]\n"); fprintf(stderr," [-fits] [ -dfits ]\n"); exit(1); }