--- a/uiacceltk/hitchcock/coretoolkit/src/HuiCanvasVisual.cpp Fri Mar 12 15:47:04 2010 +0200
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiCanvasVisual.cpp Mon Mar 15 12:43:37 2010 +0200
@@ -77,6 +77,9 @@
// For handling possible background surface that window may have
TBool iLayerUsesAlphaFlag;
TRect iLayerExtent;
+
+ RRegionBuf<5> iShapeRegion;
+ TPoint iShapeOrigin;
};
EXPORT_C CHuiCanvasVisual* CHuiCanvasVisual::AddNewL(CHuiControl& aOwnerControl,
@@ -120,6 +123,8 @@
iCanvasVisualData->iLayerUsesAlphaFlag = EFalse;
iCanvasVisualData->iLayerExtent = TRect();
+ iCanvasVisualData->iShapeOrigin = TPoint();
+
// subwindow effects
//EnableBrushesL(ETrue);
}
@@ -166,6 +171,7 @@
iCanvasVisualData->iPaintedRegion.Close();
iCanvasVisualData->iClipRegion.Close();
iCanvasVisualData->iChildCanvasList.Close();
+ iCanvasVisualData->iShapeRegion.Close();
}
delete iCanvasVisualData;
@@ -548,7 +554,14 @@
// Draws background if it has been defined
if (drawVisualContent && IsBackgroundDrawingEnabled())
- {
+ {
+ if (iCanvasVisualData->iCanvasPainter &&
+ !iCanvasVisualData->iLayerExtent.IsEmpty())
+ {
+ // In SW rendering case, we support only clearing with transparent.
+ iCanvasVisualData->iCanvasPainter->ClearCapturingBufferArea(aDisplayRect);
+ }
+
iCanvasVisualData->iBackground->DrawSelf(aGc, aDisplayRect);
}
@@ -1209,6 +1222,32 @@
}
+EXPORT_C void CHuiCanvasVisual::SetShape(const TPoint& aOrigin, const TRegion& aRegion)
+ {
+ iCanvasVisualData->iShapeOrigin = aOrigin;
+ iCanvasVisualData->iShapeRegion.Copy(aRegion);
+ if ( iCanvasVisualData->iShapeRegion.CheckError() )
+ {
+ // fallback to full
+ iCanvasVisualData->iShapeRegion.Clear();
+ }
+ }
+
+EXPORT_C TBool CHuiCanvasVisual::HasCustomShape() const
+ {
+ return iCanvasVisualData->iShapeRegion.Count();
+ }
+
+EXPORT_C TPoint CHuiCanvasVisual::ShapeOrigin() const
+ {
+ return iCanvasVisualData->iShapeOrigin;
+ }
+
+EXPORT_C const TRegion& CHuiCanvasVisual::ShapeRegion() const
+ {
+ return iCanvasVisualData->iShapeRegion;
+ }
+
TBool CHuiCanvasVisual::IsCanvasClippingEnabled() const
{
return iCanvasVisualData->iCanvasFlags & EHuiCanvasFlagEnableCanvasClipping;
@@ -1484,3 +1523,10 @@
}
aRecursivePaintRegion.Tidy();
}
+
+EXPORT_C TRect CHuiCanvasVisual::CommandBufferCoverage(TInt aOrientation)
+ {
+ return iCanvasVisualData->iCanvasPainter->CommandBufferCoverage(aOrientation);
+ }
+
+