--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imaging/imagingfws/src/iclextproxystubutil.h Wed Aug 25 12:29:52 2010 +0300
@@ -0,0 +1,638 @@
+// Copyright (c) 2007-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:
+//
+
+#ifndef ICLEXTPROXYSTUBUTIL_H
+#define ICLEXTPROXYSTUBUTIL_H
+
+#include <icl/imageconversionextensionintf.h>
+
+// forward declarations
+class TExecuteCommandParamsBase;
+class TExecuteCommandParamsAsyncBase;
+class CThreadDecoderRelay;
+class CThreadEncoderRelay;
+class MFrameworkExtAsyncInterface;
+class CImageConvProxyBase;
+class CImageConvStubBase;
+class MImageConvExtensionThreadedSupport;
+
+/*
+Static class that creates client-side proxy and plugin-side stub objects
+required for marshalling data across the ICL framework.
+*/
+class ProxyStubUtility
+ {
+public:
+ static CImageConvProxyBase* GetNewProxyL(TUid aUid, MImageConvExtensionThreadedSupport* aParent);
+ static CImageConvProxyBase* GetNewStraightProxyL(TUid aUid, MFrameworkExtAsyncInterface* aStatusOwner,
+ RThread& aRequestThread);
+ static CImageConvStubBase* NewStubL(TUid aUid,
+ MImageConvExtension* aExtension,
+ MFrameworkExtAsyncInterface* aStatusOwner,
+ RThread& aRequestThread);
+ };
+
+/*
+Used by the proxy/stub to identify the function call implementation of the
+MImageConvExtension interface.
+*/
+enum TImgConvExtCmd
+ {
+ EImgConvExtUid = 0,
+ EImgConvExtIncrementRef = 1,
+ EImgConvExtRelease = 2
+ };
+
+/*
+Used by the proxy/stub to identify the function call implementation of the
+MImageConvOperation interface.
+*/
+enum TImgConvTransformExtCmd
+ {
+ EImgConvExtCapabilities = EImgConvExtRelease+1,
+ EImgConvExtAddOperationL = EImgConvExtRelease+2,
+ EImgConvExtClearOperationStack = EImgConvExtRelease+3
+ };
+
+/*
+Used by the proxy/stub to identify the function call implementation of the
+MImageConvScaler interface.
+*/
+enum TImgConvScalerExtCmd
+ {
+ EImgConvExtGetCapabilitiesScaler = EImgConvExtRelease+1,
+ EImgConvExtSetScalingLSize = EImgConvExtRelease+2,
+ EImgConvExtSetScalingLCoeff = EImgConvExtRelease+3
+ };
+
+/*
+Used by the proxy/stub to identify the function call implementation of the
+MImageConvStreamedDecode interface.
+*/
+enum TImgConvStreamedDecodeExtCmd
+ {
+ EImgConvExtGetBlocks = EImgConvExtRelease+1,
+ EImgConvExtGetBufferSize = EImgConvExtRelease+2,
+ EImgConvExtGetNextBlocks = EImgConvExtRelease+3,
+ EImgConvExtGetCapabilitiesStreamDec = EImgConvExtRelease+4,
+ EImgConvExtGetSupportedFormatsLStreamDec = EImgConvExtRelease+5,
+ EImgConvExtInitFrameLStreamDec = EImgConvExtRelease+6
+ };
+
+/*
+Used by the proxy/stub to identify the function call implementation of the
+MImageConvStreamedEncode interface.
+*/
+enum TImgConvStreamedEncodeExtCmd
+ {
+ EImgConvExtGetSupportedFormatsLStreamEnc = EImgConvExtRelease+1,
+ EImgConvExtGetCapabilitiesStreamEnc = EImgConvExtRelease+2,
+ EImgConvExtInitFrameLStreamEnc = EImgConvExtRelease+3,
+ EImgConvExtAppendBlocks = EImgConvExtRelease+4,
+ EImgConvExtAddBlocks = EImgConvExtRelease+5,
+ EImgConvExtComplete = EImgConvExtRelease+6
+ };
+
+/*
+Used by the proxy/stub to identify the function call implementation of the
+MImageConvPrepare interface.
+*/
+enum TImgConvPrepareExtCmd
+ {
+ EImgConvExtPrepare = EImgConvExtRelease+1
+ };
+
+/*
+Abstract class that all Proxy classes inherit from. Permits the
+CImageConvExtensionCache to cleanup the Proxys correctly.
+
+@see CImageConvExtensionCache
+*/
+NONSHARABLE_CLASS( CImageConvProxyBase ) : public CBase
+ {
+public:
+ virtual ~CImageConvProxyBase() {};
+ virtual void SetupExtension(MImageConvExtension*& aExtension) = 0;
+ };
+
+/*
+Abstract class that all Stub classes inherit from. Permits the
+CSubThreadEncoderRelay to cleanup the Stubs correctly.
+
+@see CSubThreadEncoderRelay
+*/
+NONSHARABLE_CLASS( CImageConvStubBase ) : public CBase
+ {
+public:
+ virtual TUid Uid() const = 0;
+ virtual void HandleExecuteCommandL(TExecuteCommandParamsBase& aExecuteCommandBase) = 0;
+ virtual void HandleExecuteAsyncCommand(TExecuteCommandParamsAsyncBase& aExecuteCommandBase) = 0;
+ };
+
+/*
+Supports ICL client side extensions in calling the plugin-side
+MImageConvOperation implementation.
+
+Used only in the single-threaded operations.
+
+@see MImageConvOperation
+*/
+NONSHARABLE_CLASS( CImageConvOperationStraightProxy ) : public CImageConvProxyBase,
+ public MImageConvOperation
+ {
+public:
+ static CImageConvOperationStraightProxy* NewL(MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+ ~CImageConvOperationStraightProxy();
+
+ // From CImageConvProxyBase
+ void SetupExtension(MImageConvExtension*& aExtension);
+
+ // From MImageConvOperation
+ TUid Uid() const;
+ void IncrementRef();
+ void Release();
+ TUint Capabilities() const;
+ void AddOperationL(TImageConvOperation::TOperation aOperation);
+ void ClearOperationStack();
+
+private:
+ CImageConvOperationStraightProxy(MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+
+private:
+ MImageConvOperation* iExtension;
+ MFrameworkExtAsyncInterface* iStatusOwner;
+ RThread* iThread;
+ };
+
+/*
+Supports ICL client side extensions in calling the plugin-side
+MImageConvOperation implementation.
+
+Used only in the threaded operations.
+
+@see MImageConvOperation
+@see CImageConvOperationStub
+*/
+NONSHARABLE_CLASS( CImageConvOperationProxy ) : public CImageConvProxyBase,
+ public MImageConvOperation
+ {
+public:
+ static CImageConvOperationProxy* NewL(MImageConvExtensionThreadedSupport* aParent);
+
+ // From CImageConvProxyBase
+ void SetupExtension(MImageConvExtension*& aExtension);
+
+ // From MImageConvOperation
+ TUid Uid() const;
+ void IncrementRef();
+ void Release();
+ TUint Capabilities() const;
+ void AddOperationL(TImageConvOperation::TOperation aOperation);
+ void ClearOperationStack();
+
+private:
+ explicit CImageConvOperationProxy(MImageConvExtensionThreadedSupport* aParent);
+
+private:
+ MImageConvExtensionThreadedSupport* iParent;
+ };
+
+/*
+Plugin-side stub class that relays calls from the operation proxy to the
+MImageConvOperation implementation.
+
+Used only in the threaded operations.
+
+@see MImageConvOperation
+@see CImageConvOperationProxy
+*/
+NONSHARABLE_CLASS( CImageConvOperationStub ) : public CImageConvStubBase
+ {
+public:
+ static CImageConvOperationStub* NewL(MImageConvExtension* aExtension, MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+ ~CImageConvOperationStub();
+
+ // From CImageConvStubBase
+ TUid Uid() const;
+ void HandleExecuteCommandL(TExecuteCommandParamsBase& aExecuteCommandBase);
+ void HandleExecuteAsyncCommand(TExecuteCommandParamsAsyncBase& aExecuteCommandBase);
+
+private:
+ explicit CImageConvOperationStub(MImageConvExtension* aExtension, MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+
+private:
+ MImageConvOperation* iExtension;
+ MFrameworkExtAsyncInterface* iStatusOwner;
+ RThread* iThread;
+ };
+
+/*
+
+Supports ICL client side extensions in calling the plugin-side
+MImageConvScaler implementation.
+
+Used only in the single-threaded operations.
+
+@see MImageConvScaler
+*/
+NONSHARABLE_CLASS( CImageConvScalerStraightProxy ) : public CImageConvProxyBase,
+ public MImageConvScaler
+ {
+public:
+ static CImageConvScalerStraightProxy* NewL(MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+ ~CImageConvScalerStraightProxy();
+
+ // From CImageConvProxyBase
+ void SetupExtension(MImageConvExtension*& aExtension);
+
+ // From MImageConvScaler
+ TUid Uid() const;
+ void IncrementRef();
+ void Release();
+ void GetCapabilities(TScalerCaps& aCaps) const;
+ void SetScalingL(const TSize& aDesiredSize, TImageConvScaler::TScalerQuality aQuality, TBool aLockAspectRatio);
+ void SetScalingL(TInt aScalingCoeff, TImageConvScaler::TScalerQuality aScalingQuality);
+
+private:
+ CImageConvScalerStraightProxy(MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+
+private:
+ MImageConvScaler* iExtension;
+ MFrameworkExtAsyncInterface* iStatusOwner;
+ RThread* iThread;
+ };
+
+/*
+Supports ICL client side extensions in calling the plugin-side
+MImageConvScaler implementation.
+
+Used only in the threaded operations.
+
+@see MImageConvScaler
+@see CImageConvScalerStub
+*/
+NONSHARABLE_CLASS( CImageConvScalerProxy ) : public CImageConvProxyBase,
+ public MImageConvScaler
+ {
+public:
+ static CImageConvScalerProxy* NewL(MImageConvExtensionThreadedSupport* aParent);
+
+ // From CImageConvProxyBase
+ void SetupExtension(MImageConvExtension*& aExtension);
+
+ // From MImageConvScaler
+ TUid Uid() const;
+ void IncrementRef();
+ void Release();
+ void GetCapabilities(TScalerCaps& aCaps) const;
+ void SetScalingL(const TSize& aDesiredSize, TImageConvScaler::TScalerQuality aQuality, TBool aLockAspectRatio);
+ void SetScalingL(TInt aScalingCoeff, TImageConvScaler::TScalerQuality aScalingQuality);
+
+private:
+ explicit CImageConvScalerProxy(MImageConvExtensionThreadedSupport* aParent);
+
+private:
+ MImageConvExtensionThreadedSupport* iParent;
+ };
+
+/*
+Plugin-side stub class that relays calls from the scaler proxy to the
+MImageConvScaler implementation.
+
+Used only in the threaded operations.
+
+@see MImageConvScaler
+@see CImageConvScalerProxy
+*/
+NONSHARABLE_CLASS( CImageConvScalerStub ) : public CImageConvStubBase
+ {
+public:
+ static CImageConvScalerStub* NewL(MImageConvExtension* aExtension, MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+ ~CImageConvScalerStub();
+
+ // From CImageConvStubBase
+ TUid Uid() const;
+ void HandleExecuteCommandL(TExecuteCommandParamsBase& aExecuteCommandBase);
+ void HandleExecuteAsyncCommand(TExecuteCommandParamsAsyncBase& aExecuteCommandBase);
+
+private:
+ explicit CImageConvScalerStub(MImageConvExtension* aExtension, MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+
+private:
+ MImageConvScaler* iExtension;
+ MFrameworkExtAsyncInterface* iStatusOwner;
+ RThread* iThread;
+ };
+
+/*
+Supports ICL client side extensions in calling the plugin-side
+MImageConvStreamedDecode implementation.
+
+Used only in the single-threaded operations.
+
+@see MImageConvStreamedDecode
+*/
+NONSHARABLE_CLASS( CImageConvStreamedDecodeStraightProxy ) : public CImageConvProxyBase,
+ public MImageConvStreamedDecode
+ {
+public:
+ static CImageConvStreamedDecodeStraightProxy* NewL(MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+ ~CImageConvStreamedDecodeStraightProxy();
+
+ // From CImageConvProxyBase
+ void SetupExtension(MImageConvExtension*& aExtension);
+
+ // From MImageConvStreamedDecode
+ TUid Uid() const;
+ void IncrementRef();
+ void Release();
+ void GetSupportedFormatsL(RArray<TUid>& aFormats, TUid& aOptimalFormat) const;
+ void GetCapabilities(TUid aFormat, TInt aFrameNumber, TDecodeStreamCaps& aCaps) const;
+ TInt GetBufferSize(TUid aFormat, TSize& aBlockSizeInPixels, TInt aNumBlocks) const;
+ void InitFrameL(TUid aFormat, TInt aFrameNumber, TDecodeStreamCaps::TNavigation aNavigation);
+ void GetBlocks(TRequestStatus* aStatus, CImageFrame* aFrame, TInt aSeqPosition, TInt aNumBlocksToGet, TInt* aNumBlocksRead);
+ void GetNextBlocks(TRequestStatus* aStatus, CImageFrame* aFrame, TInt aNumBlocksToGet, TInt* aNumBlocksRead, TBool* aHaveMoreBlocks);
+
+private:
+ CImageConvStreamedDecodeStraightProxy(MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+
+private:
+ MImageConvStreamedDecode* iExtension;
+ MFrameworkExtAsyncInterface* iStatusOwner;
+ RThread* iThread;
+ };
+
+/*
+Supports ICL client side extensions in calling the plugin-side
+MImageConvStreamedDecode implementation.
+
+Used only in the threaded operations.
+
+@see MImageConvStreamedDecode
+@see CImageConvStreamedDecodeStub
+*/
+NONSHARABLE_CLASS( CImageConvStreamedDecodeProxy ) : public CImageConvProxyBase,
+ public MImageConvStreamedDecode
+ {
+public:
+ static CImageConvStreamedDecodeProxy* NewL(MImageConvExtensionThreadedSupport* aParent);
+
+ // From CImageConvProxyBase
+ void SetupExtension(MImageConvExtension*& aExtension);
+
+ // From MImageConvStreamedDecode
+ TUid Uid() const;
+ void IncrementRef();
+ void Release();
+ void GetSupportedFormatsL(RArray<TUid>& aFormats, TUid& aOptimalFormat) const;
+ void GetCapabilities(TUid aFormat, TInt aFrameNumber, TDecodeStreamCaps& aCaps) const;
+ TInt GetBufferSize(TUid aFormat, TSize& aBlockSizeInPixels, TInt aNumBlocks) const;
+ void InitFrameL(TUid aFormat, TInt aFrameNumber, TDecodeStreamCaps::TNavigation aNavigation);
+ void GetBlocks(TRequestStatus* aStatus, CImageFrame* aFrame, TInt aSeqPosition, TInt aNumBlocksToGet, TInt* aNumBlocksRead);
+ void GetNextBlocks(TRequestStatus* aStatus, CImageFrame* aFrame, TInt aNumBlocksToGet, TInt* aNumBlocksRead, TBool* aHaveMoreBlocks);
+
+private:
+ explicit CImageConvStreamedDecodeProxy(MImageConvExtensionThreadedSupport* aParent);
+
+private:
+ MImageConvExtensionThreadedSupport* iParent;
+ };
+
+/*
+Plugin-side stub class that relays calls from the streamed decode proxy to the
+MImageConvStreamedDecode implementation.
+
+Used only in the threaded operations.
+
+@see MImageConvStreamedDecode
+@see CImageConvStreamedDecodeProxy
+*/
+NONSHARABLE_CLASS( CImageConvStreamedDecodeStub ) : public CImageConvStubBase
+ {
+public:
+ static CImageConvStreamedDecodeStub* NewL(MImageConvExtension* aExtension, MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+ ~CImageConvStreamedDecodeStub();
+
+ // From CImageConvStubBase
+ TUid Uid() const;
+ void HandleExecuteCommandL(TExecuteCommandParamsBase& aExecuteCommandBase);
+ void HandleExecuteAsyncCommand(TExecuteCommandParamsAsyncBase& aExecuteCommandBase);
+
+private:
+ explicit CImageConvStreamedDecodeStub(MImageConvExtension* aExtension, MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+
+private:
+ MImageConvStreamedDecode* iExtension;
+ MFrameworkExtAsyncInterface* iStatusOwner;
+ RThread* iThread;
+ };
+
+/*
+Supports ICL client side extensions in calling the plugin-side
+MImageConvStreamedEncode implementation.
+
+Used only in the single-threaded operations.
+
+@see MImageConvStreamedEncode
+*/
+NONSHARABLE_CLASS( CImageConvStreamedEncodeStraightProxy ) : public CImageConvProxyBase,
+ public MImageConvStreamedEncode
+ {
+public:
+ static CImageConvStreamedEncodeStraightProxy* NewL(MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+ ~CImageConvStreamedEncodeStraightProxy();
+
+ // From CImageConvProxyBase
+ void SetupExtension(MImageConvExtension*& aExtension);
+
+ // From MImageConvStreamedEncode
+ TUid Uid() const;
+ void IncrementRef();
+ void Release();
+ void GetSupportedFormatsL(RArray<TUid>& aFormats, TUid& aOptimalFormat) const;
+ void GetCapabilities(TUid aFormat, TEncodeStreamCaps& aCaps) const;
+ void InitFrameL(TUid aFormat, TInt aFrameNumber, const TSize& aFrameSizeInPixels, const TSize& aBlockSizeInPixels, TEncodeStreamCaps::TNavigation aNavigation, const CFrameImageData* aFrameImageData);
+ void AppendBlocks(TRequestStatus* aStatus, const CImageFrame& aBlocks, TInt aNumBlocksToAdd);
+ void AddBlocks(TRequestStatus* aStatus, const CImageFrame& aBlocks, const TInt& aSeqPosition);
+ void Complete(TRequestStatus* aStatus);
+
+private:
+ CImageConvStreamedEncodeStraightProxy(MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+
+private:
+ MImageConvStreamedEncode* iExtension;
+ MFrameworkExtAsyncInterface* iStatusOwner;
+ RThread* iThread;
+ };
+
+/*
+Supports ICL client side extensions in calling the plugin-side
+MImageConvStreamedEncode implementation.
+
+Used only in the threaded operations.
+
+@see MImageConvStreamedEncode
+@see CImageConvStreamedEncodeStub
+*/
+NONSHARABLE_CLASS( CImageConvStreamedEncodeProxy ) : public CImageConvProxyBase,
+ public MImageConvStreamedEncode
+ {
+public:
+ static CImageConvStreamedEncodeProxy* NewL(MImageConvExtensionThreadedSupport* aParent);
+
+ // From CImageConvProxyBase
+ void SetupExtension(MImageConvExtension*& aExtension);
+
+ // From MImageConvStreamedEncode
+ TUid Uid() const;
+ void IncrementRef();
+ void Release();
+ void GetSupportedFormatsL(RArray<TUid>& aFormats, TUid& aOptimalFormat) const;
+ void GetCapabilities(TUid aFormat, TEncodeStreamCaps& aCaps) const;
+ void InitFrameL(TUid aFormat, TInt aFrameNumber, const TSize& aFrameSizeInPixels, const TSize& aBlockSizeInPixels, TEncodeStreamCaps::TNavigation aNavigation, const CFrameImageData* aFrameImageData);
+ void AppendBlocks(TRequestStatus* aStatus, const CImageFrame& aBlocks, TInt aNumBlocksToAdd);
+ void AddBlocks(TRequestStatus* aStatus, const CImageFrame& aBlocks, const TInt& aSeqPosition);
+ void Complete(TRequestStatus* aStatus);
+
+private:
+ explicit CImageConvStreamedEncodeProxy(MImageConvExtensionThreadedSupport* aParent);
+
+private:
+ MImageConvExtensionThreadedSupport* iParent;
+ };
+
+/*
+Plugin-side stub class that relays calls from the streamed encode proxy to the
+MImageConvStreamedEncode implementation.
+
+Used only in the threaded operations.
+
+@see MImageConvStreamedEncode
+@see CImageConvStreamedEncodeProxy
+*/
+NONSHARABLE_CLASS( CImageConvStreamedEncodeStub ) : public CImageConvStubBase
+ {
+public:
+ static CImageConvStreamedEncodeStub* NewL(MImageConvExtension* aExtension, MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+ ~CImageConvStreamedEncodeStub();
+
+ // From CImageConvStubBase
+ TUid Uid() const;
+ void HandleExecuteCommandL(TExecuteCommandParamsBase& aExecuteCommandBase);
+ void HandleExecuteAsyncCommand(TExecuteCommandParamsAsyncBase& aExecuteCommandBase);
+
+private:
+ explicit CImageConvStreamedEncodeStub(MImageConvExtension* aExtension, MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+
+private:
+ MImageConvStreamedEncode* iExtension;
+ MFrameworkExtAsyncInterface* iStatusOwner;
+ RThread* iThread;
+ };
+
+/*
+Supports ICL client side extensions in calling the plugin-side
+MImageConvPrepare implementation.
+
+Used only in the single-threaded operations.
+
+@see MImageConvPrepare
+*/
+NONSHARABLE_CLASS( CImageConvPrepareStraightProxy ) : public CImageConvProxyBase,
+ public MImageConvPrepare
+ {
+public:
+ static CImageConvPrepareStraightProxy* NewL(MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+ ~CImageConvPrepareStraightProxy();
+
+ // From CImageConvProxyBase
+ void SetupExtension(MImageConvExtension*& aExtension);
+
+ // From MImageConvPrepare
+ TUid Uid() const;
+ void IncrementRef();
+ void Release();
+ void Prepare(TRequestStatus* aStatus);
+
+private:
+ CImageConvPrepareStraightProxy(MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+
+private:
+ MImageConvPrepare* iExtension;
+ MFrameworkExtAsyncInterface* iStatusOwner;
+ RThread* iThread;
+ };
+
+/*
+Supports ICL client side extensions in calling the plugin-side
+MImageConvPrepare implementation.
+
+Used only in the threaded operations.
+
+@see MImageConvPrepare
+@see CImageConvPrepareStub
+*/
+NONSHARABLE_CLASS( CImageConvPrepareProxy ) : public CImageConvProxyBase,
+ public MImageConvPrepare
+ {
+public:
+ static CImageConvPrepareProxy* NewL(MImageConvExtensionThreadedSupport* aParent);
+
+ // From CImageConvProxyBase
+ void SetupExtension(MImageConvExtension*& aExtension);
+
+ // From MImageConvPrepare
+ TUid Uid() const;
+ void IncrementRef();
+ void Release();
+ void Prepare(TRequestStatus* aStatus);
+
+private:
+ explicit CImageConvPrepareProxy(MImageConvExtensionThreadedSupport* aParent);
+
+private:
+ MImageConvExtensionThreadedSupport* iParent;
+ };
+
+/*
+Plugin-side stub class that relays calls from the Prepare proxy to the
+MImageConvPrepare implementation.
+
+Used only in the threaded operations.
+
+@see MImageConvPrepare
+@see CImageConvPrepareProxy
+*/
+NONSHARABLE_CLASS( CImageConvPrepareStub ) : public CImageConvStubBase
+ {
+public:
+ static CImageConvPrepareStub* NewL(MImageConvExtension* aExtension, MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+ ~CImageConvPrepareStub();
+
+ // From CImageConvStubBase
+ TUid Uid() const;
+ void HandleExecuteCommandL(TExecuteCommandParamsBase& aExecuteCommandBase);
+ void HandleExecuteAsyncCommand(TExecuteCommandParamsAsyncBase& aExecuteCommandBase);
+
+private:
+ explicit CImageConvPrepareStub(MImageConvExtension* aExtension, MFrameworkExtAsyncInterface* aStatusOwner, RThread& aRequestThread);
+
+private:
+ MImageConvPrepare* iExtension;
+ MFrameworkExtAsyncInterface* iStatusOwner;
+ RThread* iThread;
+ };
+
+#endif // ICLEXTPROXYSTUBUTIL_H