--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicsdeviceinterface/directgdiadaptation/swsrc/swdirectgdiellipse.h Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,84 @@
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef SWDIRECTGDIELLIPSE_H_
+#define SWDIRECTGDIELLIPSE_H_
+
+/**
+@file
+@internalComponent
+*/
+
+#include <e32std.h>
+#include <gdi.h>
+
+/**
+A utility class to efficiently draw and fill ellipses
+*/
+class TSwDirectGdiEllipse
+ {
+public:
+ /**
+ Enumeration for the ellipse production life cycle
+ */
+ enum TEllipseStatus
+ {
+ /**
+ Ellipse has been initialised but has no area
+ */
+ EInitialised,
+ /**
+ The ellipse is drawn as two parabolas. These are in two sectors, the top and bottom
+ half of the rectangle. The first sector means the top parabola has been produced.
+ */
+ EFirstSector,
+ /**
+ The parabola that occupies the bottom half of the rectangle has been produced.
+ */
+ ESecondSector,
+ /**
+ The ellipse is complete
+ */
+ EComplete,
+ /**
+ The ellipse has either a height or width of two units or less
+ and so takes the appearance of a line
+ */
+ ELine
+ };
+public:
+ void Construct(const TRect& aRect);
+ TBool SingleStep(TPoint& aTopLeft,TPoint& aTopRight,TPoint& aBottomLeft,TPoint& aBottomRight);
+ TBool NextStep(TPoint& aTopLeft,TPoint& aTopRight,TPoint& aBottomLeft,TPoint& aBottomRight);
+ TPoint Intersection(const TRect& aRect,const TPoint& aPoint);
+protected:
+ TBool Output(TPoint& aTopLeft,TPoint& aTopRight,TPoint& aBottomLeft,TPoint& aBottomRight);
+protected:
+ TEllipseStatus iStatus;
+ TInt iA;
+ TInt iB;
+ TInt64 iASquared;
+ TInt64 iBSquared;
+ TInt64 iASquBSqu;
+ TInt iX;
+ TInt iY;
+ TInt iXAdj;
+ TInt iYAdj;
+ TPoint iOffset;
+ TInt64 iD1;
+ TInt64 iD2;
+ };
+
+#endif /*SWDIRECTGDIELLIPSE_H_*/