diff -r 000000000000 -r 15bf7259bb7c uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/HuiLineVisual.h --- /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 +#include +#include +#include +#include +#include +#include + + +/* 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 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__ +