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@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.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 __BITDEV_H__ williamr@2: #define __BITDEV_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: class CFbsDrawDevice; williamr@2: class TSurfaceId; williamr@2: williamr@4: /** Screen device orientations. williamr@4: williamr@4: WARNING: Enumeration for internal use ONLY. Compatibility is not guaranteed in future releases. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@2: enum TDeviceOrientation williamr@2: { williamr@2: EDeviceOrientationNormal = 1, williamr@2: EDeviceOrientation90CW = 2, williamr@2: EDeviceOrientation180 = 4, williamr@2: EDeviceOrientation270CW = 8 williamr@2: }; williamr@2: williamr@2: /** Abstract base class for graphics devices to which bitmaps and fonts can be williamr@2: drawn. williamr@2: williamr@2: The class implements the pure virtual CBitmapDevice functions and additionally williamr@2: provides: williamr@2: williamr@2: support for creating and enquiring about fonts williamr@2: williamr@2: comparing two device rectangles williamr@2: williamr@2: creating a graphics context for the device. williamr@2: williamr@2: CFbsBitmapDevice and CFbsScreenDevice are derived fom this class. williamr@2: williamr@2: @see CFbsBitmapDevice williamr@2: @see CFbsScreenDevice williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class CFbsDevice : public CBitmapDevice williamr@2: { williamr@2: friend class CFbsBitGc; williamr@2: public: williamr@2: IMPORT_C ~CFbsDevice(); williamr@2: IMPORT_C TInt CreateContext(CFbsBitGc*& aGc); williamr@2: inline TInt CreateContext(CGraphicsContext*& aGc); williamr@2: IMPORT_C TDisplayMode DisplayMode() const; williamr@2: IMPORT_C TSize SizeInPixels() const; williamr@2: IMPORT_C TBool RectCompare(const TRect& aSourceRect,const CFbsDevice& aDevice,const TRect& aDeviceRect) const; williamr@2: IMPORT_C TInt AddFile(const TDesC& aName,TInt& aId); williamr@2: IMPORT_C void RemoveFile(TInt aId=0); williamr@2: IMPORT_C virtual TInt GetNearestFontInTwips(CFont*& aFont, const TFontSpec& aFontSpec); williamr@2: IMPORT_C virtual TInt GetNearestFontInPixels(CFont*& aFont, const TFontSpec& aFontSpec); williamr@2: IMPORT_C virtual TInt GetNearestFontToDesignHeightInTwips(CFont*& aFont, const TFontSpec& aFontSpec); williamr@2: IMPORT_C virtual TInt GetNearestFontToDesignHeightInPixels(CFont*& aFont, const TFontSpec& aFontSpec); williamr@2: IMPORT_C virtual TInt GetNearestFontToMaxHeightInTwips(CFont*& aFont, const TFontSpec& aFontSpec, TInt aMaxHeight); williamr@2: IMPORT_C virtual TInt GetNearestFontToMaxHeightInPixels(CFont*& aFont, const TFontSpec& aFontSpec, TInt aMaxHeight); williamr@2: IMPORT_C TInt GetFontById(CFont*& aFont,TUid aFileId,const TAlgStyle& aStyle); williamr@2: inline TInt GetNearestFontInTwips(CFbsFont*& aFont, const TFontSpec& aFontSpec); williamr@2: inline TInt GetNearestFontInPixels(CFbsFont*& aFont, const TFontSpec& aFontSpec); williamr@2: inline TInt GetNearestFontToDesignHeightInTwips(CFbsFont*& aFont, const TFontSpec& aFontSpec); williamr@2: inline TInt GetNearestFontToDesignHeightInPixels(CFbsFont*& aFont, const TFontSpec& aFontSpec); williamr@2: inline TInt GetNearestFontToMaxHeightInTwips(CFbsFont*& aFont, const TFontSpec& aFontSpec, TInt aMaxHeight); williamr@2: inline TInt GetNearestFontToMaxHeightInPixels(CFbsFont*& aFont, const TFontSpec& aFontSpec, TInt aMaxHeight); williamr@2: inline TInt GetFontById(CFbsFont*& aFont,TUid aFileId,const TAlgStyle& aStyle); williamr@2: IMPORT_C void ReleaseFont(CFont* aFont); williamr@2: IMPORT_C TInt FontHeightInTwips(TInt aTypefaceIndex,TInt aHeightIndex) const; williamr@2: IMPORT_C TInt FontHeightInPixels(TInt aTypefaceIndex,TInt aHeightIndex) const; williamr@2: IMPORT_C TInt NumTypefaces() const; williamr@2: IMPORT_C void TypefaceSupport(TTypefaceSupport& aTypefaceSupport,TInt aTypefaceIndex) const; williamr@2: IMPORT_C TInt SetCustomPalette(const CPalette* aPalette); williamr@2: inline CGraphicsAccelerator* GraphicsAccelerator() const; williamr@2: inline CFbsBitGc::TGraphicsOrientation Orientation() const; williamr@2: IMPORT_C static TDisplayMode DisplayMode16M(); williamr@2: IMPORT_C TInt SetScalingFactor(const TPoint& aOrigin, williamr@2: TInt aFactorX, TInt aFactorY, williamr@2: TInt aDivisorX, TInt aDivisorY); williamr@2: IMPORT_C void GetDrawRect(TRect& aRect) const; williamr@2: IMPORT_C TInt RegisterLinkedTypeface(const CLinkedTypefaceSpecification& aLinkedTypefaceSpec, TInt& aId); williamr@4: IMPORT_C TInt SetDrawDeviceOffset(const TPoint& aOrigin); williamr@4: williamr@2: protected: williamr@2: CFbsDevice(); williamr@2: virtual void DrawingBegin(TBool /*aAlways*/ = EFalse) {} williamr@2: virtual void DrawingEnd(TBool /*aAlways*/ = EFalse) {} williamr@2: williamr@2: /** williamr@2: Sets the bit level. williamr@2: */ williamr@2: virtual void SetBits() {} williamr@2: williamr@2: /** williamr@4: This method has been deprecated. Sprites are no longer supported in BitGDI. williamr@4: Calling this method has no effect. williamr@4: @deprecated williamr@2: */ williamr@2: virtual void CancelSprite() const {} williamr@2: williamr@2: /** williamr@4: This method has been deprecated. Sprites are no longer supported in BitGDI. williamr@4: Calling this method has no effect. williamr@4: @return TSpriteBase* NULL. williamr@4: @deprecated williamr@2: */ williamr@2: virtual TSpriteBase* HideSprite() const {return(NULL);} williamr@2: williamr@2: /** williamr@4: This method has been deprecated. Sprites are no longer supported in BitGDI. williamr@4: Calling this method has no effect. williamr@4: @param aRect Ignored. williamr@4: @param aClippingRegion Ignored. williamr@4: @return TSpriteBase* NULL. williamr@4: @deprecated williamr@2: */ williamr@2: virtual TSpriteBase* HideSprite(const TRect&,const TRegion*) const {return(NULL);} williamr@2: williamr@2: /** williamr@4: This method has been deprecated. Sprites are no longer supported in BitGDI. williamr@4: Calling this method has no effect. williamr@4: @param aSprite Ignored. williamr@4: @deprecated williamr@2: */ williamr@2: virtual void ShowSprite(TSpriteBase*) const {} williamr@2: williamr@2: /** williamr@4: This method has been deprecated. Sprites are no longer supported in BitGDI. williamr@4: Calling this method has no effect. williamr@4: @param aSprite Ignored. williamr@4: @param aRect Ignored. williamr@4: @param aClippingRegion Ignored. williamr@4: @deprecated williamr@2: */ williamr@2: virtual void ShowSprite(TSpriteBase*,const TRect&,const TRegion*) const {} williamr@2: TInt GetNearestFbsFont(CFbsFont*& aFont,const TFontSpec& aFontSpec); williamr@2: void DoGetScanLine(TDes8& aBuf,const TPoint& aPixel,TInt aLength,TDisplayMode aDispMode); williamr@2: void ReadLineDiffMode(TInt,TInt,TInt,TAny*,TDisplayMode) const; williamr@2: void TruncateRect(TRect& aRect); williamr@2: TBool SetOrientation(CFbsBitGc::TGraphicsOrientation aOrientation); williamr@2: void DrawingBegin(const CFbsBitmap* aBitmap, TBool aAlways = EFalse); williamr@2: void DrawingEnd(const CFbsBitmap* aBitmap, TBool aAlways = EFalse); williamr@2: protected: williamr@2: CFbsDrawDevice* iDrawDevice; williamr@2: RFbsSession* iFbs; williamr@2: CFbsTypefaceStore* iTypefaceStore; williamr@2: TInt iSpare; williamr@2: TBool iScreenDevice; williamr@2: TUint8* iBitBltMaskedBuffer; williamr@2: CGraphicsAccelerator* iGraphicsAccelerator; williamr@2: CFbsBitGc::TGraphicsOrientation iOrientation; williamr@2: }; williamr@2: williamr@2: /** A graphics device interface that provides direct access to the screen, without williamr@2: the mediation of the window server. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class CFbsScreenDevice : public CFbsDevice williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CFbsScreenDevice* NewL(const TDesC& aLibname,TDisplayMode aDispMode); williamr@2: IMPORT_C static CFbsScreenDevice* NewL(const TDesC& aLibname,TDisplayMode aDispMode, TRgb aWhite); williamr@2: IMPORT_C static CFbsScreenDevice* NewL(TInt aScreenNo, TDisplayMode aDispMode); williamr@2: IMPORT_C virtual ~CFbsScreenDevice(); williamr@2: IMPORT_C void GetScanLine(TDes8& aBuf,const TPoint& aStartPixel,TInt aLength,TDisplayMode aDispMode) const; williamr@2: IMPORT_C void GetPixel(TRgb& aColor,const TPoint& aPixel) const; williamr@2: IMPORT_C TInt HorizontalPixelsToTwips(TInt aPixels) const; williamr@2: IMPORT_C TInt VerticalPixelsToTwips(TInt aPixels) const; williamr@2: IMPORT_C TInt HorizontalTwipsToPixels(TInt aTwips) const; williamr@2: IMPORT_C TInt VerticalTwipsToPixels(TInt aTwips) const; williamr@2: IMPORT_C void SetAutoUpdate(TBool aValue); williamr@4: IMPORT_C void DrawSpriteBegin(); //< @deprecated williamr@4: IMPORT_C void DrawSpriteEnd(); //< @deprecated williamr@4: IMPORT_C void CancelSprite() const; //< @deprecated williamr@4: IMPORT_C TSpriteBase* HideSprite() const; //< @deprecated williamr@4: IMPORT_C TSpriteBase* HideSprite(const TRect& aRect,const TRegion* aClippingRegion) const; //< @deprecated williamr@4: IMPORT_C void ShowSprite(TSpriteBase* aSprite) const; //< @deprecated williamr@4: IMPORT_C void ShowSprite(TSpriteBase* aSprite,const TRect& aRect,const TRegion* aClippingRegion) const; //< @deprecated williamr@2: IMPORT_C void ChangeScreenDevice(CFbsScreenDevice* aOldDevice); 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 Update(); williamr@2: IMPORT_C void Update(const TRegion& aRegion); williamr@2: IMPORT_C TSize SizeInTwips() const; williamr@2: IMPORT_C RHardwareBitmap HardwareBitmap(); williamr@2: IMPORT_C const TUint32* Bits() const; williamr@2: IMPORT_C TInt Stride() const; williamr@2: IMPORT_C TInt ScreenNo() const; williamr@4: IMPORT_C TUint DeviceOrientationsAvailable() const; /**< WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. */ williamr@4: IMPORT_C TBool SetDeviceOrientation(TDeviceOrientation aOrientation) const; /**< WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. */ williamr@4: IMPORT_C void GetSurface(TSurfaceId& aSurface) const; /**< WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. */ williamr@4: IMPORT_C TDeviceOrientation DeviceOrientation() const; /**< WARNING: Function for internal use ONLY. Compatibility is not guaranteed in future releases. */ williamr@2: private: williamr@2: CFbsScreenDevice(TInt aScreenNo); williamr@2: void ConstructL(TInt aScreenNo, TDisplayMode aDispMode); williamr@2: private: williamr@4: TInt iSpare1_CFbsScreenDevice; williamr@4: TInt iSpare2_CFbsScreenDevice; williamr@2: TInt iScreenNo; williamr@2: }; williamr@2: williamr@2: /** A graphics device to which a bitmap managed by the font and bitmap server can williamr@2: be drawn. williamr@2: williamr@2: The class specialises the bitmap graphics device interface CBitmapDevice for williamr@2: drawing to in-memory bitmaps. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class CFbsBitmapDevice : public CFbsDevice williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CFbsBitmapDevice* NewL(CFbsBitmap* aFbsBitmap); williamr@2: IMPORT_C static CFbsBitmapDevice* NewL(CFbsBitmap* aFbsBitmap,const TDesC& aLibname); williamr@2: IMPORT_C virtual ~CFbsBitmapDevice(); williamr@2: IMPORT_C TInt Resize(const TSize& aSize); williamr@2: IMPORT_C virtual void GetScanLine(TDes8& aBuf,const TPoint& aStartPixel,TInt aLength,TDisplayMode iDispMode) const; williamr@2: IMPORT_C virtual void GetPixel(TRgb& aColor,const TPoint& aPixel) const; williamr@2: IMPORT_C virtual TInt HorizontalPixelsToTwips(TInt aPixels) const; williamr@2: IMPORT_C virtual TInt VerticalPixelsToTwips(TInt aPixels) const; williamr@2: IMPORT_C virtual TInt HorizontalTwipsToPixels(TInt aTwips) const; williamr@2: IMPORT_C virtual TInt VerticalTwipsToPixels(TInt aTwips) const; williamr@2: IMPORT_C virtual TSize SizeInTwips() const; williamr@2: IMPORT_C virtual void PaletteAttributes(TBool& aModifiable,TInt& aNumEntries) const; williamr@2: IMPORT_C virtual void SetPalette(CPalette* aPalette); williamr@2: IMPORT_C virtual TInt GetPalette(CPalette*& aPalette) const; williamr@2: IMPORT_C virtual void DrawingBegin(TBool aAlways = EFalse); williamr@2: IMPORT_C virtual void DrawingEnd(TBool aAlways = EFalse); williamr@2: IMPORT_C TInt SwapWidthAndHeight(); williamr@4: williamr@2: private: williamr@2: CFbsBitmapDevice(); williamr@2: virtual void SetBits(); williamr@2: void ConstructL(CFbsBitmap* aFbsBitmap); williamr@2: void ConstructL(CFbsBitmap* aFbsBitmap,const TDesC& aLibname); williamr@2: private: williamr@2: CFbsBitGcBitmap* iFbsBmp; williamr@2: }; williamr@2: williamr@2: #include williamr@2: #endif