// copy regShape* regCopyPolygon( regShape* shape ) { if (shape->type != regPOLYGON) { fprintf( stderr, "ERROR: Attempting to copy %s as a Polygon\n", shape->name); return(NULL); } return regCreatePolygon(shape->include, shape->xpos, shape->ypos, shape->nPoints, shape->flag_coord, shape->flag_radius); }
/* ----------------------------------------------------------------------- ----------------------------------------------------------------------- */ regShape *regCreateShape( regRegion *region, regMath glue, regGeometry type, regFlavor include, double *xpos, double *ypos, long npoints, double *radius, double *angle, int wcoord, int wsize ) { regShape *newShape = NULL; double fx[2] ={ -DBL_MAX, DBL_MAX }; double fy[2] ={ -DBL_MAX, DBL_MAX }; /* Region library can not create Pixel Mask shapes */ if ( type == regMASK ) { return newShape; }; switch ( type ) { case regPOINT: newShape = regCreatePoint(include, xpos, ypos, wcoord, wsize); break; case regCIRCLE: newShape = regCreateCircle(include, xpos, ypos, radius, wcoord, wsize); break; case regANNULUS: newShape = regCreateAnnulus(include, xpos, ypos, radius, wcoord, wsize); break; case regELLIPSE: newShape = regCreateEllipse(include, xpos, ypos, radius, angle, wcoord, wsize); break; case regBOX: newShape = regCreateBox(include, xpos, ypos, radius, angle, wcoord, wsize); break; case regRECTANGLE: newShape = regCreateRectangle(include, xpos, ypos, angle, wcoord, wsize); break; case regPOLYGON: newShape = regCreatePolygon(include, xpos, ypos, npoints, wcoord, wsize); break; case regPIE: newShape = regCreatePie(include, xpos, ypos, radius, angle, wcoord, wsize); break; case regSECTOR: newShape = regCreateSector(include, xpos, ypos, angle, wcoord, wsize); break; case regFIELD: newShape = regCreateField(include, wcoord, wsize); break; default: return(NULL); } /* attributes get assigned/init when glued to a region */ if ( newShape == NULL ) return NULL; if ( region != NULL ) { regAddShape( region, glue, newShape ); regExtent(region, fx, fy, region->xregbounds, region->yregbounds); } return( newShape ); }