uiacceltk/hitchcock/coretoolkit/inc/huicanvaswsswgc.h
changeset 0 15bf7259bb7c
child 8 10534483575f
--- /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__