diff -r 000000000000 -r 15bf7259bb7c uiacceltk/hitchcock/coretoolkit/inc/huicanvaswsswgc.h --- /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 +#include "huicanvaswsgc.h" +#include "huicanvaspainter.h" +#include + +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* aPointerArray) ; + virtual void WsDrawPolyLineNoEndPointL(TPoint* aPointerArray, TInt aCount); + virtual void WsDrawPolygonL(CArrayFix* 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& 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 iWsClipRegion; + RRegionBuf iTempRegion; + RRegionBuf iDefaultClipRegion; + + /** + * ETrue if cache is prepared, EFalse otherwise. + */ + TBool iBitmapPrepared; + + /** + * ETrue if cache is initialized, EFalse otherwise. + */ + TBool iBitmapInitialized; + +}; +#endif // __HUICANVASWSSWGC_H__