--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagehandling_plat/image_handling_library_api/inc/MIHLFileImage.h Tue Jan 26 15:18:05 2010 +0200
@@ -0,0 +1,238 @@
+/*
+* Copyright (c) 2004 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: Pure virtual interface for file based image class.
+* : This class acts as a window into single image or animation
+* : in one physical file. Note that file will be locked as long
+* : as instance of this class is present.
+*
+*/
+
+
+#ifndef MIHLFILEIMAGE_H
+#define MIHLFILEIMAGE_H
+
+// INCLUDES
+#include <MIHLImage.h>
+#include <gdi.h>
+
+// FORWARD DECLARATION
+class MIHLBitmap;
+class MIHLFilter;
+
+// CLASS DECLARATION
+/**
+* MIHLFileImage
+*
+* Pure virtual interface for file based image class.
+* This class acts as a window into single image or animation
+* in one physical file. Note that file will be locked as long
+* as instance of this class is present.
+*
+* If interface needs to be pushed into CleanupStack,
+* remember to use CleanupDeletePushL() function!
+* DO NOT USE CleanupStack::PushL()!!
+*
+* @lib IHL.lib
+* @since 3.0
+*/
+class MIHLFileImage : public MIHLImage
+ {
+ public:
+
+ /**
+ * Virtual destructor.
+ */
+ virtual ~MIHLFileImage() {}
+
+ public:
+
+ /**
+ * Flags to control file image functionality.
+ * These can be combined using an OR operation.
+ * @since 3.0
+ */
+ enum TOptions
+ {
+ EOptionNoDRMConsume = 0x01,
+ };
+
+ public:
+
+ /**
+ * Return image type's unique identifier.
+ * @since 3.0
+ * @return Image type Uid.
+ */
+ virtual const TUid& ImageType() const = 0;
+
+ /**
+ * Return image subtype's unique identifier.
+ * @since 3.0
+ * @return Image subtype Uid.
+ */
+ virtual const TUid& ImageSubType() const = 0;
+
+ /**
+ * Return image index of this instance from source file.
+ * Note that animation is counted as an single image.
+ * @since 3.0
+ * @return Index of this instance.
+ */
+ virtual TInt ImageIndex() const = 0;
+
+ /**
+ * Return count of images in source file.
+ * Note that animation is counted as an single image.
+ * @since 3.0
+ * @return Count of images in source file.
+ */
+ virtual TInt ImageCount() const = 0;
+
+
+ /**
+ * Return image size.
+ * @since 3.0
+ * @return Image size in pixels.
+ */
+ virtual TSize Size() const = 0;
+
+ /**
+ * Return preferred display mode for image.
+ * Note that this display mode may differ from images original
+ * display mode. Image processing may
+ * need more colors than image has originally.
+ * @since 3.0
+ * @return Preferred image display mode.
+ */
+ virtual TDisplayMode DisplayMode() const = 0;
+
+ /**
+ * Return display mode of mask bitmap.
+ * If image doesn't support transparency, ENone is returned.
+ * @since 3.0
+ * @return ENone if image is not transparent.
+ * Mask display mode if image has transparency.
+ */
+ virtual TDisplayMode MaskDisplayMode() const = 0;
+
+ /**
+ * Return image background color.
+ * @since 3.0
+ * @return Image background color.
+ */
+ virtual TRgb BackgroundColor() const = 0;
+
+ /**
+ * Return array of fixed load sizes which can
+ * be used in bitmap loading operation.
+ * Array contain only sizes that differs from image original size.
+ * If image can be loaded only to original size or it's fully
+ * scaleable, array is empty.
+ * Sizes starts from smallest and ends at largest.
+ * @since 3.0
+ * @return Array of supported image load sizes.
+ */
+ virtual const RArray<TSize>& CustomLoadSizeArray() const = 0;
+
+ /**
+ * Check if image can be loaded directly into any given load size.
+ * @since 3.0
+ * @return Array of supported image load sizes.
+ */
+ virtual TBool IsFullyScaleable() const = 0;
+
+ /**
+ * Check if image is animated.
+ * @since 3.0
+ * @return ETrue if image is animated, EFalse if not.
+ */
+ virtual TBool IsAnimation() const = 0;
+
+ /**
+ * Return animation frame count.
+ * If image is not animated, it has no animation frames either.
+ * @since 3.0
+ * @return Animation frame count.
+ */
+ virtual TInt AnimationFrameCount() const = 0;
+
+ /**
+ * Return animation frame delay.
+ * If image is not animated, it has no animation frames either.
+ * @since 3.0
+ * @param aAnimationFrameIndex Animation frame index.
+ * @return Animation frame delay.
+ */
+ virtual TTimeIntervalMicroSeconds32 AnimationFrameDelay( TInt aAnimationFrameIndex ) const = 0;
+
+ /**
+ * Load image into bitmap.
+ * If using scale support, given bitmap must be created with wanted size
+ * from CustomLoadSizeArray(). Displaymode can be get from Displaymode() method.
+ * Mask bitmap is always reseted. It's recreated if image is transparent by using
+ * size of given bitmap and displaymode from MaskDisplayMode() method.
+ * If image is animated, first animation frame is loaded.
+ * @since 3.0
+ * @param aStatus Load request status reference.
+ * @param aDestination Destination bitmap reference.
+ * @param aFrameIndex for loading single frame from image
+ * @return Return system wide error codes:
+ * KerrArgument if given bitmap is not created or it's size is incorrect.
+ * KErrBusy image has load request pending already.
+ */
+ virtual TInt Load( TRequestStatus& aStatus, MIHLBitmap& aDestination, TInt aFrameIndex = 0 ) = 0;
+
+ /**
+ * Load animation frame into bitmap.
+ * If using scale support, given bitmap must be created with wanted size
+ * from CustomLoadSizeArray(). Displaymode can be get from Displaymode() method.
+ * Because some animations are build on top of previous frames, passing already loaded previous
+ * frame as a destination bitmap will increase load speed of next frames.
+ * Method will panic if given animation frame index is out of bounds.
+ * @since 3.0
+ * @param aStatus Load request status reference.
+ * @param aDestination Destination bitmap reference.
+ * @param aAnimationFrameIndex Animation frame index.
+ * @return Return system wide error codes:
+ * KErrArgument if given bitmap is not created or it's size is incorrect.
+ * KErrBusy image has load request pending already.
+ */
+ virtual TInt LoadAnimation( TRequestStatus& aStatus, MIHLBitmap& aDestination,
+ TInt aAnimationFrameIndex ) = 0;
+
+ /**
+ * Check if image has load request pending.
+ * @since 3.0
+ * @return ETrue if request is pending, EFalse if not.
+ */
+ virtual TBool IsBusy() const = 0;
+
+ /**
+ * Cancel pending load request.
+ * If not active, method does nothing.
+ * @since 3.0
+ */
+ virtual void CancelLoad() = 0;
+
+ /**
+ * Set filter.
+ * For future use, not used currently!
+ * @since 3.0
+ */
+ virtual void SetFilter( MIHLFilter* aFilter ) = 0;
+ };
+
+#endif // MIHLFILEIMAGE_H
+
+// End of File