--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uiaccelerator_plat/alf_visual_api/inc/alf/alfvisual.h Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,942 @@
+/*
+* Copyright (c) 2006 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: Base class for visuals
+*
+*/
+
+
+
+#ifndef C_ALFVISUAL_H
+#define C_ALFVISUAL_H
+
+class CAlfEnv;
+class CAlfVisual;
+class CAlfControlGroup;
+class CAlfControl;
+class MAlfEventHandler;
+struct TAlfBoxMetric;
+class CAlfDropShadow;
+
+#include <e32base.h>
+#include <alf/alftimedvalue.h>
+#include <alf/alfpropertyowner.h>
+
+/** Visual types. */
+enum TAlfVisualType
+ {
+ EAlfVisualTypeVisual,
+ EAlfVisualTypeLine,
+ EAlfVisualTypeText,
+ EAlfVisualTypeLCTText,
+ EAlfVisualTypeImage,
+ EAlfVisualTypeMesh,
+ EAlfVisualTypeCanvas
+ };
+
+/** Visual flags. */
+enum TAlfVisualFlags
+ {
+ /** Manual layout means that layouts can't change the position and
+ size of the visual; the owner of the visual is expected to
+ manually maintain the visual's placement. */
+ EAlfVisualFlagManualSize = 0x1,
+ EAlfVisualFlagManualPosition = 0x2,
+ EAlfVisualFlagManualLayout = EAlfVisualFlagManualSize |
+ EAlfVisualFlagManualPosition,
+
+ /**
+ * This enum is retained for source compatibility.
+ * @deprecated
+ * @note See EAlfVisualFlagClipping
+ */
+ AlfVisualFlagClipping = 0x4,
+
+ /** Notify owner control when the visual's layout has been updated.
+ Notication is sent after all children have been updated. */
+ EAlfVisualFlagLayoutUpdateNotification = 0x8,
+
+ /** When the visual is drawn it will use a 3D projection. */
+ EAlfVisualFlag3DProjection = 0x10,
+
+ /** No depth test when drawing with a 3D projection. */
+ EAlfVisualFlagNoDepthOcclusion = 0x20,
+
+ /** Use a local horizon with a 3D projection. Otherwise, the global
+ display horizon is used instead. */
+ EAlfVisualFlagLocalHorizon = 0x40,
+
+ /** Contents of the visual are clipped to its display rectangle. */
+ EAlfVisualFlagClipping = 0x80,
+
+ EAlfVisualFlagHOriginCenter = 0x100,
+
+ EAlfVisualFlagHOriginRight = 0x200,
+
+ EAlfVisualFlagVOriginCenter = 0x400,
+
+ EAlfVisualFlagVOriginBottom = 0x800,
+
+ /** Visual has changed and needs refresh. */
+ EAlfVisualChanged = 0x1000,
+
+ /** When the visual is drawn, the depth buffer shouldn't be updated. */
+ EAlfVisualFlagNoDepthUpdate = 0x2000,
+
+ /** Use the visual's local layout transition time, do not inherit from parent. */
+ EAlfVisualFlagManualTransitionTime = 0x4000,
+
+ /** Draw above the normal drawing order. */
+ EAlfVisualFlagDrawAfterOthers = 0x10000,
+
+ /** Do not automatically update the layout of children when doing
+ changes in a layout (e.g., when reordering children). */
+ EAlfVisualFlagFreezeLayout = 0x20000,
+
+ /** The visual will be ignored when checking for possible pointer event
+ interaction. */
+ EAlfVisualFlagIgnorePointer = 0x40000,
+
+ /**
+ * automatically reverse the base unit sign in the X axis if the current locale setting is
+ * for mirrored layout
+ *
+ * @note this will only affect the positions of visuals contained
+ * within layout visuals, the contents within a visual such as a text visual will not be
+ * affected.
+ */
+ EAlfVisualFlagAutomaticLocaleMirroringEnabled = 0x80000,
+
+ /**
+ * RnD: if set, some of the debug features are enabled. See programmers'
+ * guide for more info.
+ *
+ * If the central repository has the setting to draw selected visual outline,
+ * setting this flag will draw outline for the visual and its child visuals
+ */
+ EAlfVisualFlagEnableDebugMode = 0x100000,
+
+ //Code added by Devayani
+ /**
+ * Setting this flag makes visual and its children Inactive i.e. it is ignored from roster operations
+ * - Draw, Handle event, change notifications etc.
+ * Unsetting flag can again make visual tree active.
+ * Note that flag change does not take effect unless that display area is refreshed.
+ **/
+ EAlfVisualFlagInactive = 0x200000,
+
+ /**
+ * Setting this flag informs renderer that visual is to be considered as opaque and thus
+ * renderer may choose not to draw visuals behind opaque visual. Note that visual
+ * attribute "opacity" is not affected by this flag.
+ **/
+ EAlfVisualFlagOpaqueHint = 0x400000,
+
+ EAlfVisualFlagLast = 0xFFFFFFFF
+ };
+
+/** Horizontal origin of a visual. */
+enum TAlfVisualHOrigin
+ {
+ EAlfVisualHOriginLeft = 0,
+ EAlfVisualHOriginCenter = 1,
+ EAlfVisualHOriginRight = 2
+ };
+
+
+/** Vertical origin of a visual. */
+enum TAlfVisualVOrigin
+ {
+ EAlfVisualVOriginTop = 0,
+ EAlfVisualVOriginCenter = 1,
+ EAlfVisualVOriginBottom = 2
+ };
+
+const TText KAlfTagSeparator = ':';
+
+const TInt KAlfTactileFeedbackEventTypeNone = -1;
+
+class CAlfControl;
+class CAlfLayout;
+class CAlfDisplay;
+class CAlfEnv;
+class CAlfBrushArray;
+class CAlfGenComponent;
+class MAlfMappingFunction;
+class CAlfTransformation;
+
+/** Fixed properties for visuals, Use these for efficient copying of visual properties. */
+class AlfVisualProperties
+ {
+ public:
+ enum
+ {
+ ENone = 0x0,
+ ESize = 0x1,
+ EPosition = 0x2,
+ EOpacity = 0x4,
+ EDepthOffset = 0x8,
+ ESecondaryImageAlpha = 0x10,
+ EScale = 0x20,
+ EPosOffset = 0x40,
+ ETextVisShadowOpacity = 0x80,
+ EImageVisTurnAngle = 0x100,
+ ELineVisThickness = 0x200,
+ ELineVisShadowThickness = 0x400,
+ ELineVisStartPos = 0x800,
+ ELineVisEndPos = 0x1000,
+ EMeshVisYawAngle = 0x2000,
+ EMeshVisPitchAngle = 0x4000,
+ EMeshVisMaterial = 0x8000,
+ ELayoutScrollOffset = 0x10000,
+ // Add new properties here (next value: 0x20000)
+
+ EAll = 0xFFFFFFFF
+ };
+ };
+
+
+/**
+ * Visual base class
+ *
+ * All visuals and layout are derived from this.
+ * Usage:
+ * @code
+ * // #1 Visual object usage
+ * CAlfVisual* newVisual = CAlfVisual::AddNewL( *myMainControl, mMainGridLayout );
+ * newVisual->EnableBrushesL();
+ * newVisual->Brushes->AppendL( borderBrush, EAlfHasOwnership );
+ *
+ * // #2 as a base class
+ * class CMyVisual : public CAlfVisual
+ * {
+ * public:
+ * // allocation function
+ * CMyVisual(CAlfControl& aOwnerControl, CAlfLayout* aParentLayout = 0);
+ *
+ * // Function documentation
+ * void MyVisualSpecificFunction();
+ * protected:
+ *
+ * ~CAlfVisual();
+ * private:
+ * TInt mMyPrivateData;
+ * };
+ * @endcode
+ * @lib alfclient.lib
+ * @since S60 v3.2
+ */
+class CAlfVisual : public CAlfPropertyOwner
+ {
+
+public:
+
+ /**
+ * Constructor
+ */
+ IMPORT_C CAlfVisual();
+
+ /**
+ * ConstructL
+ */
+ IMPORT_C virtual void ConstructL(CAlfControl& aOwner);
+
+ /**
+ * Destructor
+ */
+ IMPORT_C virtual ~CAlfVisual();
+
+ /**
+ * Destroys a hierarchy of visuals, along with this visual. The visuals
+ * are first removed from their owner.
+ */
+ IMPORT_C virtual void RemoveAndDestroyAllD();
+
+ /**
+ * Return the server side handle
+ *
+ * @return Handle to the server side CAlfVisual object. 0 if not set.
+ */
+ IMPORT_C TInt Identifier() const;
+
+ /**
+ * Sets the layout this visual belongs to.
+ *
+ * @param aLayout Parent layout
+ */
+ void SetLayout(CAlfLayout* aLayout);
+
+ /**
+ * Set a flag that affects the visual's behaviour.
+ *
+ * @param aFlag Flag to set.
+ */
+ IMPORT_C void SetFlag(TAlfVisualFlags aFlag);
+
+ /**
+ * Sets one or more flags that affect the visual's behaviour.
+ *
+ * @param aAnyFlags One or more flags to set.
+ */
+ IMPORT_C void SetFlags(TUint aAnyFlags);
+
+ /**
+ * Unset flags that affect the visual's behaviour.
+ *
+ * @param aFlag Flag to clear.
+ */
+ IMPORT_C void ClearFlag(TAlfVisualFlags aFlag);
+
+ /**
+ * Clear one or more flags that affect the visual's behaviour.
+ *
+ * @param aAnyFlags One or more flags to clear.
+ */
+ IMPORT_C void ClearFlags(TUint aAnyFlags);
+
+ /**
+ * Returns the flags of the visual.
+ * @return Flags.
+ */
+ IMPORT_C TUint Flags() const;
+
+ /**
+ * Returns the layout this visual belongs to.
+ *
+ * @return Parent layout. NULL if not set.
+ */
+ IMPORT_C CAlfLayout* Layout() const;
+
+ /**
+ * Returns the position of the visual. This is set by UpdateLayout().
+ *
+ * @return Position.
+ */
+ IMPORT_C TAlfTimedPoint Pos() const;
+
+ /**
+ * Sets the position of the visual.
+ */
+ IMPORT_C void SetPos(const TAlfRealPoint& aPos, TInt aTransitionTime = 0);
+
+ /**
+ * Returns the size of the visual. This is set by UpdateLayout().
+ */
+ IMPORT_C const TAlfTimedPoint Size() const;
+
+ /**
+ * Sets the size of the visual.
+ */
+ IMPORT_C void SetSize(const TAlfRealSize& aSize, TInt aTransitionTime = 0);
+
+ /**
+ * Returns the overall opacity affecting the owner's visuals. All visuals
+ * owned by this object are affected by this opacity.
+ *
+ * @return Timed value.
+ */
+ IMPORT_C const TAlfTimedValue& Opacity() const;
+
+ /**
+ * Set opacity
+ *
+ * @param aOpacity Opacity value.
+ */
+ IMPORT_C void SetOpacity( const TAlfTimedValue& aOpacity );
+
+ /**
+ * Returns the environment where this visual belongs into.
+ *
+ * @return Environment.
+ */
+ IMPORT_C CAlfEnv& Env() const;
+
+ /**
+ * Returns the display of the visual (if shown).
+ *
+ * @return Pointer to <code>CAlfDisplay</code> instance, or
+ * <code>NULL</code> if no display is associated with the visual.
+ */
+ IMPORT_C CAlfDisplay* Display() const;
+
+ /**
+ * Sets the display on which the visual is being shown.
+ *
+ * @param aDisplay Pointer to display onto which to attach the visual
+ */
+ void SetDisplay(CAlfDisplay* aDisplay);
+
+ /**
+ * Determines the tag of the visual.
+ *
+ * @return Tag descriptor of the visual.
+ *
+ * @see CAlfVisual::SetTagL()
+ * @see CAlfVisual::IsTagged()
+ * @see CAlfVisual::FindTag()
+ */
+ IMPORT_C const TDesC8& Tag() const;
+
+ /**
+ * Update the layout of all children. Subclasses can call this to
+ * recalculate the layout of all children.
+ *
+ * @param aTransitionTime Time for layout transition in milliseconds.
+ * Any negative value uses value given in
+ * CAlfEnv::StaticSetLayoutTransitionTime()
+ */
+ IMPORT_C virtual void UpdateChildrenLayout(TInt aTransitionTime = 0);
+
+ /**
+ * Calculates the visual's bounding rectangle in display coordinates.
+ * Display coordinates are defined relative to the display's visible area.
+ * Uses the target values of the position and size, which means transitions
+ * are always immediate in the returned rectangle.
+ *
+ * @return Rectange.
+ */
+ IMPORT_C TAlfRealRect DisplayRectTarget() const;
+
+ /**
+ * Convert local coordiantes to display coordinates.
+ * Display coordinates are defined relative to the display's visible area.
+ *
+ * @return Converted point.
+ */
+ IMPORT_C TPoint LocalToDisplay(const TPoint& aPoint) const;
+
+ /**
+ * Convert local coordinates to display coordinates.
+ * Display coordinates are defined relative to the display's visible area.
+ *
+ * @param aPoint Point in local coordinates.
+ * @return Point in display coordinates.
+ */
+ IMPORT_C TAlfRealPoint LocalToDisplay(const TAlfRealPoint& aPoint) const;
+
+ /*
+ * Convert display coordinates to local coordinates.
+ * Display coordinates are defined relative to the display's visible area.
+ *
+ * @param aPoint Point in display coordinates.
+ * @return Point in local coordinates.
+ */
+ IMPORT_C TPoint DisplayToLocal(const TPoint& aPoint) const;
+
+ /**
+ * Convert display coordinates to local coordinate.
+ * Display coordinates are defined relative to the display's visible area.
+ *
+ * @param aPoint Point in display coordinates.
+ * @return Point in local coordinates.
+ */
+ IMPORT_C TAlfRealPoint DisplayToLocal(const TAlfRealPoint& aPoint) const;
+
+ /**
+ * Enables or disables brushes for the visual.
+ */
+ IMPORT_C void EnableBrushesL(TBool aEnabled = ETrue);
+
+ /**
+ * Returns the brushes of the visual.
+ *
+ * @return Brush array. <code>NULL</code>, if not enabled.
+ */
+ IMPORT_C CAlfBrushArray* Brushes();
+
+ /**
+ * Moves the visual to the front inside its parent layout.
+ * In other words, the visual becames the last child of the parent.
+ * Causes layout recalculation.
+ */
+ IMPORT_C void MoveToFront(TInt aTransitionTime = 0);
+
+ /**
+ * Enables or disables transformation of the control group.
+ *
+ * @param aIsTransformed ETrue for enabling.
+ */
+ IMPORT_C void EnableTransformationL( TBool aIsTransformed = ETrue );
+
+ /**
+ * Returns the transformation of the control group.
+ *
+ * @return Transformation steps.
+ */
+ IMPORT_C CAlfTransformation& Transformation();
+
+ /**
+ * Sets the number of pixels that the visual uses for padding its contents.
+ * Sets both the horizontal and vertical padding.
+ *
+ * @note that the left and right paddings will be the same, and the top and bottom
+ * paddings will be the same.
+ * @deprecated migrate to using metrics instead
+ *
+ * @param aPadding Number of padding pixels.
+ */
+ IMPORT_C void SetPadding(TInt aPadding);
+
+ /**
+ * Sets the number of pixels that the visual uses for padding its contents.
+ * Sets the horizontal and vertical padding separately.
+ *
+ * @note that the left and right paddings will be the same, and the top and bottom
+ * paddings will be the same.
+ * @deprecated migrate to using metrics instead
+ *
+ * @param aPadding Number of padding pixels.
+ */
+ IMPORT_C void SetPadding(const TPoint& aPadding);
+
+ /**
+ * Sets the amount of padding that the visual uses for padding its contents.
+ * The box metric can have a different amount on all sides.
+ *
+ * @note as paddings are relative to the layout visual, if relative units are required,
+ * it is advisable to use EAlfUnitRelativeToMySize so that the paddings are relative
+ * to the size of this layout visual
+ *
+ * @param aPadding Amount of padding.
+ */
+ IMPORT_C void SetPadding(const TAlfBoxMetric& aPadding);
+
+ /**
+ * Returns the padding of the visual, in pixels.
+ *
+ * @return Padding, in pixels. iTl.iX is the left padding, iTl.iY is
+ * the top padding, iBr.iX is the right padding, and iBr.iY
+ * is the bottom padding. The width and height of the returned
+ * rectangle are meaningless.
+ */
+ IMPORT_C TAlfRealRect PaddingInPixels() const;
+
+ /**
+ * Sets the tag of the visual.
+ *
+ * The tag is a descriptor, in the form of one or more colon-separated
+ * character sequences. By default, visuals have no tag (""). Normally,
+ * a visual could have a single tag, for example ("caption").
+ * The tag descriptor of the visual may contain multiple tags,
+ * for example: "tag1:tag2:tag3".
+ *
+ * Tags can be used for identifying visuals. In a typical use case, a control
+ * could identify which of its visuals represent certain elements of the
+ * control based on the tag descriptors. In this case, the tags would be
+ * set by an outside party that also sets the tags of the visuals.
+ *
+ * @param aTag Tag descriptor for the visual.
+ *
+ * @see CAlfVisual::Tag()
+ * @see CAlfVisual::IsTagged()
+ * @see CAlfVisual::FindTag()
+ */
+ IMPORT_C void SetTagL(const TDesC8& aTag);
+
+ /**
+ * Determines if the visual has a tag.
+ *
+ * @return <code>ETrue</code>, if the visual has been tagged with SetTagL().
+ * <code>EFalse</code> otherwise.
+ *
+ * @see CAlfVisual::Tag()
+ * @see CAlfVisual::SetTagL()
+ * @see CAlfVisual::FindTag()
+ */
+ IMPORT_C TBool IsTagged() const;
+
+ /**
+ * Finds a visual whose tag descriptor contains a specific tag.
+ *
+ * CAlfVisual::FindTag() is the basic implementation that checks if
+ * this visual's tag matches the specified tag. CAlfLayout::FindTag()
+ * extends the search into child visuals, covering recursively entire
+ * visual hierarchies.
+ *
+ * @param aTag Tag to look for. If this tag is found as a part of a
+ * visual's colon-separated tag descriptor, it is treated
+ * as a match and the visual is returned. The tag to look
+ * for cannot contain separator characters (:).
+ *
+ * @return Visual whose tag descriptor matches the tag. <code>NULL</code>,
+ * if no such visual could be found.
+ *
+ * Todo: how should several visuals with matching tag to be handled ??
+ *
+ * @see CAlfVisual::Tag()
+ * @see CAlfVisual::SetTagL()
+ * @see CAlfVisual::IsTagged()
+ * @see CAlfLayout::FindTag()
+ */
+ IMPORT_C virtual CAlfVisual* FindTag(const TDesC8& aTag);
+
+ /**
+ * Construct a visual.
+ *
+ * @todo This method is probably to allow extended visual types to be created.
+ *
+ * @param aOwner Who owns this new control.
+ */
+ IMPORT_C void ConstructL(CAlfControl& aOwner, TInt aImplementationId, TInt aImplementationUid, const TDesC8& aConstructionParams );
+
+ IMPORT_C CAlfGenComponent* Comms() const;
+
+
+ /**
+ * Gets the depth offset.
+ *
+ * @return Depth offset.
+ */
+ IMPORT_C TAlfTimedValue DepthOffset() const;
+
+ /**
+ * Sets the depth offset.
+ *
+ * @param aDepthOffset Depth offset.
+ */
+ IMPORT_C void SetDepthOffset(const TAlfTimedValue& aDepthOffset);
+
+ /**
+ * Returns the owner of the visual.
+ */
+ IMPORT_C CAlfControl& Owner() const;
+
+ /**
+ * Sets the owner of the visual.
+ *
+ * @param aOwner New owner of the visual.
+ */
+ IMPORT_C void SetOwner(CAlfControl& aOwner);
+
+ /**
+ * Sets the origin of the visual. The origin defines the location of the
+ * visual's position in relation to its DisplayRect. By default the visual's
+ * position defines its top left corner.
+ *
+ * Calling this method is equivalent to setting/clearing the corresponding
+ * flags.
+ */
+ IMPORT_C void SetOrigin(TAlfVisualHOrigin aHoriz, TAlfVisualVOrigin aVert);
+
+ /**
+ * Determines the horizontal origin.
+ */
+ IMPORT_C TAlfVisualHOrigin HorizontalOrigin() const;
+
+ /**
+ * Determines the vertical origin.
+ */
+ IMPORT_C TAlfVisualVOrigin VerticalOrigin() const;
+
+ /**
+ * Aligns the rectangle using the visual's origin position.
+ *
+ * @param aRect A rectangle (origin at top left). Modified to suit the
+ * visual's origin.
+ */
+ IMPORT_C void AlignByOrigin(TAlfRealRect& aRect) const;
+
+ /**
+ * @deprecated Use base unit version instead
+ *
+ * Sets the minimum size of the visual.
+ *
+ * @param aMinSize Minimum size of the visual.
+ */
+ IMPORT_C void SetMinSize(const TSize& aMinSize);
+
+ /**
+ * Sets the minimum size of the visual.
+ *
+ * @param aMinSize Minimum size of the visual in base units.
+ */
+ IMPORT_C void SetMinSize(const TAlfRealSize& aMinSize);
+
+ /**
+ * @deprecated Use base unit version instead
+ *
+ * Returns the minimum size of the visual.
+ */
+ IMPORT_C TSize MinSize() const;
+
+ /**
+ * Returns the minimum size of the visual in base units.
+ */
+ IMPORT_C TAlfRealSize MinSizeInBaseUnits() const;
+
+ /**
+ * @deprecated Use base unit version instead
+ *
+ * Sets the maximum size of the visual.
+ *
+ * @param aMaxSize Maximum size of the visual.
+ */
+ IMPORT_C void SetMaxSize(const TSize& aMaxSize);
+
+ /**
+ * Sets the maximum size of the visual.
+ *
+ * @param aMaxSize Maximum size of the visual.
+ */
+ IMPORT_C void SetMaxSize(const TAlfRealSize& aMaxSize);
+
+ /**
+ * @deprecated Use base unit version instead
+ *
+ * Returns the maximum size of the visual.
+ */
+ IMPORT_C TSize MaxSize() const;
+
+ /**
+ * Returns the maximum size of the visual in base units.
+ */
+ IMPORT_C TAlfRealSize MaxSizeInBaseUnits() const;
+
+ /**
+ * Sets the position and size of the visual.
+ *
+ * @param aRect Target rectangle.
+ * @param aTransitionTime Transition timein milliseconds.
+ */
+ IMPORT_C void SetRect(const TAlfRealRect& aRect, TInt aTransitionTime = 0);
+
+ /**
+ * @deprecated Use base unit version instead
+ *
+ * Moves the visual's position.
+ *
+ * @param aOffset Offset from the current target.
+ * @param aTransitionTime Transition time in milliseconds.
+ */
+ IMPORT_C void Move(const TPoint& aOffset, TInt aTransitionTime = 0);
+
+ /**
+ * Moves the visual's position.
+ *
+ * @param aOffset Offset from the current target in base units.
+ * @param aTransitionTime Transition time in milliseconds.
+ */
+ IMPORT_C void Move(const TAlfRealPoint& aOffset, TInt aTransitionTime = 0);
+
+ /**
+ * Positions and sizes this visual to match another.
+ *
+ * @param aVisual Visual whose position and size to copy.
+ */
+ IMPORT_C void Mimic(CAlfVisual& aVisual, TInt aTransitionTime = 0);
+
+ /**
+ * @deprecated Use base unit version instead
+ *
+ * Sets the position and size of the visual.
+ *
+ * @param aCenterPoint New center point of the visual.
+ * @param aSize New size of the visual.
+ * @param aTransitionTime Number of milliseconds for transitioning to new values.
+ */
+ IMPORT_C void SetCenteredPosAndSize(const TPoint& aCenterPoint,
+ const TSize& aSize,
+ TInt aTransitionTime = 0);
+
+ /**
+ * Sets the position and size of the visual.
+ *
+ * @param aCenterPoint New center point of the visual in base units.
+ * @param aSize New size of the visual in base units.
+ * @param aTransitionTime Number of milliseconds for transitioning to new values.
+ */
+ IMPORT_C void SetCenteredPosAndSize(const TAlfRealPoint& aCenterPoint,
+ const TAlfRealSize& aSize,
+ TInt aTransitionTime = 0);
+
+ /**
+ * Calculates the visual's bounding rectangle in display coordinates.
+ * Display coordinates are defined relative to the display's visible area.
+ * Uses the current values of the position and size. Only calculated once
+ * per frame.
+ */
+ IMPORT_C TAlfRealRect DisplayRect() const;
+
+ /**
+ * Returns the opacity of the visual, taking into account the opacity
+ * of parent visuals.
+ *
+ * @return Effective opacity level of the visual.
+ */
+ IMPORT_C TReal32 EffectiveOpacity() const __SOFTFP;
+
+ /**
+ * Sets the clipping mode of the layout.
+ *
+ * @param aClipping <code>ETrue</code> to hide children that are outside
+ * the layout's real size.
+ */
+ IMPORT_C void SetClipping(TBool aClipping = ETrue);
+
+ /**
+ * Determines whether the visual is clipping its contents.
+ */
+ IMPORT_C TBool Clipping() const;
+
+ /**
+ * Returns the padding pixels. Visuals can use this to determine the
+ * amount of padding that should be applied to the content.
+ *
+ * @deprecated this will return correct pixel values only if paddings were set
+ * using deprecated pixel based APIs, so migrate to using metrics instead
+ *
+ * @return Horizontal and vertical padding, in pixels.
+ */
+ IMPORT_C TPoint Padding() const;
+
+ /**
+ * Returns the padding of the visual.
+ *
+ * @return Padding as a box metric.
+ */
+ IMPORT_C const TAlfBoxMetric& PaddingAsMetric() const;
+
+ /**
+ * Returns the horizontal padding pixels. Visuals can use this to
+ * determine the amount of padding that should be applied to the content.
+ *
+ * @deprecated this will return correct pixel values only if paddings were set
+ * using deprecated pixel based APIs, so migrate to using metrics instead
+ *
+ * @return Horizontal padding, in pixels.
+ */
+ IMPORT_C TInt HorizontalPadding() const;
+
+ /**
+ * Returns the vertical padding pixels. Visuals can use this to
+ * determine the amount of padding that should be applied to the content.
+ *
+ * @deprecated this will return correct pixel values only if paddings were set
+ * using deprecated pixel based APIs, so migrate to using metrics instead
+ *
+ * @return Vertical padding, in pixels.
+ */
+ IMPORT_C TInt VerticalPadding() const;
+
+ /**
+ * Sets the position of the visual.
+ */
+ IMPORT_C void SetPos(const TAlfTimedPoint& aPos);
+
+ /**
+ * Sets the size of the visual.
+ */
+ IMPORT_C void SetSize(const TAlfTimedPoint& aSize);
+
+ /**
+ * Copies selected, basic types of properties from another visual
+ * If another visual is in the middle of interpolating selected value(s), target value is used
+ * with given transition time.
+ *
+ * For dynamic properties, use CAlfPropertyOwner::CopyProperty()
+ *
+ * @param aSourceVisual Visual, from which the values are copied
+ * @param aBitmask Defines what properties to copy
+ * @param aTransitionTime Number of milliseconds for transitioning to new values.
+ *
+ * @return System wide error codes
+ */
+ IMPORT_C TInt CopyValues(const CAlfVisual& aSourceVisual, TInt aBitmask = AlfVisualProperties::EAll, TInt aTransitionTime = 0);
+
+ /**
+ * Pauses selected, basic types of timed properties of this visual
+ *
+ * @param aPropertiesBitmask defines what properties are paused, combination of AlfVisualProperties
+ */
+ IMPORT_C void Pause(TInt aPropertiesBitmask = AlfVisualProperties::EAll);
+
+ /**
+ * Resumes selected basic types of timed properties of this visual
+ * that were paused using CAlfVisual::Pause().
+ * If a property was not paused before calling Resume, call does not have effect
+ *
+ * @param aPropertiesBitmask defines what properties are paused, combination of AlfVisualProperties
+ */
+ IMPORT_C void Resume(TInt aPropertiesBitmask = AlfVisualProperties::EAll);
+
+ // internal
+ TBool TagMatches(const TDesC8& aTag) const;
+
+ /** ! Deletes the visual */
+ IMPORT_C virtual void DoRemoveAndDestroyAllD();
+
+
+ /**
+ * Sets an automatic tactile feedback. If this visual is a layout,
+ * the feedback affects to the child visuals as well. This can
+ * be overridden in child visuals.
+ *
+ * @param aEventType Event which triggers the automatic feedback.
+ * @param aFeedbackType Feedback type.
+ *
+ * @see TTouchEventType from touchlogicalfeedback.h
+ * @see TTouchLogicalFeedback from touchlogicalfeedback.h
+ */
+ IMPORT_C void SetTactileFeedbackL( TInt aEventType, TInt aFeedbackType );
+
+ /**
+ * Checks whether a tactile feedback has been assigned.
+ * Eventhough, this returns EFalse the layout may have feedback defined.
+ * @param aEventType Event type which needs to match
+ * If KAlfTactileFeedbackEventTypeNone, the event type is irrelevant.
+ *
+ * @return ETrue if the visual has a tactile feedback defined.
+ */
+ IMPORT_C TBool HasTactileFeedback(
+ TInt aEventType = KAlfTactileFeedbackEventTypeNone ) const;
+
+ /**
+ * Removes tactile feedback for the visual.
+ *
+ * @param aEventType Event type which feedback to remove.
+ * If KAlfTactileFeedbackEventTypeNone, all the feedbacks are removed.
+ */
+ IMPORT_C void RemoveTactileFeedback( TInt aEventType = KAlfTactileFeedbackEventTypeNone );
+
+ /**
+ * Enables the drop shadow. Currently implemented for the image and text visuals.
+ *
+ * @param aEnable ETrue to enable, EFalse to disable.
+ */
+ IMPORT_C void EnableDropShadowL( TBool aEnable = ETrue );
+
+ /**
+ * Returns the drop shadow parameter handler.
+ *
+ * @return Drop shadow handler. NULL if drop shadow is disabled.
+ */
+ IMPORT_C CAlfDropShadow* DropShadowHandler() const;
+ IMPORT_C void CAlfVisual::SetEffectL( const TDesC& aEffectFile );
+ IMPORT_C void CAlfVisual::SetGroupEffectL( const TDesC& aEffectFile, TInt aGroupHandle );
+
+protected:
+
+ /** ! future proofing */
+ IMPORT_C void PropertyOwnerExtension(const TUid& aExtensionUid, TAny** aExtensionParams);
+
+
+private:
+
+ // Private data. Own.
+ struct TPrivateData;
+ TPrivateData* iData;
+
+ };
+
+
+#endif // C_ALFVISUAL_H