imaging/imagingfws/BitmapTransform/src/BitmapScalingBody.cpp
changeset 0 5752a19fdefe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imaging/imagingfws/BitmapTransform/src/BitmapScalingBody.cpp	Wed Aug 25 12:29:52 2010 +0300
@@ -0,0 +1,124 @@
+// Copyright (c) 2002-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:
+// BitmapScaling.cpp
+// 
+//
+
+#include "BitmapTransformsBody.h"
+#include "BitmapTransformsMain.h"
+#include "BitmapTransforms.h"
+#include <bitmtrans/bitmtransplugin.h>
+#include <bitmtrans/bitmtransuids.hrh>
+
+#include <ecom/ecom.h>
+#include <mm/mmpluginutils.h>
+
+/*
+*The function NewL constructs a CBitmapScalerBody
+*
+*@return CBitmapScalerBody* 
+*/
+CBitmapScalerBody* CBitmapScalerBody::NewL()
+	{
+	CBitmapScalerBody* self = new(ELeave) CBitmapScalerBody();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+/*
+*
+*CBitmapScalerBody()
+*Constructor for this class. 
+*/
+CBitmapScalerBody::CBitmapScalerBody()
+	{
+	}
+
+/*
+*
+*ConstructL()
+*Performs second phase of construction.
+*/
+void CBitmapScalerBody::ConstructL()
+	{
+	TUid interfaceUid = {KUidBitmapScalerPlugin};
+	iPlugin = 
+		static_cast<MBitmapScalerPlugin*>
+			(MmPluginUtils::CreateImplementationL(interfaceUid, iDestructorKey, KBitmTransPluginMatchString, KRomOnlyResolverUid));
+	}
+
+
+/*
+*
+*~CBitmapScalerBody
+*This is the destructor for the CBitmapScalerBody 
+*and is resposible for deallocating all resources 
+*allocated by the CBitmapScalerBody.
+*/
+CBitmapScalerBody::~CBitmapScalerBody()
+	{
+	delete iPlugin;
+	REComSession::DestroyedImplementation(iDestructorKey);
+	REComSession::FinalClose();
+	}
+
+/*
+ *
+ * Begins the bitmap re-scaling operation.
+ *
+ * The scaling factor is based on the relative sizes of the source
+ * and target bitmaps. The operation is asynchronous. When it is
+ * complete, successfully or otherwise, the TRequestStatus &
+ * aStatus is set, passing the state of the operation.
+ *
+ * @param     TRequestStatus* aRequestStatus
+ *
+ * @param     "CFbsBitmap& aSrcBitmap"
+ *            The bitmap to be re-scaled.
+ * @param     "CFbsBitmap& aTgtBitmap"
+ *            The target location for the re-scaled bitmap.
+ * @param     "TBool aMaintainAspectRatio = ETrue"
+ *            ETrue  - the aspect ratio is retained;
+ *            this is the default. The same scaling factor is
+ *            applied in both the horizontal and vertical
+ *            directions. This is the smaller of the horizontal
+ *            scaling factor and the vertical scaling factor.
+ *             EFalse  - the aspect ratio need not be
+ *            retained.
+ *
+ *
+ */
+void CBitmapScalerBody::Scale(TRequestStatus* aRequestStatus,
+							  CFbsBitmap& aSrcBitmap,
+							  CFbsBitmap& aTgtBitmap,
+							  TBool aMaintainAspectRatio)
+	{
+	iPlugin->Scale(aRequestStatus, aSrcBitmap, aTgtBitmap, aMaintainAspectRatio);
+	}
+
+/*
+*
+* CustomCommand
+* @param aUid
+* @param aParam
+* @return 'TInt' an error code indicating success or failure of the 
+* command
+*
+*/
+TInt CBitmapScalerBody::CustomCommand(TUid aUid, TAny* aParam)
+	{
+	return iPlugin->CustomCommand(aUid, aParam);
+	}