simData () { fpConfig_t fp; /* Get a Page for the pixel data. */ page = smcGetPage (smc, TY_DATA, (im_nx*im_ny*(im_bitpix/8)), TRUE, TRUE); if (page == (smcPage_t *) NULL) { fprintf (stderr, "Error getting data page.\n"); return; } fp.xSize = im_nx; /* Set the fpConfig struct. */ fp.ySize = im_ny; fp.xStart = 0; fp.yStart = 0; fp.dataType = 1; smcSetFPConfig (page, &fp); smcSetWho (page, 2); /* Set the 'who' field */ smcSetExpID (page, 3.141592654); /* Set the 'expid' field */ smcSetObsetID (page, "3.14159"); /* Set the 'obsetid' field */ /* Create a raster in the shared area */ make_raster ((int *)smcGetPageData(page), im_nx, im_ny, color_mode++); /* Unlock and Detach from the page. */ smcUnlock (page); smcDetach (smc, page, FALSE); }
static SkImage* make_encode_gen(GrContext* ctx, const SkPicture* pic, const SkImageInfo& info) { SkAutoTUnref<SkImage> src(make_raster(ctx, pic, info)); if (!src) { return nullptr; } SkAutoTUnref<SkData> encoded(src->encode(SkImageEncoder::kPNG_Type, 100)); if (!encoded) { return nullptr; } return SkImage::NewFromEncoded(encoded); }
static sk_sp<SkImage> make_encode_gen(GrContext* ctx, SkPicture* pic, const SkImageInfo& info) { sk_sp<SkImage> src(make_raster(ctx, pic, info)); if (!src) { return nullptr; } sk_sp<SkData> encoded(src->encode(SkImageEncoder::kPNG_Type, 100)); if (!encoded) { return nullptr; } return SkImage::MakeFromEncoded(std::move(encoded)); }
raster_t load_image_mem_libjpeg(uint8_t *raw_data, size_t size, const int mode) { struct jpeg_decompress_struct cinfo={0}; struct jpeg_error_mgr jerr; int ret; xyi_t ip; raster_t im={0}; uint8_t *scanline, *p0, *p1; // allocate and initialize JPEG decompression object cinfo.err = jpeg_std_error(&jerr); jpeg_create_decompress(&cinfo); jpeg_mem_src(&cinfo, raw_data, size); ret = jpeg_read_header(&cinfo, TRUE); // read file header if (ret != 1) { fprintf_rl(stderr, "Image cannot be read by jpeg_read_header()\n"); } else { jpeg_calc_output_dimensions(&cinfo); im = make_raster(NULL, xyi(cinfo.output_width, cinfo.output_height), XYI0, IMAGE_USE_SRGB); scanline = malloc(cinfo.output_width * cinfo.output_components); jpeg_start_decompress(&cinfo); for (ip.y=0; ip.y < im.dim.y; ip.y++) { jpeg_read_scanlines(&cinfo, &scanline, 1); for (ip.x=0; ip.x < im.dim.x; ip.x++) { p0 = &scanline[ip.x * cinfo.output_components]; p1 = &im.srgb[ip.y*im.dim.x + ip.x]; p1[0] = p0[0]; p1[1] = p0[1]; p1[2] = p0[2]; } } free(scanline); } // free the libjpeg stuff jpeg_finish_decompress(&cinfo); jpeg_destroy_decompress(&cinfo); convert_image_srgb8(&im, im.srgb, mode); // fills all the necessary buffers with the image data return im; }
puchar save_raster_align8(cell *c) { comp_from_kit(c); wcomp.rw = ((wcomp.w+63)/64)*8; return make_raster(); }
/*================ Make raster function =======================*/ puchar save_raster(cell *c) { comp_from_kit(c); return make_raster(); }
main() { IMDPtr imd, imd_open(); char key, cmd[2], name[SZ_NAME], title[SZ_NAME]; int i, j, zt=1, frame=1, fbconfig=2, color=201; int debug = 1, nx, ny, ix=128, iy=128, wcs=0; int xarray[1024], yarray[1024]; float rx=128., ry=128.; float a, b, c, d, tx, ty, z1, z2; uchar pix, raster[1024*1024]; imd_setDebug (debug); com_setDebug (debug); if ((imd = imd_open ((char *)getenv("IMTDEV"))) == (IMDPtr) NULL) exit (); cmd[0] = 'd'; cmd[1] = '\n'; print_help(); do { switch (cmd[0]) { case '+': /* ENABLE DEBUG */ imd_setDebug (++debug); break; case '-': /* DISABLE DEBUG */ imd_setDebug (--debug); break; case 's': /* SAMPLE CURSOR */ sleep (2); if (imd_readCursor (imd, 1, &rx, &ry, &wcs, &key)) printf ("...returns an error\n"); printf ("cursor: x=%g y=%g key='%c'\n", rx, ry, key); break; case 'c': /* SET CURSOR */ sleep (2); if (imd_setCursor (imd, 256, 256)) printf ("...returns an error\n"); break; case 'C': /* READ CURSOR */ if (imd_readCursor (imd, 0, &rx, &ry, &wcs, &key)) printf ("...returns an error\n"); ix = (int) rx; iy = (int) ry; printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx, ix, ry, iy, key); break; case 'd': /* WRITE IMAGE */ printf ("creating raster....\n"); /* make_raster (raster, 1024, 1024, TEST_PATTERN); */ make_raster (raster, 512, 512, TEST_PATTERN); imd_setName (imd, "test image"); imd_setTitle (imd, "test title"); printf ("displaying raster....\n"); /* if (imd_displayImage(imd,raster,1024,1024,frame,fbconfig,1)) printf ("...returns an error\n"); */ if (imd_displayImage(imd,raster,512,512,frame,fbconfig,1)) printf ("...returns an error\n"); break; case 'D': /* READ IMAGE */ if (imd_readImage (imd, raster, &nx, &ny)) printf ("...returns an error\n"); printf ("corners: nx=%d ny=%d LL = [%d] UR = [%d]\n", nx, ny, raster[0], raster[nx*ny-1]); if (imd_displayImage(imd,raster,nx,ny,frame,fbconfig,1)) printf ("...returns an error\n"); break; case 'e': /* ERASE FRAME */ if (imd_clearFrame (imd)) printf ("...returns an error\n"); break; case 'F': /* READ FB */ if (imd_readFrameBuffer (imd, raster, &nx, &ny)) printf ("...returns an error\n"); printf ("fb corners: nx=%d ny=%d LL = [%d] UR = [%d]\n", nx, ny, raster[0], raster[nx*ny-1]); if (imd_displayImage(imd,raster,nx,ny,frame,fbconfig,1)) printf ("...returns an error\n"); break; case 'm': /* MARK POINT */ for (key='z'; key != 'q'; ) { if (imd_readCursor (imd, 0, &rx, &ry, &wcs, &key)) printf ("...returns an error\n"); ix = (int) rx; iy = (int) ry; printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx, ix, ry, iy, key); make_raster (raster, 16, 16, color); color = (color+1 > 209 ? 201 : color+1); if (imd_writeSubRaster (imd, ix-8, iy-8, 16, 16, raster)) printf ("...returns an error\n"); } break; case 'n': /* NEXT FRAME */ frame = (frame+1 > 4 ? 1 : frame+1); if (imd_setFrame (imd, frame)) printf ("...returns an error\n"); printf ("imd->frame = %d\n", imd->frame); break; case 'N': /* NEXT CONFIG */ fbconfig = (fbconfig+1 > 12 ? 1 : fbconfig+1); if (imd_setFBConfig (imd, fbconfig)) printf ("...returns an error\n"); i = imd->fbconfig - 1; printf ("imd->fbconfig = %d/%d [%d %d %d %d]\n", imd->fbconfig, i, imd->fbtab[i]->config, imd->fbtab[i]->nframes, imd->fbtab[i]->width, imd->fbtab[i]->height); break; case 'p': /* PREVIOUS FRAME */ frame = (frame-1 < 1 ? 4 : frame-1); if (imd_setFrame (imd, frame)) printf ("...returns an error\n"); printf ("imd->frame = %d\n", imd->frame); break; case 'P': /* PREV CONFIG */ if (imd_setFBConfig (imd, fbconfig)) printf ("...returns an error\n"); fbconfig = (fbconfig-1 < 1 ? 12 : fbconfig)-1; i = imd->fbconfig - 1; printf ("imd->fbconfig = %d/%d [%d %d %d %d]\n", imd->fbconfig, i, imd->fbtab[i]->config, imd->fbtab[i]->nframes, imd->fbtab[i]->width, imd->fbtab[i]->height); break; case 'q': /* QUIT */ goto quit; case 'r': /* WRITE REGION */ make_raster (raster, 256, 256, TEST_PATTERN); if (imd_writeSubRaster (imd, 128, 128, 256, 256, raster)) printf ("...returns an error\n"); make_raster (raster, 32, 32, color); if (imd_writeSubRaster (imd, -16, -16, 32, 32, raster)) printf ("...returns an error\n"); if (imd_writeSubRaster (imd, -16, 496, 32, 32, raster)) printf ("...returns an error\n"); if (imd_writeSubRaster (imd, 496, -16, 32, 32, raster)) printf ("...returns an error\n"); if (imd_writeSubRaster (imd, 496, 496, 32, 32, raster)) printf ("...returns an error\n"); color = (color+1 > 209 ? 201 : color+1); break; case 'R': /* READ REGION */ if (imd_readSubRaster (imd, -8, -8, 16, 16, raster)) printf ("...returns an error\n"); for (i=15; i > 0; i--) { for (j=0; j < 16; j++) { printf ("%3d ", raster[i * 16 + j]); raster[i * 16 + j] = 0; } printf ("\n"); } if (imd_writeSubRaster (imd, -8, -8, 16, 16, raster)) printf ("...returns an error\n"); break; case 'w': /* SET WCS */ if (imd_setWCS (imd, "imaname", "imtitle", 1., 0., 0., -1., 0., 0., 1., 255., 1)) printf ("...returns an error\n"); break; case 'W': /* GET WCS */ if (imd_setWCS (imd, name, title, &a, &b, &c, &d, &tx, &ty, &z1, &z2, &zt)) printf ("...returns an error\n"); printf ("name='%s' title='%s'\n a=%g b=%g c=%g d=%g tx=%g ty=%g z1=%g z2=%g zt=%d\n", name, title, a, b, c, d, tx, ty, z1, z2, zt); break; case '?': print_help(); break; case '1': /* WRITE CLIPPING */ printf ("creating raster....\n"); make_raster (raster, 512, 512, TEST_PATTERN); imd_setFrame (imd, frame); imd_clearFrame (imd); imd_setFBConfig (imd, fbconfig); imd_setName (imd, "test image"); imd_setTitle (imd, "test title"); printf ("displaying raster....\n"); if (imd_writeImage(imd,raster,512,512,-8, -8)) printf ("...returns an error\n"); break; case '2': /* READ CLIPPING */ if (imd_readSubRaster (imd, -8, -8, 16, 16, raster)) printf ("...returns an error\n"); for (i=15; i >= 0; i--) { for (j=0; j < 16; j++) printf ("%3d ", raster[i * 16 + j]); printf ("\n"); } if (imd_writeSubRaster (imd, -8, -8, 16, 16, raster)) printf ("...returns an error\n"); break; case 'a': clock (); for (i=0, ix=16, iy=16; i < 1024; i++) { ix = xarray[i] = (ix+10 > 500 ? 16 : ix + 10); iy = yarray[i] = (ix == 16 ? iy + 16: iy); } for (i=0; i < 1024; i++) { make_raster (raster, 8, 8, color); color = (color+1 > 209 ? 201 : color+1); if (imd_writeSubRaster (imd, xarray[i], yarray[i], 8, 8, raster)) printf ("...returns an error\n"); } printf ("takes %d microseconds\n", clock()); } printf ("Command: "); scanf ("%s", cmd); } while (cmd[0] != 'q'); quit: (void) imd_close (imd); }
main() { CDLPtr cdl; char key, cmd[2], name[SZ_NAME], title[SZ_NAME], obj[SZ_NAME]; int i, j, zt=1, frame=1, fbconfig=1, color=3, lwidth=1, twidth=1; int debug = 0, nx, ny, bitpix, ix=128, iy=128, lstyle=0; int lx, ly, ux, uy; int fb_w, fb_h, nframes, wcs; int xarray[1024], yarray[1024]; float rx=128., ry=128., sx, sy; float a, b, c, d, tx, ty, z1=0.0, z2=0.0; int snx, sny, dnx, dny, dx, dy; uchar *pix, *c_ras; double sin(); cdl = cdl_open ((char *)getenv("IMTDEV")); if (cdl == (CDLPtr) NULL) exit (); c_ras = (uchar *) malloc (1024 * 1024); cmd[0] = 'f'; cmd[1] = '\n'; print_help(); do { switch (cmd[0]) { case '<': /* ENABLE DEBUG */ cdl_setDebug (1); break; case '>': /* DISABLE DEBUG */ cdl_setDebug (0); break; case 'S': /* SAMPLE CURSOR */ (void) cdl_readCursor (cdl, 1, &rx, &ry, &wcs, &key); printf ("cursor: x=%g y=%g wcs=%d key='%d' (%c)\n", rx, ry, wcs, key, key); break; case 'C': /* CLIP TEST TOP */ if (cdl_readSubRaster (cdl, 128, -32, 128, 128, &c_ras)) printf ("...read returns an error\n"); if (cdl_writeSubRaster (cdl, 128, -32, 128, 128, c_ras)) printf ("...write returns an error\n"); if (cdl_readSubRaster (cdl, 128, -8, 16, 16, &c_ras)) printf ("...read returns an error\n"); for (i=0;i<16;i++) { for (j=0; j<16; j++) printf ("%3d ", c_ras[i*16+j]); printf ("\n"); } printf ("\n"); if (cdl_readSubRaster (cdl, 128, 504, 16, 16, &c_ras)) printf ("...read returns an error\n"); for (i=0;i<16;i++) { for (j=0; j<16; j++) printf ("%3d ", c_ras[i*16+j]); printf ("\n"); } break; case 'c': /* CLEAR FRAME */ if (cdl_clearFrame (cdl)) printf ("...returns an error\n"); break; case 'd': /* DELETE MARKER */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key); if (cdl_deleteMark (cdl, ix, iy)) printf ("...returns an error\n"); break; case 'D': /* DELETE OVERLAY */ (void) cdl_clearOverlay (cdl); break; case 'f': /* DISPLAY FITS */ if (cdl_displayFITS (cdl, "dpix.fits", frame, FB_AUTO, 1)) printf ("...returns an error\n"); break; case 'g': /* READ IMAGE */ if (cdl_readImage (cdl, &c_ras, &nx, &ny)) printf ("...returns an error\n"); printf ("corners: nx=%d ny=%d LL = [%d] UR = [%d]\n", nx, ny, c_ras[0], c_ras[nx*ny-1]); if (cdl_displayPix (cdl, c_ras, nx, ny, 8, frame, FB_AUTO, 0)) printf ("...returns an error\n"); break; case 'G': /* READ FB */ if (cdl_readFrameBuffer (cdl, &c_ras, &nx, &ny)) printf ("...returns an error\n"); printf ("fb corners: nx=%d ny=%d LL = [%d] UR = [%d]\n", nx, ny, c_ras[0], c_ras[nx*ny-1]); if (cdl_displayPix (cdl, c_ras, nx, ny, 8, frame, FB_AUTO, 0)) printf ("...returns an error\n"); break; case 'i': /* DISPLAY IRAF */ if (cdl_displayIRAF (cdl, "examples/dpix.imh", 1, frame, FB_AUTO, 0)) printf ("...returns an error\n"); break; case 'm': /* MARK POINT */ i = 1; while (cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key) != 'q') { ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx, ix, ry, iy, key); if (cdl_markPoint (cdl, ix, iy, i++, 7, M_STAR, C_GREEN)) printf ("...returns an error\n"); } break; case 'n': /* NEXT FRAME */ frame = (frame+1 > 16 ? 1 : frame+1); cdl_setFrame (cdl, frame); printf ("set cdl->frame = %d\n", cdl->frame); cdl_getFrame (cdl, &frame); printf ("get cdl->frame = %d\n", frame); break; case 'N': /* NEXT CONFIG */ fbconfig = (fbconfig+1 > 12 ? 1 : fbconfig+1); cdl_setFBConfig (cdl, fbconfig); i = cdl->fbconfig - 1; printf ("cdl->fbconfig = %d/%d [%d %d %d %d]\n", cdl->fbconfig, i, cdl->imd->fbtab[i]->config, cdl->imd->fbtab[i]->nframes, cdl->imd->fbtab[i]->width, cdl->imd->fbtab[i]->height); break; case 'p': /* PREVIOUS FRAME */ frame = (frame-1 < 1 ? 4 : frame-1); cdl_setFrame (cdl, frame); printf ("set cdl->frame = %d\n", cdl->frame); cdl_getFrame (cdl, &frame); printf ("get cdl->frame = %d\n", frame); break; case 'P': /* PREV CONFIG */ cdl_setFBConfig (cdl, fbconfig); fbconfig = (fbconfig-1 < 1 ? 12 : fbconfig)-1; i = cdl->fbconfig - 1; printf ("cdl->fbconfig = %d/%d [%d %d %d %d]\n", cdl->fbconfig, i, cdl->imd->fbtab[i]->config, cdl->imd->fbtab[i]->nframes, cdl->imd->fbtab[i]->width, cdl->imd->fbtab[i]->height); break; case 'q': /* QUIT */ goto quit; case 'r': /* READ CURSOR */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); printf("cursor: x=%g/%d y=%g/%d wcs = %d key='%c' frame=%d\n", rx, ix, ry, iy, wcs, key, wcs / 100); break; case 's': /* TEXT STRING */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); if (cdl_markText (cdl, -20, iy, "testing 123", 1., 0.0, C_RED)) printf ("...returns an error\n"); break; case 't': /* TEST IMAGE */ printf ("creating raster....\n"); make_raster (c_ras, 512, 512, TEST_PATTERN); cdl_setName (cdl, "test image"); cdl_setTitle (cdl, "test title"); printf ("displaying raster....\n"); if (cdl_displayPix (cdl, c_ras, 512, 512, 8, frame,fbconfig,0)) printf ("...returns an error\n"); break; case 'T': /* TEST TILE */ if (cdl_readFITS ("dpix.fits", &pix, &nx, &ny, &bitpix, obj)) printf ("...returns an error\n"); printf ("nx=%d ny=%d bitpix=%d\n", nx, ny, bitpix); cdl_clearFrame (cdl); cdl_selectFB (cdl, 2*nx, 2*ny, &fbconfig, &fb_w, &fb_h, &nframes, 1); if (cdl_setWCS (cdl, "imaname", "imtitle", 1., 0., 0., -1., 0., (float) 2*ny, 1., 255., 1)) printf ("...returns an error\n"); cdl_computeZscale (cdl, pix, nx ,ny, bitpix, &z1, &z2); cdl_zscaleImage (cdl, &pix, nx ,ny, bitpix, z1, z2); if (cdl_writeSubRaster (cdl, 0, 0, nx, ny, pix)) printf ("...returns an error\n"); if (cdl_writeSubRaster (cdl, nx, 0, nx, ny, pix)) printf ("...returns an error\n"); if (cdl_writeSubRaster (cdl, 0, ny, nx, ny, pix)) printf ("...returns an error\n"); if (cdl_writeSubRaster (cdl, nx, ny, nx, ny, pix)) printf ("...returns an error\n"); break; case 'w': /* SET WCS */ if (cdl_setWCS (cdl, "imname", "imtitle", 1., 0., 0., -1., 0., 512., 1., 255., 1)) printf ("...returns an error\n"); break; case 'W': /* GET WCS */ if (cdl_getWCS (cdl, name, title, &a, &b, &c, &d, &tx, &ty, &z1, &z2, &zt)) printf ("...returns an error\n"); printf ("name='%s' title='%s'\n a=%g b=%g c=%g d=%g ", name, title, a, b, c, d); printf ("tx=%g ty=%g z1=%g z2=%g zt=%d\n", tx, ty, z1, z2, zt); break; case 'b': /* MARK BOX */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); lx = (int) (rx + 0.5); ly = (int) (ry + 0.5); (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ux = (int) (rx + 0.5); uy = (int) (ry + 0.5); printf ("cursor: x=%d/%d y=%d/%d\n", lx,ux,ly,uy); if (cdl_markBox (cdl, lx, ly, ux, uy, 0, C_RED)) printf ("...returns an error\n"); break; case 'B': /* FILL BOX */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); lx = (int) (rx + 0.5); ly = (int) (ry + 0.5); (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ux = (int) (rx + 0.5); uy = (int) (ry + 0.5); printf ("cursor: x=%d/%d y=%d/%d\n", lx,ux,ly,uy); if (cdl_markBox (cdl, lx, ly, ux, uy, 1, C_RED)) printf ("...returns an error\n"); break; case 'L': /* MARK LINE STYLES */ break; case 'l': /* MARK LINE */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); lx = (int) (rx + 0.5); ly = (int) (ry + 0.5); (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ux = (int) (rx + 0.5); uy = (int) (ry + 0.5); printf ("cursor: x=%d/%d y=%d/%d\n", lx,ux,ly,uy); if (cdl_markLine (cdl, lx, ly, ux, uy, C_YELLOW)) printf ("...returns an error\n"); break; case '[': cdl_setTextWidth (cdl, twidth = (twidth-1 < 1 ? 1 : --twidth)); break; case ']': cdl_setTextWidth (cdl, ++twidth); break; case ',': cdl_setLineWidth (cdl, lwidth = (lwidth-1 < 1 ? 1 : --lwidth)); break; case '.': cdl_setLineWidth (cdl, ++lwidth); break; case '{': cdl_setLineStyle (cdl, lstyle = (lstyle-1 < 1 ? 1 : --lstyle)); break; case '}': cdl_setLineStyle (cdl, ++lstyle); break; case '(': /* MARK POLYLINE */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key); for (i=0; i < 145; i++) { xarray[i] = ix + i; yarray[i] = iy + (int)(32*sin((double)(i*0.17453))); } if (cdl_markPolyline (cdl, xarray, yarray, 145, C_GREEN)) printf ("...returns an error\n"); break; case ')': /* MARK POLYGON */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key); xarray[0] = ix - 9; yarray[0] = iy - 9; xarray[1] = ix + 0; yarray[1] = iy + 9; xarray[2] = ix + 9; yarray[2] = iy - 9; if (cdl_markPolygon (cdl, xarray, yarray, 3, 1, C_GREEN)) printf ("...returns an error\n"); break; case 'e': /* MARK ELLIPSE */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key); if (cdl_markEllipse (cdl, ix, iy, 11, 7, 45.0, 0, C_RED)) printf ("...returns an error\n"); break; case 'E': /* MARK ELLIPSE */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key); if (cdl_markEllipAnnuli (cdl, ix, iy, 11, 7, 45.0, 2, 5, C_RED)) printf ("...returns an error\n"); break; case 'o': /* MARK CIRCLE */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key); if (cdl_markCircle (cdl, ix, iy, 27, 0, C_YELLOW)) printf ("...returns an error\n"); break; case 'O': /* MARK CIRCLE */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key); if (cdl_markCircAnnuli (cdl, ix, iy, 13, 2, 5, C_YELLOW)) printf ("...returns an error\n"); break; case 'M': /* MARK ALL PTS */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key); cdl_markPoint (cdl,ix+00,iy, 0,13, M_BOX, C_GREEN); cdl_markPoint (cdl,ix+15,iy, 0,13, M_PLUS, C_GREEN); cdl_markPoint (cdl,ix+30,iy, 0,13, M_CROSS, C_GREEN); cdl_markPoint (cdl,ix+45,iy, 0,13, M_DIAMOND,C_GREEN); cdl_markPoint (cdl,ix+60,iy, 0,13, M_CIRCLE, C_GREEN); cdl_markPoint (cdl,ix+75,iy, 0,13, M_STAR, C_GREEN); cdl_markPoint (cdl,ix+90,iy, 0,13, M_HLINE, C_GREEN); cdl_markPoint (cdl,ix+105,iy, 0,13, M_VLINE, C_GREEN); cdl_markPoint (cdl,ix+120,iy, 0,13, M_HBLINE, C_GREEN); cdl_markPoint (cdl,ix+135,iy, 0,13, M_VBLINE, C_GREEN); cdl_markPoint (cdl,ix+00,iy-16,0,13, M_FILL|M_BOX, C_GREEN); cdl_markPoint (cdl,ix+45,iy-16,0,13, M_FILL|M_DIAMOND,C_GREEN); cdl_markPoint (cdl,ix+60,iy-16,0,13, M_FILL|M_CIRCLE, C_GREEN); cdl_markPoint (cdl,ix+90,iy-16,0,13, M_VLINE|M_HLINE, C_GREEN); cdl_markPoint (cdl,ix+105,iy-16,0,13, M_VLINE|M_HLINE, C_GREEN); cdl_markPoint (cdl,ix+120,iy-16,0,13,M_VBLINE|M_HBLINE,C_GREEN); cdl_markPoint (cdl,ix+135,iy-16,0,13,M_VBLINE|M_HBLINE,C_GREEN); cdl_markPoint (cdl,ix+00,iy-32,0,13, M_PLUS|M_BOX, C_GREEN); cdl_markPoint (cdl,ix+45,iy-32,0,13, M_PLUS|M_DIAMOND,C_GREEN); cdl_markPoint (cdl,ix+60,iy-32,0,13, M_PLUS|M_CIRCLE, C_GREEN); cdl_markPoint (cdl,ix+90,iy-32,0,13, M_HLINE|M_POINT, C_GREEN); cdl_markPoint (cdl,ix+105,iy-32,0,13, M_VLINE|M_POINT, C_GREEN); cdl_markPoint (cdl,ix+120,iy-32,0,13, M_HBLINE|M_POINT,C_GREEN); cdl_markPoint (cdl,ix+135,iy-32,0,13, M_VBLINE|M_POINT,C_GREEN); cdl_markPoint (cdl,ix+00,iy-48,0,13, M_CROSS|M_BOX, C_GREEN); cdl_markPoint (cdl,ix+45,iy-48,0,13, M_CROSS|M_DIAMOND,C_GREEN); cdl_markPoint (cdl,ix+60,iy-48,0,13, M_CROSS|M_CIRCLE, C_GREEN); cdl_markPoint (cdl,ix+90,iy-48,0,13, M_VLINE|M_HLINE|M_POINT, C_GREEN); cdl_markPoint (cdl,ix+105,iy-48,0,13, M_HLINE|M_VLINE|M_POINT, C_GREEN); cdl_markPoint (cdl,ix+120,iy-48,0,13, M_VBLINE|M_HBLINE|M_POINT, C_GREEN); cdl_markPoint (cdl,ix+135,iy-48,0,13, M_HBLINE|M_VBLINE|M_POINT, C_GREEN); break; case '+': /* MARK PLUS */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key); if (cdl_markPoint (cdl, ix, iy, 1, 7, M_PLUS, C_KHAKI)) printf ("...returns an error\n"); break; case 'x': /* MARK CROSS */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key); if (cdl_markPoint (cdl, ix, iy, 1, 7, M_CROSS, C_CYAN)) printf ("...returns an error\n"); break; case '*': /* MARK STAR */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); printf ("cursor: x=%g/%d y=%g/%d key='%c'\n", rx,ix,ry,iy,key); if (cdl_markPoint (cdl, ix, iy, 1, 7, M_STAR, C_GREEN)) printf ("...returns an error\n"); break; case '-': (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); (void) cdl_markPoint (cdl,ix, iy, 0, 30, M_HBLINE, C_RED); break; case '|': (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); (void) cdl_markPoint (cdl,ix, iy, 0, 30, M_VBLINE, C_RED); break; case '=': cdl_readFrameBuffer (cdl, &pix, &nx, &ny); cdl_printPixToFile (cdl, "foo.eps", pix, nx, ny, 1); break; case '&': clock (); for (i=0, ix=16, iy=16; i < 512; i++) { ix = xarray[i] = (ix+10 > 500 ? 16 : ix + 10); iy = yarray[i] = (ix == 16 ? iy + 16: iy); } for (i=0; i < 512; i++) { if (cdl_markPoint (cdl, xarray[i], yarray[i], 0, 7, M_PLUS, C_RED)) printf ("...returns an error\n"); } printf ("takes %d microseconds\n", clock()); break; case 'Q': (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); printf("cursor: x=%g/%d y=%g/%d wcs = %d key='%c' frame=%d\n", rx, ix, ry, iy, wcs, key, wcs / 100); (void) cdl_queryMap (cdl, wcs, name, &sx, &sy, &snx, &sny, &dx, &dy, &dnx, &dny, obj); printf ("\tregion='%s' ref='%s'\n", name, obj); printf ("\tsrc = %g,%g,%d,%d dest = %d,%d,%d,%d\n", sx, sy, snx, sny, dx, dy, dnx, dny); break; case '?': print_help(); break; case '1': /* TEXT STRING */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); if (cdl_markText (cdl, ix, iy, "test", 2, 0.0, C_GREEN)) printf ("...returns an error\n"); if (cdl_markText (cdl, ix-5, iy+15, "test", 2, 45.0, C_GREEN)) printf ("...returns an error\n"); if (cdl_markText (cdl, ix-20, iy+30, "test", 2, 90.0, C_GREEN)) printf ("...returns an error\n"); if (cdl_markText (cdl, ix-35, iy+30, "test", 2, 135.0, C_GREEN)) printf ("...returns an error\n"); if (cdl_markText (cdl, ix-40, iy+15, "test", 2, 180.0, C_GREEN)) printf ("...returns an error\n"); if (cdl_markText (cdl, ix-40, iy-10, "test", 2, 225.0, C_GREEN)) printf ("...returns an error\n"); if (cdl_markText (cdl, ix-30, iy-25, "test", 2, 270.0, C_GREEN)) printf ("...returns an error\n"); if (cdl_markText (cdl, ix-15, iy-15, "test", 2, 315.0, C_GREEN)) printf ("...returns an error\n"); break; case '2': /* TEXT STRING */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); if (cdl_markText (cdl, ix, iy, "testing", 2, 180.0, C_GREEN)) printf ("...returns an error\n"); break; case '3': /* BLINKING MARKER */ (void) cdl_readCursor (cdl, 0, &rx, &ry, &wcs, &key); ix = (int) (rx + 0.5); iy = (int) (ry + 0.5); cdl_blinkCircle (cdl, ix, iy, 10, C_YELLOW, 5); break; case '4': /* BLINKING MARKER */ (void) cdl_setCursor (cdl, 100, 100, 0); break; } printf ("Command: "); /* gets(cmd); */ scanf ("%s", cmd); } while (cmd[0] != 'q'); quit: (void) cdl_close (cdl); }