epoc32/include/imageprocessor/imageprocessor.h
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
--- a/epoc32/include/imageprocessor/imageprocessor.h	Wed Mar 31 12:27:01 2010 +0100
+++ b/epoc32/include/imageprocessor/imageprocessor.h	Wed Mar 31 12:33:34 2010 +0100
@@ -1,9 +1,9 @@
-// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+// under the terms of "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
@@ -11,516 +11,305 @@
 // Contributors:
 //
 // Description:
+// This is the public client API for the Image Processor Library
+// 
 //
 
-#ifndef ___IMAGEPROCESSOR_H__
-#define ___IMAGEPROCESSOR_H__
-
-#include <gdi.h>
-#include <fbs.h>
-
-/**
-@internalTechnology
-*/
-enum TImageBitmapUtilPanic
-	{
-	ECorrupt
-	};
-
 /**
-@publishedAll
-@released
-
-Interface to colour conversion classes for various display modes.
-Manages the mapping between RGB/Greyscale values and the index
-into the color palette for the given display mode.
+ @file
+ @publishedAll 
+ @released 
 */
-class TColorConvertor
-	{
-public:
-	IMPORT_C static	TColorConvertor* NewL(TDisplayMode aDisplayMode);
 
-	/**
-	Returns the colour index corresponding to the supplied RGB value.
-	Operates in the context of the current display mode.
-
-	This is a virtual function that each derived class must implement.
-
-	@param  aColor
-	        The colour in RGB format.
-	
-	@return The colour index.
-	*/
-	virtual TInt ColorIndex(TRgb aColor) const = 0;
+#ifndef __IMAGE_PROCESSOR_H__
+#define __IMAGE_PROCESSOR_H__
 
-	/**
-	Returns the RGB value corresponding to the supplied colour index.
-	Operates in the context of the current display mode.
-
-	This is a virtual function that each derived class must implement.
-
-	@param  aColorIndex
-	        The colour in RGB format.
-
-	@return The RGB value.
-	*/
-	virtual TRgb Color(TInt aColorIndex) const = 0;
+#include <e32base.h>
+#include <gdi.h>
+#include <icl/imagecodecdata.h>
 
-	/**
-	Gets an array of colour indices from a corresponding array of RGB values.
-	Operates in the context of the current display mode.
-
-	This is a virtual function that each derived class must implement.
-
-	@param  aIndexBuffer
-	        A pointer to the first element in destination array.
-	@param  aColorBuffer
-	        A pointer to the first element in the source array.
-	@param  aCount
-	        The number of elements to get.
-	*/
-	virtual void ColorToIndex(TInt* aIndexBuffer,TRgb* aColorBuffer,TInt aCount) const = 0;
-
-	inline static TInt RgbToMonochrome(TRgb aRgb);
-	};
-
+class RFs;
+class RFile;
+class TMMSource;
+class CFbsBitmap;
+class CImageFrame;
+class TSize;
+class TRgb;
+class CImagePanorama;
 
 /**
-@publishedAll
+@publishedAll 
 @released
-
-Bitmap utility class.
+Image processor namespace for image manipulation and processing.
 */
