[Lazarus] Fuzzy translations ignored

Giuliano Colla giuliano.colla at fastwebnet.it
Thu Sep 18 18:41:25 CEST 2014


Il 18/09/2014 14:55, Mattias Gaertner ha scritto:
> Are you saying, that Canvas.Pie is broken?
In short, yes.

Canvas.RadalPie on GTK2 and Windows works only clockwise, but provides a 
very poor image (more like a portion of an octagon that a portion of a 
circle).
Counterclockwise it generates the image of my previous e-mail.

Only on Qt I provided a patch to take advantage of the native 
QT_Painter, and RadialPie works properly, but by overriding 
Canvas.RadialPie (or, to be precise, TWidgetset.RadialPie).

Plain Canvas.Pie works differently for each widgetset: it is offset with 
respect to an Ellipse with the same parameters, but by a different 
amount depending on the widgetset. This is rather annoying, if you want 
to show the full circle, as it's usual.

I'd like to avoid code like this:

{$IFDEF LCLQt}
         Pie(PaintRect.Left, PaintRect.Top, W-2, H,
         Integer(Round(MiddleX * (1 - Cos(Angle)))),
         Integer(Round(MiddleY * (1 - Sin(Angle)))), MiddleX, 0);
{$ELSE}
        Pie(PaintRect.Left, PaintRect.Top, W-1, H-1,
        Integer(Round(MiddleX * (1 - Cos(Angle)))),
        Integer(Round(MiddleY * (1 - Sin(Angle)))), MiddleX, 0);
{$ENDIF}


What I'd like to do, if nobody else wants to take care of the matter, is 
to try to put things in order, and achieve a consistent and predictable 
behavior with all widgetsets, starting from GraphMath.

Most likely it happened a number of time what I've done recently: 
RadialPie wasn't working in a satisfactory way, and I've just taken 
advantage of the native Qt implementation, but maybe I've broken 
something else in the process, because Pie was just using RadialPie.

I'm not a fan of Delphi compatibility, but in that case, as there a 
number of arbitrary decisions to take, I'd take Delphi look as a 
guideline: a Pie, RadialPie, Arc, etc. should just look, with the same 
parameters, the same as it looks in Delphi.

Another thing that I'd like to do is to add to Canvas support for 
antialiasing, which provides a more pleasant look to lines, circles, 
ellipses etc. as expected by modern users, accustomed to modern graphic 
look.

Of course, unless someone else wants to do it.

Giuliano






More information about the Lazarus mailing list