예제 #1
0
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);
}
예제 #2
0
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);
}
예제 #3
0
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
		);
    }
  }
}