--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imaging/imagingfws/BitmapTransform/src/BitmapScaling.cpp Wed Aug 25 12:29:52 2010 +0300
@@ -0,0 +1,156 @@
+// 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:
+//
+
+#include "BitmapTransforms.h"
+#include "BitmapTransformsMain.h"
+#include "BitmapTransformsBody.h"
+
+/**
+Constructs a CBitmapScaler object.
+
+@return A pointer to a CBitmapScaler object.
+*/
+EXPORT_C CBitmapScaler* CBitmapScaler::NewL()
+ {
+ CBitmapScaler* self = new(ELeave) CBitmapScaler();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+/*
+@internalTechnology
+
+Constructor for this class.
+*/
+
+CBitmapScaler::CBitmapScaler()
+ {
+ }
+
+/**
+@internalTechnology
+
+Performs second phase of contruction
+*/
+
+void CBitmapScaler::ConstructL()
+ {
+ iBody = CBitmapScalerBody::NewL();
+ }
+
+
+/**
+This is the destructor for the CBitmapScaler
+and is responsible for deallocating all resources
+alloctaed by the CBitmapScaler.
+*/
+
+EXPORT_C CBitmapScaler::~CBitmapScaler()
+ {
+ Cancel();
+ delete iBody;
+ }
+
+/**
+Cancel any outstanding activity.
+*/
+
+EXPORT_C void CBitmapScaler::Cancel()
+ {
+ if (iBody)
+ iBody->Cancel();
+ }
+
+/**
+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. KErrOverFlow status is
+set if the sizes of input bitmaps are too large for the algorithm to handle.
+
+@post
+The result of the operation is pointed to by aRequestStatus.
+
+@param aRequestStatus
+ On return, contains a pointer to the completion status of the rescale of the bitmap.
+@param aSrcBitmap
+ The bitmap to be re-scaled.
+@param aTgtBitmap
+ The target location for the re-scaled bitmap.
+@param aMaintainAspectRatio
+ A boolean indicating if the aspect ratio is maintained. ETrue means 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 means the aspect ratio need not be retained.
+*/
+EXPORT_C void CBitmapScaler::Scale(TRequestStatus* aRequestStatus, CFbsBitmap& aSrcBitmap, CFbsBitmap& aTgtBitmap, TBool aMaintainAspectRatio)
+ {
+ ASSERT(iBody);
+ iBody->Scale(aRequestStatus, aSrcBitmap, aTgtBitmap, aMaintainAspectRatio);
+ }
+
+/**
+Begins the bitmap re-scaling operation.
+
+The scaling factor is based on the relative value of the source bitmap
+size and the explicitly supplied size. The operation is asynchronous.
+When it is complete, successfully or otherwise, the
+TRequestStatus is set, passing the state of the operation. KErrOverFlow status is set
+if the sizes of input bitmaps are too large for the algorithm to handle.
+@param aRequestStatus
+ On return, contains a pointer to the completion status of the rescale of the bitmap.
+@param aBitmap
+ The bitmap to be re-scaled. This reference is also the
+ target location for the re-scaled bitmap.
+@param aDestinationSize
+ The requested target size for the re-scaled bitmap.
+@param aMaintainAspectRatio
+ A boolean indicating if the aspect ratio is maintained. ETrue means 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 means the aspect ratio need not be retained.
+*/
+EXPORT_C void CBitmapScaler::Scale(TRequestStatus* aRequestStatus, CFbsBitmap& aBitmap, const TSize& aDestinationSize, TBool aMaintainAspectRatio)
+ {
+ ASSERT(iBody);
+ iBody->Scale(aRequestStatus, aBitmap, aDestinationSize, aMaintainAspectRatio);
+ }
+
+/**
+Provides custom command capabilties on CBitmapScaler. The command is dispatched on aUid and if
+the command is not known KErrNotSupported will be returned. This function is synchronous.
+
+The Default implementation will support one command
+to enable and disable post processing on the scale operation
+The uid of this command is published in the header file.
+Changes to the status of Post Processing Enabled will become
+effective only after an exising scaling operation has completed.
+
+@pre
+When a command requires parameters aParam is not NULL.
+
+@param aUid
+ The ID of the command.
+@param aParam
+ The command specific information.
+*/
+EXPORT_C TInt CBitmapScaler::CustomCommand(TUid aUid, TAny* aParam)
+ {
+ ASSERT(iBody);
+ return iBody->CustomCommand( aUid, aParam );
+ }
+