--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagehandling_plat/image_handling_library_api/inc/MIHLImageViewer.h Tue Jan 26 15:18:05 2010 +0200
@@ -0,0 +1,298 @@
+/*
+* 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 Image Viewer class.
+* : Class can be used to view, process and play animation
+* : from source image.
+*
+*/
+
+
+#ifndef MIHLIMAGEVIEWER_H
+#define MIHLIMAGEVIEWER_H
+
+// INCLUDES
+#include <MIHLViewer.h>
+#include <e32std.h>
+
+// FORWARD DECLARATION
+class MIHLFilter;
+
+// CLASS DECLARATION
+/**
+* MIHLImageViewer
+*
+* Pure virtual interface for Image Viewer class.
+* Class can be used to view, process and play animation
+* from source image.
+*
+* If interface needs to be pushed into CleanupStack,
+* remember to use CleanupStackDeletePushL() function!
+* DO NOT USE CleanupStack::PushL()!!
+*
+* @lib IHL.lib
+* @since 3.0
+*/
+class MIHLImageViewer : public MIHLViewer
+ {
+ public:
+
+ /**
+ * Virtual destructor.
+ */
+ virtual ~MIHLImageViewer() {}
+
+ public:
+
+ /**
+ * Flags to control viewer functionality.
+ * These can be combined using an OR operation.
+ * @since 3.0
+ */
+ enum TOptions
+ {
+ EOptionIgnoreAspectRatio = 0x01,
+ EOptionUseBilinearInterpolation = 0x02
+ };
+
+ /**
+ * Rotation angle of source image.
+ * @since 3.0
+ */
+ enum TRotationAngle
+ {
+ ERotationAngle0 = 0,
+ ERotationAngle90 = 90,
+ ERotationAngle180 = 180,
+ ERotationAngle270 = 270,
+ };
+
+ public:
+
+ /**
+ * Check if source image is animated.
+ * @since 3.0
+ * @return ETrue if source image is animated. EFalse if not.
+ */
+ virtual TBool IsAnimation() const = 0;
+
+ /**
+ * Start animation playback.
+ * If source image is not animated, method does nothing.
+ * @since 3.0
+ */
+ virtual void Play() = 0;
+
+ /**
+ * Stop animation playback.
+ * If source image is not animated or animation is
+ * not played currently, method does nothing.
+ * @since 3.0
+ */
+ virtual void Stop() = 0;
+
+ /**
+ * Check if animation playback is currently running.
+ * @since 3.0
+ * @return ETrue if animation is running. EFalse if not.
+ */
+ virtual TBool IsPlaying() const = 0;
+
+ /**
+ * Count of frames in animated image.
+ * If not animated, return zero.
+ * @since 3.0
+ * @return Frames count of animation.
+ */
+ virtual TInt AnimationFrameCount() const = 0;
+
+ /**
+ * Current animation frame in display.
+ * @since 3.0
+ * @return Current animation frame index.
+ */
+ virtual TInt AnimationFrame() const = 0;
+
+ /**
+ * Change current animation frame.
+ * @since 3.0
+ * @param aFrameIndex New animation frame.
+ * @return System wide error code.
+ */
+ virtual TInt SetAnimationFrame( TInt aFrameIndex ) = 0;
+
+ /**
+ * Change viewer size.
+ * This is also the maximum size of destination bitmap.
+ * @since 3.0
+ * @param aViewerSize New viewer size.
+ * @return System wide error code.
+ */
+ virtual TInt SetViewerSize( const TSize& aViewerSize, TInt srcBitmapScaleFactor = 1 ) = 0;
+
+ /**
+ * Viewer size.
+ * This is also the maximum size of destination bitmap.
+ * @since 3.0
+ * @return Viewer size.
+ */
+ virtual TSize ViewerSize() const = 0;
+
+ /**
+ * Move source clip rectangle.
+ * This is the area that is used from source image
+ * and processed to destination bitmap.
+ * Check valid move area with SourceRect()
+ * and SourceSize() methods.
+ * @since 3.0
+ * @param aDx Movement in X-axis.
+ * @param aDy Movement in Y-axis.
+ * @return System wide error code.
+ */
+ virtual TInt MoveSourceRect( TInt aDx, TInt aDy ) = 0;
+
+ /**
+ * Set source clip rectangle position.
+ * This is the area that is used from source image
+ * and processed to destination bitmap.
+ * Check valid move area with SourceRect()
+ * and SourceSize() methods.
+ * @since 3.0
+ * @param aPosition Topleft posion of rectangle.
+ * @return System wide error code.
+ */
+ virtual TInt SetSourceRectPosition( const TPoint& aPosition ) = 0;
+
+ /**
+ * This is the area that is used from source image
+ * and processed to destination bitmap.
+ * @since 3.0
+ * @return Source clip rectangle.
+ */
+ virtual TRect SourceRect() const = 0;
+
+ /**
+ * Source image size.
+ * Note that this will change if image is rotated.
+ * @since 3.0
+ * @return Source image size.
+ */
+ virtual TSize SourceSize() const = 0;
+
+ /**
+ * Set new zoom ratio.
+ * Zoom ratio is multiplier for scaling,
+ * 0,5 is 50%, 1.0 is 100%, 2,0 is 200% and so on.
+ * Value cannot be zero or negative.
+ * @since 3.0
+ * @param aZoomRatio New zoom ratio.
+ * @return System wide error code.
+ */
+ virtual TInt SetZoomRatio( TReal aZoomRatio ) = 0;
+
+ /**
+ * Current zoom ratio.
+ * @since 3.0
+ * @return Current zoom ratio.
+ */
+ virtual TReal ZoomRatio() const = 0;
+
+ /**
+ * Zoom to fit ratio.
+ * Using this zoom ratio, image will fit
+ * exactly to viewer.
+ * @since 3.0
+ * @return Zoom to fit ratio.
+ */
+ virtual TReal ZoomToFitRatio() const = 0;
+
+ /**
+ * Rotate source image 90 degree clockwise.
+ * Source rect is also moved to remain in same position
+ * where it was according to source image data.
+ * @since 3.0
+ * @return System wide error code.
+ */
+ virtual TInt RotateClockwise() = 0;
+
+ /**
+ * Rotate source image 90 degree counterclockwise.
+ * Source rect is also moved to remain in same position
+ * where it was according to source image data.
+ * @since 3.0
+ * @return System wide error code.
+ */
+ virtual TInt RotateCounterClockwise() = 0;
+
+ /**
+ * Set rotation angle. Use values from TRotationAngle enumeration.
+ * Source rect is also moved to remain in same position
+ * where it was according to source image data.
+ * @since 3.0
+ * @param aRotationAngle New rotation angle.
+ * @return System wide error code.
+ */
+ virtual TInt SetRotationAngle( TInt aRotationAngle ) = 0;
+
+ /**
+ * Current rotation angle.
+ * @since 3.0
+ * @return Current rotation angle.
+ */
+ virtual TInt RotationAngle() const = 0;
+
+ /**
+ * Set vertical mirroring for source image.
+ * Source rect is also moved to remain in same position
+ * where it was according to source image data.
+ * @since 3.0
+ * @param aValue Mirroring flag.
+ * @return System wide error code.
+ */
+ virtual TInt SetVerticalMirroring( TBool aValue ) = 0;
+
+ /**
+ * Check if source is vertically mirrored.
+ * @since 3.0
+ * @return ETrue if mirrored, EFalse if not.
+ */
+ virtual TBool VerticalMirroring() const = 0;
+
+ /**
+ * Set horizontal mirroring for source image.
+ * Source rect is also moved to remain in same position
+ * where it was according to source image data.
+ * @since 3.0
+ * @param aValue Mirroring flag.
+ * @return System wide error code.
+ */
+ virtual TInt SetHorizontalMirroring( TBool aValue ) = 0;
+
+ /**
+ * Check if source is horizontally mirrored.
+ * @since 3.0
+ * @return ETrue if mirrored, EFalse if not.
+ */
+ virtual TBool HorizontalMirroring() const = 0;
+
+ /**
+ * Set filter.
+ * For future use, not used currently!
+ * @since 3.0
+ */
+ virtual void SetFilter( MIHLFilter* aFilter ) = 0;
+ };
+
+#endif // MIHLIMAGEVIEWER_H
+
+// End of File