| version 1.1.1.1, 2000/01/09 17:00:51 |
version 1.1.1.2, 2000/01/22 14:15:57 |
|
|
| top_margin = y2label_textheight; |
top_margin = y2label_textheight; |
| |
|
| top_margin += x2tic_height + x2tic_textheight; |
top_margin += x2tic_height + x2tic_textheight; |
| /* FIXME: what is this additional space reservation for??? */ |
/* x2tic_height and x2tic_textheight are computed as only the |
| |
* relevant heights, but they nonetheless need a blank |
| |
* space above them */ |
| if (top_margin > x2tic_height) |
if (top_margin > x2tic_height) |
| top_margin += (int) (t->v_char); |
top_margin += (int) (t->v_char); |
| |
|
| ytop -= top_margin; |
ytop -= top_margin; |
| if (ytop == (int) ((ysize + yoffset) * (t->ymax))) { |
if (ytop == (int) (0.5 + (ysize + yoffset) * (t->ymax))) { |
| /* make room for the end of rotated ytics or y2tics */ |
/* make room for the end of rotated ytics or y2tics */ |
| ytop -= (int) ((t->h_char) * 2); |
ytop -= (int) ((t->h_char) * 2); |
| } |
} |
|
|
| |
|
| /* xlabel */ |
/* xlabel */ |
| if (xlablin) { |
if (xlablin) { |
| /* offset is subtracted because if . 0, the margin is smaller */ |
/* offset is subtracted because if > 0, the margin is smaller */ |
| xlabel_textheight = (int) ((xlablin - xlabel.yoffset) * (t->v_char)); |
xlabel_textheight = (int) ((xlablin - xlabel.yoffset) * (t->v_char)); |
| if (!xtics) |
if (!xtics) |
| xlabel_textheight += 0.5 * t->v_char; |
xlabel_textheight += 0.5 * t->v_char; |
|
|
| * DBT 11-18-98 resize plot for vertical timelabels too ! |
* DBT 11-18-98 resize plot for vertical timelabels too ! |
| */ |
*/ |
| /* offset is subtracted because if . 0, the margin is smaller */ |
/* offset is subtracted because if . 0, the margin is smaller */ |
| timebot_textheight = (int) ((timelin - timelabel.yoffset + 1.5) * (t->v_char)); |
timebot_textheight = (int) ((timelin - timelabel.yoffset) * (t->v_char)); |
| } |
} else |
| else |
|
| timebot_textheight = 0; |
timebot_textheight = 0; |
| |
|
| /* compute ybot from the various components |
/* compute ybot from the various components |
|
|
| |
|
| if (bmargin < 0) { |
if (bmargin < 0) { |
| ybot += xtic_height + xtic_textheight; |
ybot += xtic_height + xtic_textheight; |
| if (timebot_textheight > 0 || xlabel_textheight > 0) |
if (xlabel_textheight > 0) |
| ybot += (timebot_textheight > xlabel_textheight) ? timebot_textheight : xlabel_textheight; |
ybot += xlabel_textheight; |
| if (ybot == (t->ymax) * yoffset) { |
if (timebot_textheight > 0) |
| |
ybot += timebot_textheight; |
| |
/* HBB 19990616: round to nearest integer, required to escape |
| |
* floating point inaccuracies */ |
| |
if (ybot == (int)(0.5 + (t->ymax) * yoffset)) { |
| /* make room for the end of rotated ytics or y2tics */ |
/* make room for the end of rotated ytics or y2tics */ |
| ybot += (int) ((t->h_char) * 2); |
ybot += (int) ((t->h_char) * 2); |
| } |
} |
|
|
| xleft += (timelabel_textwidth > ylabel_textwidth ? timelabel_textwidth : ylabel_textwidth) |
xleft += (timelabel_textwidth > ylabel_textwidth ? timelabel_textwidth : ylabel_textwidth) |
| + ytic_width + ytic_textwidth; |
+ ytic_width + ytic_textwidth; |
| |
|
| if (xleft == (t->xmax) * xoffset) { |
/* make sure xleft is wide enough for a negatively |
| |
* x-offset horizontal timestamp |
| |
*/ |
| |
if (!vertical_timelabel && xleft - ytic_width - ytic_textwidth < -(int) (timelabel.xoffset * (t->h_char))) |
| |
xleft = ytic_width + ytic_textwidth - (int) (timelabel.xoffset * (t->h_char)); |
| |
if (xleft == (int)(0.5 + (t->xmax) * xoffset)) { |
| /* make room for end of xtic or x2tic label */ |
/* make room for end of xtic or x2tic label */ |
| xleft += (int) ((t->h_char) * 2); |
xleft += (int) ((t->h_char) * 2); |
| } |
} |
|
|
| } else |
} else |
| xleft += (int) (lmargin * (t->h_char)); |
xleft += (int) (lmargin * (t->h_char)); |
| |
|
| /* make sure xleft is wide enough for a negatively |
|
| * x-offset horizontal timestamp |
|
| */ |
|
| if (!vertical_timelabel && xleft - ytic_width - ytic_textwidth < -(int) (timelabel.xoffset * (t->h_char))) |
|
| xleft = ytic_width + ytic_textwidth - (int) (timelabel.xoffset * (t->h_char)); |
|
| /* end of xleft calculation }}} */ |
/* end of xleft calculation }}} */ |
| |
|
| |
|
|
|
| xright -= key_col_wth * key_cols; |
xright -= key_col_wth * key_cols; |
| key_xl = xright + (int) (t->h_tic); |
key_xl = xright + (int) (t->h_tic); |
| } |
} |
| if (xright == (t->xmax) * (xsize + xoffset)) { |
if (xright == (int)(0.5 + (t->xmax) * (xsize + xoffset))) { |
| /* make room for end of xtic or x2tic label */ |
/* make room for end of xtic or x2tic label */ |
| xright -= (int) ((t->h_char) * 2); |
xright -= (int) ((t->h_char) * 2); |
| } |
} |
|
|
| double current_aspect_ratio; |
double current_aspect_ratio; |
| |
|
| if (aspect_ratio < 0 && (max_array[x_axis] - min_array[x_axis]) != 0.0) { |
if (aspect_ratio < 0 && (max_array[x_axis] - min_array[x_axis]) != 0.0) { |
| current_aspect_ratio = -aspect_ratio * (max_array[y_axis] - min_array[y_axis]) / (max_array[x_axis] - min_array[x_axis]); |
current_aspect_ratio = -aspect_ratio * fabs((max_array[y_axis] - min_array[y_axis]) / (max_array[x_axis] - min_array[x_axis])); |
| } else |
} else |
| current_aspect_ratio = aspect_ratio; |
current_aspect_ratio = aspect_ratio; |
| |
|
|
|
| /* too tall */ |
/* too tall */ |
| ytop = ybot + required * (xright - xleft); |
ytop = ybot + required * (xright - xleft); |
| } else { |
} else { |
| /* HBB: y2label_x wasn't defined yet, and would be |
|
| * overwritten later */ |
|
| xright = xleft + (ytop - ybot) / required; |
xright = xleft + (ytop - ybot) / required; |
| } |
} |
| } |
} |
|
|
| if (tmargin < 0 && x2tics & TICS_ON_BORDER && vertical_x2tics) { |
if (tmargin < 0 && x2tics & TICS_ON_BORDER && vertical_x2tics) { |
| widest_tic = 0; /* reset the global variable ... */ |
widest_tic = 0; /* reset the global variable ... */ |
| gen_tics(SECOND_X_AXIS, &x2ticdef, 0, 0, 0.0, widest2d_callback); |
gen_tics(SECOND_X_AXIS, &x2ticdef, 0, 0, 0.0, widest2d_callback); |
| /* HBB: redid this: remove rough guess value first. Among other reasons, |
|
| * I suspected the '-4 lines' of the original code to be in error, as the |
|
| * original calc. of x2tic_textheight uses *5* lines */ |
|
| ytop += x2tic_textheight; |
ytop += x2tic_textheight; |
| /* Now compute a new one and use that instead: */ |
/* Now compute a new one and use that instead: */ |
| x2tic_textheight = (int) ((t->h_char) * (widest_tic)); |
x2tic_textheight = (int) ((t->h_char) * (widest_tic)); |
| ytop -= x2tic_textheight; |
ytop -= x2tic_textheight; |
| } |
} |
| if (bmargin < 0 && xtics & TICS_ON_BORDER && vertical_xtics) { |
if (bmargin < 0 && xtics & TICS_ON_BORDER && vertical_xtics) { |
| widest_tic = 0; /* reset the global variable ... */ |
widest_tic = 0; /* reset the global variable ... */ |
| gen_tics(FIRST_X_AXIS, &xticdef, 0, 0, 0.0, widest2d_callback); |
gen_tics(FIRST_X_AXIS, &xticdef, 0, 0, 0.0, widest2d_callback); |
| /* HBB: same changes as for tmargin/ytop above */ |
|
| ybot -= xtic_textheight; |
ybot -= xtic_textheight; |
| xtic_textheight = (int) ((t->h_char) * widest_tic); |
xtic_textheight = (int) ((t->h_char) * widest_tic); |
| ybot += xtic_textheight; |
ybot += xtic_textheight; |
|
|
| |
|
| y2label_y = ytop + x2tic_height + x2tic_textheight + y2label_textheight; |
y2label_y = ytop + x2tic_height + x2tic_textheight + y2label_textheight; |
| |
|
| xlabel_y = ybot - xtic_height - xtic_textheight - xlabel_textheight + t->v_char; |
xlabel_y = ybot - xtic_height - xtic_textheight - xlabel_textheight + xlablin*(t->v_char); |
| ylabel_x = xleft - ytic_width - ytic_textwidth; |
ylabel_x = xleft - ytic_width - ytic_textwidth; |
| if (*ylabel.text && can_rotate) |
if (*ylabel.text && can_rotate) |
| ylabel_x -= ylabel_textwidth; |
ylabel_x -= ylabel_textwidth; |
| |
|
| y2label_x = xright + y2tic_width + y2tic_textwidth; |
y2label_x = xright + y2tic_width + y2tic_textwidth; |
| if (*y2label.text && can_rotate) |
if (*y2label.text && can_rotate) |
| y2label_x += y2label_textwidth - t->v_char; |
y2label_x += y2label_textwidth - y2lablin * t->v_char; |
| |
|
| if (vertical_timelabel) { |
if (vertical_timelabel) { |
| if (timelabel_bottom) |
if (timelabel_bottom) |
|
|
| } |
} |
| } else { |
} else { |
| if (timelabel_bottom) |
if (timelabel_bottom) |
| time_y = xlabel_y - timebot_textheight + xlabel_textheight; |
time_y = ybot - xtic_height - xtic_textheight - xlabel_textheight - timebot_textheight + t->v_char; |
| else if (ylabel_textheight > 0) |
else if (ylabel_textheight > 0) |
| time_y = ylabel_y + timetop_textheight; |
time_y = ylabel_y + timetop_textheight; |
| else |
else |
| Line 1304 int pcount; /* count of plots in linked list */ |
|
| Line 1303 int pcount; /* count of plots in linked list */ |
|
| struct text_label *this_label; |
struct text_label *this_label; |
| struct arrow_def *this_arrow; |
struct arrow_def *this_arrow; |
| TBOOLEAN scaling; |
TBOOLEAN scaling; |
| char ss[MAX_LINE_LEN + 1], *s, *e; |
char *s, *e; |
| |
|
| /* so that macros for x_min etc pick up correct values |
/* so that macros for x_min etc pick up correct values |
| * until this is done properly |
* until this is done properly |
| Line 1561 int pcount; /* count of plots in linked list */ |
|
| Line 1560 int pcount; /* count of plots in linked list */ |
|
| |
|
| x_axis = FIRST_X_AXIS; |
x_axis = FIRST_X_AXIS; |
| y_axis = FIRST_Y_AXIS; /* chose scaling */ |
y_axis = FIRST_Y_AXIS; /* chose scaling */ |
| axis_zero[FIRST_X_AXIS] = map_y(0.0); |
axis_zero[FIRST_Y_AXIS] = map_y(0.0); |
| axis_zero[FIRST_Y_AXIS] = map_x(0.0); |
axis_zero[FIRST_X_AXIS] = map_x(0.0); |
| |
|
| if (axis_zero[FIRST_X_AXIS] < ybot || is_log_y) |
if (axis_zero[FIRST_Y_AXIS] < ybot || is_log_y) |
| axis_zero[FIRST_X_AXIS] = ybot; /* save for impulse plotting */ |
axis_zero[FIRST_Y_AXIS] = ybot; /* save for impulse plotting */ |
| else if (axis_zero[FIRST_X_AXIS] >= ytop) |
else if (axis_zero[FIRST_Y_AXIS] >= ytop) |
| axis_zero[FIRST_X_AXIS] = ytop; |
axis_zero[FIRST_Y_AXIS] = ytop; |
| else if (xzeroaxis.l_type > -3) { |
else if (xzeroaxis.l_type > -3) { |
| term_apply_lp_properties(&xzeroaxis); |
term_apply_lp_properties(&xzeroaxis); |
| (*t->move) (xleft, axis_zero[FIRST_X_AXIS]); |
(*t->move) (xleft, axis_zero[FIRST_Y_AXIS]); |
| (*t->vector) (xright, axis_zero[FIRST_X_AXIS]); |
(*t->vector) (xright, axis_zero[FIRST_Y_AXIS]); |
| } |
} |
| if ((yzeroaxis.l_type > -3) && !is_log_x |
if ((yzeroaxis.l_type > -3) && !is_log_x |
| && axis_zero[FIRST_Y_AXIS] >= xleft |
&& axis_zero[FIRST_X_AXIS] >= xleft |
| && axis_zero[FIRST_Y_AXIS] < xright) { |
&& axis_zero[FIRST_X_AXIS] < xright) { |
| term_apply_lp_properties(&yzeroaxis); |
term_apply_lp_properties(&yzeroaxis); |
| (*t->move) (axis_zero[FIRST_Y_AXIS], ybot); |
(*t->move) (axis_zero[FIRST_X_AXIS], ybot); |
| (*t->vector) (axis_zero[FIRST_Y_AXIS], ytop); |
(*t->vector) (axis_zero[FIRST_X_AXIS], ytop); |
| } |
} |
| x_axis = SECOND_X_AXIS; |
x_axis = SECOND_X_AXIS; |
| y_axis = SECOND_Y_AXIS; /* chose scaling */ |
y_axis = SECOND_Y_AXIS; /* chose scaling */ |
| axis_zero[SECOND_X_AXIS] = map_y(0.0); |
axis_zero[SECOND_Y_AXIS] = map_y(0.0); |
| axis_zero[SECOND_Y_AXIS] = map_x(0.0); |
axis_zero[SECOND_X_AXIS] = map_x(0.0); |
| |
|
| if (axis_zero[SECOND_X_AXIS] < ybot || is_log_y2) |
if (axis_zero[SECOND_Y_AXIS] < ybot || is_log_y2) |
| axis_zero[SECOND_X_AXIS] = ybot; /* save for impulse plotting */ |
axis_zero[SECOND_Y_AXIS] = ybot; /* save for impulse plotting */ |
| else if (axis_zero[SECOND_X_AXIS] >= ytop) |
else if (axis_zero[SECOND_Y_AXIS] >= ytop) |
| axis_zero[SECOND_X_AXIS] = ytop; |
axis_zero[SECOND_Y_AXIS] = ytop; |
| else if (x2zeroaxis.l_type > -3) { |
else if (x2zeroaxis.l_type > -3) { |
| term_apply_lp_properties(&x2zeroaxis); |
term_apply_lp_properties(&x2zeroaxis); |
| (*t->move) (xleft, axis_zero[SECOND_X_AXIS]); |
(*t->move) (xleft, axis_zero[SECOND_Y_AXIS]); |
| (*t->vector) (xright, axis_zero[SECOND_X_AXIS]); |
(*t->vector) (xright, axis_zero[SECOND_Y_AXIS]); |
| } |
} |
| if ((y2zeroaxis.l_type > -3) && !is_log_x2 && axis_zero[SECOND_Y_AXIS] >= xleft && |
if ((y2zeroaxis.l_type > -3) && !is_log_x2 && |
| axis_zero[SECOND_Y_AXIS] < xright) { |
axis_zero[SECOND_X_AXIS] >= xleft && |
| |
axis_zero[SECOND_X_AXIS] < xright) { |
| term_apply_lp_properties(&y2zeroaxis); |
term_apply_lp_properties(&y2zeroaxis); |
| (*t->move) (axis_zero[SECOND_Y_AXIS], ybot); |
(*t->move) (axis_zero[SECOND_X_AXIS], ybot); |
| (*t->vector) (axis_zero[SECOND_Y_AXIS], ytop); |
(*t->vector) (axis_zero[SECOND_X_AXIS], ytop); |
| } |
} |
| /* DRAW PLOT BORDER */ |
/* DRAW PLOT BORDER */ |
| if (draw_border) { |
if (draw_border) { |
| Line 1629 int pcount; /* count of plots in linked list */ |
|
| Line 1629 int pcount; /* count of plots in linked list */ |
|
| } |
} |
| /* YLABEL */ |
/* YLABEL */ |
| if (*ylabel.text) { |
if (*ylabel.text) { |
| strcpy(ss, ylabel.text); |
|
| /* we worked out x-posn in boundary() */ |
/* we worked out x-posn in boundary() */ |
| if ((*t->text_angle) (1)) { |
if ((*t->text_angle) (1)) { |
| unsigned int x = ylabel_x + (t->v_char / 2); |
unsigned int x = ylabel_x + (t->v_char / 2); |
| unsigned int y = (ytop + ybot) / 2 + ylabel.yoffset * (t->h_char); |
unsigned int y = (ytop + ybot) / 2 + ylabel.yoffset * (t->h_char); |
| write_multiline(x, y, ss, CENTRE, JUST_TOP, 1, ylabel.font); |
write_multiline(x, y, ylabel.text, CENTRE, JUST_TOP, 1, ylabel.font); |
| (*t->text_angle) (0); |
(*t->text_angle) (0); |
| } else { |
} else { |
| /* really bottom just, but we know number of lines |
/* really bottom just, but we know number of lines |
| so we need to adjust x-posn by one line */ |
so we need to adjust x-posn by one line */ |
| unsigned int x = ylabel_x; |
unsigned int x = ylabel_x; |
| unsigned int y = ylabel_y; |
unsigned int y = ylabel_y; |
| write_multiline(x, y, ss, LEFT, JUST_TOP, 0, ylabel.font); |
write_multiline(x, y, ylabel.text, LEFT, JUST_TOP, 0, ylabel.font); |
| } |
} |
| } |
} |
| /* Y2LABEL */ |
/* Y2LABEL */ |
| if (*y2label.text) { |
if (*y2label.text) { |
| strcpy(ss, y2label.text); |
|
| /* we worked out coordinates in boundary() */ |
/* we worked out coordinates in boundary() */ |
| if ((*t->text_angle) (1)) { |
if ((*t->text_angle) (1)) { |
| unsigned int x = y2label_x + (t->v_char / 2) - 1; |
unsigned int x = y2label_x + (t->v_char / 2) - 1; |
| unsigned int y = (ytop + ybot) / 2 + y2label.yoffset * (t->h_char); |
unsigned int y = (ytop + ybot) / 2 + y2label.yoffset * (t->h_char); |
| write_multiline(x, y, ss, CENTRE, JUST_TOP, 1, y2label.font); |
write_multiline(x, y, y2label.text, CENTRE, JUST_TOP, 1, y2label.font); |
| (*t->text_angle) (0); |
(*t->text_angle) (0); |
| } else { |
} else { |
| /* really bottom just, but we know number of lines */ |
/* really bottom just, but we know number of lines */ |
| unsigned int x = y2label_x; |
unsigned int x = y2label_x; |
| unsigned int y = y2label_y; |
unsigned int y = y2label_y; |
| write_multiline(x, y, ss, RIGHT, JUST_TOP, 0, y2label.font); |
write_multiline(x, y, y2label.text, RIGHT, JUST_TOP, 0, y2label.font); |
| } |
} |
| } |
} |
| /* XLABEL */ |
/* XLABEL */ |
| if (*xlabel.text) { |
if (*xlabel.text) { |
| unsigned int x = (xright + xleft) / 2 + xlabel.xoffset * (t->h_char); |
unsigned int x = (xright + xleft) / 2 + xlabel.xoffset * (t->h_char); |
| unsigned int y = xlabel_y - t->v_char / 2; /* HBB */ |
unsigned int y = xlabel_y - t->v_char / 2; /* HBB */ |
| strcpy(ss, xlabel.text); |
write_multiline(x, y, xlabel.text, CENTRE, JUST_TOP, 0, xlabel.font); |
| write_multiline(x, y, ss, CENTRE, JUST_TOP, 0, xlabel.font); |
|
| } |
} |
| /* PLACE TITLE */ |
/* PLACE TITLE */ |
| if (*title.text) { |
if (*title.text) { |
| /* we worked out y-coordinate in boundary() */ |
/* we worked out y-coordinate in boundary() */ |
| unsigned int x = (xleft + xright) / 2 + title.xoffset * t->h_char; |
unsigned int x = (xleft + xright) / 2 + title.xoffset * t->h_char; |
| unsigned int y = title_y - t->v_char / 2; |
unsigned int y = title_y - t->v_char / 2; |
| strcpy(ss, title.text); |
write_multiline(x, y, title.text, CENTRE, JUST_TOP, 0, title.font); |
| write_multiline(x, y, ss, CENTRE, JUST_TOP, 0, title.font); |
|
| } |
} |
| /* X2LABEL */ |
/* X2LABEL */ |
| if (*x2label.text) { |
if (*x2label.text) { |
| /* we worked out y-coordinate in boundary() */ |
/* we worked out y-coordinate in boundary() */ |
| unsigned int x = (xright + xleft) / 2 + x2label.xoffset * (t->h_char); |
unsigned int x = (xright + xleft) / 2 + x2label.xoffset * (t->h_char); |
| unsigned int y = x2label_y - t->v_char / 2 - 1; |
unsigned int y = x2label_y - t->v_char / 2 - 1; |
| strcpy(ss, x2label.text); |
write_multiline(x, y, x2label.text, CENTRE, JUST_TOP, 0, x2label.font); |
| write_multiline(x, y, ss, CENTRE, JUST_TOP, 0, x2label.font); |
|
| } |
} |
| /* PLACE TIMEDATE */ |
/* PLACE TIMEDATE */ |
| if (*timelabel.text) { |
if (*timelabel.text) { |
| /* we worked out coordinates in boundary() */ |
/* we worked out coordinates in boundary() */ |
| char str[MAX_LINE_LEN + 1]; |
char *str; |
| time_t now; |
time_t now; |
| unsigned int x = time_x; |
unsigned int x = time_x; |
| unsigned int y = time_y; |
unsigned int y = time_y; |
| time(&now); |
time(&now); |
| |
/* there is probably now way to find out in advance how many |
| |
* chars strftime() writes */ |
| |
str = gp_alloc(MAX_LINE_LEN + 1, "timelabel.text"); |
| strftime(str, MAX_LINE_LEN, timelabel.text, localtime(&now)); |
strftime(str, MAX_LINE_LEN, timelabel.text, localtime(&now)); |
| |
|
| if (timelabel_rotate && (*t->text_angle) (1)) { |
if (timelabel_rotate && (*t->text_angle) (1)) { |
| Line 1713 int pcount; /* count of plots in linked list */ |
|
| Line 1711 int pcount; /* count of plots in linked list */ |
|
| this_label = this_label->next) { |
this_label = this_label->next) { |
| unsigned int x, y; |
unsigned int x, y; |
| map_position(&this_label->place, &x, &y, "label"); |
map_position(&this_label->place, &x, &y, "label"); |
| strcpy(ss, this_label->text); |
|
| if (this_label->rotate && (*t->text_angle) (1)) { |
if (this_label->rotate && (*t->text_angle) (1)) { |
| write_multiline(x, y, ss, this_label->pos, JUST_TOP, 1, this_label->font); |
write_multiline(x, y, this_label->text, this_label->pos, JUST_TOP, 1, this_label->font); |
| (*t->text_angle) (0); |
(*t->text_angle) (0); |
| } else { |
} else { |
| write_multiline(x, y, ss, this_label->pos, JUST_TOP, 0, this_label->font); |
write_multiline(x, y, this_label->text, this_label->pos, JUST_TOP, 0, this_label->font); |
| } |
} |
| } |
} |
| |
|
| Line 1742 int pcount; /* count of plots in linked list */ |
|
| Line 1739 int pcount; /* count of plots in linked list */ |
|
| yl = key_yt; |
yl = key_yt; |
| |
|
| if (*key_title) { |
if (*key_title) { |
| sprintf(ss, "%s\n", key_title); |
char *ss = gp_alloc(strlen(key_title) + 2, "tmp string ss"); |
| |
strcpy(ss, key_title); |
| |
strcat(ss, "\n"); |
| |
|
| s = ss; |
s = ss; |
| yl -= t->v_char / 2; |
yl -= t->v_char / 2; |
| while ((e = (char *) strchr(s, '\n')) != NULL) { |
while ((e = (char *) strchr(s, '\n')) != NULL) { |
| Line 1763 int pcount; /* count of plots in linked list */ |
|
| Line 1763 int pcount; /* count of plots in linked list */ |
|
| yl -= t->v_char; |
yl -= t->v_char; |
| } |
} |
| yl += t->v_char / 2; |
yl += t->v_char / 2; |
| |
free(ss); |
| } |
} |
| yl_ref = yl -= key_entry_height / 2; /* centralise the keys */ |
yl_ref = yl -= key_entry_height / 2; /* centralise the keys */ |
| key_count = 0; |
key_count = 0; |
| Line 1841 int pcount; /* count of plots in linked list */ |
|
| Line 1842 int pcount; /* count of plots in linked list */ |
|
| switch (this_plot->plot_style) { |
switch (this_plot->plot_style) { |
| /*{{{ IMPULSE */ |
/*{{{ IMPULSE */ |
| case IMPULSES: |
case IMPULSES: |
| plot_impulses(this_plot, axis_zero[y_axis], axis_zero[x_axis]); |
plot_impulses(this_plot, axis_zero[x_axis], axis_zero[y_axis]); |
| break; |
break; |
| /*}}} */ |
/*}}} */ |
| /*{{{ LINES */ |
/*{{{ LINES */ |
| Line 1905 int pcount; /* count of plots in linked list */ |
|
| Line 1906 int pcount; /* count of plots in linked list */ |
|
| /*}}} */ |
/*}}} */ |
| /*{{{ BOXXYERROR */ |
/*{{{ BOXXYERROR */ |
| case BOXXYERROR: |
case BOXXYERROR: |
| plot_boxes(this_plot, axis_zero[x_axis]); |
plot_boxes(this_plot, axis_zero[y_axis]); |
| break; |
break; |
| /*}}} */ |
/*}}} */ |
| /*{{{ BOXERROR (falls through to) */ |
/*{{{ BOXERROR (falls through to) */ |
| Line 1916 int pcount; /* count of plots in linked list */ |
|
| Line 1917 int pcount; /* count of plots in linked list */ |
|
| /*}}} */ |
/*}}} */ |
| /*{{{ BOXES */ |
/*{{{ BOXES */ |
| case BOXES: |
case BOXES: |
| plot_boxes(this_plot, axis_zero[x_axis]); |
plot_boxes(this_plot, axis_zero[y_axis]); |
| break; |
break; |
| /*}}} */ |
/*}}} */ |
| /*{{{ VECTOR */ |
/*{{{ VECTOR */ |
| Line 3667 int vert; /* ... and vertical just - text in hor dir |
|
| Line 3668 int vert; /* ... and vertical just - text in hor dir |
|
| int angle; /* assume term has already been set for this */ |
int angle; /* assume term has already been set for this */ |
| char *font; /* NULL or "" means use default */ |
char *font; /* NULL or "" means use default */ |
| { |
{ |
| /* assumes we are free to mangle the text */ |
|
| register struct termentry *t = term; |
register struct termentry *t = term; |
| char *p; |
char *p = text; |
| |
|
| |
if (!p) |
| |
return; |
| |
|
| if (vert != JUST_TOP) { |
if (vert != JUST_TOP) { |
| /* count lines and adjust y */ |
/* count lines and adjust y */ |
| int lines = 0; /* number of linefeeds - one fewer than lines */ |
int lines = 0; /* number of linefeeds - one fewer than lines */ |
| for (p = text; *p; ++p) |
while (*p++) { |
| if (*p == '\n') |
if (*p == '\n') |
| ++lines; |
++lines; |
| |
} |
| if (angle) |
if (angle) |
| x -= (vert * lines * t->v_char) / 2; |
x -= (vert * lines * t->v_char) / 2; |
| else |
else |
| Line 3687 char *font; /* NULL or "" means use default */ |
|
| Line 3692 char *font; /* NULL or "" means use default */ |
|
| |
|
| for (;;) { /* we will explicitly break out */ |
for (;;) { /* we will explicitly break out */ |
| |
|
| if ((p = strchr(text, '\n')) != NULL) |
if ((text != NULL) && (p = strchr(text, '\n')) != NULL) |
| *p = 0; /* terminate the string */ |
*p = 0; /* terminate the string */ |
| |
|
| if ((*t->justify_text) (hor)) { |
if ((*t->justify_text) (hor)) { |
| Line 3706 char *font; /* NULL or "" means use default */ |
|
| Line 3711 char *font; /* NULL or "" means use default */ |
|
| |
|
| if (!p) |
if (!p) |
| break; |
break; |
| |
else { |
| |
/* put it back */ |
| |
*p = '\n'; |
| |
} |
| |
|
| text = p + 1; |
text = p + 1; |
| } /* unconditional branch back to the for(;;) - just a goto ! */ |
} /* unconditional branch back to the for(;;) - just a goto ! */ |
| |
|
| if (font && *font) |
if (font && *font) |
| (*t->set_font) (default_font); |
(*t->set_font) (default_font); |
| |
|
| } |
} |
| |
|
| /* display a x-axis ticmark - called by gen_ticks */ |
/* display a x-axis ticmark - called by gen_ticks */ |
| Line 4413 tic_callback callback; /* fn to call to actually do t |
|
| Line 4423 tic_callback callback; /* fn to call to actually do t |
|
| gstrftime(label, 24, ticfmt[axis], (double) user); |
gstrftime(label, 24, ticfmt[axis], (double) user); |
| } else if (polar) { |
} else if (polar) { |
| /* if rmin is set, we stored internally with r-rmin */ |
/* if rmin is set, we stored internally with r-rmin */ |
| #if 0 /* Igor's polar-grid patch */ |
/* Igor's polar-grid patch */ |
| |
#if 1 |
| |
/* HBB 990327: reverted to 'pre-Igor' version... */ |
| double r = fabs(user) + (autoscale_r & 1 ? 0 : rmin); |
double r = fabs(user) + (autoscale_r & 1 ? 0 : rmin); |
| #else |
#else |
| /* Igor removed fabs to allow -ve labels */ |
/* Igor removed fabs to allow -ve labels */ |