-class TImageBitmapUtil
+namespace ImageProcessor
 	{
-public:
-	IMPORT_C TImageBitmapUtil();
-	IMPORT_C void Begin();
-	IMPORT_C TBool Begin(const TPoint& aPosition);
-	IMPORT_C void End();
-	IMPORT_C void SetBitmapL(CFbsBitmap* aBitmap);
-	IMPORT_C void SetPixel(TUint32 aPixelIndex);
-	IMPORT_C void SetPixels(TUint32* aPixelIndex,TInt aNumberOfPixels);
-	IMPORT_C TBool SetPos(const TPoint& aPosition);
+	class MImgProcessorObserver;
+	class CImageProcessorImpl;
 	
-private:
-	union TDataPointer
-		{
-		TUint32* iWordPos;
-		TUint8* iBytePos;
-		};
-private:
-	CFbsBitmap* iBitmap;
-	TSize iSize;
-	TPoint iPosition;
-	TDataPointer iData;
-	TDataPointer iBase;
-	TInt iBpp;
-	TInt iBppShift;
-	TInt iPixelShift;
-	TInt iPixelsPerWord;
-	TInt iBitShift;
-	TInt iScanlineWordLength;
-	TUint32 iMask;
-	TBool iWordAccess;
-	};
-
-
-class CImageProcessor;
-class CImageProcessorExtension;
+	class TEffect;
+	class TPreview;
+	class TOverlay;
+	class TProgressInfo;
+	class TInputInfo;
+	class TOutputInfo;
 
 /**
-@publishedAll
+@publishedAll 
 @released
 
-Utility class providing static factory functions for creating instances of
-CImageProcessor derived classes.
-*/
-class ImageProcessorUtility
-	{
-public:
-	IMPORT_C static TInt ReductionFactor(const TSize& aOriginalSize,const TSize& aReducedSize);
-	IMPORT_C static CImageProcessor* NewImageProcessorL(const CFbsBitmap& aBitmap,const TSize& aImageSize,TDisplayMode aImageDisplayMode, TBool aDisableErrorDiffusion);
-	IMPORT_C static CImageProcessor* NewImageProcessorL(const CFbsBitmap& aBitmap,TInt aReductionFactor,TDisplayMode aImageDisplayMode, TBool aDisableErrorDiffusion);
-	IMPORT_C static CImageProcessorExtension* ImageProcessorUtility::NewImageProcessorExtensionL(const CFbsBitmap& aBitmap,TInt aReductionFactor,TDisplayMode aImageDisplayMode, TBool aDisableErrorDiffusion);
-	
-private:
-	TBool static UseErrorDiffuser(const TDisplayMode& aBitmapDisplayMode, const TDisplayMode& aImageDisplayMode);
-	TBool static IsMonochrome(const TDisplayMode& aBitmapDisplayMode, const TDisplayMode& aImageDisplayMode);
-	};
+This class provides functions to process images. Those operations can be divided in two groups:
+- effects.
+- geometrical operations.
 
