imagehandling_plat/image_handling_library_api/inc/MIHLImageViewer.h
changeset 0 2014ca87e772
--- /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