diff -r 000000000000 -r 40261b775718 imagingandcamerafws/imagingfws/BitmapTransform/src/BitmapRotation.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imagingandcamerafws/imagingfws/BitmapTransform/src/BitmapRotation.cpp Tue Feb 02 01:56:55 2010 +0200 @@ -0,0 +1,165 @@ +// Copyright (c) 2001-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 CBitmapRotator object. + +If any errors are encountered this function leaves with an appropriate leave code. + +@return A pointer to a CBitmapRotator object. +*/ + +EXPORT_C CBitmapRotator* CBitmapRotator::NewL() + { + CBitmapRotator* self = new(ELeave) CBitmapRotator(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +/* +Constructor for this class. + +@internalTechnology +*/ +CBitmapRotator::CBitmapRotator() + { + } + +/* +Performs second phase of contruction. + +@internalTechnology +*/ +void CBitmapRotator::ConstructL() + { + iBody = CBitmapRotatorBody::NewL(); + } + +/** +Default destructor for this class. + +Frees all resources owned by the object prior to its destruction. +*/ + +EXPORT_C CBitmapRotator::~CBitmapRotator() + { + Cancel(); + + delete iBody; + } + +/** +Cancels any outstanding action. +*/ + +EXPORT_C void CBitmapRotator::Cancel() + { + if (iBody) + { + iBody->Cancel(); + } + } + +/** +Schedules a rotate/mirror operation on a bitmap supplied in the aSrcBitmap paramter and +produces the output pointed to by aTgtBitmap. +The CBitmapRotator is an active object and as such provides asynchronous operations. The result of the +operation is pointed to by aRequestStatus. + +@pre +- aRequestStatus is not a NULL pointer. +- aSrcBitmap is a fully constructed bitmap of unknown size including zero dimension +- aTgtBitmap is a fully constructed bitmap of unknown size including zero dimension +- aAngle is a member of the enumeration TRotationAngle. + +@post +If successful aTgtBitmap contains the rotated bitmap and aRequestStatus points to the value KErrNone. +If unsuccessful the bitmap supplied in aSrcBitmap will remain unaltered. + +@param aRequestStatus + A pointer to the completion status of the asynchronous operation. +@param aSrcBitmap + This bitmap should have been created +@param aTgtBitmap + This bitmap should have been created +@param aAngle + A member of the enumeration TRotationAngle that specifies the rotation mirror operation. + +@panic ENoSourceBitmap + This function panics with TBitmapTransformsMain::ENoSourceBitmap when the aSrcBitmap has not + been constructed ie. its handle is zero. +*/ + +EXPORT_C void CBitmapRotator::Rotate(TRequestStatus* aRequestStatus, CFbsBitmap& aSrcBitmap, CFbsBitmap& aTgtBitmap, TRotationAngle aAngle) + { + ASSERT(iBody); + iBody->Rotate(aRequestStatus, aSrcBitmap, aTgtBitmap, aAngle); + } + +/** +The function Rotate schedules a rotate/mirror operation on a bitmap supplied in the +aBitmap whose output overwrites aBitmap. The result of the +operation is pointed to by aRequestStatus. + +@pre +- aRequestStatus is not a NULL pointer. +- aBitmap is a fully constructed bitmap of unknown size including zero dimension. +- aAngle is a member of the enumeration TRotationAngle. + +@param aRequestStatus + A pointer to the completion status of the asynchronous operation. +@param aBitmap + A reference to a CFbsBitmap. This bitmap should have been created + and is also an output. +@param aAngle + A member of the enumeration TRotationAngle that specifies the rotation mirror operation. + +@panic ENoSourceBitmap + This function panics with TBitmapTransformsMain::ENoSourceBitmap when the aSrcBitmap has not + been constructed ie. its handle is 0. + +@post +- aBitmap contains the rotated bitmap. +- aRequestStatus points to the value KErrorNone. +*/ + +EXPORT_C void CBitmapRotator::Rotate(TRequestStatus* aRequestStatus, CFbsBitmap& aBitmap, TRotationAngle aAngle) + { + ASSERT(iBody); + iBody->Rotate(aRequestStatus, aBitmap, aAngle); + } +/** +Provides custom command capabilties on CBitmapRotator. The command is dispatched on aUid and if +the command is not known KErrNotSupported will be returned. This function is synchronous. + +@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 CBitmapRotator::CustomCommand(TUid aUid, TAny* aParam) + { + ASSERT(iBody); + return iBody->CustomCommand( aUid, aParam ); + }