williamr@4: /* williamr@4: * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). williamr@4: * All rights reserved. williamr@4: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@4: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: * williamr@4: * Initial Contributors: williamr@4: * Nokia Corporation - initial contribution. williamr@4: * williamr@4: * Contributors: williamr@4: * williamr@4: * Description: Defines public item data classes. williamr@4: * williamr@4: */ williamr@4: williamr@4: williamr@4: #ifndef AKNSITEMDATA_H williamr@4: #define AKNSITEMDATA_H williamr@4: williamr@4: // INCLUDES williamr@4: #include williamr@4: #include williamr@4: #include williamr@4: williamr@4: // FORWARD DECLARATIONS williamr@4: class CFbsBitmap; williamr@4: struct TAknsAppIconInfo; williamr@4: struct TAknsImageAttributeData; williamr@4: struct TAknsColorTableEntry; williamr@4: struct TAknsBmpAnimFrameInfo; williamr@4: class CAknsEffectParameter; williamr@4: class MAknsRlCommandIterator; williamr@4: class MAknsAlIterator; williamr@4: class CAknsNamedReference; williamr@4: class CAknsSizeBoundParameter; williamr@4: struct TAknsAlAnimationCommandData; williamr@4: struct TAknsAlTimingModelData; williamr@4: struct TAknsAlAnimationValueData; williamr@4: struct TAknsAlNamedReferenceData; williamr@4: struct TAknsAlSizeBoundParameterData; williamr@4: williamr@4: // CLASS DECLARATIONS williamr@4: williamr@4: /** williamr@4: * Base class for item data classes. williamr@4: * Item data encapsulates type information and resource instance (such as williamr@4: * CFbsBitmap object) of a specific skin item. Since actual data entries vary williamr@4: * depending on the type of the item, CAknsItemData contains only type williamr@4: * information and can not be instantiated. williamr@4: * williamr@4: * This is a public class with exported functions. williamr@4: * The class is not intended for derivation outside the library. williamr@4: * williamr@4: * @lib AknSkins.lib williamr@4: * williamr@4: * @since 2.0 williamr@4: */ williamr@4: NONSHARABLE_CLASS(CAknsItemData) : public CBase williamr@4: { williamr@4: public: // Constructors and destructor williamr@4: williamr@4: /** williamr@4: * Destructor. williamr@4: * CAknsItemData itself has no dynamically allocated members, but williamr@4: * derived classes may have them. williamr@4: */ williamr@4: virtual ~CAknsItemData(); williamr@4: williamr@4: public: // New functions williamr@4: williamr@4: /** williamr@4: * Sets the perceived type of this item without affecting the williamr@4: * real instance inheritance. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @internal williamr@4: * williamr@4: * @param aType New type. williamr@4: */ williamr@4: void SetType( const TAknsItemType aType ); williamr@4: williamr@4: /** williamr@4: * Returns the type of the item data object. williamr@4: * This method can be used to provide run-time type information. williamr@4: * Corresponding classes are listed in definition of ::TAknsItemType. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @return Type of the item data as TAknsItemType. williamr@4: */ williamr@4: IMPORT_C TAknsItemType Type() const; williamr@4: williamr@4: protected: // C++ protected constructor for derived classes williamr@4: williamr@4: /** williamr@4: * C++ constructor for derived classes. williamr@4: * Constructs item data object with given item type. williamr@4: * williamr@4: * @param aType Item type of the new item data object. williamr@4: * williamr@4: * @internal williamr@4: */ williamr@4: CAknsItemData( const TAknsItemType aType ); williamr@4: williamr@4: protected: // Data williamr@4: williamr@4: TAknsItemType iType; //!< Type of the item data object. williamr@4: williamr@4: }; williamr@4: williamr@4: /** williamr@4: * Image item data. williamr@4: * Image item data contains (in addition to base class members) image williamr@4: * attributes, such as size or alignment. Item type for image item data williamr@4: * objects is ::EAknsITImage. williamr@4: * williamr@4: * This is a public class with exported functions. williamr@4: * The class is not intended for derivation outside the library. williamr@4: * williamr@4: * @lib AknSkins.lib williamr@4: * williamr@4: * @since 2.0 williamr@4: */ williamr@4: NONSHARABLE_CLASS(CAknsImageItemData) : public CAknsItemData williamr@4: { williamr@4: public: // Constructors and destructor williamr@4: williamr@4: /** williamr@4: * Destructor. williamr@4: */ williamr@4: virtual ~CAknsImageItemData(); williamr@4: williamr@4: public: // New functions williamr@4: williamr@4: /** williamr@4: * Sets the image attributes for this image item data object. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @param aAttributes Attribute data structure containing the new williamr@4: * values. williamr@4: */ williamr@4: IMPORT_C void SetAttributesL( williamr@4: const TAknsImageAttributeData& aAttributes ); williamr@4: williamr@4: /** williamr@4: * Returns a pointer to the image attribute structure owned by the williamr@4: * item data object. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @return Pointer to the image attribute structure, or @c NULL if williamr@4: * there is none. williamr@4: */ williamr@4: IMPORT_C const TAknsImageAttributeData* Attributes() const; williamr@4: williamr@4: IMPORT_C void SetParentIID(const TAknsItemID& aIID); williamr@4: IMPORT_C void SetDrawRect(const TRect& aRect); williamr@4: IMPORT_C TAknsItemID ParentIID(); williamr@4: IMPORT_C TRect DrawRect(); williamr@4: williamr@4: williamr@4: protected: // C++ protected constructor for derived classes williamr@4: williamr@4: /** williamr@4: * C++ constructor for derived classes. williamr@4: * Constructs an image item data object with given item type. williamr@4: * williamr@4: * @param aType Item type of the new item data object. williamr@4: * williamr@4: * @internal williamr@4: */ williamr@4: CAknsImageItemData( const TAknsItemType aType ); williamr@4: williamr@4: protected: // Data williamr@4: williamr@4: TAknsImageAttributeData* iAttributeData; williamr@4: TAknsItemID iParentIID; williamr@4: TRect iDrawRect; williamr@4: williamr@4: williamr@4: }; williamr@4: williamr@4: /** williamr@4: * Bitmap item data. williamr@4: * Bitmap item data contains (in addition to base class members) CFbsBitmap williamr@4: * instance of the bitmap. Item type for bitmap item data is always williamr@4: * ::EAknsITBitmap. williamr@4: * williamr@4: * This is a public class with exported functions. williamr@4: * The class is not intended for derivation outside the library. williamr@4: * williamr@4: * @lib AknSkins.lib williamr@4: * williamr@4: * @since 2.0 williamr@4: */ williamr@4: NONSHARABLE_CLASS(CAknsBitmapItemData) : public CAknsImageItemData williamr@4: { williamr@4: public: // Constructors and destructor williamr@4: williamr@4: /** williamr@4: * Two-phased constructor. williamr@4: * Constructs a new CAknsBitmapItemData object with bitmap set to williamr@4: * @c NULL. Bitmap must be set afterwards by using williamr@4: * SetBitmap(CFbsBitmap* aBitmap) method. williamr@4: * williamr@4: * @return Newly constructed CAknsBitmapItemData object. williamr@4: * williamr@4: * @par Exceptions: williamr@4: * If allocation fails, function leaves with a system-wide error williamr@4: * code. williamr@4: */ williamr@4: IMPORT_C static CAknsBitmapItemData* NewL(); williamr@4: williamr@4: /** williamr@4: * Destructor. williamr@4: * Deletes bitmap object, if present. williamr@4: */ williamr@4: virtual ~CAknsBitmapItemData(); williamr@4: williamr@4: public: // New functions williamr@4: williamr@4: /** williamr@4: * Sets the bitmap object for this item data instance. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @c NULL value can be used to detach bitmap from item data. williamr@4: * williamr@4: * @param aBitmap Pointer to bitmap instance. Ownership of the bitmap williamr@4: * object is transferred to item data. @c NULL value is also valid. williamr@4: */ williamr@4: IMPORT_C void SetBitmap( CFbsBitmap* aBitmap ); williamr@4: williamr@4: /** williamr@4: * Sets the bitmap object for this item data instance and destroys williamr@4: * previous one, if any. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @param aBitmap Pointer to bitmap instance. Ownership of the bitmap williamr@4: * object is transferred to item data. @c NULL value is also valid. williamr@4: */ williamr@4: IMPORT_C void DestroyAndSetBitmap( CFbsBitmap* aBitmap ); williamr@4: williamr@4: /** williamr@4: * Returns the current bitmap object owned by item data instance. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @return Pointer to bitmap instance, or @c NULL if none is currently williamr@4: * associated with this item data. williamr@4: */ williamr@4: IMPORT_C CFbsBitmap* Bitmap(); williamr@4: williamr@4: protected: // C++ protected constructor williamr@4: williamr@4: /** williamr@4: * C++ protected constructor. williamr@4: * Constructs a new CAknsBitmapItemData with bitmap set to @c NULL. williamr@4: * williamr@4: * @param aType Item type of the new item data object. While this williamr@4: * is always ::EAknsITBitmap for instances of this class, derived williamr@4: * classes may specify another value. williamr@4: * williamr@4: * @internal williamr@4: */ williamr@4: CAknsBitmapItemData( const TAknsItemType aType ); williamr@4: williamr@4: protected: // Data williamr@4: CFbsBitmap* iBitmap; //!< Pointer to associated bitmap instance. williamr@4: williamr@4: }; williamr@4: williamr@4: /** williamr@4: * Masked bitmap item data. williamr@4: * Masked bitmap item data contains (in addition to base class members) an williamr@4: * additional member of type CFbsBitmap for the bitmap mask. williamr@4: * Item type for bitmap item data is always ::EAknsITMaskedBitmap. williamr@4: * williamr@4: * This is a public class with exported functions. williamr@4: * The class is not intended for derivation outside the library. williamr@4: * williamr@4: * @lib AknSkins.lib williamr@4: * williamr@4: * @since 2.0 williamr@4: */ williamr@4: NONSHARABLE_CLASS(CAknsMaskedBitmapItemData) : public CAknsBitmapItemData williamr@4: { williamr@4: public: // Constructors and destructor williamr@4: williamr@4: /** williamr@4: * Two-phased constructor. williamr@4: * Constructs a new CAknsMaskedBitmapItemData object with bitmaps set to williamr@4: * @c NULL. Bitmaps must be set afterwards by using williamr@4: * SetBitmap(CFbsBitmap* aBitmap) and SetMask(CFbsBitmap* aBitmap) methods. williamr@4: * williamr@4: * @return Newly constructed CAknsMaskedBitmapItemData object. williamr@4: * williamr@4: * @par Exceptions: williamr@4: * If allocation fails, function leaves with a system-wide error williamr@4: * code. williamr@4: */ williamr@4: IMPORT_C static CAknsMaskedBitmapItemData* NewL(); williamr@4: williamr@4: /** williamr@4: * Destructor. williamr@4: * Deletes bitmap objects, if present. williamr@4: */ williamr@4: virtual ~CAknsMaskedBitmapItemData(); williamr@4: williamr@4: public: // New functions williamr@4: williamr@4: /** williamr@4: * Sets the mask bitmap object for this item data instance. williamr@4: * @c NULL value can be used to detach bitmap mask from item data. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @param aMask Pointer to mask instance. Ownership of the bitmap williamr@4: * object is transferred to item data. @c NULL value is also valid. williamr@4: */ williamr@4: IMPORT_C void SetMask( CFbsBitmap* aMask ); williamr@4: williamr@4: /** williamr@4: * Sets the mask bitmap object for this item data instance and destroys williamr@4: * previous one, if any. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @param aMask Pointer to mask instance. Ownership of the bitmap williamr@4: * object is transferred to item data. @c NULL value is also valid. williamr@4: */ williamr@4: IMPORT_C void DestroyAndSetMask( CFbsBitmap* aMask ); williamr@4: williamr@4: /** williamr@4: * Returns the current bitmap mask object owned by item data instance. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @return Pointer to mask instance, or @c NULL if none is currently williamr@4: * associated with this item data. williamr@4: */ williamr@4: IMPORT_C CFbsBitmap* Mask(); williamr@4: williamr@4: protected: // C++ protected constructor williamr@4: williamr@4: /** williamr@4: * C++ protected constructor. williamr@4: * Constructs a new CAknsMaskedBitmapItemData with bitmaps set to @c NULL. williamr@4: * williamr@4: * @param aType Item type of the new item data object. While this williamr@4: * is always ::EAknsITMaskedBitmap for instances of this class, derived williamr@4: * classes may specify another value. williamr@4: * williamr@4: * @internal williamr@4: */ williamr@4: CAknsMaskedBitmapItemData( const TAknsItemType aType ); williamr@4: williamr@4: protected: // Data williamr@4: CFbsBitmap* iMask; //!< Pointer to associated mask bitmap instance. williamr@4: williamr@4: }; williamr@4: williamr@4: /** williamr@4: * Color table item data. williamr@4: * Color table item data contains (in addition to base class members) color williamr@4: * array of TRGB values. Item type for color item data is always williamr@4: * ::EAknsITColorTable. williamr@4: * williamr@4: * This is a public class with exported functions. williamr@4: * The class is not intended for derivation outside the library. williamr@4: * williamr@4: * @lib AknSkins.lib williamr@4: * williamr@4: * @since 2.0 williamr@4: */ williamr@4: NONSHARABLE_CLASS(CAknsColorTableItemData) : public CAknsImageItemData williamr@4: { williamr@4: public: // Constructors and destructor williamr@4: williamr@4: /** williamr@4: * Two-phased constructor. williamr@4: * Constructs a new CAknsColorTableItemData object. Values must williamr@4: * be set separately using SetColorsL. williamr@4: * williamr@4: * @return Newly constructed CAknsColorTableItemData object. williamr@4: * williamr@4: * @par Exceptions: williamr@4: * If allocation fails, function leaves with a system-wide error williamr@4: * code. williamr@4: */ williamr@4: IMPORT_C static CAknsColorTableItemData* NewL(); williamr@4: williamr@4: /** williamr@4: * Destructor. williamr@4: * Destroys color value array. williamr@4: */ williamr@4: virtual ~CAknsColorTableItemData(); williamr@4: williamr@4: public: // New functions williamr@4: williamr@4: /** williamr@4: * Sets color values for this item data instance. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @param aNumberOfColors Number of colors in aColors. williamr@4: * williamr@4: * @param aColors Pointer to first color value. Values are copied williamr@4: * into an internal array. williamr@4: */ williamr@4: IMPORT_C void SetColorsL( const TInt aNumberOfColors, williamr@4: const TAknsColorTableEntry* aColors ); williamr@4: williamr@4: /** williamr@4: * Returns the indexed color value. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @param aIndex Index of the color to be retrieved. This must williamr@4: * be within 0 (inclusive) and aNumberOfColors (exclusive). williamr@4: * williamr@4: * @return Color value as TInt. If the value is -1, RGB value williamr@4: * should be queried instead. williamr@4: * williamr@4: * @par Note: williamr@4: * This method does not perform any bounds checking. An access williamr@4: * violation or panic will occur, if the given index is not williamr@4: * within the bounds of the internal array. Use @c GetColorL williamr@4: * instead, if such checking is required. williamr@4: */ williamr@4: IMPORT_C TInt ColorIndexed( const TInt aIndex ) const; williamr@4: williamr@4: /** williamr@4: * Returns the RGB color value. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @param aIndex Index of the color to be retrieved. This must williamr@4: * be within 0 (inclusive) and aNumberOfColors (exclusive). williamr@4: * williamr@4: * @return Color value as TRgb. Note that the value is only williamr@4: * valid if ColorIndexed() returned -1. williamr@4: * williamr@4: * @par Note: williamr@4: * This method does not perform any bounds checking. An access williamr@4: * violation or panic will occur, if the given index is not williamr@4: * within the bounds of the internal array. Use @c GetColorL williamr@4: * instead, if such checking is required. williamr@4: */ williamr@4: IMPORT_C TRgb ColorRgb( const TInt aIndex ) const; williamr@4: williamr@4: /** williamr@4: * Retrieves a color value (indexed or RGB) with bounds checking. williamr@4: * williamr@4: * @since 2.6 williamr@4: * williamr@4: * @param aIndex Index of the color to be retrieved. williamr@4: * williamr@4: * @param aColor On return, contains the color as an RGB value. williamr@4: * If the color is indexed, the appropriate mapping using current williamr@4: * palette is used. williamr@4: * williamr@4: * @par Exceptions: williamr@4: * If the given index is outside the bounds of the array, williamr@4: * the method leaves with an error code. williamr@4: */ williamr@4: IMPORT_C void GetColorL( const TInt aIndex, TRgb& aColor ) const; williamr@4: williamr@4: protected: // C++ protected constructor williamr@4: williamr@4: /** williamr@4: * C++ protected constructor. williamr@4: * Constructs a new CAknsColorItemData without an array. williamr@4: * williamr@4: * @param aType Item type of the new item data object. While this williamr@4: * is always ::EAknsITColorTable for instances of this class, derived williamr@4: * classes may specify another value. williamr@4: * williamr@4: * @internal williamr@4: */ williamr@4: CAknsColorTableItemData( const TAknsItemType aType ); williamr@4: williamr@4: protected: // Data williamr@4: williamr@4: TAknsColorTableEntry* iColorArray; //!< Color array. williamr@4: TInt iColorArraySize; williamr@4: williamr@4: }; williamr@4: williamr@4: /** williamr@4: * Icon table item data. williamr@4: * Icon table item data contains (in addition to base class members), an williamr@4: * array containing item IDs of images. Item type for williamr@4: * image table item data objects is always ::EAknsITImageTable. williamr@4: * williamr@4: * This is a public class with exported functions. williamr@4: * The class is not intended for derivation outside the library. williamr@4: * williamr@4: * @lib AknSkins.lib williamr@4: * williamr@4: * @since 2.0 williamr@4: */ williamr@4: NONSHARABLE_CLASS(CAknsImageTableItemData) : public CAknsImageItemData williamr@4: { williamr@4: public: // Constructors and destructor williamr@4: williamr@4: /** williamr@4: * Two-phased constructor. williamr@4: * Constructs a new CAknsImageTableItemData object. Values must williamr@4: * be set separately using SetImagesL. williamr@4: * williamr@4: * @return Newly constructed CAknsImageTableItemData object. williamr@4: * williamr@4: * @par Exceptions: williamr@4: * If allocation fails, function leaves with a system-wide error williamr@4: * code. williamr@4: */ williamr@4: IMPORT_C static CAknsImageTableItemData* NewL(); williamr@4: williamr@4: /** williamr@4: * Destructor. williamr@4: * Destroys image array. williamr@4: */ williamr@4: virtual ~CAknsImageTableItemData(); williamr@4: williamr@4: public: // New functions williamr@4: williamr@4: /** williamr@4: * Sets image table values for this item data instance. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @param aNumberOfImages Number of images in aImages. williamr@4: * williamr@4: * @param aImages Pointer to first image ID. Values are williamr@4: * copied into an internal array. williamr@4: */ williamr@4: IMPORT_C void SetImagesL( const TInt aNumberOfImages, williamr@4: const TAknsItemID* aImages ); williamr@4: williamr@4: /** williamr@4: * Returns the item ID of an image. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @param aIndex Index of the image. This value must williamr@4: * be within 0 (inclusive) and NumberOfImages (exclusive). williamr@4: * williamr@4: * @return Item ID of the image. williamr@4: */ williamr@4: IMPORT_C TAknsItemID ImageIID( const TInt aIndex ) const; williamr@4: williamr@4: /** williamr@4: * Returns pointer to the first entry in the image array, williamr@4: * owned by this object. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @return Pointer to TAknsItemID. williamr@4: */ williamr@4: IMPORT_C TAknsItemID* Images() const; williamr@4: williamr@4: /** williamr@4: * Returns the number of images. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @return Number of images as an integer. williamr@4: */ williamr@4: IMPORT_C TInt NumberOfImages() const; williamr@4: williamr@4: protected: // C++ protected constructor williamr@4: williamr@4: /** williamr@4: * C++ protected constructor. williamr@4: * Constructs a new CAknsImageTableItemData without an array. williamr@4: * williamr@4: * @param aType Item type of the new item data object. While this williamr@4: * is always ::EAknsITImageTable for instances of this class, derived williamr@4: * classes may specify another value. williamr@4: * williamr@4: * @internal williamr@4: */ williamr@4: CAknsImageTableItemData( const TAknsItemType aType ); williamr@4: williamr@4: protected: // Data williamr@4: williamr@4: TInt iNumberOfImages; //!< Number of images. williamr@4: TAknsItemID* iImageArray; //!< Image array. williamr@4: williamr@4: }; williamr@4: williamr@4: /** williamr@4: * Bitmap animation item data. williamr@4: * Bitmap animation item data contains (in addition to base class members), williamr@4: * animation properties as well as an array containing frame properties williamr@4: * Item type for bitmap animation item data objects is always ::EAknsITBmpAnim. williamr@4: * williamr@4: * This is a public class with exported functions. williamr@4: * The class is not intended for derivation outside the library. williamr@4: * williamr@4: * @lib AknSkins.lib williamr@4: * williamr@4: * @since 2.0 williamr@4: */ williamr@4: NONSHARABLE_CLASS(CAknsBmpAnimItemData) : public CAknsImageTableItemData williamr@4: { williamr@4: public: // Constructors and destructor williamr@4: williamr@4: /** williamr@4: * Two-phased constructor. williamr@4: * Constructs a new CAknsBmpAnimItemData object. Values must williamr@4: * be set separately using SetImagesL and SetFrameInfosL. williamr@4: * williamr@4: * @return Newly constructed CAknsBmpAnimItemData object. williamr@4: * williamr@4: * @par Exceptions: williamr@4: * If allocation fails, function leaves with a system-wide error williamr@4: * code. williamr@4: */ williamr@4: IMPORT_C static CAknsBmpAnimItemData* NewL(); williamr@4: williamr@4: /** williamr@4: * Destructor. williamr@4: * Destroys arrays. williamr@4: */ williamr@4: virtual ~CAknsBmpAnimItemData(); williamr@4: williamr@4: public: // New functions williamr@4: williamr@4: /** williamr@4: * Sets frame property values for this item data instance. williamr@4: * williamr@4: * The number of entries in the given array must match williamr@4: * the number of images in the image table. Therefore williamr@4: * SetFrameInfosL must be called only after SetImagesL williamr@4: * has already been called. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @param aFrameInfos Pointer to first frame info. Values are williamr@4: * copied into an internal array. williamr@4: */ williamr@4: IMPORT_C void SetFrameInfosL( const TAknsBmpAnimFrameInfo* aFrameInfos ); williamr@4: williamr@4: /** williamr@4: * Returns pointer to the first entry in the frame property array, williamr@4: * owned by this object. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @return Pointer to TAknsBmpAnimFrameInfo. williamr@4: */ williamr@4: IMPORT_C TAknsBmpAnimFrameInfo* FrameInfos() const; williamr@4: williamr@4: /** williamr@4: * Sets the flag indicating whether the last frame should be williamr@4: * interpreted as the background (i.e. excluded from the animation williamr@4: * itself). williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @param aLastFrameBg Boolean value. williamr@4: */ williamr@4: IMPORT_C void SetLastFrameBackground( TBool aLastFrameBg ); williamr@4: williamr@4: /** williamr@4: * Retrieves the flag value indicating whether the last frame williamr@4: * should be interpreted as the background. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @return Boolean value. williamr@4: */ williamr@4: IMPORT_C TBool LastFrameBackground() const; williamr@4: williamr@4: /** williamr@4: * Sets the frame interval for the entire animation. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @param aFrameInterval Frame interval in milliseconds or -1. williamr@4: */ williamr@4: IMPORT_C void SetFrameInterval( const TInt16 aFrameInterval ); williamr@4: williamr@4: /** williamr@4: * Retrieves the frame interval. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @return Frame interval in milliseconds or -1. williamr@4: */ williamr@4: IMPORT_C TInt16 FrameInterval() const; williamr@4: williamr@4: /** williamr@4: * Sets the play mode for the entire animation. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @param aPlayMode Play mode. williamr@4: */ williamr@4: IMPORT_C void SetPlayMode( const TInt16 aPlayMode ); williamr@4: williamr@4: /** williamr@4: * Retrieves the play mode. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @return Play mode. williamr@4: */ williamr@4: IMPORT_C TInt16 PlayMode() const; williamr@4: williamr@4: /** williamr@4: * Sets the flash property for the entire animation. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @param aFlash Flash flag value. williamr@4: */ williamr@4: IMPORT_C void SetFlash( const TBool aFlash ); williamr@4: williamr@4: /** williamr@4: * Retrieves the flash property. williamr@4: * williamr@4: * @since 2.0 williamr@4: * williamr@4: * @return Flash flag value. williamr@4: */ williamr@4: IMPORT_C TBool Flash() const; williamr@4: williamr@4: protected: // C++ protected constructor williamr@4: williamr@4: /** williamr@4: * C++ protected constructor. williamr@4: * Constructs a new CAknsBmpAnimItemData without an array. williamr@4: * williamr@4: * @param aType Item type of the new item data object. While this williamr@4: * is always ::EAknsITBmpAnim for instances of this class, derived williamr@4: * classes may specify another value. williamr@4: * williamr@4: * @internal williamr@4: */ williamr@4: CAknsBmpAnimItemData( const TAknsItemType aType ); williamr@4: williamr@4: protected: // Data williamr@4: williamr@4: TAknsBmpAnimFrameInfo* iFrameArray; //!< Frame info array. williamr@4: williamr@4: TBool iLastFrameBackground; //!< Last frame used as background flag. williamr@4: TInt16 iFrameInterval; //!< Frame interval. williamr@4: TInt16 iPlayMode; //!< Play mode. williamr@4: TBool iFlash; //!< Flash flag. williamr@4: williamr@4: }; williamr@4: williamr@4: /** williamr@4: * String item data. williamr@4: * String item data contains (in addition to base class members), williamr@4: * a single string value. williamr@4: * Item type for string item data objects is always ::EAknsITString. williamr@4: * williamr@4: * This is a public class with exported functions. williamr@4: * The class is not intended for derivation outside the library. williamr@4: * williamr@4: * @lib AknSkins.lib williamr@4: * williamr@4: * @since 2.6 williamr@4: */ williamr@4: NONSHARABLE_CLASS(CAknsStringItemData) : public CAknsItemData williamr@4: { williamr@4: public: // Constructors and destructor williamr@4: williamr@4: /** williamr@4: * Two-phased constructor. williamr@4: * Constructs a new CAknsStringItemData object. String value must williamr@4: * be set separately using SetStringL. williamr@4: * williamr@4: * @return Newly constructed CAknsStringItemData object. williamr@4: * williamr@4: * @par Exceptions: williamr@4: * If allocation fails, function leaves with a system-wide error williamr@4: * code. williamr@4: */ williamr@4: IMPORT_C static CAknsStringItemData* NewL(); williamr@4: williamr@4: /** williamr@4: * Destructor. williamr@4: * Destroys owned string instance. williamr@4: */ williamr@4: virtual ~CAknsStringItemData(); williamr@4: williamr@4: public: // New functions williamr@4: williamr@4: /** williamr@4: * Sets the string value of this item data instance. williamr@4: * williamr@4: * @since 2.6 williamr@4: * williamr@4: * @param aValue New value. The value is copied to a newly created williamr@4: * internal buffer, and any previous value is discarded. williamr@4: */ williamr@4: IMPORT_C void SetStringL( const TDesC& aValue ); williamr@4: williamr@4: /** williamr@4: * Returns a reference to the string value. The value is still owned williamr@4: * by the item data object and caller must take its lifetime properly williamr@4: * into account. williamr@4: * williamr@4: * @since 2.6 williamr@4: * williamr@4: * @return Reference to the value. williamr@4: */ williamr@4: IMPORT_C const TDesC& String() const; williamr@4: williamr@4: protected: // C++ protected constructor williamr@4: williamr@4: /** williamr@4: * C++ protected constructor. williamr@4: * Constructs a new CAknsStringItemData without an array. williamr@4: * williamr@4: * @param aType Item type of the new item data object. While this williamr@4: * is always ::EAknsITString for instances of this class, derived williamr@4: * classes may specify another value. williamr@4: * williamr@4: * @internal williamr@4: */ williamr@4: CAknsStringItemData( const TAknsItemType aType ); williamr@4: williamr@4: protected: // Data williamr@4: williamr@4: HBufC* iString; //!< Buffer for string value. williamr@4: williamr@4: }; williamr@4: williamr@4: /** williamr@4: * Effect command data class. williamr@4: * Effect command class encapsulates the information of a single effect williamr@4: * command that is used with effect queue item data objects. williamr@4: * williamr@4: * This is a public class with exported functions. williamr@4: * The class is not intended for derivation outside the library. williamr@4: * williamr@4: * @lib AknSkins.lib williamr@4: * williamr@4: * @since 2.8 williamr@4: */ williamr@4: NONSHARABLE_CLASS(CAknsEffectCommand) : public CBase williamr@4: { williamr@4: public: // Constructors and destructor williamr@4: williamr@4: /** williamr@4: * Two-phased constructor. williamr@4: * williamr@4: * @return Newly constructed object. williamr@4: * williamr@4: * @par Exceptions: williamr@4: * If allocation fails, function leaves with a system-wide error williamr@4: * code. williamr@4: */ williamr@4: IMPORT_C static CAknsEffectCommand* NewL(); williamr@4: williamr@4: /** williamr@4: * Destructor. williamr@4: */ williamr@4: virtual ~CAknsEffectCommand(); williamr@4: williamr@4: public: // New functions williamr@4: williamr@4: /** williamr@4: * Sets the effect UID. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @param aValue New effect UID. williamr@4: */ williamr@4: IMPORT_C void SetEffectUid( const TUid aValue ); williamr@4: williamr@4: /** williamr@4: * Returns the effect UID. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @return Effect UID. williamr@4: */ williamr@4: IMPORT_C TUid EffectUid() const; williamr@4: williamr@4: /** williamr@4: * Sets the layer configuration. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @param aValue New layer configuration. williamr@4: */ williamr@4: IMPORT_C void SetLayerConf( const TAknsRlRenderOpParam aValue ); williamr@4: williamr@4: /** williamr@4: * Returns the layer configuration. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @return Layer configuration. williamr@4: */ williamr@4: IMPORT_C TAknsRlRenderOpParam LayerConf() const; williamr@4: williamr@4: /** williamr@4: * Appends a paramater to this effect command. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @param aParameter Parameter to be appended. The given data is copied, williamr@4: * and thus no ownership is transferred. williamr@4: */ williamr@4: IMPORT_C void AppendParameterL( williamr@4: const TAknsRlParameterData& aParameter ); williamr@4: williamr@4: /** williamr@4: * Creates and returns a new parameter iterator. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @return A new parameter iterator. Multiple iterators can be created. williamr@4: * The ownership of the iterator is transferred to the caller, and williamr@4: * the caller must ensure that the lifetime of the iterator williamr@4: * does not exceed the lifetime of this object. williamr@4: */ williamr@4: IMPORT_C MAknsRlParameterIterator* CreateParameterIteratorL(); williamr@4: williamr@4: protected: // C++ protected constructor williamr@4: williamr@4: /** williamr@4: * C++ protected constructor. williamr@4: * williamr@4: * @internal williamr@4: */ williamr@4: CAknsEffectCommand(); williamr@4: williamr@4: protected: // Data williamr@4: williamr@4: TUid iUid; //!< Effect UID. williamr@4: TAknsRlRenderOpParam iLayerConf; //!< Layer configuration. williamr@4: RPointerArray iParameters; //!< Parameters array. williamr@4: williamr@4: }; williamr@4: williamr@4: /** williamr@4: * Effect queue item data. williamr@4: * Effect queue item data contains (in addition to base class members), williamr@4: * the information required to render a single effect queue based williamr@4: * skin element. williamr@4: * williamr@4: * Item type for effect queue item data objects is always ::EAknsITEffectQueue. williamr@4: * williamr@4: * This is a public class with exported functions. williamr@4: * The class is not intended for derivation outside the library. williamr@4: * williamr@4: * @lib AknSkins.lib williamr@4: * williamr@4: * @since 2.8 williamr@4: */ williamr@4: NONSHARABLE_CLASS(CAknsEffectQueueItemData) : public CAknsItemData williamr@4: { williamr@4: public: // Constructors and destructor williamr@4: williamr@4: /** williamr@4: * Two-phased constructor. williamr@4: * Constructs a new CAknsEffectQueueItemData object. williamr@4: * williamr@4: * @return Newly constructed CAknsEffectQueueItemData object. williamr@4: * williamr@4: * @par Exceptions: williamr@4: * If allocation fails, function leaves with a system-wide error williamr@4: * code. williamr@4: */ williamr@4: IMPORT_C static CAknsEffectQueueItemData* NewL(); williamr@4: williamr@4: /** williamr@4: * Destructor. williamr@4: */ williamr@4: virtual ~CAknsEffectQueueItemData(); williamr@4: williamr@4: public: // New functions williamr@4: williamr@4: /** williamr@4: * Sets the referenced item ID. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @param aValue williamr@4: */ williamr@4: IMPORT_C void SetRefItem( const TAknsItemID aValue ); williamr@4: williamr@4: /** williamr@4: * Returns the referenced item ID. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @return Referenced item ID, or @c KAknsIIDDefault if none. williamr@4: */ williamr@4: IMPORT_C TAknsItemID RefItem() const; williamr@4: williamr@4: /** williamr@4: * Sets the input layer index value. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @param aValue williamr@4: */ williamr@4: IMPORT_C void SetInputLayer( const TInt aValue ); williamr@4: williamr@4: /** williamr@4: * Returns the input layer index value. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @return Input layer index, or -1 if not used. williamr@4: */ williamr@4: IMPORT_C TInt InputLayer() const; williamr@4: williamr@4: /** williamr@4: * Sets the input layer mode value. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @param aValue williamr@4: */ williamr@4: IMPORT_C void SetInputLayerMode( const TInt aValue ); williamr@4: williamr@4: /** williamr@4: * Returns the input layer mode value. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @return Input layer mode. williamr@4: */ williamr@4: IMPORT_C TInt InputLayerMode() const; williamr@4: williamr@4: /** williamr@4: * Sets the output layer index value. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @param aValue williamr@4: */ williamr@4: IMPORT_C void SetOutputLayer( const TInt aValue ); williamr@4: williamr@4: /** williamr@4: * Returns the output layer index value. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @return Output layer index. williamr@4: */ williamr@4: IMPORT_C TInt OutputLayer() const; williamr@4: williamr@4: /** williamr@4: * Sets the output layer mode value. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @param aValue williamr@4: */ williamr@4: IMPORT_C void SetOutputLayerMode( const TInt aValue ); williamr@4: williamr@4: /** williamr@4: * Returns the output layer mode value. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @return Output layer mode. williamr@4: */ williamr@4: IMPORT_C TInt OutputLayerMode() const; williamr@4: williamr@4: /** williamr@4: * Appends a command to this effect queue. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @param aCommand Command to be appended. The ownership of the williamr@4: * given instance is transferred to this object, even if the method williamr@4: * leaves. williamr@4: */ williamr@4: IMPORT_C void AppendCommandL( const CAknsEffectCommand* aCommand ); williamr@4: williamr@4: /** williamr@4: * Creates and returns a new command iterator. williamr@4: * williamr@4: * @since 2.8 williamr@4: * williamr@4: * @return A new command iterator. Multiple iterators can be created. williamr@4: * The ownership of the iterator is transferred to the caller, and williamr@4: * the caller must ensure that the lifetime of the iterator williamr@4: * does not exceed the lifetime of this object. williamr@4: */ williamr@4: IMPORT_C MAknsRlCommandIterator* CreateCommandIteratorL(); williamr@4: williamr@4: protected: // C++ protected constructor williamr@4: williamr@4: /** williamr@4: * C++ protected constructor. williamr@4: * Constructs a new CAknsEffectQueueItemData. williamr@4: * williamr@4: * @param aType Item type of the new item data object. While this williamr@4: * is always ::EAknsITEffectQueue for instances of this class, derived williamr@4: * classes may specify another value. williamr@4: * williamr@4: * @internal williamr@4: */ williamr@4: CAknsEffectQueueItemData( const TAknsItemType aType ); williamr@4: williamr@4: protected: // Data williamr@4: williamr@4: TAknsItemID iRefId; //!< Referenced item ID. williamr@4: TInt iInputLayer; //!< Input layer value. williamr@4: TInt iInputLayerMode; //!< Input layer mode value. williamr@4: TInt iOutputLayer; //!< Output layer value. williamr@4: TInt iOutputLayerMode; //!< Output layer mode value. williamr@4: RPointerArray iCommands; //!< Commands array. williamr@4: williamr@4: }; williamr@4: williamr@4: /** williamr@4: * Timing model data class. williamr@4: * Timing model class encapsulates the information of a single timing model that williamr@4: * is used with animation command item data objects. williamr@4: * williamr@4: * The class is not intended for derivation outside the library. williamr@4: * williamr@4: * @lib AknSkins.lib williamr@4: * williamr@4: * @since 3.0 williamr@4: */ williamr@4: class CAknsTimingModel: public CBase williamr@4: { williamr@4: public: // Constructors and destructor williamr@4: static CAknsTimingModel* NewL(); williamr@4: virtual ~CAknsTimingModel(); williamr@4: williamr@4: protected: // C++ protected constructor williamr@4: CAknsTimingModel(); williamr@4: williamr@4: public: williamr@4: void SetTimingModelUid( const TUid aValue ); williamr@4: TUid TimingModelUid() const; williamr@4: williamr@4: void AppendParameterL( const TAknsRlParameterData& aParameter ); williamr@4: MAknsRlParameterIterator* CreateParameterIteratorL(); williamr@4: williamr@4: public: // Iteration support (internal) williamr@4: void AssignOutL( TAknsAlTimingModelData& aData ); williamr@4: williamr@4: static void InitializeOut( TAknsAlTimingModelData& aData ); williamr@4: static void ReleaseOut( TAknsAlTimingModelData& aData ); williamr@4: williamr@4: private: // Data williamr@4: TUid iTimingModelUid; williamr@4: RPointerArray iParameters; williamr@4: }; williamr@4: williamr@4: /** williamr@4: * Animation value data class. williamr@4: * Animation value class encapsulates the information of a single animation williamr@4: * value (animation value uid, parameters for animation value and timing model williamr@4: * reference id) that is used with animation command item data objects. williamr@4: * williamr@4: * The class is not intended for derivation outside the library. williamr@4: * williamr@4: * @lib AknSkins.lib williamr@4: * williamr@4: * @since 3.0 williamr@4: */ williamr@4: class CAknsAnimationValue: public CBase williamr@4: { williamr@4: public: williamr@4: static CAknsAnimationValue* NewL(); williamr@4: virtual ~CAknsAnimationValue(); williamr@4: williamr@4: private: williamr@4: CAknsAnimationValue(); williamr@4: williamr@4: public: williamr@4: void SetAnimationValueUid( const TUid aValue ); williamr@4: TUid AnimationValueUid() const; williamr@4: williamr@4: void SetTimingModelId( const TInt aId ); williamr@4: TInt TimingModelId() const; williamr@4: williamr@4: void AppendParameterL( const TAknsRlParameterData& aParameter ); williamr@4: MAknsRlParameterIterator* CreateParameterIteratorL(); williamr@4: williamr@4: public: // Iteration support (internal) williamr@4: void AssignOutL( TAknsAlAnimationValueData& aData ); williamr@4: williamr@4: static void InitializeOut( TAknsAlAnimationValueData& aData ); williamr@4: static void ReleaseOut( TAknsAlAnimationValueData& aData ); williamr@4: williamr@4: private: williamr@4: TInt iTimingModelId; williamr@4: TUid iAnimationValueUid; williamr@4: RPointerArray iParameters; williamr@4: }; williamr@4: williamr@4: /** williamr@4: * Animation command data class. williamr@4: * Animation command class encapsulates the information of a single animation williamr@4: * command (in addition to base class members) that is used with animation item williamr@4: * data objects. williamr@4: * williamr@4: * The class is not intended for derivation outside the library. williamr@4: * williamr@4: * @lib AknSkins.lib williamr@4: * williamr@4: * @since 3.0 williamr@4: */ williamr@4: class CAknsAnimationCommand: public CAknsEffectCommand williamr@4: { williamr@4: public: williamr@4: static CAknsAnimationCommand* NewL(); williamr@4: virtual ~CAknsAnimationCommand(); williamr@4: williamr@4: private: williamr@4: CAknsAnimationCommand(); williamr@4: williamr@4: public: williamr@4: void AppendNamedReferenceL( const TAknsAlNamedReferenceData& aData ); williamr@4: MAknsAlIterator* CreateNamedReferenceIteratorL(); williamr@4: williamr@4: public: // Iteration support (internal) williamr@4: void AssignOutL( TAknsAlAnimationCommandData& aData ); williamr@4: williamr@4: static void InitializeOut( TAknsAlAnimationCommandData& aData ); williamr@4: static void ReleaseOut( TAknsAlAnimationCommandData& aData ); williamr@4: williamr@4: private: williamr@4: RPointerArray iNamedReferences; williamr@4: }; williamr@4: williamr@4: /** williamr@4: * Animation item data. williamr@4: * Animation item data contains (in addition to base class members) the williamr@4: * information required to create an AnimationLibrary animation. williamr@4: * williamr@4: * Item type for animation item data objects is always ::EAknsITAnimation. williamr@4: * williamr@4: * The class is not intended for derivation outside the library. williamr@4: * williamr@4: * @lib AknSkins.lib williamr@4: * williamr@4: * @since 3.0 williamr@4: */ williamr@4: class CAknsAnimationItemData: public CAknsItemData williamr@4: { williamr@4: public: williamr@4: static CAknsAnimationItemData* NewL(); williamr@4: virtual ~CAknsAnimationItemData(); williamr@4: williamr@4: protected: // C++ protected constructor williamr@4: CAknsAnimationItemData(); williamr@4: williamr@4: public: // New functions williamr@4: void SetMinInterval( TInt aMin ); williamr@4: TInt MinInterval() const; williamr@4: williamr@4: void SetMorphing( TBool aMorphing ); williamr@4: TBool Morphing() const; williamr@4: williamr@4: void SetInputLayer( const TInt aValue ); williamr@4: TInt InputLayer() const; williamr@4: williamr@4: void SetInputLayerMode( const TInt aValue ); williamr@4: TInt InputLayerMode() const; williamr@4: williamr@4: void SetOutputLayer( const TInt aValue ); williamr@4: TInt OutputLayer() const; williamr@4: williamr@4: void SetOutputLayerMode( const TInt aValue ); williamr@4: TInt OutputLayerMode() const; williamr@4: williamr@4: /** williamr@4: * @param aCommand Ownership is transferred williamr@4: */ williamr@4: void AppendPreprocessCommandL( CAknsEffectCommand* aCommand ); williamr@4: MAknsRlCommandIterator* PreprocessCommandIteratorL() const; williamr@4: williamr@4: /** williamr@4: * @param aCommand Ownership is transferred williamr@4: */ williamr@4: void AppendCommandL( CAknsAnimationCommand* aCommand ); williamr@4: MAknsAlIterator* CommandIteratorL() const; williamr@4: williamr@4: /** williamr@4: * @param aValue Ownership is transferred williamr@4: */ williamr@4: void AppendTimingModelL( CAknsTimingModel* aModel ); williamr@4: MAknsAlIterator* TimingModelIteratorL() const; williamr@4: williamr@4: /** williamr@4: * @param aValue Ownership is transferred williamr@4: */ williamr@4: void AppendAnimationValueL( CAknsAnimationValue* aValue ); williamr@4: MAknsAlIterator* AnimationValueIteratorL() const; williamr@4: williamr@4: void AppendSizeBoundParamL( const TAknsAlSizeBoundParameterData& aParam ); williamr@4: MAknsAlIterator* SizeBoundParamIteratorL() const; williamr@4: williamr@4: private: williamr@4: TInt iMinInterval; // In milliseconds williamr@4: TBool iMorphing; williamr@4: williamr@4: TInt iInputLayer; williamr@4: TInt iInputLayerMode; williamr@4: TInt iOutputLayer; williamr@4: TInt iOutputLayerMode; williamr@4: williamr@4: RPointerArray iPreprocessCommands; williamr@4: RPointerArray iAnimationCommands; williamr@4: RPointerArray iTimingModels; williamr@4: RPointerArray iAnimationValues; williamr@4: RPointerArray iSizeBoundParams; williamr@4: }; williamr@4: williamr@4: #endif // AKNSITEMDATA_H williamr@4: williamr@4: // End of File