uifw/EikStd/dlginc/aknrecordinggc.h
changeset 0 2f259fa3e83a
child 4 8ca85d2f0db7
equal deleted inserted replaced
-1:000000000000 0:2f259fa3e83a
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Recording graphics context used to cache drawing commands.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include <w32std.h>
       
    20 
       
    21 class CFbsBitmap;
       
    22 class CFbsBitGc;
       
    23 class CFbsBitmapDevice;
       
    24 
       
    25 NONSHARABLE_CLASS( CAknRecordingGc ) : public CWindowGc
       
    26     {
       
    27 public:
       
    28 //	CWindowGc(CWsScreenDevice *aDevice);
       
    29 	CAknRecordingGc(CWindowGc *aRealGc);
       
    30 	virtual ~CAknRecordingGc();
       
    31 	void ConstructL(  const TSize& aSize );
       
    32 	virtual void Activate(RDrawableWindow &aDevice);
       
    33 	virtual void Deactivate();
       
    34 //====================FROM CGraphicsContext.H===============================
       
    35 	virtual CGraphicsDevice* Device() const;
       
    36 	virtual void SetOrigin(const TPoint &aPoint=TPoint(0,0));
       
    37 	virtual void SetDrawMode(TDrawMode aDrawingMode);
       
    38 	virtual void SetClippingRect(const TRect& aRect);
       
    39 	virtual void CancelClippingRect();
       
    40 	virtual void Reset();
       
    41 
       
    42 	virtual void UseFont(const CFont *aFont);
       
    43 	virtual void DiscardFont();
       
    44 	virtual void SetUnderlineStyle(TFontUnderline aUnderlineStyle);
       
    45 	virtual void SetStrikethroughStyle(TFontStrikethrough aStrikethroughStyle);
       
    46 // Used to do justified text properly
       
    47 	virtual void SetWordJustification(TInt aExcessWidth,TInt aNumGaps);
       
    48 // Used primarily to get accurate WYSIWYG
       
    49 	virtual void SetCharJustification(TInt aExcessWidth,TInt aNumChars);
       
    50 
       
    51 	virtual void SetPenColor(const TRgb &aColor);
       
    52 	virtual void SetPenStyle(TPenStyle aPenStyle);
       
    53 	virtual void SetPenSize(const TSize& aSize);
       
    54 
       
    55 	virtual void SetBrushColor(const TRgb &aColor);
       
    56 	virtual void SetBrushStyle(TBrushStyle aBrushStyle);
       
    57 	virtual void SetBrushOrigin(const TPoint &aOrigin);
       
    58 	virtual void UseBrushPattern(const CFbsBitmap *aDevice);
       
    59 	virtual void DiscardBrushPattern();
       
    60 //
       
    61 // Move the internal position, as used by DrawLineTo & DrawLineBy, and set by MoveTo,
       
    62 // MoveBy, DrawLine, DrawLineTo, DrawLineBy and DrawPolyline
       
    63 	virtual void MoveTo(const TPoint &aPoint);
       
    64 	virtual void MoveBy(const TPoint &aPoint);
       
    65 	virtual void Plot(const TPoint &aPoint);
       
    66 //
       
    67 //  Line drawing subject to pen color, width and style and draw mode
       
    68 	virtual void DrawArc(const TRect &aRect,const TPoint &aStart,const TPoint &aEnd);
       
    69 	virtual void DrawLine(const TPoint &aPoint1,const TPoint &aPoint2);
       
    70 	virtual void DrawLineTo(const TPoint &aPoint);
       
    71 	virtual void DrawLineBy(const TPoint &aPoint);
       
    72 	virtual void DrawPolyLine(const CArrayFix<TPoint> *aPointList);
       
    73 	virtual void DrawPolyLine(const TPoint* aPointList,TInt aNumPoints);
       
    74 //
       
    75 // Filled outlines
       
    76 // Outlines subject to pen color, width and style and draw mode
       
    77 // (set pen to ENullPen for no outline)
       
    78 // Fill subject to brush style (color, hash or pattern) and origin and
       
    79 // drawing mode (set brush to ENullBrush for no fill)
       
    80 	virtual void DrawPie(const TRect &aRect,const TPoint &aStart,const TPoint &aEnd);
       
    81 	virtual void DrawEllipse(const TRect &aRect);
       
    82 	virtual void DrawRect(const TRect &aRect);
       
    83 	virtual void DrawRoundRect(const TRect &aRect,const TSize &aEllipse);
       
    84 	virtual TInt DrawPolygon(const CArrayFix<TPoint> *aPointList,TFillRule aFillRule=EAlternate);
       
    85 	virtual TInt DrawPolygon(const TPoint* aPointList,TInt aNumPoints,TFillRule aFillRule=EAlternate);
       
    86 //
       
    87 // Uses the bitmap's Twips size and does a "stretch" blit in general
       
    88 	virtual void DrawBitmap(const TPoint &aTopLeft, const CFbsBitmap *aDevice);
       
    89 	virtual void DrawBitmap(const TRect &aDestRect, const CFbsBitmap *aDevice);
       
    90 	virtual void DrawBitmap(const TRect &aDestRect, const CFbsBitmap *aDevice, const TRect &aSourceRect);
       
    91 	virtual void DrawBitmapMasked(const TRect& aDestRect, const CFbsBitmap* aBitmap, const TRect& aSourceRect, const CFbsBitmap* aMaskBitmap, TBool aInvertMask);
       
    92 	virtual void DrawBitmapMasked(const TRect& aDestRect, const CWsBitmap* aBitmap, const TRect& aSourceRect, const CWsBitmap* aMaskBitmap, TBool aInvertMask);
       
    93 //
       
    94 // Text drawing subject to drawing mode
       
    95 // Subject to used font, pen color, drawing mode,
       
    96 // word and char justification
       
    97 	virtual void DrawText(const TDesC &aBuf,const TPoint &aPos);
       
    98 //
       
    99 // Subject to same as above plus brush for background
       
   100 // (set brush to ENullBrush for no effect on background)
       
   101 	virtual void DrawText(const TDesC &aBuf,const TRect &aBox,TInt aBaselineOffset,TTextAlign aHoriz=ELeft,TInt aLeftMrg=0);
       
   102 //================Extra functions from CBitmapContext==============
       
   103 	virtual void Clear();
       
   104 	virtual void Clear(const TRect &aRect);
       
   105 	virtual void CopyRect(const TPoint &anOffset,const TRect &aRect);
       
   106 	virtual void BitBlt(const TPoint &aPos, const CFbsBitmap *aBitmap);
       
   107 	virtual void BitBlt(const TPoint &aDestination, const CFbsBitmap *aBitmap, const TRect &aSource);
       
   108 	virtual void BitBltMasked(const TPoint& aPoint,const CFbsBitmap* aBitmap,const TRect& aSourceRect,const CFbsBitmap* aMaskBitmap,TBool aInvertMask);
       
   109 	virtual void BitBlt(const TPoint &aPoint, const CWsBitmap *aBitmap);
       
   110 	virtual void BitBlt(const TPoint &aDestination, const CWsBitmap *aBitmap, const TRect &aSource);
       
   111 	virtual void BitBltMasked(const TPoint& aPoint,const CWsBitmap *aBitmap,const TRect& aSourceRect,const CWsBitmap *aMaskBitmap,TBool aInvertMask);
       
   112 	virtual void MapColors(const TRect& aRect,const TRgb* aColors,TInt aNumPairs=2,TBool aMapForwards=ETrue);
       
   113 
       
   114 	virtual void DrawTextVertical(const TDesC& aText,const TPoint& aPos,TBool aUp);
       
   115 	virtual void DrawTextVertical(const TDesC& aText,const TRect& aBox,TInt aBaselineOffset,TBool aUp,TTextAlign aVert=ELeft,TInt aMargin=0);
       
   116 //=================Extra functions specific to wserv GDI==============
       
   117 	virtual void SetDitherOrigin(const TPoint& aPoint);
       
   118 	virtual TInt SetClippingRegion(const TRegion &aRegion);
       
   119 	virtual void CancelClippingRegion();
       
   120 	virtual void SetOpaque(TBool aDrawOpaque=ETrue);
       
   121 //=================Functions also supplied by CFbsBitGc==============
       
   122 	virtual void SetFaded(TBool aFaded);
       
   123 	virtual void SetFadingParameters(TUint8 aBlackMap,TUint8 aWhiteMap);
       
   124 	virtual TInt AlphaBlendBitmaps(const TPoint& aDestPt, const CFbsBitmap* aSrcBmp, const TRect& aSrcRect, const CFbsBitmap* aAlphaBmp, const TPoint& aAlphaPt);
       
   125 	virtual TInt AlphaBlendBitmaps(const TPoint& aDestPt, const CWsBitmap* aSrcBmp, const TRect& aSrcRect, const CWsBitmap* aAlphaBmp, const TPoint& aAlphaPt);
       
   126 	
       
   127 	virtual TAny* Interface( TUid aInterfaceId );
       
   128     virtual const TAny* Interface( TUid aInterfaceId ) const;
       
   129     
       
   130 protected:  
       
   131     virtual TInt APIExtension( TUid aUid, TAny*& aOutput, TAny* aInput );
       
   132     
       
   133 public:
       
   134 	void FlushBuffer( const TRect& aRect, TInt aLineToSkip );
       
   135 	void PurgeBuffer();
       
   136 	void PrepareForNewLineL( const TRect& aRect );
       
   137 	void ReplaceLineL( TInt aLine );
       
   138 	void InsertLineL( TInt aLine, const TRect& aRect );
       
   139 	void InsertLineL( TInt aLine );
       
   140 	void AppendLineL();
       
   141 	void PurgeLine( TInt aLine );
       
   142 	void SetLineRect( TInt aLine, const TRect& aRect );
       
   143 	void DeleteLine( TInt aLine );
       
   144 	
       
   145 	void UseBitGc( TBool aUseBitGc );
       
   146 	
       
   147 private:
       
   148     NONSHARABLE_CLASS( CBufferItem ) : public CBase
       
   149         {
       
   150         public:
       
   151         enum TCommandType
       
   152             {
       
   153             EShortText,
       
   154             ELongText,
       
   155             ESetPenColor,
       
   156             EBitBlt1,
       
   157             EBitBlt2,
       
   158             EBitBltMasked1,
       
   159             EUseFont,
       
   160             EDiscardFont,
       
   161             ESetDrawMode,
       
   162             ESetClippingRect,
       
   163             ECancelClippingRect,
       
   164             ESetBrushColor,
       
   165             ESetBrushStyle,
       
   166             EDrawRect,
       
   167             EClear
       
   168             };
       
   169         
       
   170         public:
       
   171             ~CBufferItem();
       
   172             
       
   173             TInt iType;
       
   174             HBufC* iText;
       
   175             TPoint iPosition;
       
   176             TRect iBox;
       
   177             TInt iBaseLineOffset;
       
   178             TTextAlign iHorizontal;
       
   179             TInt iLeftMargin;
       
   180             TRgb iColor;
       
   181             const CFbsBitmap* iBitmap;
       
   182             const CFbsBitmap* iMask;
       
   183             TRect iSource;
       
   184             TBool iInvertMask;
       
   185             const CFont* iFont;
       
   186             TDrawMode iDrawMode;
       
   187             TBrushStyle iBrushStyle;
       
   188             TRect iRect;
       
   189         };
       
   190         
       
   191     NONSHARABLE_CLASS( CLineData ) : public CBase
       
   192         {
       
   193         public:
       
   194             ~CLineData();
       
   195             TRect iRect;
       
   196             RPointerArray<CBufferItem> iItems;
       
   197             
       
   198         };
       
   199     
       
   200     CBufferItem* BufferItem();
       
   201         
       
   202     CWindowGc* iRealGc;
       
   203     RPointerArray<CLineData> iLines;
       
   204     CFont* iFont;
       
   205     CFbsBitmap* iOffScreenBmp;
       
   206     CFbsBitGc* iBitGc;
       
   207     CFbsBitmapDevice* iBitmapDevice;
       
   208     TInt iCurrentLine;
       
   209     TBool iUseBitGc;
       
   210     };
       
   211