diff -r d6dafc5d983f -r 1627c337e51e javauis/m2g_qt/src/CM2GRenderContext.cpp --- a/javauis/m2g_qt/src/CM2GRenderContext.cpp Fri Oct 15 12:29:39 2010 +0300 +++ b/javauis/m2g_qt/src/CM2GRenderContext.cpp Fri Oct 29 11:49:32 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-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" @@ -93,22 +93,22 @@ { TRAP_IGNORE(iProxy->DeleteSvgEngineL(iEngineHandle)); } - if(iWindowSurface) - { - delete iWindowSurface; - } - if(targetBitmap) - { + if (iWindowSurface) + { + delete iWindowSurface; + } + if (targetBitmap) + { delete targetBitmap; - } - if(iTargetQImage) - { + } + if (iTargetQImage) + { delete iTargetQImage; - } - if(tempBitmapForMask) - { + } + if (tempBitmapForMask) + { delete tempBitmapForMask; - } + } delete iImgBmp; iFbsSession.Disconnect(); } @@ -117,125 +117,73 @@ // CM2GRenderContext::BindL // ----------------------------------------------------------------------------- void CM2GRenderContext::BindL(TInt& aTargetHandle) - { +{ M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::BindL()"); // get the screen size - TSize screenSize = CEikonEnv::Static()->ScreenDevice()->SizeInPixels(); - + TSize screenSize = CEikonEnv::Static()->ScreenDevice()->SizeInPixels(); + iWindowSurface = (reinterpret_cast(aTargetHandle)); - //wSurfaceType = (Java::GFX::WindowSurfaceType)iWindowSurface->getType(); - wSurfaceType = Java::GFX::WsTypeQtImage; - - iWindowSurface->bind(wSurfaceType); - - switch(wSurfaceType) - { - case Java::GFX::WsTypeQtImage: - User::LeaveIfNull(iOffScreenQImage = iWindowSurface->getQtImage()); - targetBitmap = new CSvgtBitmap ((TInt8*)iOffScreenQImage->bits(), - TSize(iOffScreenQImage->size().width(),iOffScreenQImage->size().height()), - EColor16MA,iOffScreenQImage->bytesPerLine()); - break; + + iWindowSurface->bind(Java::GFX::WsTypeQtImage); + + wSurfaceType = (Java::GFX::WindowSurfaceType)iWindowSurface->getType(); - /*TODO for time being..case Java::GFX::WsTypeQtImage: - User::LeaveIfNull(iTargetQImage = iWindowSurface->getQtImage()); - InitializeQImageOffscreenBufferL(screenSize,iTargetQImage); - break;*/ - - case Java::GFX::WsTypeSymbianBitmap: - CFbsBitmap* tempBitmap; - User::LeaveIfNull(tempBitmap = (reinterpret_cast(aTargetHandle)->getSymbianBitmap())); - InitializeCFbsBitmapOffscreenBufferL(screenSize,tempBitmap); - //iOffScreenBitmap = new(ELeave) CFbsBitmap(); - break; - - default: - User::Leave(KErrNotSupported); - break; - } - + switch (wSurfaceType) + { + case Java::GFX::WsTypeQtImage: + User::LeaveIfNull(iOffScreenQImage = iWindowSurface->getQtImage()); + targetBitmap = new CSvgtBitmap((TInt8*)iOffScreenQImage->bits(), + TSize(iOffScreenQImage->size().width(),iOffScreenQImage->size().height()), + EColor16MA,iOffScreenQImage->bytesPerLine()); + break; + + case Java::GFX::WsTypeSymbianBitmap: + break; + + default: + User::Leave(KErrNotSupported); + break; } +} + // ----------------------------------------------------------------------------- -// CM2GRenderContext::InitializeQImageOffscreenBufferL -// ----------------------------------------------------------------------------- -void CM2GRenderContext::InitializeQImageOffscreenBufferL(TSize aScreenSize,QImage* aQimage) - { - QSize aSize; - aSize.setHeight(aScreenSize.iHeight); - aSize.setWidth(aScreenSize.iWidth); - iOffScreenQImage = new QImage(aSize,aQimage->format()); - - //TODO For time being the format is EColor16MU - targetBitmap = new CSvgtBitmap ((TInt8*)iOffScreenQImage->bits(), - TSize(iOffScreenQImage->size().width(),iOffScreenQImage->size().height()), - EColor16MU,iOffScreenQImage->bytesPerLine()); - } - -// ----------------------------------------------------------------------------- -// CM2GRenderContext::InitializeCFbsBitmapOffscreenBufferL -// ----------------------------------------------------------------------------- -void CM2GRenderContext::InitializeCFbsBitmapOffscreenBufferL(TSize aScreenSize,CFbsBitmap* aBitmap) - { - - iOffScreenBitmap = new(ELeave) CFbsBitmap(); - User::LeaveIfError( - iOffScreenBitmap->Create(aScreenSize, aBitmap->DisplayMode())); - -// TODO check for stride in case of bitmap. -// iTargetBitmap = new CSvgtBitmap( (TInt8*)iOffScreenBitmap->DataAddress() ,aScreenSize,iOffScreenBitmap->DisplayMode()/*KDefaultDisplayMode TODO chk this*/,iOffScreenBitmap->ScanLineLength(iOffScreenBitmap->SizeInPixels().iWidth,KDefaultDisplayMode) ); - } - -// ----------------------------------------------------------------------------- -// CM2GRenderContext::GetImgHandleL -// ----------------------------------------------------------------------------- -/* - * TODO we don't need method anymore as now we need Surface handle - * TM2GBitmapHandle CM2GRenderContext::GetImgHandleL() const -{ - User::LeaveIfNull(iImgBmp); - - return REINTERPRET_CAST(TM2GBitmapHandle, iImgBmp); -}*/ - - // ----------------------------------------------------------------------------- // CM2GRenderContext::InitImageBitmapL // ----------------------------------------------------------------------------- void CM2GRenderContext::InitImageBitmapL() - { +{ M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::InitImageBitmapL() - begin"); // get the screen size TSize screenSize = CEikonEnv::Static()->ScreenDevice()->SizeInPixels(); switch (wSurfaceType) - { - case Java::GFX::WsTypeQtImage: - { - break; - } - case Java::GFX::WsTypeSymbianBitmap: - { - break; - } - - default: - break; - } + { + case Java::GFX::WsTypeQtImage: + { + break; + } + case Java::GFX::WsTypeSymbianBitmap: + { + break; + } + + default: + break; + } M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::InitImageBitmapL() - end"); - } -// ----------------------------------------------------------------------------- +} // CM2GRenderContext::ReleaseL // ----------------------------------------------------------------------------- void CM2GRenderContext::ReleaseL() - { +{ M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::ReleaseL() - begin"); - + iTargetQImage = NULL; iOffScreenQImage = NULL; iWindowSurface->release(); M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::ReleaseL() - end"); - } +} // ----------------------------------------------------------------------------- // CM2GRenderContext::RenderL @@ -307,7 +255,7 @@ // CM2GRenderContext::ConstructL // ----------------------------------------------------------------------------- void CM2GRenderContext::ConstructL(MM2GSVGProxy* aProxy) - { +{ // Init member variables SetTransparency(MM2GRenderContext::KFullOpaque); @@ -327,7 +275,7 @@ User::LeaveIfError(iFbsSession.Connect()); M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::ConstructL() - end"); - } +} // ----------------------------------------------------------------------------- // CM2GRenderContext::PrepareViewbox // ----------------------------------------------------------------------------- @@ -366,11 +314,11 @@ } void CM2GRenderContext::RenderLCDUIL( - TM2GSvgDocumentHandle& aSvgDocHandle, - TReal32 aCurrentTime, - const TRect& aViewbox, - const TPoint& aAnchor) - { + TM2GSvgDocumentHandle& aSvgDocHandle, + TReal32 aCurrentTime, + const TRect& /*aViewbox*/, + const TPoint& /*aAnchor*/) +{ M2G_DEBUG_4("M2G_DEBUG: CM2GRenderContext::RenderL() viewbox: x=%d, y=%d, w=%d, h=%d begin", aViewbox.iTl.iX, aViewbox.iTl.iY, aViewbox.Size().iWidth, aViewbox.Size().iHeight); // No need to render if content is fully transparency (i.e. alpha=0) @@ -379,47 +327,29 @@ return; } - QStringList list; - list <<"QImage-Format_RGB32"; - TBuf8<32> fname; - // 1: render the svg document on the iImgBmp iProxy->RenderDocumentL( iEngineHandle, aSvgDocHandle, - (TM2GSvgBitmapHandle)targetBitmap + (TM2GSvgBitmapHandle)targetBitmap , (TUint)NULL, aCurrentTime); - - fname.Zero(); - fname.Format(_L8("c:\\%s.bmp"), list.at(0).toLocal8Bit().constData()); - TBool ret = iOffScreenQImage->save((const char*)fname.PtrZ()); - - QPixmap pixmap = QPixmap::fromImage(*iOffScreenQImage); - tempBitmapForMask = pixmap.toSymbianCFbsBitmap(); - - TFileName bitmapFilename; - bitmapFilename.Copy(_L("c:\\bugbitmap")); - bitmapFilename.AppendNum(tempBitmapForMask->Handle()); - bitmapFilename.Append(_L(".bmp")); - SaveBitmapL(*tempBitmapForMask, bitmapFilename); - //TODO Release function should be called from FrameWork - //iWindowSurface->release(); - M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::RenderL() end"); - } + + M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::RenderL() end"); +} // ----------------------------------------------------------------------------- -/*TODO - * Write the separate RenderDocumentL method for QImage and CFbsBitmap +/* + * Write the separate RenderDocumentL method for QImage and CFbsBitmap * also handle subsequent BitBlt and * CreateAlphaBlendMaskL * */ void CM2GRenderContext::RenderESWTL( TM2GSvgDocumentHandle& aSvgDocHandle, TReal32 aCurrentTime, - const TRect& aViewbox, - const TPoint& aAnchor, + const TRect& /*aViewbox*/, + const TPoint& /*aAnchor*/, TBool /*aUseNativeClear*/, - TInt* aReturnData) + TInt* /*aReturnData*/) { M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::RenderESWTL() Start"); // No need to render if content is fully transparency (i.e. alpha=0) @@ -427,139 +357,13 @@ { return; } - + // 1: render the svg document on the iImgBmp - iProxy->RenderDocumentL(iEngineHandle, - aSvgDocHandle, - (TM2GSvgBitmapHandle)targetBitmap, (TUint)NULL, aCurrentTime); - M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::RenderESWTL() end"); - -} -// CM2GRenderContext::CreateAlphaBlendMask -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// CM2GRenderContext::ClearBitmapL -// ----------------------------------------------------------------------------- -void CM2GRenderContext::ClearBitmapL(CFbsBitmap* aBmp) -{ - M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::ClearBitmap - begin"); + iProxy->RenderDocumentL(iEngineHandle, + aSvgDocHandle, + (TM2GSvgBitmapHandle)targetBitmap, (TUint)NULL, aCurrentTime); + M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::RenderESWTL() end"); - User::LeaveIfNull(aBmp); - - TM2GBitmapLock lock(aBmp); - - TSize size = aBmp->SizeInPixels(); - TInt scanlineLength = aBmp->ScanLineLength(size.iWidth, aBmp->DisplayMode()); - - TUint32* buf = aBmp->DataAddress(); - char* bufBytes = REINTERPRET_CAST(char*, buf); - - Mem::FillZ(bufBytes, size.iHeight * scanlineLength); - - M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::ClearBitmap - end"); } - -void CM2GRenderContext::ClearSurfaceL(TM2GSvgBitmapHandle aSvgtBmpHandle ) - { - M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::ClearBitmap - begin"); -//TODO As Currently we are not using this functionality. -/* switch(wSurfaceType) - { - case Java::GFX::WsTypeQtImage: - QImage* tempQImage; - User::LeaveIfNull(tempQImage = (reinterpret_cast(aSvgtBmpHandle)->getQtImage())); - //TODO Do we need to lock the qimage as implemented below TM2GBitmapLock lock(tempBitmap);? - QSize sizeQimage = tempQImage->size();//TODO Check for SizeInPixels - TInt scanlineLengthQimage = tempQImage->bytesPerLine(); - //uchar* bufBytesQimage = REINTERPRET_CAST(uchar*, tempQImage->bits()); - - Mem::FillZ(tempQImage->bits(), sizeQimage.height() * scanlineLengthQimage); - - M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::ClearSurface Qimage Clear function- end"); - break; - - case Java::GFX::WsTypeSymbianBitmap: - CFbsBitmap* tempBitmap; - User::LeaveIfNull(tempBitmap = (reinterpret_cast(aSvgtBmpHandle)->getSymbianBitmap())); - TM2GBitmapLock lock(tempBitmap); - TSize sizeBmp = tempBitmap->SizeInPixels(); - TInt scanlineLengthBmp = tempBitmap->ScanLineLength(sizeBmp.iWidth, tempBitmap->DisplayMode()); - TUint32* bufBmp = tempBitmap->DataAddress(); - char* bufBytesBmp = REINTERPRET_CAST(char*, bufBmp); - - Mem::FillZ(bufBytesBmp, sizeBmp.iHeight * scanlineLengthBmp); - - M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::ClearSurface Bitmap Clear function- end"); - break; - - default: - M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::ClearBitmap Type Not Supported.- end"); - User::Leave(KErrNotSupported); - break; - } - */ - } - -// ----------------------------------------------------------------------------- -// CM2GRenderContext::FillBitmapL -// ----------------------------------------------------------------------------- -void CM2GRenderContext::FillBitmapL(CFbsBitmap* aBmp, const TUint8& aChar) -{ - M2G_DEBUG_1("M2G_DEBUG: CM2GRenderContext::FillBitmap() filled with=%d - begin", aChar); - User::LeaveIfNull(aBmp); - TM2GBitmapLock lock(aBmp); - - TSize size = aBmp->SizeInPixels(); - TInt scanlineLength = aBmp->ScanLineLength(size.iWidth, aBmp->DisplayMode()); - - TUint32* buf = aBmp->DataAddress(); - char* bufBytes = REINTERPRET_CAST(char*, buf); - - Mem::Fill(bufBytes, size.iHeight * scanlineLength, aChar); - - M2G_DEBUG_0("M2G_DEBUG: CM2GRenderContext::FillBitmap - end"); -} - -// ----------------------------------------------------------------------------- -// CM2GRenderContext::GetBufferHandleL -// ----------------------------------------------------------------------------- -TM2GSvgBitmapHandle CM2GRenderContext::GetBufferHandleL() const - { - switch(wSurfaceType) - { - case Java::GFX::WsTypeQtImage: - User::LeaveIfNull(iOffScreenQImage); - return REINTERPRET_CAST(TM2GSvgBitmapHandle , iOffScreenQImage); - break; - - case Java::GFX::WsTypeSymbianBitmap: - User::LeaveIfNull(iOffScreenBitmap); - return REINTERPRET_CAST(TM2GSvgBitmapHandle , iOffScreenBitmap); - break; - - default: - User::Leave(KErrNotSupported); - break; - } - - } - -//CODE to check the Bitmap Contain. -TInt CM2GRenderContext::SaveBitmapL(const CFbsBitmap& aNVGBitmap, const TFileName& aFileName) - { - TFileName bitmapFilename; - bitmapFilename.Copy(aFileName); - RFs aFs; - User::LeaveIfError(aFs.Connect()); - CImageEncoder * imgEncoder = 0; - TRequestStatus requesStatus = 0; - imgEncoder = CImageEncoder::FileNewL(aFs, bitmapFilename, _L8("image/bmp"), CImageEncoder::EOptionAlwaysThread); - imgEncoder->Convert(&requesStatus, aNVGBitmap); - User::WaitForRequest(requesStatus); - delete imgEncoder; - aFs.Close(); - return 0; - } - M2G_NS_END