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 BANDDEV_H williamr@2: #define BANDDEV_H williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: class CFbsBitmapDevice; williamr@2: class CFbsBitGc; williamr@2: williamr@2: /** williamr@4: @publishedAll williamr@2: */ williamr@2: enum TBandingDirection williamr@2: { williamr@2: EBandingTopToBottom, williamr@2: EBandingBottomToTop, williamr@2: EBandingLeftToRight, williamr@2: EBandingRightToLeft williamr@2: }; williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class CBandedDevice : public CGraphicsDevice williamr@2: { williamr@2: public: williamr@2: IMPORT_C ~CBandedDevice(); williamr@2: IMPORT_C static CBandedDevice* NewL(TRect aRectInPixels, TSize aKPixelSizeInTwips, TDisplayMode aDisplayMode, TBandingDirection aBandingDirection = EBandingTopToBottom, TInt aScanLinesPerBand = 0); williamr@2: 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 virtual TInt GetNearestFontInTwips(CFont*& aFont, const TFontSpec& aFontSpec); williamr@2: IMPORT_C virtual TInt GetNearestFontToDesignHeightInTwips(CFont*& aFont, const TFontSpec& aFontSpec); williamr@2: IMPORT_C virtual TInt GetNearestFontToMaxHeightInTwips(CFont*& aFont, const TFontSpec& aFontSpec, TInt aMaxHeight); williamr@2: IMPORT_C void ReleaseFont(CFont* aFont); williamr@2: 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: williamr@2: IMPORT_C TInt NumBands() const; williamr@2: IMPORT_C TInt NextBand(); williamr@2: IMPORT_C TRect BandRect() const; williamr@2: IMPORT_C TPoint FullOriginToBandOrigin(const TPoint& aPoint) const; williamr@2: IMPORT_C void Reset(); williamr@2: williamr@2: inline TBandingDirection BandingDirection() const {return iBandingDirection;} williamr@2: inline CFbsBitmap* BandBitmap() const {return iBandBitmap;} williamr@2: williamr@2: private: williamr@2: CBandedDevice(TRect aRectInPixels, TBandingDirection aBandingDirection, TInt aScanLinesPerBand); williamr@2: void ConstructL(TDisplayMode aDisplayMode, TSize aKPixelSizeInTwips); williamr@2: williamr@2: private: williamr@2: TRect iFullRectInPixels; williamr@2: TInt iScanLinesPerBand; williamr@2: TInt iBandIndex; williamr@2: CFbsBitmap* iBandBitmap; williamr@2: CFbsBitmapDevice* iBandBitmapDevice; williamr@2: CFbsBitGc* iClearGc; williamr@2: TBandingDirection iBandingDirection; williamr@2: }; williamr@2: williamr@2: #endif