|
From: Ethan M. <merritt@u.washington.edu> - 2005-11-10 00:30:00
|
> >
> > The "Fix buggy clipping" patch does not touch any terminal drivers.
>
> And what do the patches
>
> /* EAM FIXME - Is this a sufficient test for out-of-bounds? */
> - if (x < 0 || x > term->xmax || y < 0 || y > term->ymax) {
> + if ((x < 0) ||
> + (multiplot && (x > term->xmax * global_xsize)) ||
> + (!multiplot && (x > term->xmax * xsize)) ||
> + (y < 0) ||
> + (multiplot && (y > term->ymax * global_ysize)) ||
> + (!multiplot && (y > term->ymax * ysize))) {
>
> and
>
> - if ((0 < x && x < term->xmax) && (0 < y && y < term->ymax))
> + FPRINTF((stderr,"on_page(): %d,%g %d,%g\n",
> + term->xmax,global_xsize,term->ymax,global_ysize));
> + if ((0 < x && x < term->xmax * global_xsize)
> + && (0 < y && y < term->ymax * global_ysize))
>
> do? They affect clipping due to a 'set size' before 'set terminal'.
Well, they for sure do not corrent for the fact that term-xmax
and term->ymax do not in fact contain the correct clipping limits.
At least, not for post.trm.
> Or what does
>
> - xleft += t->xmax * xoffset;
> - xright += t->xmax * xoffset;
> - ytop += t->ymax * yoffset;
> - ybot += t->ymax * yoffset;
> + xleft += xpagemax * xoffset;
> + xright += xpagemax * xoffset;
> + ytop += ypagemax * yoffset;
> + ybot += ypagemax * yoffset;
>
> and
>
> - if (*sx < 0 || *sx > term->xmax || *sy < 0 || *sy > term->ymax)
> + if (*sx < 0 || *sx > xpagemax ||
> + *sy < 0 || *sy > ypagemax) {
> + FPRINTF((stderr,"place_arrow3d: skipping out-of-bounds arrow\n"));
>
> do? Yes, clipping.
but but but...
There is nothing in here that correctly sets the
canvas bounds for the current terminal.
Isn't that what we're talking about?
Multiplying a previous value by {xy}pagesize doesn't help if the
previous value is wrong to begin with.
--
Ethan A Merritt merritt@u.washington.edu
Biomolecular Structure Center
Mailstop 357742
University of Washington, Seattle, WA 98195
|