/* OBJIMAGES -- Extraction object images to individual images */ #include "focas1.h" objimages (catalog, xsize, ysize) char catalog[]; int *xsize, *ysize; { struct imgdef outhdr; struct objrec ob; struct areas area; struct image p; int i, fout; cfd = catopen (catalog, 0); pfd = fndfld (sp.ptfl, 0); afd = fndar (sp.arfl, 0); outhdr = pthdr; for (;;) { if (rdcatob (cfd, 0L, &ob)) break; if (ffilter (&ob) != 1) continue; if ((*xsize == 0) || (*ysize == 0)) { if (rdarea (afd, ob.entnum, ob.subent, ob.arpos, &area)) continue; } else { area.rct[0] = lpcoords (ob.xc, 1, 2) - *xsize / 2; area.rct[1] = lpcoords (ob.yc, 2, 2) - *ysize / 2; area.rct[2] = area.rct[0] + *xsize - 1; area.rct[3] = area.rct[1] + *ysize - 1; if (area.rct[0] < 0) area.rct[0] = 0; if (area.rct[1] < 0) area.rct[1] = 0; if (area.rct[2] >= pthdr.naxis1) area.rct[2] = pthdr.naxis1 - 1; if (area.rct[3] >= pthdr.naxis2) area.rct[3] = pthdr.naxis2 - 1; } if (rdimg (pfd, area.rct, &p) < 0) continue; outhdr.crpix1 = lpcoords ((float)p.x0, 1, 1); outhdr.crpix2 = lpcoords ((float)p.y0, 2, 1); outhdr.naxis1 = p.dx; outhdr.naxis2 = p.dy; outhdr.maxpxl = p.max; outhdr.minpxl = p.min; sprintf (outhdr.object, "%.6s%-d.%-d", sp.ptfl, ob.entnum, ob.subent); fout = imopen (outhdr.object, &outhdr, 1); for (i = 0; i < p.dy; i++) wtimage (fout, 0, i, p.dx, &outhdr, p.pic + i * p.dx); imclose (fout); } fclose (afd); fclose (cfd); }