From a1d618dfe69ef62138ce369163b4948276a2ced6 Mon Sep 17 00:00:00 2001 From: ask Date: Sun, 9 Sep 2012 09:20:00 +0000 Subject: [PATCH] TAChart: Support pie charts in OpenGL drawer git-svn-id: trunk@38593 - --- components/tachart/tadraweropengl.pas | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/components/tachart/tadraweropengl.pas b/components/tachart/tadraweropengl.pas index d17a391fac..2fd7cdc1e1 100644 --- a/components/tachart/tadraweropengl.pas +++ b/components/tachart/tadraweropengl.pas @@ -20,7 +20,7 @@ unit TADrawerOpenGL; interface uses - Classes, FPCanvas, FPImage, GL, GLu, Glut, + Classes, FPCanvas, FPImage, TAChartUtils, TADrawUtils; type @@ -76,6 +76,10 @@ type implementation +uses + GL, GLu, Glut, + TAGeometry; + { TOpenGLDrawer } procedure TOpenGLDrawer.AddToFontOrientation(ADelta: Integer); @@ -128,10 +132,11 @@ begin end; procedure TOpenGLDrawer.Ellipse(AX1, AY1, AX2, AY2: Integer); +var + p: TPointArray; begin - Unused(AX1, AY1); - Unused(AX2, AY2); - raise EChartError.Create('TOpenGLDrawer.Ellipse not implemented'); + p := TesselateEllipse(Rect(AX1, AY1, AX2, AY2), 4); + Polygon(p, 0, Length(p)); end; procedure TOpenGLDrawer.FillRect(AX1, AY1, AX2, AY2: Integer); @@ -218,11 +223,14 @@ end; procedure TOpenGLDrawer.RadialPie( AX1, AY1, AX2, AY2: Integer; AStartAngle16Deg, AAngleLength16Deg: Integer); +var + e: TEllipse; + p: TPointArray; begin - Unused(AX1, AY1); - Unused(AX2, AY2); - Unused(AStartAngle16Deg, AAngleLength16Deg); - raise EChartError.Create('TOpenGLDrawer.RadialPie not implemented'); + e.InitBoundingBox(AX1, AY1, AX2, AY2); + p := e.TesselateRadialPie( + Deg16ToRad(AStartAngle16Deg), Deg16ToRad(AAngleLength16Deg), 4); + Polygon(p, 0, Length(p)); end; procedure TOpenGLDrawer.Rectangle(AX1, AY1, AX2, AY2: Integer);