-
-
-/**
-@publishedAll
-@released
+Good examples of effects could be the Sepia effect applying shades of brown to an image, or the solarize effect 
+that consists in reversing the tones of a picture and make it look like a negative.
+Good examples of geometrical operations could be Rotation or Flip.
 
-Interface to image processing classes.
-*/
-class CImageProcessor : public CBase
-	{
-public:
-	// Setup
+The image processor will decode and render an image:
+
+Inputs can be
+- compressed images (JPEG, GIF, PNG etc)
+- uncompressed images (CFbsBitmap and general pixel buffers e.g. YUV 4:2:0 Interleaved etc)
 
-	/**
-	Initialises internal data structures prior to conversion.
-
-	This is a virtual function that each derived class must implement.
+Outputs can be 
+- compressed images (JPEG, GIF, PNG etc)
+- uncompressed images (CFbsBitmap and general pixel buffers e.g. YUV 4:2:0 Interleaved etc)
 
-	@param  aBitmap
-	        A reference to a fully constucted bitmap with the required
-	        display mode and size.
-	@param  aImageRect
-	        The region of the image to convert.
-	*/
-	virtual void PrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect) = 0;
-
-	/**
-	Initialises internal data structures prior to the manipulation of the specified pixel block.
+An intermediate generally low resolution uncompressed image providing a preview representation of the 
+output of the processing is provided allowing applications to display the results of the operations 
+applied without needing to fully render the image. Multiple previews are allowed.
 
-	This overloaded version allows specification of a block size
-	for those formats which support blocked pixel data eg. JPEG
-
-	This is a virtual function that each derived class must implement.
+Images may be overlaid onto the main source image.
 
-	@param  aBitmap
-	        A reference to a fully constucted bitmap with the required
-	        display mode and size.
-	@param  aImageRect
-	        The region of the image to convert.
-	@param  aRgbBlockSize
-	        The size of the block to use.
-	*/
-	virtual void PrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect,const TSize& aRgbBlockSize) = 0;
-
+The source image can be changed and the current effects and geometric oprations will be re-applied to the
+new image. The previews will be updated.
+*/
+class CImgProcessor : public CBase
+	{
+public:   
 	/**
-	Sets the number of pixels by which to increment the current position in
-	the Y-axis. This is used when rendering images supporting interlacing.
-	eg GIF
-
-	This is a virtual function that each derived class must implement.
-
-	@param  aYInc
-	        The number of pixels.
-	*/
-	virtual void SetYPosIncrement(TInt aYInc) = 0;
-
-	/**
-	Sets the number times the current line should be repeated. The lines
-	are repeated in the same direction as set by SetYPosIncrement(). This
-	is used to fill blank lines when rendering interlaced images. eg GIF.
-	@param aLineRepeat The number of times the current line should be repeated
-	*/
-	virtual void SetLineRepeat(TInt aLineRepeat) = 0;
-
-	/**
-	Sets the pixel padding to the value specified by aNumberOfPixels.
-
-	This is a virtual function that each derived class must implement.
-
-	@param  aNumberOfPixels
-	        The number of pixels to use for padding.
+	Flags to control how the image is processed.
 	*/
-	virtual void SetPixelPadding(TInt aNumberOfPixels) = 0;
-
-	// Color pixel writing
-
-	/**
-	Sets the pixel at the current position to aColor.
-
-	This is a virtual function that each derived class must implement.
-	
-	@post    
-	The current position is updated.
-
-	@param  aColor
-	        The RGB value to set the current pixel to.
-
-	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
-            otherwise EFalse.
-    */
-	virtual TBool SetPixel(TRgb aColor) = 0;
-
-	/**
-	Sets aCount number of pixels to the value given by aColor, starting at
-	the current position.
-
-	This is a virtual function that each derived class must implement.
-
-	@post    
-	On success, the current position is updated.
-
-	@param  aColor
-	        The RGB value to set the pixels to.
-	@param  aCount
-	        The number of pixels to set.
-
-	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
-	        otherwise EFalse.
-	*/
-	virtual TBool SetPixelRun(TRgb aColor,TInt aCount) = 0;
+	enum TOptions
+		{
+		/** No flag set 
+		*/
+		EOptionNone = 0x00,
+		/** Effects, geometric operations and rendering are applied synchronously. 
+		The default is asynchronously.
+		*/
+		EOptionSyncProcessing = 0x01,
+		/** The Exif data from the source image is parsed and transferred to the 
+		destination image.
+        */
+		EOptionExifMetadataProcessing = 0x02
+		};
 
 	/**
-	Updates the bitmap with colour information from the array of colour values.
-
-	Uses the array of colour values supplied by aColorBuffer, whose length
-	is specified by aBufferLength, to update successive pixels with values in the
-	buffer, starting at the current	position.
-
-	This is a virtual function that each derived class must implement.
-	
-	@post   
-	The current position is updated.
+	Flags to control the operations or transforms on an image.
+	*/
+	enum TOperation
+		{
+		/** No operation.
+		*/
+		EOperationNone = 0x0,
 
-	@param  aColorBuffer
-	        A pointer to the first element in the array.
-	@param  aBufferLength
-	        The number of elements in the array.
+        /** Rotate 90 degrees clockwise.
+        */
+        EOperationRotate90 = 0x1,
 
-	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
-	        otherwise EFalse.
-	*/
-	virtual TBool SetPixels(TRgb* aColorBuffer,TInt aBufferLength) = 0;
-
-    /**
-    Sets the current pixel block using the data supplied in aColorBuffer.
-
-	Note:
-	For use with image types that support blocking of pixels eg JPEG.
-
-	This is a virtual function that each derived class must implement.
+        /** Rotate 180 degrees clockwise.
+        */
+        EOperationRotate180 = 0x2,
 
-	@param  aColorBuffer
-	        A pointer to a buffer representing a block of pixel color values.
+        /** Rotate 270 degrees clockwise.
+        */
+        EOperationRotate270 = 0x4,
 
-	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
-	        otherwise EFalse.
-	*/
-	virtual TBool SetPixelBlock(TRgb* aColorBuffer) = 0;
-
-	// Monochrome pixel writing
-
-	/**
-	Sets the pixel at the current position to aGray256.
-
-	This is a virtual function that each derived class must implement.
+        /** Horizontal flip (mirror over horizontal axis).
+        */
+        EOperationMirrorHorizontalAxis = 0x8,
 
-    @post   
-	The current position is updated.
-
-	@param  aGray256
-	        The greyscale value to set the current pixel to.
+        /** Horizontal flip (mirror over horizontal axis) then rotate 90 degrees clockwise.
+        */
+        EOperationMirrorHorizontalAxisRotate90 = 0x10,
 
-	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
-	        otherwise EFalse.
-	*/
-	virtual TBool SetMonoPixel(TInt aGray256) = 0;
-
-	/**
-	Sets the number of pixels specified by aCount to the value given by aGray256, starting at
-	the current position.
+        /** Vertical flip (mirror over vertical axis).
+        */
+        EOperationMirrorVerticalAxis     = 0x20,
 
-	This is a virtual function that each derived class must implement.
-	
-	@post   
-	The current position is updated.
-
-	@param  aGray256
-	        The greyscale value to set the pixels to.
-	@param  aCount
-	        The number of pixels to set.
-
-	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
-	        otherwise EFalse.
-	*/
-	virtual TBool SetMonoPixelRun(TInt aGray256,TInt aCount) = 0;
-
+        /** Vertical flip (mirror over vertical axis) then rotate 90 degrees clockwise.
+        */
+        EOperationMirrorVerticalAxisRotate90 = 0x40
+		};
+      
 	/**
-	Updates the bitmap with greyscale information from the array of greyscale values.
-
-	The array of values supplied by aGray256Buffer, whose length
-	is specified in aBufferLength, is used to update successive pixels with the
-	greyscales values.
-
-	This is a virtual function that each derived class must implement.
-
-	@post
-	The current position is updated.
-
-	@param  aGray256Buffer
-	        A pointer to the first element in the array of greyscale values.
-	@param  aBufferLength
-	        The number of elements in the array.
-
-	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
-	        otherwise EFalse.
+	Possible states for the image processor. 
 	*/
-	virtual TBool SetMonoPixels(TUint32* aGray256Buffer,TInt aBufferLength) = 0;
-
-    /**
-    Sets a specified number of pixels to the specified greyscale value.
-
-	For image types which support blocking of pixels eg JPEG, the current
-	pixel block is set using the data supplied in aGray256Buffer.
-
-	This is a virtual function that each derived class must implement.
-
-	@param  aGray256Buffer
-	        A pointer to a buffer representing a block of pixel color values.
-
-	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
-	        otherwise EFalse.
-	*/
-	virtual TBool SetMonoPixelBlock(TUint32* aGray256Buffer) = 0;
-
-	// Processor flow control
-
-	/**
-	Sets the current position in the bitmap to aPosition.
-
-	This is a virtual function that each derived class must implement.
-
-	@param  aPosition
-	        A reference to TPoint object defining the position to move to.
-
-	@return	A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
-	        otherwise EFalse.
-	*/
-	virtual TBool SetPos(const TPoint& aPosition) = 0;
+	enum TState
+		{
+        /** Image processor not initalized.
+        */
+		EUninitialized = 0,
+        /** Image processor initalizing.
+        */
+		EInitializing,
+        /** Image processor initalized.
+        */
+		EInitialized,
+        /** Effect active.
+        */
+		EEffectActive,
+        /** Image processor processing an image.
+        */
+		EProcessing,
+        /** Preview initializing.
+        */
+		EPreviewInitializing,
+        /** Preview Rendering.
+        */
+		EPreviewRendering,
+        /** Count of valid states (boundary marker - not a true state).
+        */
+		EStatesCount
+		};
 
 	/**
-	Commits the changes made to the current bitmap by flushing the buffer.
+	Events occurring during processing. 
+	*/
+	enum TEvent
+		{
+        /** The image processor is initializing.
+        */
+		EEventInitializing = 0, 
+        /** The image processor has finished initializing.
+        */
+		EEventInitializingComplete,
+        /** Processing is in progress.
+        */
+		EEventProcessing,	
+        /** Processing is complete.
+        */
+		EEventProcessingComplete,
+        /** Rendering is in progress.
+        */
+		EEventRendering,
+        /** Event rendering is complete.
+        */
+		EEventRenderingComplete,
+        /** The preview is initializing.
+        */
+		EEventPreviewInitializing,
+        /** The preview has finished initializing.
+        */
+		EEventPreviewInitializingComplete,
+        /** The preview rendering is in progress.
+        */
+		EEventPreviewRendering,
+        /** The preview rendering is complete.
+        */
+		EEventPreviewRenderingComplete
+		};
+   
+public:   
+	IMPORT_C static CImgProcessor* NewL(RFs& aFileServerSession, MImgProcessorObserver& aObserver, TUid aImageProcessorPluginUid=KNullUid);
+	
+	IMPORT_C void SupportedEffectsL(RArray<TUid>& aEffects) const;
+	
+	IMPORT_C void SupportedInputFormatsL(RArray<TUid>& aFormats) const;
+	IMPORT_C void SupportedInputSubFormatsL(TUid aFormat, RArray<TUid>& aSubFormats) const;
+	IMPORT_C void SupportedInputImageFrameFormatsL(RArray<TUid>& aFormats) const;
+	IMPORT_C void SupportedInputDisplayModesL(RArray<TDisplayMode>& aDisplayModes) const;
+	
+	IMPORT_C void SupportedOutputFormatsL(RArray<TUid>& aFormats) const;
+	IMPORT_C void SupportedOutputSubFormatsL(TUid aFormat, RArray<TUid>& aSubFormats) const;
+	IMPORT_C void SupportedOutputImageFrameFormatsL(RArray<TUid>& aFormats) const;
+	IMPORT_C void SupportedOutputDisplayModesL(RArray<TDisplayMode>& aDisplayModes) const;
 
-	This is a virtual function that each derived class must implement.
+	IMPORT_C TUint64 SupportedOptions() const;
+	IMPORT_C TUint SupportedOperations() const;
 
-	@post
-	The current position is updated.
+	IMPORT_C TUint64 Options() const;
+	IMPORT_C TState State() const;
+	IMPORT_C TSize CurrentSizeL() const;
+	IMPORT_C TRgb BackgroundColorL() const;
+
+	IMPORT_C TProgressInfo* ProgressInfoL();
+	IMPORT_C TInputInfo* InputInfoL();
+	IMPORT_C TOutputInfo* OutputInfoL();
+	
+	IMPORT_C TInt CalculatePixelBufferSizeL(TSize aSizeInPixels, TDisplayMode aDisplayMode, TUint32 aScanLineLength = 0) const;
+	IMPORT_C TInt CalculatePixelBufferSizeL(TSize aSizeInPixels, const TUid& aFormat, TUint32 aScanLineLength = 0) const;
 
-	@return	A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
-	        otherwise EFalse.
-    */
-	virtual TBool FlushPixels() = 0;
+	IMPORT_C void CreateInputL(CFbsBitmap& aBitmap);
+	IMPORT_C void CreateInputL(CImageFrame& aPixelBuffer);
+	IMPORT_C void CreateInputL(const TSize& aSize, const TRgb& aColor);
+
+	IMPORT_C void SetBackgroundColorL(const TRgb& aColor);
+	
+	IMPORT_C void SetInputRectL(const TRect& aRect);
+	
+	IMPORT_C void SetInputL(const TDesC& aFilename, const TUid& aFormat = KNullUid, const TUid& aSubFormat = KNullUid);
+	IMPORT_C void SetInputL(RFile& aFile, const TUid& aFormat = KNullUid, const TUid& aSubFormat = KNullUid);
+	IMPORT_C void SetInputL(TMMSource& aDrmFile, const TUid& aFormat = KNullUid, const TUid& aSubFormat = KNullUid);
+	IMPORT_C void SetInputL(const TDesC8& aBuffer, const TUid& aFormat = KNullUid, const TUid& aSubFormat = KNullUid);
+	IMPORT_C void SetInputL(const CFbsBitmap& aBitmap, const CFbsBitmap* aMask = NULL);
+	IMPORT_C void SetInputL(const CImageFrame& aPixelBuffer);
+	IMPORT_C void SetInputL(CImagePanorama& aPanorama);
+
+	IMPORT_C void SetOptionsL(TUint64 aOptions);
+	IMPORT_C void ApplyOperationL(CImgProcessor::TOperation aOperation);
+
+	IMPORT_C void InputUpdatedL();
 	
+	IMPORT_C void ResetL();
+
+	IMPORT_C void InitializeL();
+	IMPORT_C void InitializeL(TUint64 aOptions);
+   
+	IMPORT_C void ProcessL();
+	IMPORT_C void ProcessL(const TSize& aSize, TBool aMaintainAspectRatio);
+	IMPORT_C void Cancel();
+
+	IMPORT_C TEffect* EffectL(TUid aEffect);
+
+	IMPORT_C TBool CanUndoL() const;
+	IMPORT_C void UndoL();
+	IMPORT_C void UndoAllL();
+	
+	IMPORT_C TBool CanRedoL() const;
+	IMPORT_C void RedoL();
+	IMPORT_C void RedoAllL();
+
+	IMPORT_C TPreview* PreviewL(TInt aPreviewId);
+
+	IMPORT_C TOverlay* OverlayL();
+	
+	IMPORT_C void SetOutputL(const TDesC& aFilename, const TUid& aFormat = KImageTypeJPGUid, const TUid& aSubFormat = KNullUid);
+	IMPORT_C void SetOutputL(RFile& aFile, const TUid& aFormat = KImageTypeJPGUid, const TUid& aSubFormat = KNullUid);
+	IMPORT_C void SetOutputL(RBuf8& aBuffer, const TUid& aFormat = KImageTypeJPGUid, const TUid& aSubFormat = KNullUid);
+	IMPORT_C void SetOutputL(CImageFrame& aPixelBuffer);
+	IMPORT_C void SetOutputL(CFbsBitmap& aBitmap, CFbsBitmap* aMask = NULL);
+
+	IMPORT_C TAny* Extension(TUid aExtension);
+
+	// framework utility functions
+	IMPORT_C void ConvertMimeTypeToUidL(const TDesC8& aMimeType, TUid& aFormat, TUid& aSubFormat) const;
+	IMPORT_C void ConvertFileExtensionToUidL(const TDesC& aFileExtension, TUid& aFormat, TUid& aSubFormat) const;
+	IMPORT_C void ConvertUidToMimeTypeL(TDes8& aMimeType, const TUid& aFormat, const TUid& aSubFormat) const;
+	IMPORT_C void ConvertUidToFileExtensionL(TDes& aFileExtension, const TUid& aFormat, const TUid& aSubFormat) const;
+
+	IMPORT_C ~CImgProcessor();
+
 private:
-	// Future proofing
-	IMPORT_C virtual void ReservedVirtual1();
-	IMPORT_C virtual void ReservedVirtual2();
-	IMPORT_C virtual void ReservedVirtual3();
-	IMPORT_C virtual void ReservedVirtual4();
+	CImgProcessor();
+	void ConstructL(RFs& aFileServerSession,MImgProcessorObserver& aObserver, TUid aPluginUid);
+
+private:
+	CImageProcessorImpl* iImplementation;
 	};
 
