// toString void regToStringAnnulus( regShape* shape, char *ptr, long maxlength ) { if (!shape) return; if (shape->include == regExclude) { *ptr++ = '!'; } long bsize = 80; char *x = calloc(bsize, sizeof(char)); char *y = calloc(bsize, sizeof(char)); reg_print_pos_pair(shape->xpos[0], shape->ypos[0], shape->flag_coord, x, y); char *r1 = calloc(bsize, sizeof(char)); char *r2 = calloc(bsize, sizeof(char)); reg_print_radius(shape->radius[0], shape->flag_radius, r1); reg_print_radius(shape->radius[1], shape->flag_radius, r2); snprintf(ptr, maxlength, "Annulus(%s,%s,%s,%s)", x, y, r1, r2); free(x); free(y); free(r1); free(r2); }
// toString void regToStringPolygon( regShape* shape, char* ptr, long maxlength ) { if (!shape) return; // Using these to keep track of the length of the word so far, and // the lengths of text that gets added for each point. long length, word; long ii; length = 0; word = 0; if (shape->include == regExclude) { *ptr++ = '!'; length++; } long bsize = 80; word = snprintf(ptr, maxlength - length, "Polygon("); length += word; ptr += word; for (ii=0; ii < shape->nPoints; ii++) { char *x = calloc(bsize, sizeof(char)); char *y = calloc(bsize, sizeof(char)); reg_print_pos_pair(shape->xpos[ii], shape->ypos[ii], shape->flag_coord, x, y); if (ii == 0) { word = snprintf(ptr, maxlength - length, "%s,%s", x, y); } else { word = snprintf(ptr, maxlength - length, ",%s,%s", x, y); } length += word; ptr += word; free(x); free(y); } word = snprintf(ptr, maxlength - length, ")"); length += word; ptr += word; }
// toString void regToStringPie( regShape* shape, char* buf, long maxlen ) { if (shape == NULL) { fprintf( stderr, "ERROR: regToStringPie() requires a regShape as input"); return; } if (shape->type != regPIE) { fprintf( stderr, "ERROR: regToStringPie() incorrect regShape type"); return; } if (shape->include == regExclude) { *buf++ = '!'; } long bsize = 80; char *x = calloc(bsize, sizeof(char)); char *y = calloc(bsize, sizeof(char)); reg_print_pos_pair(shape->xpos[0], shape->ypos[0], shape->flag_coord, x, y); char *r1 = calloc(bsize, sizeof(char)); char *r2 = calloc(bsize, sizeof(char)); reg_print_radius(shape->radius[0], shape->flag_radius, r1); reg_print_radius(shape->radius[1], shape->flag_radius, r2); char *a1 = calloc(bsize, sizeof(char)); char *a2 = calloc(bsize, sizeof(char)); reg_print_val(shape->angle[0], a1); reg_print_val(shape->angle[1], a2); snprintf(buf, maxlen, "Pie(%s,%s,%s,%s,%s,%s)", x, y, r1, r2, a1, a2); free(x); free(y); free(r1); free(r2); free(a1); free(a2); }