1 // Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
28 #include <graphics/fbsdefs.h>
34 const TUid KCFbsFontUid = { 268435518 };
37 Indicates version of the font and bitmap server without heap locking.
41 #define SYMBIAN_FBSERV_V2
44 Character width and adjustment information.
51 /** The left adjust of the character. */
53 /** The right adjust of the character. */
55 /** The total width of the character, defined as iLeftAdjust + iWidth + iRightAdjust. */
57 /** The width of the character. */
62 class CFbsSessionHelper;
66 A session with the font and bitmap server.
70 class RFbsSession : protected RSessionBase
72 // Allow access to internals for test
75 friend class CTBitmap;
79 friend class CFbsBitmap;
80 friend class CFbsBitmapAsyncStreamer;
82 IMPORT_C RFbsSession();
83 IMPORT_C static TInt Connect();
84 IMPORT_C static TInt Connect(RFs& aFileServer);
85 IMPORT_C static void Disconnect();
86 IMPORT_C static RFbsSession* GetSession();
87 IMPORT_C void CallBack();
88 IMPORT_C void SetCallBack(TCallBack aCallBack);
89 IMPORT_C void ResetCallBack();
90 IMPORT_C TInt ResourceCount();
91 IMPORT_C TInt SendCommand(TInt aMessage,TInt aInt0=0,TInt aInt1=0,TInt aInt2=0,TInt aInt3=0) const;
92 TInt SendCommand(TInt aMessage, const TIpcArgs& aArgs) const;
93 void SendCommand(TInt aMessage, const TIpcArgs& aArgs, TRequestStatus &aStatus) const;
94 IMPORT_C TVersion Version();
95 IMPORT_C TUint8* HeapBase() const;
96 IMPORT_C TInt GetHeapSizes(TInt& aDefaultHeap, TInt& aSmallBmpHeap, TInt& aBigBmpChunk);
97 TInt SessionHandle() const { return Handle(); }
98 TInt AllocScanLineBuffer(TInt aSize);
99 HBufC8* GetScanLineBuffer();
100 void SetCallBackPtr(TInt* aBitmapHandle)const;
101 HBufC8* GetDecompressionBuffer(TInt aSize);
102 HBufC8* GetExtraBuffer(TInt aSize);
103 TInt ServerSessionHandle() const;
105 /** WARNING: For internal use ONLY. Compatibility is not guaranteed in future releases.
106 Used for testing server side out of memory failures.
111 EHeapFailTypeServerMemory,
112 EHeapFailTypeHeapMemory,
115 TBool LookupBitmapInROM(const TDesC& aFilename, TAny*& aAddr);
116 RFs& FileServer() { return *((RFs*)iSpare); }
117 static TInt DoAlloc(RFbsSession*& aNewSession);
118 TInt DoConnect(RFs& aFileServer);
121 mutable TCallBack iCallBack;
123 CFbsSessionHelper* iHelper;
124 RChunk iLargeBitmapChunk;
126 CFbsRalCache* iRomFileAddrCache;
127 HBufC8* iDecompressionBuffer;
128 HBufC8* iScanLineBuffer;
133 Font managed by the font and bitmap server.
134 CFbsFont objects are used for screen and off-screen bitmap fonts. They are
135 usually obtained by calls to the CBitmapDevice::GetNearestFontInPixels() and
136 MGraphicsDeviceMap::GetNearestFontInTwips() functions.
137 The class implements a number of functions inherited from CFont.
138 @see CBitmapDevice::GetNearestFontInPixels()
139 @see MGraphicsDeviceMap::GetNearestFontInTwips()
143 class CFbsFont: public CFont
145 friend class CFbsTypefaceStore;
149 /** Gets the font's UID.
150 All CFbsFont objects have the constant UID KCFbsFontUid. It is safe to cast
151 from CFont* to CFbsFont* if CFont::TypeUid() returns KCFbsFontUid.
152 @return The font's UID. This should be KCFbsFontUid.
153 @see CFont::TypeUid() */
154 virtual TUid DoTypeUid() const { return KCFbsFontUid; }
155 IMPORT_C virtual TInt DoHeightInPixels() const;
156 IMPORT_C virtual TInt DoAscentInPixels() const;
157 IMPORT_C virtual TInt DoCharWidthInPixels(TChar aChar) const;
158 IMPORT_C virtual TInt DoTextWidthInPixels(const TDesC& aText) const;
159 IMPORT_C virtual TInt DoBaselineOffsetInPixels() const;
160 IMPORT_C virtual TInt DoTextCount(const TDesC& aText,TInt aWidthInPixels) const;
161 IMPORT_C virtual TInt DoTextCount(const TDesC& aText,TInt aWidthInPixels,TInt& aExcessWidthInPixels) const;
162 IMPORT_C virtual TInt DoMaxCharWidthInPixels() const;
163 IMPORT_C virtual TInt DoMaxNormalCharWidthInPixels() const;
164 IMPORT_C virtual TFontSpec DoFontSpecInTwips() const;
165 IMPORT_C virtual CFont::TCharacterDataAvailability DoGetCharacterData(TUint aCode, TOpenFontCharMetrics& aMetrics,
166 const TUint8*& aBitmap, TSize& aBitmapSize) const;
167 IMPORT_C virtual TInt DoExtendedFunction(TUid aFunctionId, TAny* aParam = NULL) const;
171 IMPORT_C TBool GetFontMetrics(TOpenFontMetrics& aMetrics) const;
172 IMPORT_C TInt TextWidthInPixels(const TDesC& aText) const;
173 IMPORT_C void TextWidthInPixels(const TDesC& aText,SCharWidth& aCharWidth) const;
174 IMPORT_C TInt Handle() const;
175 IMPORT_C TCharacterMetrics CharacterMetrics(TInt aCode,const TUint8*& aBytes) const;
176 IMPORT_C TInt RawTextWidthInPixels(const TDesC& aText) const;
177 IMPORT_C TBool GetFaceAttrib(TOpenFontFaceAttrib& aAttrib) const;
178 IMPORT_C TBool IsOpenFont() const;
179 IMPORT_C TBool HasCharacter(TInt aCode) const;
180 IMPORT_C TInt TextWidthInPixels(const TDesC& aText,const TMeasureTextInput* aParam) const;
181 IMPORT_C void TextWidthInPixels(const TDesC& aText,const TMeasureTextInput* aParam,SCharWidth& aCharWidth) const;
186 IMPORT_C ~CFbsFont();
187 IMPORT_C CFbsFont(const CFbsFont& aFont);
188 IMPORT_C CBitmapFont* Address() const;
189 IMPORT_C TInt Duplicate(TInt aHandle);
190 IMPORT_C void Reset();
193 TInt DoFontGetShaping(TFontShapeFunctionParameters* aParam) const;
194 TInt DoFontDeleteShaping(TFontShapeDeleteFunctionParameters* aParam) const;
195 TInt DoTextWidthInPixels(const TDesC& aText,const TMeasureTextInput* aParam) const;
199 CBitmapFont* iAddressPointer;
205 An interface for initialization of extended bitmaps. By implementing this interface,
206 creators of extended bitmaps can set the contents of an extended bitmap without
207 allocating a temporary buffer and avoid unnecessary memory copying during calls to
208 CFbsBitmap::CreateExtendedBitmap().
210 WARNING: Class for internal and partner use ONLY. Compatibility is not guaranteed in future releases.
213 @see CFbsBitmap::CreateExtendedBitmap()
215 class MFbsExtendedBitmapInitializer
219 Initializes the raw data of an extended bitmap.
220 @param aData A pointer to the raw data to be initialized.
221 @param aDataSize The size in bytes of the raw data to be initialized.
222 @return KErrNone if successful, otherwise another of the system-wide error codes.
224 virtual TInt InitExtendedBitmap(TAny* aData, TInt aDataSize) = 0;
227 class CDirectFileStore;
230 Note that this class is not intended for user derivation.
231 A bitmap managed by the font and bitmap server.
232 The class also defines some palette functionality which is not yet
233 implemented, since none of the modes currently supported by screen
234 or bitmaps require variable palettes.
235 Note that the CFbsBitmap format is internal to Symbian, but the
236 Image Converter API can be used to convert such bitmaps to standard formats.
237 CFbsBitmap instances cannot be shared between different threads. They use some shared
238 thread local storage data. If you want to share a bitmap between threads, use Duplicate().
241 @see CFbsBitmap::Duplicate()
243 class CFbsBitmap : public CBase
245 friend class TBitmapUtil;
246 friend class CBitwiseBitmap;
247 friend class CFbsBitmapAsyncStreamer;
248 friend class CFbsSessionHelper;
250 IMPORT_C CFbsBitmap();
251 IMPORT_C ~CFbsBitmap();
252 IMPORT_C void Reset();
253 IMPORT_C static TInt ScanLineLength(TInt aLength,TDisplayMode aDispMode);
254 IMPORT_C TDisplayMode DisplayMode() const;
255 IMPORT_C TDisplayMode InitialDisplayMode() const;
256 IMPORT_C TInt SetDisplayMode(TDisplayMode aDisplayMode);
257 IMPORT_C TInt Create(const TSize& aSizeInPixels,TDisplayMode aDispMode);
258 IMPORT_C TInt Duplicate(TInt aHandle);
259 IMPORT_C TBool IsRomBitmap() const;
260 IMPORT_C void SetRomBitmapL(CBitwiseBitmap* aRomBitmapPointer,TInt& aBitmapSizeInBytes);
261 IMPORT_C TInt Load(const TDesC& aFileName,TInt32 aId=0,TBool aShareIfLoaded=ETrue);
262 IMPORT_C TInt Load(const TDesC& aFileName,TInt32 aId,TBool aShareIfLoaded,TUint aFileOffset);
263 IMPORT_C TInt LoadAndCompress(const TDesC& aFileName,TInt32 aId=0,TBool aShareIfLoaded=ETrue);
264 IMPORT_C TInt LoadAndCompress(const TDesC& aFileName,TInt32 aId,TBool aShareIfLoaded,TUint aFileOffset);
265 IMPORT_C TInt Load(RFile& aFile,TInt32 aId=0,TBool aShareIfLoaded=ETrue);
266 IMPORT_C TInt Load(RFile& aFile,TInt32 aId,TBool aShareIfLoaded,TUint aFileOffset);
267 IMPORT_C TInt LoadAndCompress(RFile& aFile,TInt32 aId=0,TBool aShareIfLoaded=ETrue);
268 IMPORT_C TInt LoadAndCompress(RFile& aFile,TInt32 aId,TBool aShareIfLoaded,TUint aFileOffset);
269 IMPORT_C TInt Save(const TDesC& aFilename);
270 IMPORT_C TInt Save(RFile& aFile);
271 IMPORT_C static void StoreL(const TDesC& aFilename,TInt aNumSources,const TDesC* aSources[],TInt32 aSourceIds[]);
272 IMPORT_C static void StoreL(RFile& aFile,TInt aNumSources,const TDesC* aSources[],TInt32 aSourceIds[]);
273 IMPORT_C void GetScanLine(TDes8& aBuf,const TPoint& aPixel,TInt aLength,TDisplayMode aDispMode) const;
274 IMPORT_C void SetScanLine(TDes8& aBuf,TInt aY) const;
275 IMPORT_C void GetVerticalScanLine(TDes8& aBuf,TInt aX,TDisplayMode aDispMode) const;
276 IMPORT_C void GetVerticalScanLine(TDes8& aBuf,TInt aX,const TPoint& aDitherOffset,TDisplayMode aDispMode) const;
277 IMPORT_C TInt Handle() const;
278 IMPORT_C SEpocBitmapHeader Header() const;
279 IMPORT_C TInt HorizontalPixelsToTwips(TInt aPixels) const;
280 IMPORT_C TInt HorizontalTwipsToPixels(TInt aTwips) const;
281 IMPORT_C void GetPixel(TRgb& aColor,const TPoint& aPixel) const;
282 IMPORT_C TInt Resize(const TSize& aSizeInPixels);
283 IMPORT_C TSize SizeInPixels() const;
284 IMPORT_C TSize SizeInTwips() const;
285 IMPORT_C void SetSizeInTwips(const MGraphicsDeviceMap* aMap);
286 IMPORT_C void SetSizeInTwips(const TSize& aSizeInTwips);
287 IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
288 IMPORT_C void ExternalizeRectangleL(RWriteStream& aStream,const TRect& aRect) const;
289 IMPORT_C void InternalizeL(RReadStream& aStream);
290 IMPORT_C TInt Compress();
291 IMPORT_C TInt Compress(TBitmapfileCompressionScheme aScheme);
292 IMPORT_C void CompressInBackground(TRequestStatus& aRequestStatus);
293 IMPORT_C TInt CompressInBackground();
294 IMPORT_C void CompressInBackground(TRequestStatus& aRequestStatus, TBitmapfileCompressionScheme aScheme);
295 IMPORT_C TInt CompressInBackground(TBitmapfileCompressionScheme aScheme);
296 IMPORT_C TInt VerticalPixelsToTwips(TInt aPixels) const;
297 IMPORT_C TInt VerticalTwipsToPixels(TInt aTwips) const;
298 IMPORT_C static TBool IsFileInRom(const TDesC& aFilename,TUint32*& aWord);
299 IMPORT_C static TBool IsFileInRom(RFile& aFile,TUint32*& aWord);
300 IMPORT_C TBool IsMonochrome() const;
301 IMPORT_C TBool IsLargeBitmap() const;
302 IMPORT_C void PaletteAttributes(TBool& aModifiable,TInt& aNumEntries) const;
303 IMPORT_C void SetPalette(CPalette* aPalette);
304 IMPORT_C TInt GetPalette(CPalette*& aPalette) const;
305 IMPORT_C TUint32* DataAddress() const;
306 IMPORT_C TInt DataStride() const;
307 IMPORT_C TInt CreateHardwareBitmap(const TSize& aSizeInPixels,TDisplayMode aDispMode,TUid aCreatorUid);
308 IMPORT_C TInt HardwareBitmapHandle() const;
309 IMPORT_C void BeginDataAccess() const;
310 IMPORT_C void EndDataAccess(TBool aReadOnly=EFalse) const;
311 IMPORT_C void LockHeap(TBool aAlways=EFalse) const;
312 IMPORT_C void UnlockHeap(TBool aAlways=EFalse) const;
313 IMPORT_C void LockHeapLC(TBool aAlways=EFalse) const;
314 IMPORT_C static void UnlockHeap(TAny* aFbsBitmap);
315 IMPORT_C TBool IsVolatile() const;
316 IMPORT_C TInt TouchCount() const;
317 IMPORT_C TInt64 SerialNumber() const;
318 IMPORT_C TBool IsCompressedInRAM() const;
319 IMPORT_C TInt SwapWidthAndHeight();
320 IMPORT_C TInt CreateExtendedBitmap(const TSize& aSizeInPixels, TDisplayMode aDispMode, TUid aType, const TAny* aData, TInt aDataSize);
321 IMPORT_C TInt CreateExtendedBitmap(const TSize& aSizeInPixels, TDisplayMode aDispMode, TUid aType, TInt aDataSize, MFbsExtendedBitmapInitializer& aInitializer);
322 IMPORT_C TUid ExtendedBitmapType() const;
323 IMPORT_C TInt DataSize() const;
324 IMPORT_C static HBufC8* GetDecompressionBuffer(TInt aSize);
325 IMPORT_C static CFbsRasterizer* Rasterizer();
326 IMPORT_C TInt GetAllBitmapHandles(RArray<TInt>& aBitmapIdArray) const;
327 IMPORT_C static HBufC8* GetExtraBuffer(TInt aSize);
329 IMPORT_C void GetScanLine(TDes8& aBuf,const TPoint& aPixel,TInt aLength,const TPoint& aDitherOffset,TDisplayMode aDispMode) const;
330 CBitwiseBitmap* Address() const;
331 IMPORT_C CBitwiseBitmap* CleanAddress() const;
332 inline CBitwiseBitmap* BeginDataAccessAndGetCleanAddress(TUint32*& aDataAddress) const;
333 void DoSaveL(RFile& aFile);
334 TInt DoCreate(const TSize& aSizeInPixels, TDisplayMode aDispMode, TUid aUid, TInt aDataSize = 0);
336 TInt DoLoad(RFile& aFile,TInt32 aId,TBool aShareIfLoaded,TUint aFileOffset);
337 TInt DoLoad(const TDesC& aFileName,TInt32 aId,TBool aShareIfLoaded,TUint aFileOffset);
338 TInt DoLoadFromRom(TUint32* aRomPointer, TInt32 aId, TUint aFileOffset, TBool& aRomPointerValid);
339 TBool LoadShiftedRomBmpL(const TDesC& aFileName,TInt32 aId,TUint aFileOffset);
340 static void DoStoreL(CDirectFileStore* aFileStore,CFbsBitmap* aBitmap,TInt aNumSources,const TDesC* aSources[],TInt32 aSourceIds[]);
342 /** WARNING: For internal use ONLY. Compatibility is not guaranteed in future releases.
346 EIsRomBitmap = 0x0001,
347 EIsExtendedBitmap = 0x0002,
348 EIsReadOnlyBitmapMask = EIsRomBitmap | EIsExtendedBitmap
351 RFbsSession* iFbs; /**< WARNING: Member variable for internal use ONLY. Compatibility is not guaranteed in future releases. Please access using the provided get/set APIs only. */
352 CBitwiseBitmap* iAddressPointer; /**< WARNING: Member variable for internal use ONLY. Compatibility is not guaranteed in future releases. Please access using the provided get/set APIs only. */
353 TUint16 iFlags; /**< WARNING: Member variable for internal use ONLY. Compatibility is not guaranteed in future releases. Please access using the provided get/set APIs only. */
354 TInt16 iUseCount; /**< WARNING: Member variable for internal use ONLY. Compatibility is not guaranteed in future releases. Please access using the provided get/set APIs only. */
355 TInt iHandle; /**< WARNING: Member variable for internal use ONLY. Compatibility is not guaranteed in future releases. Please access using the provided get/set APIs only. */
356 TInt iServerHandle; /**< WARNING: Member variable for internal use ONLY. Compatibility is not guaranteed in future releases. Please access using the provided get/set APIs only. */
361 Provides fast read/write access to the pixel data of a bitmap.
363 Functionality includes getting and setting the individual pixels of a bitmap.
364 Common to this is the concept of the current pixel position. This is held
365 as member data and is changed by using various efficient functions. For example,
366 incrementing the position's x- or y co-ordinate is much quicker than setting
367 a completely new position. This efficiency issue is important as these functions
368 are used as part of the frequently used blitting DDA used for creating
369 stretched or compressed versions of bitmaps.
371 Calls to Begin() and End() must surround any calls to the other member functions.
372 Note that you should always ensure each Begin() is matched by an End() call
373 when using this class.
375 Note also that all display modes including EColor16M are supported, but the
376 TDisplayMode values ERgb and ENone are not considered to be display modes.
383 IMPORT_C void Begin(const TPoint& aPosition);
384 IMPORT_C void Begin(const TPoint& aPosition,const TBitmapUtil& aUtil);
386 IMPORT_C TBitmapUtil(CFbsBitmap* aBitmap);
387 IMPORT_C TUint32 GetPixel() const;
388 IMPORT_C void SetPixel(TUint32 aValue);
389 IMPORT_C void SetPixel(const TBitmapUtil& aSource);
390 IMPORT_C void SetPos(const TPoint& aPosition);
391 IMPORT_C void DecXPos();
392 IMPORT_C void DecYPos();
393 IMPORT_C void IncXPos();
394 IMPORT_C void IncYPos();
396 CFbsBitmap* iFbsBitmap;
398 TUint32* iMinWordPos;
399 TUint32* iMaxWordPos;
404 TInt iScanlineWordLength;
411 Font and bitmap server typeface store.
415 class CFbsTypefaceStore : public CTypefaceStore
417 friend class CWsScreenDevice;
419 IMPORT_C static CFbsTypefaceStore* NewL(CGraphicsDevice* aDevice);
420 IMPORT_C ~CFbsTypefaceStore();
421 IMPORT_C TInt AddFile(const TDesC& aName,TInt& aId);
422 IMPORT_C TInt InstallFile(const TDesC& aName,TInt& aId);
423 IMPORT_C void RemoveFile(TInt aId=0);
424 IMPORT_C virtual TInt GetNearestFontInTwips(CFont*& aFont, const TFontSpec& aFontSpec);
425 IMPORT_C TInt GetNearestFontInPixels(CFont*& aFont, const TFontSpec& aFontSpec);
426 IMPORT_C virtual TInt GetNearestFontToDesignHeightInTwips(CFont*& aFont, const TFontSpec& aFontSpec);
427 IMPORT_C TInt GetNearestFontToDesignHeightInPixels(CFont*& aFont, const TFontSpec& aFontSpec);
428 IMPORT_C virtual TInt GetNearestFontToMaxHeightInTwips(CFont*& aFont, const TFontSpec& aFontSpec, TInt aMaxHeight);
429 IMPORT_C TInt GetNearestFontToMaxHeightInPixels(CFont*& aFont, const TFontSpec& aFontSpec, TInt aMaxHeight);
430 IMPORT_C TInt GetFontById(CFont *&aFont,TUid aUid,const TAlgStyle& aAlgStyle);
431 IMPORT_C virtual TInt NumTypefaces() const;
432 IMPORT_C virtual void TypefaceSupport(TTypefaceSupport& aTypefaceSupport,TInt aTypefaceIndex) const;
433 IMPORT_C virtual TInt FontHeightInTwips(TInt aTypefaceIndex,TInt aHeightIndex) const;
434 IMPORT_C TInt FontHeightInPixels(TInt aTypefaceIndex,TInt aHeightIndex) const;
435 IMPORT_C TGlyphBitmapType DefaultBitmapType() const;
436 IMPORT_C void SetDefaultBitmapType(TGlyphBitmapType aType) const;
437 IMPORT_C void SetFontNameAliasL(const TDesC& aFontAlias,const TDesC& aFontName) const;
438 IMPORT_C void SetDefaultLanguageForMetrics(TLanguage aLanguage) const;
439 IMPORT_C static void RemoveFontFileLocksL();
440 IMPORT_C static void RemoveFontFileLocksL(const TDesC& aDrive, TBool aAllFonts);
441 IMPORT_C static void RemoveFontFileLocksL(const TDesC& aFileName);
442 IMPORT_C void ReleaseTwipsCache();
443 IMPORT_C void SetSystemDefaultTypefaceNameL(const TDesC& aFontTypefaceName);
444 IMPORT_C TInt RegisterLinkedTypeface(const CLinkedTypefaceSpecification& aLinkedTypefaceSpec, TInt& aId);
445 IMPORT_C void GetLinkedTypefaceL(CLinkedTypefaceSpecification& aLinkedTypefaceSpec);
446 IMPORT_C TInt RegisterLinkedTypeface(const CLinkedTypefaceSpecification& aLinkedTypefaceSpec);
447 IMPORT_C TInt UpdateLinkedTypeface(const CLinkedTypefaceSpecification& aLinkedTypefaceSpec);
449 CFbsTypefaceStore(CGraphicsDevice* aDevice);
451 TInt CreateFont(CFont*& aFont,const TFontInfo& aFontInfo);
452 TBool IsFontLoaded(CFont*& aFont, const TFontInfo& aFontInfo) const;
453 TInt FontHeight(TInt aTypefaceIndex,TInt aHeightIndex,TInt aMessage) const;
454 TInt GetNearestFontInTwipsAndCreateFont(CFont*& aFont, TInt aFbsMessage, const TFontSpec& aFontSpec, TInt aMaxHeight = 0);
455 TInt SendGetNearestFontCommandNCreateFont(
456 CFont*& aFont, TInt aFbsMessage, const TFontSpec& aFontSpec, TInt aMaxHeight = 0);
457 void GetPixelSizeInTwips(TSize& aSize) const;
461 CGraphicsDevice* iDevice;
462 CFontCache* iTwipsCache;
465 class CDitherColor256;
468 Copies a bitmap in any display mode of at least 256 colours into a 256
469 colour bitmap, optionally using a user-defined palette.
473 class CFbsColor256BitmapUtil : public CBase
476 /** Indicates whether or not to use dithering. */
481 /** Use the Floyd-Steinberg dithering algorithm. */
486 IMPORT_C static CFbsColor256BitmapUtil* NewL(const CPalette* aPalette);
488 IMPORT_C TInt CopyBitmap(CFbsBitmap* aColor256Destination,CFbsBitmap* aSource,TDither aDither=ENoDither);
490 ~CFbsColor256BitmapUtil();
492 CFbsColor256BitmapUtil();
494 TColor256Util* iColor256Util;
495 CDitherColor256* iDither;