--- 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<Java::GFX::WindowSurface*>(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<Java::GFX::WindowSurface*>(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<Java::GFX::WindowSurface*>(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<Java::GFX::WindowSurface*>(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