-/**
-@publishedAll
-@released
-
-Flag used to determine the type of transformation which is the result of 
-single or multiple transformation operations requested via calls to
-COperationExtension::AddOperationL.
-
-8 unique orientations:
-
-@code
-normal  90      180     270
-00 10   01 00   11 01   10 11
-01 11   11 10   10 00   00 01
-
-V flip  90      180     270
-10 00   11 10   =Hflip  =Hflip+90
-11 01   01 00
-
-H flip  90      180     270
-01 11   00 01   =Vflip  =Vflip+90
-00 10   10 11
-@endcode
-
-@see COperationExtension::AddOperationL
-*/
-enum TTransformOptions
-	{
-	/** Normal Decode
-	*/
-	EDecodeNormal = 0x11011000,
-
-	/** Rotate 90 degrees.
-	*/
-	EDecodeRotate90	= 0x10110001,
-
-	/** Rotate 180 degrees.
-	*/
-	EDecodeRotate180 = 0x00100111,
-
-	/** Rotate 270 degrees.
-	*/
-	EDecodeRotate270 = 0x01001110,
-	
-	/** Horizontal flip.
-	*/
-	EDecodeHorizontalFlip = 0x10001101,
-	
-	/** Horizontal flip and rotate 90 degrees.
-	*/
-	EDecodeHorizontalFlipRotate90 = 0x11100100,
-
-	/** Vertical flip.
-	*/
-	EDecodeVerticalFlip	= 0x01110010,
+	} // ImageProcessor
 
