williamr@2: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef METAFILE_H williamr@2: #define METAFILE_H williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: const TInt KWinPrintMetafileUidVal(268435687); williamr@2: williamr@2: /** williamr@2: * @internalTechnology williamr@2: * Internal to Symbian williamr@2: */ williamr@2: class CMetafileDevice : public CGraphicsDevice williamr@2: { williamr@2: protected: williamr@2: IMPORT_C CMetafileDevice(CGraphicsDevice* aDevice); williamr@2: public: williamr@2: IMPORT_C static CMetafileDevice* NewL(CGraphicsDevice* aDevice); williamr@2: IMPORT_C ~CMetafileDevice(); williamr@2: IMPORT_C TInt HorizontalTwipsToPixels(TInt aTwips) const; williamr@2: IMPORT_C TInt VerticalTwipsToPixels(TInt aTwips) const; williamr@2: IMPORT_C TInt HorizontalPixelsToTwips(TInt aPixels) const; williamr@2: IMPORT_C TInt VerticalPixelsToTwips(TInt aPixels) const; williamr@2: IMPORT_C TInt GetNearestFontInTwips(CFont*& aFont, const TFontSpec& aFontSpec); williamr@2: IMPORT_C TInt GetNearestFontToDesignHeightInTwips(CFont*& aFont,const TFontSpec& aFontSpec); williamr@2: IMPORT_C TInt GetNearestFontToMaxHeightInTwips(CFont*& aFont,const TFontSpec& aFontSpec, TInt aMaxHeight); williamr@2: IMPORT_C void ReleaseFont(CFont* aFont); williamr@2: IMPORT_C TDisplayMode DisplayMode() const; williamr@2: IMPORT_C TSize SizeInPixels() const; williamr@2: IMPORT_C TSize SizeInTwips() const; williamr@2: IMPORT_C TInt CreateContext(CGraphicsContext*& aGC); williamr@2: IMPORT_C TInt NumTypefaces() const; williamr@2: IMPORT_C void TypefaceSupport(TTypefaceSupport& aTypefaceSupport, TInt aTypefaceIndex) const; williamr@2: IMPORT_C TInt FontHeightInTwips(TInt aTypefaceIndex, TInt aHeightIndex) const; williamr@2: IMPORT_C void PaletteAttributes(TBool& aModifiable, TInt& aNumEntries) const; williamr@2: IMPORT_C void SetPalette(CPalette* aPalette); williamr@2: IMPORT_C TInt GetPalette(CPalette*& aPalette) const; williamr@2: IMPORT_C void UseGcL(TInt aGcIndex); williamr@2: IMPORT_C void StartOutputStreamL(RWriteStream& aStream); // Returns error code williamr@2: IMPORT_C void EndOfStreamL(); williamr@2: IMPORT_C RWriteStream& WriteStream(); williamr@2: private: williamr@2: TInt iGcCount; williamr@2: TInt iGcIndex; williamr@2: CGraphicsDevice* iRealDevice; williamr@2: RWriteStream* iWriteStream; williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @internalTechnology williamr@2: * Internal to Symbian williamr@2: */ williamr@2: class CMetafileGc : public CGraphicsContext williamr@2: { williamr@2: friend class CMetafileDevice; williamr@2: protected: williamr@2: IMPORT_C CMetafileGc(CMetafileDevice* aMetafileDevice, TInt anIndex); williamr@2: public: williamr@2: IMPORT_C ~CMetafileGc(); williamr@2: IMPORT_C CGraphicsDevice* Device() const; williamr@2: IMPORT_C void SetOrigin(const TPoint& aPos = TPoint(0, 0)); williamr@2: IMPORT_C void SetDrawMode(TDrawMode aDrawingMode); williamr@2: IMPORT_C void SetClippingRect(const TRect& aRect); williamr@2: IMPORT_C void CancelClippingRect(); williamr@2: IMPORT_C void Reset(); williamr@2: IMPORT_C void UseFont(const CFont* aFont); williamr@2: IMPORT_C void DiscardFont(); williamr@2: IMPORT_C void SetUnderlineStyle(TFontUnderline aUnderlineStyle); williamr@2: IMPORT_C void SetStrikethroughStyle(TFontStrikethrough aStrikethroughStyle); williamr@2: IMPORT_C void SetWordJustification(TInt aExcessWidth, TInt aNumGaps); williamr@2: IMPORT_C void SetCharJustification(TInt aExcessWidth, TInt aNumChars); williamr@2: IMPORT_C void SetPenColor(const TRgb& aColor); williamr@2: IMPORT_C void SetPenStyle(TPenStyle aPenStyle); williamr@2: IMPORT_C void SetPenSize(const TSize& aSize); williamr@2: IMPORT_C void SetBrushColor(const TRgb& aColor); williamr@2: IMPORT_C void SetBrushStyle(TBrushStyle aBrushStyle); williamr@2: IMPORT_C void SetBrushOrigin(const TPoint& aOrigin); williamr@2: IMPORT_C void UseBrushPattern(const CFbsBitmap* aBitmap); williamr@2: IMPORT_C void DiscardBrushPattern(); williamr@2: IMPORT_C void MoveTo(const TPoint& aPoint); williamr@2: IMPORT_C void MoveBy(const TPoint& aVector); williamr@2: IMPORT_C void Plot(const TPoint& aPoint); williamr@2: IMPORT_C void DrawArc(const TRect& aRect, const TPoint& aStart, const TPoint& aEnd); williamr@2: IMPORT_C void DrawLine(const TPoint& aPoint1, const TPoint& aPoint2); williamr@2: IMPORT_C void DrawLineTo(const TPoint& aPoint); williamr@2: IMPORT_C void DrawLineBy(const TPoint& aVector); williamr@2: IMPORT_C void DrawPolyLine(const CArrayFix* aPointList); williamr@2: IMPORT_C void DrawPolyLine(const TPoint* aPointList, TInt aNumPoints); williamr@2: IMPORT_C void DrawPie(const TRect& aRect, const TPoint& aStart, const TPoint& aEnd); williamr@2: IMPORT_C void DrawEllipse(const TRect& aRect); williamr@2: IMPORT_C void DrawRect(const TRect& aRect); williamr@2: IMPORT_C void DrawRoundRect(const TRect& aRect, const TSize& aCornerSize); williamr@2: IMPORT_C TInt DrawPolygon(const CArrayFix* aPointList, TFillRule aFillRule = EAlternate); williamr@2: IMPORT_C TInt DrawPolygon(const TPoint* aPointList, TInt aNumPoints, TFillRule aFillRule = EAlternate); williamr@2: IMPORT_C void DrawBitmap(const TPoint& aTopLeft, const CFbsBitmap* aSource); williamr@2: IMPORT_C void DrawBitmap(const TRect& aDestRect, const CFbsBitmap* aSource); williamr@2: IMPORT_C void DrawBitmap(const TRect& aDestRect, const CFbsBitmap* aSource, const TRect& aSourceRect); williamr@2: IMPORT_C void DrawBitmapMasked(const TRect& aDestRect,const CFbsBitmap* aBitmap,const TRect& aSourceRect,const CFbsBitmap* aMaskBitmap,TBool aInvertMask); williamr@2: IMPORT_C void DrawBitmapMasked(const TRect& aDestRect,const CWsBitmap* aBitmap,const TRect& aSourceRect,const CWsBitmap* aMaskBitmap,TBool aInvertMask); williamr@2: IMPORT_C void DrawText(const TDesC& aString, const TPoint& aPosition); williamr@2: IMPORT_C void DrawText(const TDesC& aString, const TRect& aBox, TInt aBaselineOffset, TTextAlign aHoriz = ELeft, TInt aLeftMrg = 0); williamr@2: williamr@2: IMPORT_C void MapColors(const TRect& aRect,const TRgb* aColors,TInt aNumPairs,TBool aMapForwards); williamr@2: IMPORT_C TInt SetClippingRegion(const TRegion &aRegion); williamr@2: IMPORT_C void CancelClippingRegion(); williamr@2: IMPORT_C void DrawTextVertical(const TDesC& aText,const TPoint& aPos,TBool aUp); williamr@2: IMPORT_C void DrawTextVertical(const TDesC& aText,const TRect& aBox,TInt aBaselineOffset,TBool aUp,TTextAlign aVert=ELeft,TInt aMargin=0); williamr@2: IMPORT_C TInt AlphaBlendBitmaps(const TPoint& aDestPt, const CFbsBitmap* aSrcBmp, const TRect& aSrcRect, const CFbsBitmap* aAlphaBmp, const TPoint& aAlphaPt); williamr@2: IMPORT_C TInt AlphaBlendBitmaps(const TPoint& aDestPt, const CWsBitmap* aSrcBmp, const TRect& aSrcRect, const CWsBitmap* aAlphaBmp, const TPoint& aAlphaPt); williamr@2: williamr@2: private: williamr@2: void ExternalizeBitmapL(const CFbsBitmap* aSource); williamr@2: private: williamr@2: CMetafileDevice* iDevice; williamr@2: TInt iIndex; williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @internalTechnology williamr@2: * Internal to Symbian williamr@2: */ williamr@2: class CMetafilePlayback : public CBase williamr@2: { williamr@2: protected: williamr@2: IMPORT_C CMetafilePlayback(CGraphicsDevice* aDevice); williamr@2: public: williamr@2: IMPORT_C static CMetafilePlayback* NewL(CGraphicsDevice* aDevice); williamr@2: IMPORT_C ~CMetafilePlayback(); williamr@2: IMPORT_C void DrawL(RReadStream& aReadStream); williamr@2: protected: williamr@2: CGraphicsDevice* iDevice; williamr@2: }; williamr@2: williamr@2: #endif