--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/coretoolkit/inc/huicanvaswsswgc.h Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,223 @@
+/*
+* 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: Definition of CHuiCanvasWsSwGc.
+*
+*/
+
+
+
+#ifndef __HUICANVASWSSWGC_H__
+#define __HUICANVASWSSWGC_H__
+
+#include <uiacceltk/HuiVisual.h>
+#include "huicanvaswsgc.h"
+#include "huicanvaspainter.h"
+#include <bitstd.h>
+
+const TInt KHuiCanvasWsSwGcRegionGranularity = 10;
+
+/**
+ * This class is used internally by the toolkit and thus should
+ * not be used by the applications directly.
+ */
+NONSHARABLE_CLASS(CHuiCanvasWsSwGc) : public CHuiCanvasWsGc
+{
+
+protected:
+ /**
+ * Constructor.
+ */
+ CHuiCanvasWsSwGc();
+
+ /**
+ * Second-phase constructor.
+ */
+ void ConstructL();
+
+public:
+ /**
+ * Constructor.
+ */
+ static CHuiCanvasWsSwGc* NewL();
+
+ /**
+ * Destructor.
+ */
+ ~CHuiCanvasWsSwGc();
+
+public:
+
+ // CFbsBitGc functionality
+ virtual void WsBitBltL(TInt aBitmapHandle, TPoint aPoint);
+ virtual void WsBitBltRectL(TInt aBitmapHandle, TPoint aPoint, TRect aRect) ;
+ virtual void WsBitBltMaskedL(TInt aBitmapHandle, TInt aMaskHandle, TInt aInvertMask, TPoint aPoint, TRect aRect) ;
+ virtual void WsBitBltMaskedPointL(TInt aBitmapHandle, TInt aMaskHandle, TPoint aPoint1, TPoint aPoint2, TRect aRect) ;
+ virtual void WsResetClippingRegionL() ;
+ virtual void WsClearL();
+ virtual void WsClearRectL(TRect& aRect) ;
+ virtual void WsResetBrushPatternL() ;
+ virtual void WsResetFontL() ;
+ virtual void WsDrawArcL(TPoint aPoint1, TPoint aPoint2, TRect aRect) ;
+ virtual void WsDrawPieL(TPoint aPoint1, TPoint aPoint2, TRect aRect) ;
+ virtual void WsDrawBitmap1L(TInt aBitmapHandle, TRect aRect) ;
+ virtual void WsDrawBitmap2L(TInt aBitmapHandle, TRect aRect1, TRect aRect2) ;
+ virtual void WsDrawBitmap3L(TInt aBitmapHandle, TPoint aPoint) ;
+ virtual void WsDrawBitmapMaskedL(TInt aBitmapHandle, TInt aMaskHandle, TInt aInvertMask, TRect& aRect1, TRect& aRect2) ;
+ virtual void WsDrawRoundRectL(TPoint aPoint, TRect& aRect) ;
+ virtual void WsDrawPolyLineL(CArrayFix<TPoint>* aPointerArray) ;
+ virtual void WsDrawPolyLineNoEndPointL(TPoint* aPointerArray, TInt aCount);
+ virtual void WsDrawPolygonL(CArrayFix<TPoint>* aPointerArray, TInt aFillRule ) ;
+ virtual void WsDrawEllipseL(TRect& aRect) ;
+ virtual void WsDrawLineL(TPoint& aStart, TPoint& aEnd) ;
+ virtual void WsDrawLineToL(TPoint& aPoint);
+ virtual void WsDrawLineByL(TPoint& aPoint) ;
+ virtual void WsDrawRectL(TRect& aRect) ;
+ virtual void WsDrawText1L(TPtr& aTextValue, THuiCanvasTextParameters& aTextParameters) ;
+ virtual void WsDrawText2L(TPtr& aTextValue, TPoint& aPoint,THuiCanvasTextParameters& aTextParameters) ;
+ virtual void WsDrawText3L(TPtr& aTextValue, TRect& aRect, THuiCanvasTextParameters& aTextParameters) ;
+ virtual void WsDrawText4L(TPtr& aTextValue, TRect& aRect, TInt aBaselineOffset, TInt aTextAlign, TInt aTextMargin,THuiCanvasTextParameters& aTextParameters) ;
+ virtual void WsDrawText5L(TPtr& aTextValue, TRect& aRect, TInt aBaselineOffset, TInt aTextAlign, TInt aTextMargin,TInt aTextWidth, THuiCanvasTextParameters& aTextParameters) ;
+ virtual void WsDrawTextVertical1L(TPtr& aTextValue, TInt aTextUp, THuiCanvasTextParameters& aTextParameters) ;
+ virtual void WsDrawTextVertical2L(TPtr& aTextValue, TInt aTextUp,TPoint& aPoint, THuiCanvasTextParameters& aTextParameters) ;
+ virtual void WsDrawTextVertical3L(TPtr& aTextValue, TInt aTextUp, TRect& aRect, THuiCanvasTextParameters& aTextParameters) ;
+ virtual void WsDrawTextVertical4L(TPtr& aTextValue, TRect& aRect, TInt aBaselineOffset, TInt aTextUp, TInt aTextAlign, TInt aTextMargin, THuiCanvasTextParameters& aTextParameters) ;
+ virtual void WsDrawTextVertical5L(TPtr& aTextValue, TRect& aRect, TInt aBaselineOffset, TInt aTextUp, TInt aTextAlign, TInt aTextMargin, TInt aTextWidth, THuiCanvasTextParameters& aTextParameters) ;
+ virtual void WsMoveToL( TPoint& aPoint) ;
+ virtual void WsMoveByL( TPoint& aPoint) ;
+ virtual void WsPlotL(TPoint& aPoint) ;
+ virtual void WsResetL() ;
+ virtual void WsSetBrushColorL( TRgb aColor) ;
+ virtual void WsSetBrushOriginL( TPoint& aPoint) ;
+ virtual void WsSetBrushStyleL( TInt aStyle) ;
+ virtual void WsSetClippingRegionL( RRegion& aRegion) ;
+ virtual void WsSetDrawModeL( TInt aDrawModew) ;
+ virtual void WsSetOriginL( TPoint& aOrigin);
+ virtual void WsSetPenColorL( TRgb aColor) ;
+ virtual void WsSetPenStyleL( TInt aStyle) ;
+ virtual void WsSetPenSizeL( TInt aWidth, TInt aHeight) ;
+ virtual void WsSetTextShadowColorL( TRgb aColor) ;
+ virtual void WsSetCharJustificationL( TInt aExcessiveWidth, TInt aNumGap) ;
+ virtual void WsSetWordJustificationL( TInt aExcessiveWidth, TInt aNumGap) ;
+ virtual void WsSetUnderlineStyleL( TInt aValue) ;
+ virtual void WsSetBrushPatternL( TInt aValue) ;
+ virtual void WsSetFontL( TInt aFontId) ;
+ virtual void WsCopyRectL( TPoint& aPoint, TRect& aRect) ;
+ virtual void WsCopySettingsL() ;
+ virtual void WsUpdateJustificationL( TPtr& aTextValue) ;
+ virtual void WsUpdateJustificationVerticalL( TInt aValue, TPtr& aTextValue) ;
+ virtual void WsSetFontNoDuplicateL( TInt aCurrentFont) ;
+ virtual void WsSetClippingRectL( TRect& aRect) ;
+ virtual void WsCancelClippingRectL() ;
+ virtual void WsSetFadedL( TInt& aFaded) ;
+ virtual void WsSetFadingParametersL( TInt aFaded1, TInt aFaded2) ;
+ virtual void WsFadeAreaL( RRegion& aRegion) ;
+ virtual void WsMapColorsL() ;
+ virtual void WsSetUserDisplayModeL( TInt aMode) ;
+ virtual void WsUseFontL(TInt aCurrentFont) ;
+
+ // Extended CFbsBitGc functionality
+ virtual void WsCombinedBitBltMaskedL(TRect aDestinationRect, const RArray<THuiCachedCombinedImageParams>& aBlits);
+
+ // Canvas functionality
+ virtual void BeginActionL(TInt aAction, TRect aDisplayRect,const CHuiCanvasVisual& aUser, TBool aIsCachePrepared, const TRegion& aUpdateRegion);
+ virtual void EnableUpdateRegion(const TRegion& aUpdateRegion, TBool aClear);
+ virtual void DisableUpdateRegion();
+ virtual void EndActionL(const TRegion& aUpdateRegion, TBool aUpdateDisplay);
+ virtual TInt SetCapturingBufferL(CFbsBitmap* aTarget);
+ virtual CHuiCanvasGc& CanvasGc() const;
+ virtual void SetPositionDelta( TPoint& aPoint );
+ virtual void ClearCache();
+
+ virtual void SetRelativeOrientation(CHuiGc::TOrientation aOrientation);
+
+ virtual TBool IsRenderBufferEnabled() const;
+ virtual TBool IsRenderBufferPrepared() const;
+ virtual TBool IsRenderBufferInitialized() const;
+
+ virtual TInt EnableRenderbuffer(TBool aEnable = ETrue);
+ virtual THuiCanvasWsGcType Type() const;
+
+protected:
+
+ void DoBeginDrawL(TBool aIsCachePrepared);
+ void DoEndDrawL();
+ TPoint AdjustCoordinates(TPoint aPoint);
+ TRect AdjustCoordinates(TRect aRect);
+ TDisplayMode SelectDisplayMode();
+ TRect RoundedDisplayRect() const;
+ CFbsBitmap* CreateMovedMaskL(CFbsBitmap& aOriginalMask, TPoint aNewTopLeftCorner);
+ TBool IsRenderingEnabled() const;
+
+
+ /**
+ * Drawing related data
+ */
+ TRect iWsClipRect;
+ TPoint iWsOrigin;
+
+ /**
+ * The difference between the original position (when first drawn) of the
+ * window and the current position after visual position has been changed
+ */
+ TPoint iPosDelta;
+
+ /**
+ * Currently ongiong action, scan or draw.
+ */
+ TInt iAction;
+
+ /**
+ * Flag to tell wheter something really has been drawn into this gc
+ */
+ TBool iIsReallyDirty;
+
+ /**
+ * Backbuffer
+ */
+ CFbsBitGc* iBitGc;
+ CFbsBitmap* iBitBitmap;
+ CFbsBitmapDevice* iBitDevice;
+
+ /**
+ * Buffer for capturing window drawing into bitmap
+ */
+ CFbsBitGc* iCapturingBitGc;
+ CFbsBitmap* iCapturingBitBitmap;
+ CFbsBitmapDevice* iCapturingBitDevice;
+
+ /**
+ * Canvas related
+ */
+ CHuiCanvasGc* iCanvasGc;
+ const CHuiCanvasVisual* iVisual;
+
+ /**
+ * RRegionBuf is used instead of RRegion for better performance.
+ */
+ RRegionBuf<KHuiCanvasWsSwGcRegionGranularity> iWsClipRegion;
+ RRegionBuf<KHuiCanvasWsSwGcRegionGranularity> iTempRegion;
+ RRegionBuf<KHuiCanvasWsSwGcRegionGranularity> iDefaultClipRegion;
+
+ /**
+ * ETrue if cache is prepared, EFalse otherwise.
+ */
+ TBool iBitmapPrepared;
+
+ /**
+ * ETrue if cache is initialized, EFalse otherwise.
+ */
+ TBool iBitmapInitialized;
+
+};
+#endif // __HUICANVASWSSWGC_H__