void draw_hist_axis( frame *fr, axis *ax , string_array *bar_labels ) { int i; onpoint p; int color = ag_pen_color(); int num_bars = string_array_size(bar_labels); ag_set_pen_color(AG_RED); ongr_line(fr,&ax->start,&ax->end); for ( i = 0 ; i < num_bars ; i++ ) { char* mark = string_array_ref(bar_labels,i); p.x = ax->start.x + ((ax->end.x - ax->start.x) * (i+0.5)) / num_bars; p.y = ax->start.y + ((ax->end.y - ax->start.y) * (i+0.5)) / num_bars; ag_set_pen_color(AG_RED); ongr_cross(fr,&p); p.x += ax->rel_mark_number.x; p.y += ax->rel_mark_number.y; ag_set_pen_color(color); if ( mark != NULL ) ongr_print(fr,&p,mark); } ag_set_pen_color(color); /* Finally, we do the label for the axis */ p.x = (frame_width(fr)) / 40.0; p.y = CH/2.0; ongr_print(fr,&p,ax->label); }
string_array *mk_copy_string_array(const string_array *sa) { string_array *nsa = mk_string_array(string_array_size(sa)); int i; for ( i = 0 ; i < string_array_size(sa) ; i++ ) string_array_set(nsa,i,string_array_ref(sa,i)); return(nsa); }
void fprintf_string_array(FILE *s,const char *m1,const string_array *sar, const char *m2) { int i; if (sar == NULL) fprintf(s,"%s = <NULL string array>%s",m1,m2); else { if ( string_array_size(sar) == 0 ) fprintf(s,"%s = <empty string array>%s",m1,m2); else { for ( i = 0 ; i < string_array_size(sar) ; i++ ) fprintf(s,"%s[%3d] = %s%s", m1,i, (string_array_ref(sar,i)==NULL) ? "NULL" : string_array_ref(sar,i), m2 ); } } }