--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/BubbleManager/Src/telbubbleimagescaler.cpp Wed Sep 01 12:30:10 2010 +0100
@@ -0,0 +1,164 @@
+/*
+* Copyright (c) 2010 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: Ctelbubbleimagescaler implementation
+*
+*/
+
+#include "telbubbleimagescaler.h"
+#include "BMBubbleDebug.h"
+#include <bitmaptransforms.h>
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CTelBubbleImageScaler::CTelBubbleImageScaler(
+ MTelBubbleImageScalerObserver& aObserver) :
+ CActive(CActive::EPriorityStandard), iObserver(aObserver), iState(EScalingIdle),
+ iScaler( NULL )
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// NewLC
+// ---------------------------------------------------------------------------
+//
+CTelBubbleImageScaler* CTelBubbleImageScaler::NewLC(
+ MTelBubbleImageScalerObserver& aObserver)
+ {
+ CTelBubbleImageScaler* self = new (ELeave) CTelBubbleImageScaler(
+ aObserver);
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// NewL
+// ---------------------------------------------------------------------------
+//
+CTelBubbleImageScaler* CTelBubbleImageScaler::NewL(
+ MTelBubbleImageScalerObserver& aObserver)
+ {
+ CTelBubbleImageScaler* self = CTelBubbleImageScaler::NewLC(aObserver);
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CTelBubbleImageScaler::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CTelBubbleImageScaler::ConstructL()
+ {
+ CActiveScheduler::Add( this );
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CTelBubbleImageScaler::~CTelBubbleImageScaler()
+ {
+ if ( iScaler )
+ {
+ iScaler->Cancel(); // Cancel any request, if outstanding
+ }
+
+ delete iScaler;
+ iState = EScalingIdle;
+ }
+
+// ---------------------------------------------------------------------------
+// CTelBubbleImageScaler::StartScaleL
+// ---------------------------------------------------------------------------
+//
+void CTelBubbleImageScaler::StartScaleL(CFbsBitmap* aSrc, CFbsBitmap* aTarget)
+ {
+ BM_TRACE_( "CTelBubbleImageScaler::StartScaleL()" );
+ if ( !iScaler )
+ {
+ iScaler = CBitmapScaler::NewL();
+ }
+
+ iScaledBitmap = aTarget;
+
+ iScaler->SetQualityAlgorithm( CBitmapScaler::EMaximumQuality );
+ iScaler->Scale( &iStatus, *aSrc, *aTarget, EFalse );
+ iState = EScalingStarted;
+ SetActive();
+ }
+
+// ---------------------------------------------------------------------------
+// CTelBubbleImageScaler::DoCancel
+// ---------------------------------------------------------------------------
+//
+void CTelBubbleImageScaler::DoCancel()
+ {
+ BM_TRACE_( "CTelBubbleImageScaler::DoCancel()" );
+ if ( iScaler )
+ {
+ iScaler->Cancel();
+ }
+
+ iObserver.ImageScalingComplete( KErrCancel, iScaledBitmap );
+ iState = EScalingDone;
+ iScaledBitmap = NULL;
+ }
+
+// ---------------------------------------------------------------------------
+// CTelBubbleImageScaler::RunL
+// ---------------------------------------------------------------------------
+//
+void CTelBubbleImageScaler::RunL()
+ {
+ BM_TRACE_( "CTelBubbleImageScaler::RunL()" );
+ iState = EScalingDone;
+ TInt status = iStatus.Int();
+ iObserver.ImageScalingComplete( status, iScaledBitmap );
+ iScaledBitmap = NULL;
+ }
+
+// ---------------------------------------------------------------------------
+// CTelBubbleImageScaler::RunError
+// ---------------------------------------------------------------------------
+//
+TInt CTelBubbleImageScaler::RunError( TInt aError )
+ {
+ BM_TRACE_( "CTelBubbleImageScaler::RunError()" );
+ iState = EScalingDone;
+ iObserver.ImageScalingComplete( aError, iScaledBitmap );
+ iScaledBitmap = NULL;
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// CTelBubbleImageScaler::SetState
+// ---------------------------------------------------------------------------
+//
+void CTelBubbleImageScaler::SetState(TState aState)
+ {
+ BM_TRACE_1( "CTelBubbleImageScaler::SetState(): %d", aState );
+ iState = aState;
+ }
+
+// ---------------------------------------------------------------------------
+// CTelBubbleImageScaler::GetState
+// ---------------------------------------------------------------------------
+//
+TInt CTelBubbleImageScaler::GetState()
+ {
+ BM_TRACE_1( "CTelBubbleImageScaler::GetState(): %d", iState );
+ return iState;
+ }