diff -r 000000000000 -r 15bf7259bb7c uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/HuiTextureIf.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/HuiTextureIf.h Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,176 @@ +/* +* 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: Declares the MHuiTexture interface. MHuiTexture is the most +* generic interface that all textures need to implement. +* +*/ + + + +#ifndef __HUITEXTUREIF_H__ +#define __HUITEXTUREIF_H__ + + +/* Forward declarations. */ +class MHuiSegmentedTexture; +class MHuiShadowedTexture; + + +/** Data buffer formats for uploading textures. */ +enum THuiTextureFormat + { + /** RGB, 5-6-5 bits per channel. */ + EHuiTextureFormatRgb565, + + /** RGB, 8 bits per channel. */ + EHuiTextureFormatRgb888, + + /** RGBA, 8 bits per channel. */ + EHuiTextureFormatRgba8888, + + /** Luminance + Alpha, 8 bits per channel. */ + EHuiTextureFormatLa88, + + /** RGB, PVRTC 4 bpp. */ + EHuiTextureFormatRgbPVRTC4, + + /** RGBA, PVRTC 4 bpp. */ + EHuiTextureFormatRgbaPVRTC4, + + /** RGB, PVRTC 2 bpp. */ + EHuiTextureFormatRgbPVRTC2, + + /** RGBA, PVRTC 2 bpp. */ + EHuiTextureFormatRgbaPVRTC2 + }; + + +/** Flags for texture uploading. */ +enum THuiTextureUploadFlags + { + /** No special actions/behavior needed. */ + EHuiTextureUploadFlagDefault = 0, + + /** + * @deprecated This is default functionality + */ + EHuiTextureUploadFlagRetainResolution = 1, + + /** + * Automatically generates a shadow for the texture in texture upload + * phase. + */ + EHuiTextureUploadFlagGenerateShadow = 2, + + /** + * Use to retain the color depth of the + * ((up)loaded) image as well as possible. Otherwise + * the toolkit may reduce the color depth of the texture + * to conserve memory. + */ + EHuiTextureUploadFlagRetainColorDepth = 4, + + // note: value 0x8 is reserved in client server model so we leave hole here + + /** + * Set if it is not necessary to retain the + * full resolution of the bitmap (tries to match texture resolution + * with bitmap resolution). + * This may save some memory with hardware acceleration, but image quality changes to worse + */ + EHuiTextureUploadFlagDoNotRetainResolution = 0x10, + + /** + * Use the provided bitmap directly for the texture, without conversion or copying. The bitmaps + * should be in the correct format and they shall not be compressed or have duplicated handle. + * If the direct bitmap cannot be used, this flag is ignored internally. + */ + EHuiTextureFlagAllowDirectBitmapUsage = 0x20, + + /** + * If given to texture's SegmentUpload() while bitmap being uploaded is in NVG format, + * the texture will have NVG ObjectCached data created for quicker drawing. + * + * By default if no flags is given as parameters, the NVG data will be rasterized + * into PBuffer (=VGImage) during upload, since using VGImages is the fastet way. + */ + EHuiTextureUploadFlagUsePureNvg = 0x40 + }; + + +/** + * MHuiTexture is the most generic interface that all texture classes need to + * implement. Using MHuiTexture, it is possible to determine which interfaces + * a specific texture supports. + */ +class MHuiTexture + { +public: + + /* Destructor. */ + + /** + * Virtual destructor. + */ + IMPORT_C virtual ~MHuiTexture(); + + + /* Interface methods. */ + + /** + * @return The texture as a MHuiSegmentedTexture interface, or NULL is + * the texture does not implement the segmented texture interface. + */ + virtual MHuiSegmentedTexture* SegmentedTexture() = 0; + + virtual const MHuiSegmentedTexture* SegmentedTexture() const = 0; + + /** + * @return The texture as a MHuiShadowedTexture interface, or NULL is + * the texture does not implement the shadowed texture interface. + */ + virtual MHuiShadowedTexture* ShadowedTexture() = 0; + + virtual const MHuiShadowedTexture* ShadowedTexture() const = 0; + + /** + * Returns true if the texture has changed since the last change + * notification. Changed means that the bitmap data of the texture + * has been modified, and must be re-uploaded to texture memory. + */ + virtual TBool TextureChanged() const = 0; + + /** + * Clears the changed status of the visual. + */ + virtual void TextureClearChanged() const = 0; + + /** + * Determines whether the texture has content. Only textures that + * have content can be drawn. + * + * Note that a texture that has not finished loading will return EFalse + * here, because its content will only become available after it has + * been fully loaded. + * + * @return ETrue, if this texture has content. + */ + virtual TBool HasContent() const = 0; + + virtual void TextureExtension(const TUid& aExtensionUid, TAny** aExtensionParameters) = 0; + + }; + + +#endif // __HUITEXTUREIF_H__