author | Gareth Stockwell <gareth.stockwell@accenture.com> |
Fri, 22 Oct 2010 11:38:29 +0100 | |
branch | bug235_bringup_0 |
changeset 206 | c170e304623f |
parent 0 | 5d03bc08d59c |
permissions | -rw-r--r-- |
// Copyright (c) 1997-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: // #ifndef __BITSTD_H__ #define __BITSTD_H__ #include <e32std.h> #include <gdi.h> #include <fbs.h> #include <bitbase.h> #ifndef SYMBIAN_ENABLE_SPLIT_HEADERS #include <bitgdi/bitgcextradata.h> #endif // For use when testing the code, allows the fast blending to be disabled so back to back comparisons // can done be to check either timing or exact output. //#define __ALLOW_FAST_BLEND_DISABLE__ /** @publishedAll @released */ class CFbsBitGcFont : public CFbsFont { public: IMPORT_C CFbsBitGcFont(); IMPORT_C virtual ~CFbsBitGcFont(); IMPORT_C CBitmapFont* Address() const; IMPORT_C TInt Duplicate(TInt aHandle); IMPORT_C void Reset(); IMPORT_C void operator=(const CFbsBitGcFont& aFont); protected: TBool iCopy; }; /** A bitmap managed by the font and bitmap server. @publishedAll @released */ class CFbsBitGcBitmap : public CFbsBitmap { public: IMPORT_C CBitwiseBitmap* Address() const; IMPORT_C void LockHeap() const; IMPORT_C void UnlockHeap() const; }; /** @publishedAll @released */ class TEllipse { public: /** Enumeration for the ellipse production life cycle */ enum TEllipseStatus { /** Ellipse has been initialised but has no area */ EInitialised, /** The ellipse is drawn as two parabolas. These are in two sectors, the top and bottom half of the rectangle. The first sector means the top parabola has been produced. */ EFirstSector, /** The parabola that occupies the bottom half of the rectangle has been produced. */ ESecondSector, /** The ellipse is complete */ EComplete, /** The ellipse has either a height or width of two units or less and so takes the appearance of a line */ ELine }; public: IMPORT_C void Construct(const TRect& aRect); IMPORT_C TBool SingleStep(TPoint& aTopLeft,TPoint& aTopRight,TPoint& aBottomLeft,TPoint& aBottomRight); IMPORT_C TBool NextStep(TPoint& aTopLeft,TPoint& aTopRight,TPoint& aBottomLeft,TPoint& aBottomRight); IMPORT_C TPoint Intersection(const TRect& aRect,const TPoint& aPoint); protected: IMPORT_C TBool Output(TPoint& aTopLeft,TPoint& aTopRight,TPoint& aBottomLeft,TPoint& aBottomRight); protected: TEllipseStatus iStatus; TInt iA; TInt iB; TInt64 iASquared; TInt64 iBSquared; TInt64 iASquBSqu; TInt iX; TInt iY; TInt iXAdj; TInt iYAdj; TPoint iOffset; TInt64 iD1; TInt64 iD2; }; /** @publishedAll @released */ class CPolygonFiller : public CBase { public: /** Describes how pixels are to be displayed in the polygon. aUsage should be select to one of these values before CPolygonFiller::Construct is used. */ enum TUsage { /** A request for all pixel runs in sequential order */ EGetAllPixelRunsSequentially, /** A request for all pixel runs in sequential order but only for specified lines. */ EGetPixelRunsSequentiallyForSpecifiedScanLines }; public: IMPORT_C CPolygonFiller(); IMPORT_C ~CPolygonFiller(); IMPORT_C void Construct(const CArrayFix<TPoint>* aPointArray,CGraphicsContext::TFillRule aFillRule,TUsage aUsage=EGetAllPixelRunsSequentially); // N.B. this cannot fail IMPORT_C void Construct(const TPoint* aPointList,TInt aNumPoints, CGraphicsContext::TFillRule aFillRule, TUsage aUsage=EGetAllPixelRunsSequentially); // N.B. this cannot fail IMPORT_C void Reset(); IMPORT_C void GetNextPixelRun(TBool& aExists, TInt& aScanLine, TInt& aStart, TInt& aEnd); IMPORT_C void GetNextPixelRunOnSpecifiedScanLine(TBool& aExists, TInt aScanLine, TInt& aStart, TInt& aEnd); private: // data-types for the fast algorithm struct SFastEdge { TInt upperVertex; TInt lowerVertex; TInt firstVertex; }; struct SFastScanLineIntersection; struct SFastActiveEdge { SFastEdge* edgePtr; TLinearDDA lineGenerator; SFastScanLineIntersection* scanLineIntersectionPtr; }; struct SFastScanLineIntersection { TInt firstPixel; TInt lastPixel; SFastActiveEdge* activeEdgePtr; }; private: // data-types for the slow algorithm struct SSlowScanLineIntersection { TInt firstPixel; TInt lastPixel; TInt firstVertexOfEdge; }; private: // data-types for both algorithms struct SFastData { TPoint* vertexList; SFastEdge* edgeList; SFastActiveEdge* activeEdgeList; SFastScanLineIntersection* scanLineIntersectionList; TInt numActiveEdges; TInt numScanLineIntersections; TInt nextEdgeToActivate; }; struct SSlowData { enum {EStoreSize=8}; TLinearDDA lineGenerator; SSlowScanLineIntersection scanLineIntersectionList[EStoreSize]; TInt numIntersectionsWithSameFirstPixelPreviouslyMet; TInt numIntersectionsWithSameFirstPixelMetThisTime; TInt numScanLineIntersections; TBool scanLineComplete; TInt firstPixelOfLastIntersectionInPrevBuffer; }; private: void Construct(CGraphicsContext::TFillRule aFillRule,TUsage aUsage); void FastHandleVertexIntersection(TInt& aCurrentActiveEdge, TBool aIsLowerVertex); void SetFastIntersection(SFastActiveEdge& aActiveEdge, SFastScanLineIntersection& aScanLineIntersection); void SlowHandleVertexIntersection(SSlowScanLineIntersection& aScanLineIntersection, TInt& aVertexStartingCurrentEdge,TBool aIsLowerVertex); void JumpToCurrentScanLine(TLinearDDA& aLineGenerator, const TPoint& aUpper, const TPoint& aLower,TPoint& aStartPos, TPoint& aEndPos) const; const TPoint& Point(TInt aIndex); private: const CArrayFix<TPoint>* iPointArray; // not owned by the class const TPoint* iPointList; // not owned by the class CGraphicsContext::TFillRule iFillRule; TBool iUseFastAlgorithm; TInt iNumVertexes; TBool iToggler; // used by EAlternate fill-rule TInt iNestingLevel; // used by EWinding fill-rule TInt iScanLineIntersection; TInt iRightMostPixelOnScanLine; TInt iFirstVertex; TBool iPolygonIsAllHorizontal; TInt iFirstScanLine; TInt iLastScanLine; TInt iCurrentScanLine; SFastData iFastData; SSlowData iSlowData; private: friend class TCompareEdgesUpperY; friend class TCompareActiveEdgesFirstVertex; friend class TCompareScanLineIntersectionsFirstPixel; friend class TSwapEdges; friend class TSwapActiveEdges; friend class TSwapScanLineIntersections; }; class CFbsDevice; class CFbsDrawDevice; class TOpenFontCharMetrics; class CGraphicsAccelerator; class CWsBitmap; class MFastBlend; class CFbsRasterizer; class CFbsBitGcExtraData; /** Concrete implementation of a bitmapped graphics context. The class provides new functionality, and implementations of the pure virtual functions defined in CGraphicsContext and CBitmapContext. @publishedAll @released */ class CFbsBitGc : public CBitmapContext { public: /** Defines possible rotation values. */ enum TGraphicsOrientation { /** Normal orientation is supported. */ EGraphicsOrientationNormal, /** A 90 degree rotation is supported. */ EGraphicsOrientationRotated90, /** A 180 degree rotation is supported. */ EGraphicsOrientationRotated180, /** A 270 degree rotation is supported. */ EGraphicsOrientationRotated270 }; public: IMPORT_C static CFbsBitGc* NewL(); IMPORT_C virtual ~CFbsBitGc(); IMPORT_C void Activate(CFbsDevice* aDevice); IMPORT_C void ActivateNoJustAutoUpdate(CFbsDevice* aDevice); IMPORT_C void BitBlt(const TPoint& aPoint,const CFbsBitGc& aGc); IMPORT_C void BitBlt(const TPoint& aPoint,const CFbsBitGc& aGc,const TRect& aSourceRect); IMPORT_C void BitBlt(const TPoint& aPoint,const CFbsBitmap* aBitmap); IMPORT_C void BitBlt(const TPoint& aPoint,const CFbsBitmap* aBitmap,const TRect& aSourceRect); IMPORT_C void BitBltMasked(const TPoint& aPoint,const CFbsBitmap* aBitmap,const TRect& aSourceRect,const CFbsBitmap* aMaskBitmap,TBool aInvertMask); IMPORT_C void CancelClipping(); IMPORT_C void CancelClippingRect(); IMPORT_C void CancelClippingRegion(); IMPORT_C void Clear(); IMPORT_C void Clear(const TRect& aRect); IMPORT_C void CopyRect(const TPoint& aOffset,const TRect& aRect); IMPORT_C void CopySettings(const CFbsBitGc& aGc); IMPORT_C CGraphicsDevice* Device() const; IMPORT_C void DiscardBrushPattern(); IMPORT_C void DiscardFont(); IMPORT_C void DrawArc(const TRect& aRect,const TPoint& aStart,const TPoint& aEnd); IMPORT_C void DrawPie(const TRect& aRect,const TPoint& aStart,const TPoint& aEnd); IMPORT_C void DrawBitmap(const TPoint& aTopLeft,const CFbsBitmap* aSource); IMPORT_C void DrawBitmap(const TRect& aDestRect,const CFbsBitmap* aSource); IMPORT_C void DrawBitmap(const TRect& aDestRect,const CFbsBitmap* aSource,const TRect& aSourceRect); IMPORT_C void DrawBitmapMasked(const TRect& aDestRect,const CFbsBitmap* aBitmap,const TRect& aSourceRect,const CFbsBitmap* aMaskBitmap,TBool aInvertMask); IMPORT_C void DrawBitmapMasked(const TRect& aDestRect,const CWsBitmap* aBitmap,const TRect& aSourceRect,const CWsBitmap* aMaskBitmap,TBool aInvertMask); IMPORT_C void DrawRoundRect(const TRect& aRect,const TSize& aEllipse); IMPORT_C void DrawPolyLine(const CArrayFix<TPoint>* aPointList); IMPORT_C void DrawPolyLineNoEndPoint(const CArrayFix<TPoint>* aPointList); IMPORT_C void DrawPolyLine(const TPoint* aPointList,TInt aNumPoints); IMPORT_C void DrawPolyLineNoEndPoint(const TPoint* aPointList,TInt aNumPoints); IMPORT_C TInt DrawPolygon(const CArrayFix<TPoint>* aPointList,CGraphicsContext::TFillRule aFillRule=CGraphicsContext::EAlternate); IMPORT_C TInt DrawPolygon(const TPoint* aPointList,TInt aNumPoints,CGraphicsContext::TFillRule aFillRule=CGraphicsContext::EAlternate); IMPORT_C void DrawEllipse(const TRect& aRect); IMPORT_C void DrawLine(const TPoint& aStart,const TPoint& aEnd); IMPORT_C void DrawLineTo(const TPoint& aPoint); IMPORT_C void DrawLineBy(const TPoint& aVector); IMPORT_C void DrawRect(const TRect& aRect); IMPORT_C void DrawText(const TDesC& aText); IMPORT_C void DrawText(const TDesC& aText,const TPoint& aPosition); IMPORT_C void DrawText(const TDesC& aText,const TRect& aBox); IMPORT_C void DrawText(const TDesC& aText,const TRect& aBox,TInt aBaselineOffset,TTextAlign aHrz=ELeft,TInt aMargin=0); IMPORT_C void DrawText(const TDesC& aText,const TRect& aBox,TInt aBaselineOffset,TInt aTextWidth,TTextAlign aHrz=ELeft,TInt aMargin=0); IMPORT_C void DrawTextVertical(const TDesC& aText,TBool aUp); IMPORT_C void DrawTextVertical(const TDesC& aText,const TPoint& aPosition,TBool aUp); IMPORT_C void DrawTextVertical(const TDesC& aText,const TRect& aBox,TBool aUp); IMPORT_C void DrawTextVertical(const TDesC& aText,const TRect& aBox,TInt aBaselineOffset,TBool aUp,TTextAlign aVert=ELeft,TInt aMargin=0); IMPORT_C void DrawTextVertical(const TDesC& aText,const TRect& aBox,TInt aBaselineOffset,TInt aTextWidth,TBool aUp,TTextAlign aVert=ELeft,TInt aMargin=0); IMPORT_C void MapColors(const TRect& aRect,const TRgb* aColors,TInt aNumPairs=2,TBool aMapForwards=ETrue); IMPORT_C void MoveTo(const TPoint& aPoint); IMPORT_C void MoveBy(const TPoint& aVector); IMPORT_C void OrientationsAvailable(TBool aOrientation[4]); IMPORT_C void Plot(const TPoint& aPoint); IMPORT_C void RectDrawnTo(TRect& aRect); IMPORT_C void Reset(); IMPORT_C void Resized(); IMPORT_C void SetBrushColor(const TRgb& aColor); IMPORT_C void SetBrushOrigin(const TPoint& aOrigin); IMPORT_C void SetBrushStyle(TBrushStyle aBrushStyle); IMPORT_C void SetClippingRegion(const TRegion* aRegion); IMPORT_C void SetClippingRect(const TRect& aRect); IMPORT_C void SetDitherOrigin(const TPoint& aPoint); IMPORT_C void SetDrawMode(TDrawMode); IMPORT_C void SetOrigin(const TPoint& aPoint=TPoint(0,0)); IMPORT_C void SetPenColor(const TRgb& aColor); IMPORT_C void SetPenStyle(TPenStyle); IMPORT_C void SetPenSize(const TSize& aSize); IMPORT_C void SetCharJustification(TInt aExcessWidth,TInt aNumGaps); IMPORT_C void SetWordJustification(TInt aExcessWidth,TInt aNumChars); IMPORT_C void SetUnderlineStyle(TFontUnderline aUnderlineStyle); IMPORT_C void SetUserDisplayMode(TDisplayMode aDisplayMode); IMPORT_C void SetStrikethroughStyle(TFontStrikethrough aStrikethroughStyle); IMPORT_C void SetShadowMode(TBool aShadowMode = EFalse); inline void SetFadeMode(TBool aFadeMode = EFalse); //Deprecated inline void SetFadingParameters(TUint8 aBlackMap = 0); //Deprecated IMPORT_C void SetFaded(TBool aFaded); //Virtual from CBitmapContext IMPORT_C void SetFadingParameters(TUint8 aBlackMap,TUint8 aWhiteMap); //Virtual from CBitmapContext IMPORT_C TBool SetOrientation(TGraphicsOrientation aOrientation); IMPORT_C void ShadowArea(const TRegion* aRegion); IMPORT_C void FadeArea(const TRegion* aRegion); IMPORT_C void UpdateJustification(const TDesC& aText); IMPORT_C void UpdateJustificationVertical(const TDesC& aText,TBool aUp); IMPORT_C void UseBrushPattern(const CFbsBitmap* aBitmap); IMPORT_C TInt UseBrushPattern(TInt aFbsBitmapHandle); IMPORT_C void UseFont(const CFont* aFont); IMPORT_C TInt UseFont(TInt aFontHandle); IMPORT_C void UseFontNoDuplicate(const CFbsBitGcFont* aFont); IMPORT_C TBool IsBrushPatternUsed() const; IMPORT_C TBool IsFontUsed() const; inline static TInt16 Load16(const TUint8* aPtr) { return TInt16(aPtr[0]+(aPtr[1]<<8)); } IMPORT_C TInt AlphaBlendBitmaps(const TPoint& aDestPt, const CFbsBitmap* aSrcBmp1, const CFbsBitmap* aSrcBmp2, const TRect& aSrcRect1, const TPoint& aSrcPt2, const CFbsBitmap* aAlphaBmp, const TPoint& aAlphaPt); IMPORT_C TInt AlphaBlendBitmaps(const TPoint& aDestPt, const CFbsBitmap* aSrcBmp, const TRect& aSrcRect, const CFbsBitmap* aAlphaBmp, const TPoint& aAlphaPt); IMPORT_C void ExternalizeL(RWriteStream& aWriteStream); IMPORT_C void InternalizeL(RReadStream& aReadStream); IMPORT_C TInt SetClippingRegion(const TRegion& aRegion); IMPORT_C TInt AlphaBlendBitmaps(const TPoint& aDestPt, const CWsBitmap* aSrcBmp, const TRect& aSrcRect, const CWsBitmap* aAlphaBmp, const TPoint& aAlphaPt); IMPORT_C TRgb BrushColor(); IMPORT_C TRgb PenColor(); IMPORT_C void ChangeDevice(CFbsDevice* aDevice); // New DrawText API's that take in extra paramemters such as context. Extensible. IMPORT_C void DrawText(const TDesC& aText,const TTextParameters* aParam); IMPORT_C void DrawText(const TDesC& aText,const TTextParameters* aParam,const TPoint& aPosition); IMPORT_C void DrawText(const TDesC& aText,const TTextParameters* aParam,const TRect& aBox); IMPORT_C void DrawText(const TDesC& aText,const TTextParameters* aParam,const TRect& aBox,TInt aBaselineOffset,TTextAlign aHrz=ELeft,TInt aMargin=0); IMPORT_C void DrawText(const TDesC& aText,const TTextParameters* aParam,const TRect& aBox,TInt aBaselineOffset,TInt aTextWidth,TTextAlign aHrz=ELeft,TInt aMargin=0); IMPORT_C void DrawTextVertical(const TDesC& aText,const TTextParameters* aParam,TBool aUp); IMPORT_C void DrawTextVertical(const TDesC& aText,const TTextParameters* aParam,const TPoint& aPosition,TBool aUp); IMPORT_C void DrawTextVertical(const TDesC& aText,const TTextParameters* aParam,const TRect& aBox,TBool aUp); IMPORT_C void DrawTextVertical(const TDesC& aText,const TTextParameters* aParam,const TRect& aBox,TInt aBaselineOffset,TBool aUp,TTextAlign aVert=ELeft,TInt aMargin=0); IMPORT_C void DrawTextVertical(const TDesC& aText,const TTextParameters* aParam,const TRect& aBox,TInt aBaselineOffset,TInt aTextWidth,TBool aUp,TTextAlign aVert=ELeft,TInt aMargin=0); IMPORT_C void UpdateJustification(const TDesC& aText,const TTextParameters* aParam); IMPORT_C void UpdateJustificationVertical(const TDesC& aText,const TTextParameters* aParam,TBool aUp); private: CFbsBitGc(); void AddRect(const TRect& aRect); TBool AnalyseEllipse(const TRect& rc, TPoint& srad, TPoint& erad, TInt& startq, TInt& endq, TBool* quads); void BitMultiply(TUint32* aBinaryDataPtr,TInt aBitLength,TInt aMultiplier); void CheckDevice() const; TBool CheckDevice(const TRect& aRect) const; TUint32* ClipBinaryArray(TUint32* aArray,TUint32* aArrayLimit,TInt aArrayWordWd,TInt& aDataWd,TInt& aDataHt,TPoint& aPos); void ClipFillLine(TPoint,TPoint); void CopyCharWord(TUint32* aBinaryDataPtr,const TUint8* aData,TInt aBitShift); void CopyCharLine(TUint32* aBinaryDataPtr,TInt aBufferWords,const TUint8* aData,TInt aBitShift,TInt aCharWidth); void DrawText(const TDesC& aText,const TTextParameters* aParam,const TPoint& aPosition,TTextAlign aAlignment, CFont::TTextDirection aDirection,const TRect* aBox = NULL); void DoBitBlt(const TPoint& aDest,CFbsDevice* aDevice,const TRect& aSourceRect); void DoBitBlt(const TPoint& aDest,CBitwiseBitmap* aBitmap,TUint32* aBase,TInt aStride,const TRect& aSourceRect); void DoBitBltMasked(const TPoint& aDest,CBitwiseBitmap* aSourceBitmap,TUint32* aSourceBase,const TRect& aSourceRect,CBitwiseBitmap* aMaskBitmap,TUint32* aMaskBase,TBool aInvertMask,const TPoint& aDitherOrigin,TInt aShadowMode); void DoBitBltMaskedFlicker(const TPoint& aDest,CBitwiseBitmap* aSourceBitmap,TUint32* aSourceBase,const TRect& aSourceRect,CBitwiseBitmap* aMaskBitmap,TUint32* aMaskBase,TBool aInvertMask,const TPoint& aDitherOrigin,TInt aShadowMode); void DoBitBltMaskedNonFlicker(const TPoint& aDest,CBitwiseBitmap* aSourceBitmap,TUint32* aSourceBase,const TRect& aSourceRect,CBitwiseBitmap* aMaskBitmap,TUint32* aMaskBase,TBool aInvertMask,const TPoint& aDitherOrigin,TInt aShadowMode); void DoBitBltMaskedNonFlickerSolid(const TPoint& aDest,CBitwiseBitmap* aSourceBitmap,TUint32* aSourceBase,const TRect& aSourceRect,CBitwiseBitmap* aMaskBitmap,TUint32* aMaskBase,TBool aInvertMask,const TPoint& aDitherOrigin,TInt aShadowMode); void DoBitBltMaskedNonFlickerPatterned(const TPoint& aDest,CBitwiseBitmap* aSourceBitmap,TUint32* aSourceBase,const TRect& aSourceRect,CBitwiseBitmap* aMaskBitmap,TUint32* aMaskBase,TBool aInvertMask,const TPoint& aDitherOrigin,TInt aShadowMode); void DoBitBltAlpha(const TPoint& aDest, CBitwiseBitmap* aSourceBitmap, TUint32* aSourceBase, const TRect& aSourceRect, CBitwiseBitmap* aMaskBitmap, TUint32* aMaskBase, const TPoint& aAlphaPoint, TInt aShadowMode, TBool aInvertMask); void DoBitBltAlpha(const TPoint& aDestPt, const CBitwiseBitmap* aSrcBmp1, TUint32* aSrcBmpDataAddr1, const CBitwiseBitmap* aSrcBmp2, TUint32* aSrcBmpDataAddr2, const CBitwiseBitmap* aAlphaBmp, TUint32* aAlphaBmpDataAddr, const TRect& aSrcRect1, const TPoint& aSrcPt2, const TPoint& aAlphaPt, TInt aShadowMode); void DoCopyRect(const TPoint&,const TRect&); void DoDrawBitmap(const TRect&,CBitwiseBitmap*,TUint32* aBase,TInt aStride,const TRect&,const TPoint& aDitherOrigin); void DoDrawBitmapMasked(const TRect& aDestRect,CBitwiseBitmap* aSourceBitmap,TUint32* aSourceBase,const TRect& aSourceRect,CBitwiseBitmap* aMaskBitmap,TUint32* aMaskBase,TBool aInvertMask,const TPoint& aDitherOrigin); void DoDrawLine(TPoint aStart,TPoint aEnd,TBool aDrawStartPoint); void DoDrawDottedWideLine(const TPoint& pt1,const TPoint& pt2,TBool drawstart,const TRect& screenrect); void DoDrawSolidWideLine(const TPoint& pt1,const TPoint& pt2,TBool drawstart,const TRect& screenrect); void DoDrawText(CFont::TPositionParam& aParam,const TInt aEnd); void DoDrawCharacter(const TPoint& aTopLeft,const TSize& aDataSize,const TUint8* aData); void DoDrawTextEx(CFont::TPositionParam& aParam,const CBitmapFont* font,const TInt aEnd, const TInt aUnderlineStrikethroughOffset); void DoDrawCharacterEx(const TPoint& aTopLeft,const TSize& aDataSize,const TUint8* aData, TBool aBold,TBool aItalic,TInt aSemiAscent); void DoDrawCharacterAntiAliased(const TPoint& aTopLeft,const TSize& aDataSize,const TUint8* aData, const TGlyphBitmapType aGlyphType); void DoDrawTextLarge(CFont::TPositionParam& aParam,const CBitmapFont* font,const TInt aEnd); void DoDrawCharacterLarge(const TPoint& aTopLeft,const TSize& aDataSize,const TUint8* aData, TBool aBold,TBool aItalic,TInt aSemiAscent,TInt aWidthFactor,TInt aHeightFactor); void DoDrawCharacterExLarge(const TPoint& aTopLeft,const TSize& aDataSize,const TUint8* aData, TBool aBold,TBool aItalic,TInt aSemiAscent,TInt aWidthFactor,TInt aHeightFactor); void DoDrawCharacterMultiplied(const TPoint& aTopLeft,const TSize& aDataSize,const TUint8* aData, TBool aBold,TBool aItalic,TInt aSemiAscent,TInt aWidthMultiplier,TInt aHeightMultiplier); void DoDrawTextVertical(CFont::TPositionParam& aParam,const CBitmapFont* font,TBool aUp,const TInt aEnd); void DoDrawCharacterVertical(const TPoint& aTopLeft,const TSize& aDataSize,const TUint8* aData, TBool aBold,TBool aItalic,TInt aSemiAscent,TInt aWidthFactor,TInt aHeightFactor,TBool aUp); void DoDrawCharacterVerticalAntiAliased(const TPoint& aTopLeft,const TSize& aDataSize,const TUint8* aData,TBool aUp, TGlyphBitmapType aGlyphBitmapType); void DoPlot(const TPoint& pt); void EllipseFill(const TRect& aRect); void EllipseOutline(const TRect& aRect); void EllipseOutlineWide(const TRect& aRect); void GetStrikethroughMetrics(TInt& aTop,TInt& aBottom); void OutputCharLine(TPoint aPrintPos,TUint32* aBuffer,TInt aDataLength,TInt aNum,TBool aBold,TInt aWidthFactor,TInt aHeightFactor); void OutputCharLineMultiplied(TPoint aPrintPos,TUint32* aBuffer,TInt aDataLength,TInt aNum,TBool aBold,TInt aWidthMultiplier,TInt aHeightMultiplier); void OutputCharLineVertical(TPoint aPrintPos,TUint32* aBuffer,TInt aDataLength,TInt aNum,TBool aBold,TInt aWidthFactor,TInt aHeightFactor,TBool aUp); void PenAllocate(); void PenDrawClipped(TPoint aPoint); void PenDrawDeferred(TPoint aPoint,TInt* aArray,TInt aFirstElement); void PieArcOutline(const TRect& aRect,const TPoint& aStartRadius,const TPoint& aEndRadius,TBool aDoPie); void PieFill(const TRect& ellrect, const TPoint& aStartIntersect, const TPoint& aEndIntersect, TInt aStartQuadrant, TInt aEndQuadrant, const TBool* aQuadrants); void PieShell(const TRect& ellrect, const TPoint& startradius, const TPoint& endradius, const TBool* quads, TInt startquad, TInt endquad); void PieTriangles(TBool aInside,const TPoint& aStart,const TPoint& aEnd); void PieSliver(const TRect& ellrect,const TPoint& startradius,const TPoint& endradius,TInt quad); void PolyFill(const CArrayFix<TPoint>* aPointList,TFillRule aFillRule); void PolyFillLarge(const CArrayFix<TPoint>* aPointList,TFillRule aFillRule); void PolyFill(const TPoint* aPointList,TInt aNumPoints,TFillRule aFillRule); void PolyFillLarge(const TPoint* aPointList,TInt aNumPoints,TFillRule aFillRule); void PolyOutline(const CArrayFix<TPoint>* aPointList); void PolyOutline(const TPoint* aPointList,TInt aNumPoints); void RectFill(const TRect& aRect); void RoundRectFill(const TRect& aRect,TSize aSize); void RoundRectOutline(const TRect& aRect,TSize aSize); void SetupDevice() const; void ShadowFadeArea(const TRegion* aRegion,TInt8 aShadowMode); TBool UserClipRect(TRect& aRect); CGraphicsAccelerator* GraphicsAccelerator(); TUint MemoryOffsetForPixelPitch(TUint aX, TDisplayMode aDisplayMode); TUint32* GetScanLineOffsetPtr(CBitwiseBitmap* aSrce, TUint32*& aSlptr, TInt aLength, TPoint aPixel,TUint32* aBase, TLineScanningPosition& aLineScanningPosition, TUint aXOffset); void APIExGetUnderlineMetrics(TAny*& aOutput); TInt APIExSetShadowColor(TAny* aShadowColor); TInt APIExGetShadowColor(TAny*& aShadowColor); TInt FastBlendInterface(const CBitwiseBitmap* aSource, const CBitwiseBitmap* aMask, MFastBlend*& aFastBlend) const; TInt APIExIsFbsBitGc(TAny*& aIsCFbsBitGc); TDisplayMode ScanLineBufferDisplayMode(CFbsDrawDevice* aDrawDevice); TInt BaselineCorrection(); CFbsRasterizer* PrepareRasterizerForExtendedBitmap(const CFbsBitmap& aBitmap); CFbsRasterizer* PrepareRasterizerForExtendedBitmap(const CFbsBitmap& aBitmap, const TRect& aDestRect, const TPoint& aOffset); CFbsRasterizer* PrepareRasterizerForExtendedBitmap(const CFbsBitmap& aBitmap, const TRect& aDestRect, const TRect& aSourceRect); protected: /** This function should not be used by externals but must retain the same ordinal number to maintain BC, thus is exported.*/ IMPORT_C TInt APIExtension(TUid aUid, TAny*& aOutput, TAny* aInput); private: IMPORT_C void Reserved_CGraphicsContext_2(); IMPORT_C void Reserved_CBitmapContext_1(); IMPORT_C void Reserved_CBitmapContext_2(); IMPORT_C void Reserved_CBitmapContext_3(); IMPORT_C virtual void Reserved_CFbsBitGc_1(); IMPORT_C virtual void Reserved_CFbsBitGc_2(); IMPORT_C virtual void Reserved_CFbsBitGc_3(); IMPORT_C virtual void Reserved_CFbsBitGc_4(); IMPORT_C virtual void Reserved_CFbsBitGc_5(); private: CFbsBitGcBitmap iBrushBitmap; TBool iBrushUsed; TRgb iBrushColor; TPoint iBrushOrigin; TBrushStyle iBrushStyle; TRect iClipRect; TRegionFix<1> iDefaultRegion; const TRegion* iDefaultRegionPtr; TRect iUserClipRect; CFbsDevice* iDevice; TPoint iDitherOrigin; TInt iDotLength; TInt iDotMask; TInt iDotParam; TInt iDotDirection; TDrawMode iDrawMode; TRect iDrawnTo; CFbsBitGcFont iFont; TInt iCharJustExcess; TInt iCharJustNum; TInt iWordJustExcess; TInt iWordJustNum; TPoint iLastPrintPosition; TPoint iLinePosition; TPoint iOrigin; CFbsBitGcExtraData* iFbsBitGcExtraData; TRgb iPenColor; TPenStyle iPenStyle; TSize iPenSize; TInt8 iShadowMode; TInt8 iAutoUpdateJustification; TUint8 iFadeBlackMap; TUint8 iFadeWhiteMap; TFontStrikethrough iStrikethrough; TFontUnderline iUnderline; TDisplayMode iUserDisplayMode; RRegion iClippingRegion; #if defined(__ALLOW_FAST_BLEND_DISABLE__) TBool iFastBlendDisabled; #endif }; inline void CFbsBitGc::SetFadeMode(TBool aFadeMode /*=EFalse*/) {SetFaded(aFadeMode);} inline void CFbsBitGc::SetFadingParameters(TUint8 aBlackMap /*=0*/) {SetFadingParameters(aBlackMap,255);} //255 is the value of white map when not fading #endif