Ejemplo n.º 1
0
// 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);
}
Ejemplo n.º 2
0
// 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;
}
Ejemplo n.º 3
0
// 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);
}