-	/** Vertical flip and rotate 90 degrees.
-	*/
-	EDecodeVerticalFlipRotate90 = 0x00011011
-	};
-
-
-/**
-@publishedAll
-@released
-
-Class that provides support for Framework Extensions.
-
-@see CImageProcessor
-@see CImageReadCodec
-@see CImageDecoderPlugin
-*/
-class CImageProcessorExtension : public CImageProcessor
-	{
-public:
-	IMPORT_C virtual ~CImageProcessorExtension();
-	IMPORT_C void SetClippingRect(const TRect& aRect);
-	IMPORT_C void SetScaling(TInt aScalingCoeff);
-	IMPORT_C void SetScaling(const TSize& aDesiredSize);
-	IMPORT_C void SetOperation(TTransformOptions aOperation);
-	IMPORT_C void SetInitialScanlineSkipPadding(TInt aNumberOfScanlines);
-
-protected:
-	IMPORT_C CImageProcessorExtension();
-
-protected:
-	/** Clipping rectangle */
-	TRect iClippingRect;
-	/** Scaling coefficient */
-	TInt iScalingCoeff;
-	/** Desired size after scaling */
-	TSize iDesiredSize;
-	/** Operations to apply to image */
-	TTransformOptions iOperation;
-	/** Position in destination at which start rendering */
-	TPoint iStartPosition;
-	/** Position in destination at which rendering is complete */
-	TPoint iEndPosition;
-	/** An initial one-off number of scanlines to be skipped */
-	TInt iNumberOfScanlinesToSkip;
-	};
-   
-inline TInt TColorConvertor::RgbToMonochrome(TRgb aRgb)
-	{
-	TInt value = aRgb.Internal();
-	TInt r = value&0xFF0000;
-	TInt g = value&0xFF00;
-	value  = (value&0xFF)<<16;	// blue<<16
-	value += r<<1;     		// + (red<<16)*2
-	value += g<<(16+2-8);	// + (green<<16)*4
-	value += g<<(16+0-8);	// + (green<<16)
-	return value>>(16+3);	// total/8
-	}
-
-#endif //___IMAGEPROCESSOR_H__
+#endif //__IMAGE_PROCESSOR_H__