imagingandcamerafws/imagingfws/ImageProcessor/src/imageprocessor.cpp
changeset 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingandcamerafws/imagingfws/ImageProcessor/src/imageprocessor.cpp	Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,1113 @@
+// 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 "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:
+//
+
+#include "imageprocessorimpl.h"
+
+using namespace ImageProcessor;
+
+/**
+Constructs a new image processor object.
+
+@param  aFileServerSession
+        A file server session for the image processor to use. 
+@param  aObserver
+        The image processor observer to recieve callbacks.
+@param  aImageProcessorPluginUid
+        The UID of the image processor plugin to load. Can be set to KUidNull which will load the 
+        highest version of the plugin.
+        
+@leave KErrNoMemory	
+	   There is insufficient memory available.
+
+@return A pointer to the new image processor object.
+*/
+EXPORT_C CImgProcessor* CImgProcessor::NewL(RFs& aFileServerSession, MImgProcessorObserver& aObserver, TUid aImageProcessorPluginUid)
+	{
+	CImgProcessor* self = new (ELeave) CImgProcessor;
+	CleanupStack::PushL(self);
+	self->ConstructL(aFileServerSession, aObserver, aImageProcessorPluginUid);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CImgProcessor::CImgProcessor()
+	{
+   
+	}
+
+void CImgProcessor::ConstructL(RFs& aFileServerSession, MImgProcessorObserver& aObserver, TUid aImageProcessor)
+	{
+	iImplementation = CImageProcessorImpl::NewL(aFileServerSession,*this,aObserver,aImageProcessor);
+	}
+
+EXPORT_C CImgProcessor::~CImgProcessor()
+	{
+	delete iImplementation;
+	}
+
+/**
+Returns a list of effect UIDs which can be applied by this image processor.
+
+@param  aEffects
+        Array to be filled by the list of the supported effects.
+
+*/
+EXPORT_C void CImgProcessor::SupportedEffectsL(RArray<TUid>& aEffects) const
+	{
+	iImplementation->SupportedEffectsL(aEffects);
+	}
+	
+/**
+Returns a list of compressed image formats which are supported (e.g. KImageTypeJPGUid etc).
+
+@param  aFormats
+        Array to be filled by the list of the supported input formats.
+
+*/
+EXPORT_C void CImgProcessor::SupportedInputFormatsL(RArray<TUid>& aFormats) const
+	{
+	iImplementation->SupportedInputFormatsL(aFormats);
+	}
+	
+//(e.g. ?????) 
+/**
+Returns a list of the input sub-formats supported.
+
+@param  aFormat
+        Supported input format.
+
+@param  aSubFormats
+        Array to be filled by the list of the supported input sub-formats.
+
+*/
+EXPORT_C void CImgProcessor::SupportedInputSubFormatsL(TUid aFormat, RArray<TUid>& aSubFormats) const
+	{
+	iImplementation->SupportedInputSubFormatsL(aFormat, aSubFormats);
+	}
+	
+/**
+Returns a list of supported image frame formats (e.g. KUidFormat32BitRGB888Interleaved).
+
+@param  aFormats
+        Array to be filled in by the list of the supported input formats.
+
+*/
+EXPORT_C void CImgProcessor::SupportedInputImageFrameFormatsL(RArray<TUid>& aFormats) const
+	{
+	iImplementation->SupportedInputImageFrameFormatsL(aFormats);
+	}
+
+/**
+Returns a list of supported input display modes (e.g. EColor16M).
+
+@param  aDisplayModes
+        Array to be filled in by the list of the supported input display modes.
+
+*/
+EXPORT_C void CImgProcessor::SupportedInputDisplayModesL(RArray<TDisplayMode>& aDisplayModes) const
+	{
+	iImplementation->SupportedInputDisplayModesL(aDisplayModes);
+	}
+
+/**
+Returns a list of supported compressed output image formats (e.g. KImageTypeJPGUid etc.).
+
+@param  aFormats
+        Array to be filled in by the list of the supported output formats.
+
+*/
+EXPORT_C void CImgProcessor::SupportedOutputFormatsL(RArray<TUid>& aFormats) const
+	{
+	iImplementation->SupportedOutputFormatsL(aFormats);
+	}
+	
+//(e.g. ?????)
+/**
+Returns a list of the output sub-formats supported.
+
+@param  aFormat
+        The supported format of ImageProcessor.
+        
+@param	aSubFormats
+		Array to be filled in by the list of the supported sub formats of ImageProcessor.        
+*/
+EXPORT_C void CImgProcessor::SupportedOutputSubFormatsL(TUid aFormat, RArray<TUid>& aSubFormats) const
+	{
+	iImplementation->SupportedOutputSubFormatsL(aFormat, aSubFormats);
+	}
+	
+/**
+Returns a list of image frame formats to which the output can be rendered (e.g. KUidFormat32BitRGB888Interleaved).
+
+@param  aFormats
+        Array to be filled in by the list of the supported output frame formats.
+
+*/
+EXPORT_C void CImgProcessor::SupportedOutputImageFrameFormatsL(RArray<TUid>& aFormats) const
+	{
+	iImplementation->SupportedOutputImageFrameFormatsL(aFormats);
+	}
+
+/**
+Returns a list of supported output display modes (e.g. EColor16M).
+
+@param  aDisplayModes
+        Array to be filled in by the list of the supported output display modes.
+
+*/
+EXPORT_C void CImgProcessor::SupportedOutputDisplayModesL(RArray<TDisplayMode>& aDisplayModes) const
+	{
+	iImplementation->SupportedOutputDisplayModesL(aDisplayModes);
+	}
+
+/**
+Returns the options supported by this image processor as a set of flags.
+
+@return A TUint64 containing the supported options.
+
+@see	CImgProcessor:TOptions
+*/
+EXPORT_C TUint64 CImgProcessor::SupportedOptions() const
+	{
+	return iImplementation->SupportedOptions();
+	}
+   
+/**
+Sets the desired options. Options can be combined using bitwise inclusive OR.
+
+@param	aOptions
+		The new options to set to this image processor.
+		
+@see	CImgProcessor:TOptions
+*/
+EXPORT_C void CImgProcessor::SetOptionsL(TUint64 aOptions)
+	{
+	iImplementation->SetOptionsL(aOptions);
+	}
+
+/**
+Gets the set of operations supported.
+
+@return A TUint containing the supported operations.
+
+@see	CImgProcessor:TOperation
+
+*/
+EXPORT_C TUint CImgProcessor::SupportedOperations() const
+	{
+	return iImplementation->SupportedOperations();
+	}
+
+/**
+Gets the set of the options set in the image processor.
+
+@return A TUint containing the image processor options.
+
+@see	CImgProcessor:TOperation
+
+*/
+EXPORT_C TUint64 CImgProcessor::Options() const
+	{
+	return iImplementation->Options();
+	}
+   
+/**
+Applies a geometrical operation to the image.
+The image processor needs to be in an initialized state.
+
+@param	aOperation
+		The geometrical operation to be applied. 
+
+*/
+EXPORT_C void CImgProcessor::ApplyOperationL(CImgProcessor::TOperation aOperation)
+	{
+	iImplementation->ApplyOperationL(aOperation);
+	}
+
+/**
+Returns the state of the image processor.
+
+@return The image processor's state.
+
+@see CImgProcessor::TState
+*/
+EXPORT_C CImgProcessor::TState CImgProcessor::State() const
+	{
+	return iImplementation->State();
+	}
+	
+/**
+Calculates the required pixel buffer size in bytes for the destination image given display mode and scan line length. 
+
+@param  aSizeInPixels
+        The size in pixels of the image to calculate buffer size for.
+@param  aDisplayMode
+        The display mode of the destination image to calculate buffer size for.
+section for details.
+@param  aScanLineLength
+        Number of bytes per image row.
+
+@return The calculated pixel buffer size in bytes.
+
+@leave  KErrNotReady
+		The image processor is not in EUninitialized state.
+
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C TInt CImgProcessor::CalculatePixelBufferSizeL(TSize aSizeInPixels, TDisplayMode aDisplayMode, TUint32 aScanLineLength) const
+	{
+	return iImplementation->CalculatePixelBufferSizeL(aSizeInPixels, aDisplayMode, aScanLineLength);
+	}
+
+/**
+Calculates the required pixel buffer size in bytes for the destination image given destination uncompressed image format and scan line length. 
+
+@param  aSizeInPixels
+        The size in pixels of the raw image to calculate buffer size for.
+@param  aFormat
+        The format of the raw image to calculate buffer size for (one of the valid CImageFrame formats).
+section for details.
+@param  aScanLineLength
+        Number of bytes per image row.
+
+@return The calculated pixel buffer size.
+
+@leave  KErrNotReady
+		The image processor is not in EUninitialized state.
+
+@leave	Other
+		A range of system wide error codes.
+
+*/
+EXPORT_C TInt CImgProcessor::CalculatePixelBufferSizeL(TSize aSizeInPixels, const TUid& aFormat, TUint32 aScanLineLength) const
+	{
+	return iImplementation->CalculatePixelBufferSizeL(aSizeInPixels, aFormat, aScanLineLength);
+	}
+
+/**
+Creates internal pixel buffer for the input and copies data from source bitmap to internal buffer
+
+@param  aBitmap
+        The bitmap to copy.
+
+@leave  KErrNotReady
+		The image processor is not initialized.
+		
+@leave  KErrArgument
+		The input bitmap size is 0.
+
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::CreateInputL(CFbsBitmap& aBitmap)
+	{
+	iImplementation->CreateInputL(aBitmap);
+	}
+
+/**
+Creates internal pixel buffer the for the source image and copies data from the image frame to the internal buffer
+
+@param  aPixelBuffer
+        The image frame to copy. 
+
+@leave  KErrNotReady
+		The image processor is not initialized.
+		
+@leave  KErrArgument
+		The input bitmap size is 0.
+
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::CreateInputL(CImageFrame& aPixelBuffer)
+	{
+	iImplementation->CreateInputL(aPixelBuffer);
+	}
+
+/**
+Creates internal pixel buffer for the source image using the given size and initializes source image with the given color. 
+
+@param  aSize
+        The size of the new source image.
+@param  aColor
+        The color of the new source image.
+
+@leave  KErrNotReady
+		The image processor is not initialized.
+		
+@leave  KErrArgument
+		The input bitmap size is 0.
+
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::CreateInputL(const TSize& aSize, const TRgb& aColor)
+	{
+	iImplementation->CreateInputL(aSize, aColor);
+	}
+
+/**
+Sets or updates the source image to the specified file name.
+
+@param  aFilename
+        The filename of the new source image to use.
+@param  aFormat
+        The format of the new source image to use. If KNullUid is passed then an attempt is made to recognize its format.
+@param  aSubFormat
+        The sub-format of the new source image to use. If KNullUid is passed then an attempt is made to recognize its sub-format.
+        
+@leave  KErrNotReady
+		The image processor is not initialized.
+		
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::SetInputL(const TDesC& aFilename, const TUid& aFormat, const TUid& aSubFormat)
+	{
+	iImplementation->SetInputL(aFilename, aFormat, aSubFormat);
+	}
+	
+/**
+The source image is set or updated to the given file.
+
+@param  aFile
+        The file handle of the new source image to use.
+@param  aFormat
+        The format of the new source image to use.
+@param  aSubFormat
+        The sub-format of the new source image to use.
+        
+@leave  KErrNotReady
+		The image processor is not initialized.
+		
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::SetInputL(RFile& aFile, const TUid& aFormat, const TUid& aSubFormat)
+	{
+	iImplementation->SetInputL(aFile, aFormat, aSubFormat);
+	}
+	
+/**
+The source image is set or updated. The source image may be DRM protected.
+
+@param  aDrmFile
+        The DRM file of the new source image to use.
+@param  aFormat
+        The format of the new source image to use.
+@param  aSubFormat
+        The sub-format of the new source image to use.
+
+@leave  KErrNotReady
+		The image processor is not initialized.
+
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::SetInputL(TMMSource& aDrmFile, const TUid& aFormat, const TUid& aSubFormat)
+	{
+	iImplementation->SetInputL(aDrmFile, aFormat, aSubFormat);
+	}
+	
+//aBuffer (Is this both compressed and uncompressed data?)
+/**
+The source image is set or updated to the content of the buffer provided.
+
+@param  aBuffer
+        The buffer containing the new source image to use. 
+@param  aFormat
+        The format of the new source image to use.
+@param  aSubFormat
+        The sub-format of the new source image to use.
+
+@leave  KErrNotReady
+		The image processor is not initialized.
+		
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::SetInputL(const TDesC8& aBuffer, const TUid& aFormat, const TUid& aSubFormat)
+	{
+	iImplementation->SetInputL(aBuffer, aFormat, aSubFormat);
+	}
+
+/**
+The source image is set or updated to the bitmap provided.
+
+@param  aBitmap
+        The bitmap of the new source image to use.
+@param  aMask
+        The bitmap mask of the new source image to use.
+
+@leave  KErrNotReady
+		The image processor is not initialized.
+		        
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::SetInputL(const CFbsBitmap& aBitmap, const CFbsBitmap* aMask)
+	{
+	iImplementation->SetInputL(aBitmap, aMask);
+	}
+
+/**
+The source image is set or updated to the image frame provided.
+
+@param  aPixelBuffer
+        The image frame of the new source image to use.
+
+@leave  KErrNotReady
+		The image processor is not initialized.
+		        
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::SetInputL(const CImageFrame& aPixelBuffer)
+	{
+	iImplementation->SetInputL(aPixelBuffer);
+	}
+   
+/**
+The input is set or updated to the panorama object provided. Any existing options are reset.
+
+@param  aPanorama
+        The panorama object to use.
+
+@leave  KErrNotReady
+		The image processor is not initialized.
+		        
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::SetInputL(CImagePanorama& aPanorama)
+	{
+	iImplementation->SetInputL(aPanorama);
+	}
+
+/**
+This method needs to be called when the input image source data has been updated externally. 
+
+@leave  KErrNotReady
+		The image processor is not initialized or input image source data hasn't been set.
+		        
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::InputUpdatedL()
+	{
+	iImplementation->InputUpdatedL();
+	}
+
+/**
+Resets the image processor. image processor's input is reset and image processor's state is set to EInitialized.
+
+@leave  KErrNotReady
+		The image processor is not initialized or is initializing. 
+		   
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::ResetL() 
+	{
+	iImplementation->ResetL();
+	}
+	
+/**
+Initializes the image processor asynchronously. After this asynchronous call completes,the image processor's state should 
+normally be EInitialized.
+
+@leave  KErrNotReady
+		The image processor has already been initialized.
+		  
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor:: InitializeL()
+	{
+	InitializeL(EOptionNone);
+	}
+
+/**
+Initializes the image processor. After the initialization completes, the image processor's state should 
+normally be EInitialized.
+
+@param	aOptions
+		The options to set to this image processor with the initialization.
+
+@leave  KErrNotReady
+		The image processor has already been initialized.
+
+@leave  KErrNotSupported
+		The option to set to the image processor is not supported.
+
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor:: InitializeL(TUint64 aOptions)
+	{
+	TRAPD(err, iImplementation->InitializeL(aOptions));
+	
+	if (err != KErrNone) 
+		{
+		iImplementation->Cleanup();
+		User::Leave(err);
+		}
+	}
+	
+/**
+All operations and effects are performed on the source image which is then rendered to the output specified. 
+The size for the output image being rendered is the same as the size for the input image. Aspect ratio is 
+maintained.
+
+The image processor behaves differently according to if ImageProcessor::EOptionSyncProcessing is set or not @see ImageProcessor::CImgProcessor::SetOptionsL.
+In the asynchronous case the call leaves with KErrNorReady immediately if the image processor is not initialised. 
+If an error occurs during asynchronous processing then the error is reported back to the client via the observer @see ImageProcessor::MImgProcessorObserver.
+
+In the synchronous case i.e. when ImageProcessor::EOptionSyncProcessing is set then the same errors are reported 
+except this time by leaving with the error code directly from ProcessL. In this case no callback is made to the 
+observer.
+
+@leave  KErrNotReady
+		The image processor is not initialized or input is not set or output is not set.
+
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::ProcessL()
+	{
+	iImplementation->ProcessL(TSize(0,0), ETrue);
+	}
+	
+/**
+All operations and effects are performed on the source image which is then rendered to the output specified. 
+The aspect ratio can be controlled.
+
+@param  aSize
+        The proposed size for the output image being rendered. If a size of 0, 0 is passed then the rendered output size is the same as the input size.
+
+@param  aMaintainAspectRatio
+        ETrue to maintain the aspect ratio, EFalse otherwise.
+        Must be ETrue if aSize is passed as 0,0
+
+@leave  KErrNotReady
+		The image processor is not initialized or input is not set or output is not set.
+
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::ProcessL(const TSize& aSize, TBool aMaintainAspectRatio)
+	{
+	iImplementation->ProcessL(aSize, aMaintainAspectRatio);
+	}
+	
+//(Better to have CancelRender() etc?)
+/**
+Cancels any current asynchronous operation, for example preview or output rendering. 
+Ignored if no asynchronous operation is in progress.
+*/
+EXPORT_C void CImgProcessor::Cancel()
+	{
+	return iImplementation->Cancel();
+	}
+	
+/**
+Sets the background color to use for the output image. Any area of the output image which is not rendered to is set to this colour.
+
+@param  aColor
+        The background color to set.
+
+@leave  KErrNotReady
+		The image processor is not initialized or input is not set.
+        
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::SetBackgroundColorL(const TRgb& aColor)
+	{
+	iImplementation->SetBackgroundColorL(aColor);
+	}
+	
+/**
+Retrieves the current background color.
+
+@return	The current background color.
+  
+@leave  KErrNotReady
+		The input of the image processor is not set.
+        
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C TRgb CImgProcessor::BackgroundColorL() const
+	{
+	return iImplementation->BackgroundColorL();
+	}
+
+/**
+Retrieves the interface to an specific effect (e.g. Sepia effect) given an effect UID.
+
+@return	The effect interface corresponding to the given effect UID.
+
+@leave  KErrNotReady
+		The image processor is not initialized or is initializing.
+
+@leave  KErrNotSupported
+		The given effect is not supported.
+ 
+@leave  KErrNoMemory
+		Not enough memory.   
+        
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C ImageProcessor::TEffect* CImgProcessor::EffectL(TUid aEffect)
+	{
+	return iImplementation->EffectL(aEffect);
+	}
+
+/**
+Determines if there are operations on the operation stack which can be 'undone'.
+
+@return	ETrue if at least one operation applied to the image can be undone; EFalse otherwise.
+
+@leave  KErrNotReady
+		The image processor is not initialized or input is not set.
+		
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C TBool CImgProcessor::CanUndoL() const
+	{
+	return iImplementation->CanUndoL();
+	}
+
+/**
+Reverts the most recent operation which can be undone.
+
+@leave  KErrNotReady
+		The image processor is not initialized or input is not set.
+		
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::UndoL()
+	{
+	iImplementation->UndoL();
+	}
+
+/**
+Reverts all operations which can be undone.	
+
+@leave  KErrNotReady
+		The image processor is not initialized or input is not set.
+		
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::UndoAllL()
+	{
+	iImplementation->UndoAllL();
+	}
+	
+/**
+Determines if there are operations on the operation stack which can be re-applied.
+
+@leave  KErrNotReady
+		The image processor is not initialized or input is not set.
+		
+@return	ETrue if at least one operation applied to the image can be redone; EFalse otherwise.
+*/
+EXPORT_C TBool CImgProcessor::CanRedoL() const
+	{
+	return iImplementation->CanRedoL();
+	}
+
+/**
+Re-applies the most recent redoable operation.
+
+@leave  KErrNotReady
+		The image processor is not initialized or input is not set.
+		
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::RedoL()
+	{
+	iImplementation->RedoL();
+	}
+	
+/**
+Re-applies all re-doable operations previously undone.	
+
+@leave  KErrNotReady
+		The image processor is not initialized or input is not set.
+
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::RedoAllL()
+	{
+	iImplementation->RedoAllL();
+	}
+
+/**
+Displays a low resolution preview of the output image with the effects and/or 
+operations applied before rendering to a high resolution output image. Multiple previews are possible.
+
+If the requested preview already exists, it will be returned, otherwise a new preview with id aPreviewId will be created 
+and returned.
+
+@param	aPreviewId
+		The unique id for preview image. It is not the index of the preview of Image Processor. Instead any value 
+		can be given here to either return an preview previously created or will create a new one with that id.
+
+@return	A TPreview object.
+
+@leave  KErrNotReady
+		The image processor is not initialized or is initializing.
+ 
+@leave  KErrNoMemory
+		Not enough memory.   
+				
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C ImageProcessor::TPreview* CImgProcessor::PreviewL(TInt aPreviewId)
+	{
+	return iImplementation->PreviewL(aPreviewId);
+	}
+
+//(? are multiple overlays supported?)
+/**
+Retrieves this image processor's TOverlay object. TOverlay provides functions to overlay a border or clipart onto an image.
+
+@return	The image processor's overlay object.
+
+@leave  KErrNotReady
+		The image processor is not initialized or is initializing.
+ 
+@leave  KErrNoMemory
+		Not enough memory.   
+		
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C ImageProcessor::TOverlay* CImgProcessor::OverlayL()
+	{
+	return iImplementation->OverlayL();
+	}
+
+/**
+The progress infomation of the rendering function which is executed iteratively to enable asynchronous operation. 
+This gives the possibility to show a progress bar in the GUI when performing time consuming renderings. Rendering functions
+are synchronous if EOptionSyncProcessing option is set on CImgProcessor. 
+
+Retrieves the available progress information in a TProgressInfo obect. 
+
+@return	a TProgressInfo object containing all the progress information.
+
+@leave  KErrNotReady
+		The image processor is not initialized or is initializing.
+ 
+@leave  KErrNoMemory
+		Not enough memory.   
+		
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C ImageProcessor::TProgressInfo* CImgProcessor::ProgressInfoL() 
+	{
+	return iImplementation->ProgressInfoL();
+	}
+
+/**
+Retrieves information about the current source image. 
+
+@return	a TInputInfo filled with all available information about the current source image.
+
+@leave  KErrNotReady
+		The image processor is not initialized or is initializing.
+ 
+@leave  KErrNoMemory
+		Not enough memory.   
+		
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C ImageProcessor::TInputInfo* CImgProcessor::InputInfoL() 
+	{
+	return iImplementation->InputInfoL();
+	}
+
+/**
+Retrieves information about the output image. 
+
+@return	a TOutputInfo filled with all available information about the output image.
+
+@leave  KErrNotReady
+		The image processor is not initialized or is initializing.
+ 
+@leave  KErrNoMemory
+		Not enough memory.   
+		
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C ImageProcessor::TOutputInfo* CImgProcessor::OutputInfoL() 
+	{
+	return iImplementation->OutputInfoL();
+	}
+
+/**
+Sets the area of interest of the source image to be used for processing.
+
+@param	aRect
+		A reference to a TRect that specifies the location and size of the region to be used for the source image.
+
+@leave  KErrNotReady
+		The image processor is not initialized or input image source data hasn't been set.
+
+@leave  KErrArgument
+		The area size is 0 or there is no overlap between aRect and source image.
+ 
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::SetInputRectL(const TRect& aRect)
+	{
+	return iImplementation->SetInputRectL(aRect);
+	}
+	
+/**
+Retrieves the size of the current source image.
+
+@return	The size of the current source image.
+
+@leave  KErrNotReady
+		The input image source data hasn't been set.
+
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C TSize CImgProcessor::CurrentSizeL() const
+	{
+	return iImplementation->CurrentSizeL();
+	}
+	
+/**
+Changes the output image to the image specified in the file given. Rendering is not performed.
+
+@param  aFilename
+        The filename of the new output image to use.
+@param  aFormat
+        The format of the new output image to use.
+@param  aSubFormat
+        The sub-format of the new output image to use.
+
+@leave  KErrNotReady
+		The image processor is not initialized.
+		
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::SetOutputL(const TDesC& aFilename, const TUid& aFormat, const TUid& aSubFormat)
+	{
+	iImplementation->SetOutputL(aFilename, aFormat, aSubFormat);
+	}
+	
+/**
+Changes the output image to the image specified in the file given. Rendering is not performed.
+
+@param  aFile
+        The file handle of the new output image to use.
+@param  aFormat
+        The format of the new output image to use.
+@param  aSubFormat
+        The sub-format of the new output image to use.
+
+@leave  KErrNotReady
+		The image processor is not initialized.
+
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::SetOutputL(RFile& aFile, const TUid& aFormat, const TUid& aSubFormat)
+	{
+	iImplementation->SetOutputL(aFile, aFormat, aSubFormat);
+	}
+	
+/**
+Changes the output image to the image specified in the buffer given. Rendering is not performed.
+
+@param  aBuffer
+        The buffer containing the new output image to use. This may be re-allocated when rendering is performed if more memory is required.
+@param  aFormat
+        The format of the new output image to use.
+@param  aSubFormat
+        The sub-format of the new output image to use.
+
+@leave  KErrNotReady
+		The image processor is not initialized.
+		
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::SetOutputL(RBuf8& aBuffer, const TUid& aFormat, const TUid& aSubFormat)
+	{
+	iImplementation->SetOutputL(aBuffer, aFormat, aSubFormat);
+	}
+	
+/**
+Changes the output image to the image specified in the buffer given. Rendering is not performed.
+
+@param  aPixelBuffer
+        The image frame of the new output image to use.
+
+@leave  KErrNotReady
+		The image processor is not initialized.
+
+@leave  KErrArgument
+		The buffer is empty.	
+		
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::SetOutputL(CImageFrame& aPixelBuffer)
+	{
+	iImplementation->SetOutputL(aPixelBuffer);
+	}
+	
+/**
+Changes the output image to the image specified in the bitmap given. Rendering is not performed.
+
+@param  aBitmap
+        The bitmap of the new output image to use.
+@param  aMask
+		The bitmap mask of the new output image to use.
+
+@leave  KErrNotReady
+		The image processor is not initialized.
+
+@leave  KErrArgument
+		The bitmap is empty or given mask is empty.
+		
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::SetOutputL(CFbsBitmap& aBitmap, CFbsBitmap* aMask)// not sure about mask, CAPS doesn't support it
+	{
+	iImplementation->SetOutputL(aBitmap, aMask);
+	}
+
+/**
+Retrieves a non-standard extension on the image processor.
+
+@param	aExtension
+		The UID of the extension to be retrieved
+
+@return	Extension corresponding to the UID given as a parameter.
+*/
+EXPORT_C TAny* CImgProcessor::Extension(TUid aExtension)
+	{
+	return iImplementation->Extension(aExtension);
+	}
+
+/**
+Converts a given mime type to format and sub-format UIDs.
+
+@param	aMimeType
+		The mime type to convert.
+@param	aFormat
+		The format UID corresponding to the given mime type.
+@param	aSubFormat
+		The sub-format UID corresponding to the given mime type.
+
+@leave  KErrNotFound
+		The given mime type is not found in existing formats.
+
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::ConvertMimeTypeToUidL(const TDesC8& aMimeType, TUid& aFormat, TUid& aSubFormat) const
+	{
+	iImplementation->ConvertMimeTypeToUidL(aMimeType, aFormat, aSubFormat);
+	}
+
+/**
+Converts a given file extension to format and sub-format UIDs.
+
+@param	aFileExtension
+		The file extension to convert.
+@param	aFormat
+		The format UID corresponding to the given file extension.
+@param	aSubFormat
+		The sub-format UID corresponding to the given file extension.
+
+@leave  KErrNotFound
+		The given file extension is not found in existing formats.
+
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::ConvertFileExtensionToUidL(const TDesC& aFileExtension, TUid& aFormat, TUid& aSubFormat) const
+	{
+	iImplementation->ConvertFileExtensionToUidL(aFileExtension, aFormat, aSubFormat);
+	}	
+
+/**
+Converts a format and sub-format UID to a mime type.
+
+@param	aMimeType
+		Returns the mime type corresponding to the given format and sub-format UIDs. (Consider re-ordering these parameters)
+@param	aFormat
+		The format UID to convert.
+@param	aSubFormat
+		The sub-format UID to convert.
+
+@leave  KErrNotFound
+		The given format UID is not found in existing mime types.
+
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::ConvertUidToMimeTypeL(TDes8& aMimeType, const TUid& aFormat, const TUid& aSubFormat) const
+	{
+	iImplementation->ConvertUidToMimeTypeL(aMimeType, aFormat, aSubFormat);
+	}
+
+//(Is this one or more extension?)
+/**
+Converts a format and sub-format UIDs to a file extension. 
+
+@param	aFileExtension 
+		The file extension corresponding to the given format and sub-format UIDs. (Consider re-ordering these parameters)
+@param	aFormat
+		The format UID to convert.
+@param	aSubFormat
+		The sub-format UID to convert.
+
+@leave  KErrNotFound
+		The given format UID is not found in existing file extensions.
+
+@leave	Other
+		A range of system wide error codes.
+*/
+EXPORT_C void CImgProcessor::ConvertUidToFileExtensionL(TDes& aFileExtension, const TUid& aFormat, const TUid& aSubFormat) const
+	{
+	iImplementation->ConvertUidToFileExtensionL(aFileExtension, aFormat, aSubFormat);
+	}
+   
+//EOF