> On 22.12.2011 09:56, David FLEURY wrote:
>
> > On this issue, is this possible to replicate (somehting like) the 
> > clip_to_short method used in fl_rect.cxx into fl_font_x.cxx ?
> > and use it each XUtf8Draw or draw string methods ?
> >
> > Something like:
> > namespace {
> >    const int USHRT_MAX = 65536;
> >
> >    int clip_to_short(int x, int y) {
> >      return ( x<  0 || x>  USHRT_MAX || y<  0 || y>  USHRT_MAX );
> >    }
> > }
> >
> > and in the 2 draw and rtl_draw and a clip check
> >    if (fl_gc&&  !clip_to_short(x,y))
> >
> > (line 335, 341, 350)
>
> Well, maybe, something like that...
>
> Question: why do you use "USHRT_MAX = 65536" instead of SHRT_MAX (32767),
> as it is in fl_rect.cxx, as you mentioned above? X coordinates can be
> negative, so they are signed shorts AFAICT. Am I missing something?


I only USHORT_MAX because this was the value that trigger the issue
for XUtf8DrawString (else it takes int as argument).
I will further tests for negative values (I have done none yet).

>
> The check you propose is probably not what we want, because this only
> checks the starting coordinate of a string. If this is in legal space,
> the remaining parts of the string can still be out of bounds and wrap.
>
> I wrote that clipping code in fl_rect.cxx, and I used it only for
> horizontal and vertical lines, since everything else may be difficult
> to handle (there can be all sorts of objects like circles near the
> boundaries of the coordinate space, or they may be too big to fit),
> not to mention (rotated) text. To be correct, we'd have to measure each
> text before drawing - I believe this would be too expensive.
>
> I suppose that you should implement clipping (i.e. don't draw objects
> out of the widget's visible area at all) in the widget's draw method
> rather than relying on the basic draw functions doing the clipping.
>
> That said, coming back to the original part of the thread: since this
> concerns Fl_Tree, this could be done best in Fl_Tree's implementation.
> IIRC, Greg mentioned that he intended to do this for performance
> reasons anyway, so this would avoid clipping at the drawing functions.
>
> If you still feel that clipping should be done at the drawing level,
> please file a STR (fltk.org/str.php), so that we can keep track of it.
> However, AFAICT it's much more complicated to do it correctly, so we
> might not implement it in the near future...
>

You are right, I will see for a Tree Item solution, to avoid regression 
somewhere else.
I do not know well enough fltk to have any opinion on this subject.
Just try to make my tests work for my own configuration.

_______________________________________________
fltk mailing list
fltk@easysw.com
http://lists.easysw.com/mailman/listinfo/fltk

Reply via email to