--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/coretoolkit/inc/huicanvaswshwgc.h Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,290 @@
+/*
+* Copyright (c) 2006-2007 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 CHuiCanvasWsHwGc.
+*
+*/
+
+
+
+#ifndef __HUICANVASWSHWGC_H__
+#define __HUICANVASWSHWGC_H__
+
+#include <uiacceltk/HuiVisual.h>
+#include "uiacceltk/HuiTextMesh.h"
+#include "huicanvaswsgc.h"
+#include "huicanvaspainter.h"
+#include "huicanvasrenderbuffer.h"
+
+const TInt KHuiCanvasWsHwGcRegionGranularity = 10;
+
+/**
+ * This class is used internally by the toolkit and thus should
+ * not be used by the applications directly.
+ */
+NONSHARABLE_CLASS(CHuiCanvasWsHwGc) : public CHuiCanvasWsGc
+{
+
+public:
+
+ /**
+ * Constructor.
+ */
+ static CHuiCanvasWsHwGc* NewL();
+
+ /**
+ * Destructor.
+ */
+ ~CHuiCanvasWsHwGc();
+
+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;
+
+ void BeginDrawL(TRect aDisplayRect,const CHuiCanvasVisual& aUser, TBool aIsCachePrepared, const TRegion& aUpdateRegion);
+ void EndDrawL(const TRegion& aUpdateRegion, TBool aUpdateDisplay);
+ void BeginScanL(TRect aDisplayRect,const CHuiCanvasVisual& aUser, TBool aIsCachePrepared, const TRegion& aUpdateRegion);
+ void EndScanL(const TRegion& aUpdateRegion, TBool aUpdateDisplay);
+
+public:
+
+ void DoWsClearRectL(const THuiRealRect& aRect );
+
+private:
+
+ /**
+ * Constructor.
+ */
+ CHuiCanvasWsHwGc();
+
+ /**
+ * Second-phase constructor.
+ */
+ void ConstructL();
+
+
+ THuiCachedGcParams CachedGcParams();
+
+ void ExpandDirtyRegion(TRect aNewRect);
+
+ void AdjustCoordinates(TRect& aRect, TBool aUseWsOrigin = ETrue );
+
+ void AdjustCoordinates(TPoint& aPoint , TBool aUseWsOrigin = ETrue );
+
+ void DrawTextBrush( THuiRealRect& aRect );
+
+ TRect RoundedDisplayRect();
+
+ TBool IsRenderingEnabled() const;
+
+ TBool IsRenderBufferUpdateOngoing() const;
+
+ THuiCanvasDrawMode SelectCanvasDrawMode(TInt aWsDrawMode);
+
+ void BindRenderBuffer(CHuiCanvasRenderBuffer* aRenderbuffer, const TRegion& aUpdateRegion);
+
+ void UnBindRenderBuffer(CHuiCanvasRenderBuffer* aRenderbuffer);
+
+ void UseBrushPattern();
+
+ void DiscardBrushPattern();
+
+ TBool IsDifferent(const TRgb& aFirst, const TRgb& aSecond, TBool aIgnoreAlpha);
+
+ /**
+ * UseCanvasState
+ *
+ * Saves canvas state for color, opacity, drawmode, pen width and polygon drawmode
+ */
+ void UseCanvasState();
+
+ /**
+ * UseWsState
+ *
+ * Restores canvas state (stored by the call of UseCanvasState) for color,
+ * opacity, drawmode, pen width and polygon drawmode
+ */
+ void UseWsState();
+
+private:
+
+ /**
+ * CFbsBitGc attributes
+ */
+ TInt iWsCurrentFont;
+ TPoint iWsPenPosition;
+ TPoint iWsOrigin;
+ TRgb iWsFadeColor;
+ TRgb iWsPenColor;
+ TRgb iWsBrushColor;
+ TInt iWsPenStyle;
+ TInt iWsDrawMode;
+ TInt iWsBrushStyle;
+ TInt iWsShadowMode;
+ TInt iWsStrikethrough;
+ TInt iWsUnderline;
+ TInt iWsUserDisplayMode;
+ TRgb iWsShadowColor;
+ TSize iWsPenSize;
+ TInt iWsBrushPattern;
+ TPoint iWsBrushOrigin;
+
+ /**
+ * RRegionBuf is used instead of RRegion for better performance.
+ */
+ RRegionBuf<KHuiCanvasWsHwGcRegionGranularity> iWsClipRegion;
+ RRegionBuf<KHuiCanvasWsHwGcRegionGranularity> iTempRegion;
+
+ /**
+ * Canvas internal misc attributes
+ */
+ TInt iAction;
+ CHuiCanvasGc* iCanvasGc;
+ CHuiCanvasVisual* iVisual;
+ TBool iAllCommandsSupported;
+
+ /**
+ * The difference between the original position (when first drawn) of the
+ * window and the current position after visual position has been changed
+ */
+ TPoint iPosDelta;
+
+ /**
+ * Render buffer is (or is not) ready to be drawn into display
+ */
+ TBool iRenderBufferPrepared;
+
+ /**
+ * Render buffer is (or is not) used when drawing
+ */
+ TBool iRenderBufferEnabled;
+
+ /**
+ * Render buffer is (or is not) available when drawing. It may be unavailable for
+ * various reasons, e.g. when memory is low.
+ */
+ TBool iRenderBufferAvailable;
+
+ /**
+ * Render buffer is (or is not) initalized. It has just been created, resized or recycled.
+ */
+ TBool iRenderBufferInitialized;
+
+ /**
+ * Relative orientation to display orientation. E.g. after layout switch display is in
+ * EOrientationCCW90 but stored old drawing commands have orientation EOrientationNormal. In that
+ * case setting iRelativeOrientation to EOrientationCW90 causes drawing commands to appear
+ * at their original orientation in the physical screen.
+ *
+ */
+ CHuiGc::TOrientation iRelativeOrientation;
+
+ TRgb iOldColor;
+ TReal32 iOldOpacity;
+ THuiCanvasDrawMode iOldDrawMode;
+ TInt iOldPenWidth;
+ THuiFillMode iOldPolygonDrawMode;
+#ifdef __WINS__
+ TInt iPushCount;
+#endif
+};
+#endif // __HUICANVASWSHWGC_H__