diff -r f7f0874bfe7d -r 74c9f037fd5d ui/uiengine/medialists/src/glximagereader.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/uiengine/medialists/src/glximagereader.cpp Fri Mar 19 09:28:59 2010 +0200 @@ -0,0 +1,211 @@ +/* +* Copyright (c) 2008-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: glximagereader.cpp +* +*/ + + +#include +#include +#include +#include + +//for DRM +#include +#include +#include + +#include "glximagereader.h" + + +// --------------------------------------------------------- +// CGlxImageReader::NewL +// --------------------------------------------------------- +// +CGlxImageReader* CGlxImageReader::NewL(MImageReadyCallBack& aNotify) + { + TRACER("CGlxImageReader::NewL"); + + CGlxImageReader* self = CGlxImageReader::NewLC( aNotify); + CleanupStack::Pop(self); + return self; + } + +// --------------------------------------------------------- +// CGlxImageReader::NewLC +// --------------------------------------------------------- +// +CGlxImageReader* CGlxImageReader::NewLC(MImageReadyCallBack& aNotify) + { + TRACER("CGlxImageReader::NewLC"); + + CGlxImageReader* self = new(ELeave) CGlxImageReader(aNotify); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------- +// CGlxImageReader::CGlxImageReader +// --------------------------------------------------------- +// +CGlxImageReader::CGlxImageReader(MImageReadyCallBack& aNotify) +:CActive(0),iNotify(aNotify) + { + //no implementation + } + +// --------------------------------------------------------- +// CGlxImageReader::~CGlxImageReader +// --------------------------------------------------------- +// +CGlxImageReader::~CGlxImageReader() + { + TRACER("CGlxImageReader::~"); + if(iImageDecoder) + { + Cancel(); + delete iImageDecoder; + } + + if(iFrame) + { + delete iFrame; + } + + if(iImgViewerMgr) + { + iImgViewerMgr->Close(); + } + } + +// --------------------------------------------------------- +// CGlxImageReader::ConstructL +// --------------------------------------------------------- +// +void CGlxImageReader::ConstructL() + { + TRACER("CGlxImageReader::ConstructL"); + + CActiveScheduler::Add(this); + + iImgViewerMgr = CGlxImageViewerManager::InstanceL(); + if (!iImgViewerMgr) + { + return; + } + + TInt errInImage = KErrGeneral; + if (iImgViewerMgr->IsPrivate()) + { + if ( &(iImgViewerMgr->ImageFileHandle()) != NULL ) + { + TRAP(errInImage,iImageDecoder = CImageDecoder::FileNewL(iImgViewerMgr->ImageFileHandle(), ContentAccess::EPeek)); + } + } + else + { + if ( iImgViewerMgr->ImageUri() != NULL ) + { + TRAP(errInImage,iImageDecoder = CImageDecoder::FileNewL(CCoeEnv::Static()->FsSession(), iImgViewerMgr->ImageUri()->Des())); + } + } + if (errInImage != KErrNone) + { + User::Leave(errInImage); + } + + if ( iImageDecoder ) + { + iFrame = new (ELeave) CFbsBitmap(); + iFrame->Create(iImageDecoder->FrameInfo(0).iOverallSizeInPixels, + iImageDecoder->FrameInfo(0).iFrameDisplayMode); + iImageDecoder->Convert(&iStatus, *iFrame, 0); + SetActive(); + } + } + + +// --------------------------------------------------------- +// CGlxImageReader::DoCancel +// --------------------------------------------------------- +// +void CGlxImageReader::DoCancel() + { + TRACER("CGlxImageReader::DoCancel"); + iImageDecoder->Cancel(); + } + +// --------------------------------------------------------- +// CGlxImageReader::RunL +// --------------------------------------------------------- +// +void CGlxImageReader::RunL() + { + TRACER("CGlxImageReader::RunL"); + + TSize size = TSize(); + TInt reqStatus = iStatus.Int(); + if (reqStatus == KErrNone && iFrame) + { + size = iFrame->SizeInPixels(); + } + GLX_DEBUG2("CGlxImageReader::RunL() reqStatus=%d", reqStatus); + iNotify.ImageSizeReady(reqStatus, size); + } +// --------------------------------------------------------- +// CGlxImageReader::GetDRMRightsL +// --------------------------------------------------------- +// +TInt CGlxImageReader::GetDRMRightsL(TInt aAttribute) + { + TRACER("CGlxImageReader::GetDRMRightsL"); + + TInt value = KErrNone; + TInt error = KErrNone; + CContent* content = NULL; + if(iImgViewerMgr->IsPrivate()) + { + if ( &(iImgViewerMgr->ImageFileHandle()) != NULL ) + { + content = CContent::NewLC(iImgViewerMgr->ImageFileHandle()); + } + } + else + { + if ( iImgViewerMgr->ImageUri() != NULL ) + { + content = CContent::NewLC(iImgViewerMgr->ImageUri()->Des()); + } + } + __ASSERT_ALWAYS(content, Panic(EGlxPanicNullPointer)); + error = content->GetAttribute(aAttribute, value); + CleanupStack::PopAndDestroy( content ); + GLX_DEBUG2("CGlxImageReader::GetDRMRightsL value=%d", value); + if(error != KErrNone) + { + switch ( aAttribute ) + { + case ContentAccess::EIsProtected : + value = ETrue; + break; + case ContentAccess::ECanView : + value = EFalse; + break; + default: + value = EFalse; + } + } + return value; + }