--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/HuiLineVisual.h Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,186 @@
+/*
+* Copyright (c) 2006-2007 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: Defines CHuiLineVisual, Visual that is able to draw lines
+* onto a curve path.
+*
+*/
+
+
+
+#ifndef __HUILINEVISUAL_H__
+#define __HUILINEVISUAL_H__
+
+
+#include <e32base.h>
+#include <uiacceltk/HuiVisual.h>
+#include <uiacceltk/HuiImage.h>
+#include <uiacceltk/HuiOwnedPointer.h>
+#include <uiacceltk/HuiCurvePath.h>
+#include <uiacceltk/HuiGc.h>
+#include <uiacceltk/HuiMappingFunctions.h>
+
+
+/* Forward declarations */
+class CHuiEnv;
+class CHuiControl;
+
+
+/**
+ * Line visual draws a line along a curve path.
+ *
+ * A line visual will draw a bendy line that follows a specified
+ * curve path. Width and alpha functions can be set to change the
+ * opacity and thickness of the line along its length.
+ *
+ * Note that the Bitgdi renderer contains only a minimal implementation
+ * of line drawing. There is no aliasing or shading on the line, and
+ * thickness and alpha functions have no effect. The entire thickness of a Bitgdi
+ * line is set by the initial thickness at point 0.
+ *
+ * @see CHuiCurvePath
+ */
+NONSHARABLE_CLASS(CHuiLineVisual) : public CHuiVisual
+ {
+public:
+
+ /* Constructors and destructor. */
+
+ /**
+ * Constructs and appends a new text visual to the owner control.
+ *
+ * @param aOwnerControl Control that will own the new visual.
+ *
+ * @return The new visual.
+ */
+ IMPORT_C static CHuiLineVisual* AddNewL(CHuiControl& aOwnerControl,
+ CHuiLayout* aParentLayout);
+
+ /**
+ * Constructor.
+ */
+ CHuiLineVisual(MHuiVisualOwner& aOwner);
+
+ /**
+ * Second-phase constructor.
+ */
+ void ConstructL();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CHuiLineVisual();
+
+
+ /* Methods. */
+
+ /**
+ * Sets the path instance of the visual.
+ *
+ * @param aPath
+ * @param aOwnership
+ */
+ IMPORT_C void SetPath(CHuiCurvePath* aPath, THuiOwnership aOwnership);
+
+ /**
+ * Returns the path of the visual. The path can be modified via this
+ * reference.
+ */
+ IMPORT_C CHuiCurvePath& Path();
+
+ virtual TBool Changed() const;
+
+ virtual void ClearChanged();
+
+ /**
+ * Sets the image used by the line.
+ */
+ IMPORT_C void SetImage(const THuiImage& aImage);
+
+ /**
+ * Sets the alpha mapping function that generates alpha values for the
+ * path.
+ */
+ IMPORT_C void SetAlphaFunction(MHuiMappingFunction* aFunction);
+
+ /**
+ * Sets the width mapping function that generates width values for the
+ * path.
+ */
+ IMPORT_C void SetWidthFunction(MHuiMappingFunction* aFunction);
+
+ /**
+ * Sets the color of the line.
+ *
+ * @param aColor Line color.
+ */
+ IMPORT_C void SetColor(const TRgb& aColor);
+
+ /**
+ * Draw the curve path.
+ */
+ virtual void DrawSelf(CHuiGc& aGc, const TRect& aDisplayRect) const;
+
+ /**
+ * Expand dirty region
+ */
+ void ExpandRectWithContent(TRect& aRect) const;
+
+private:
+
+ /* Private methods */
+
+
+private:
+
+ /** The path of the visual. */
+ RHuiOwnedPointer<CHuiCurvePath> iPath;
+
+ /** Image used by the line. */
+ THuiImage iImage;
+
+ /** Value mapping function that generates alpha values for path
+ positions. */
+ MHuiMappingFunction* iAlphaFunction;
+
+ /** Custom width mapping function. */
+ MHuiMappingFunction* iWidthFunction;
+
+ /** Determines the width of the line. Depends on the current value
+ of iThickness. */
+ mutable THuiConstantMappingFunction iDefaultWidthFunction;
+
+public:
+
+ /* Public properties. */
+
+ /** Thickness of the line. */
+ THuiTimedValue iThickness;
+
+ /** Thickness of the shadow around the line. */
+ THuiTimedValue iShadowThickness;
+
+ /** Current start position on the path. */
+ THuiTimedValue iStartPos;
+
+ /** Current end position on the path. */
+ THuiTimedValue iEndPos;
+
+private:
+
+ /** Line color */
+ TRgb iColor;
+ };
+
+#endif // __HUILINEVISUAL_H__
+