00001
00002
00003
00004
00005
00008
00009 #ifndef _ROKU_INCLUDE_CASCADE_GRAPHICS_CASCADEBITMAP_H
00010 #define _ROKU_INCLUDE_CASCADE_GRAPHICS_CASCADEBITMAP_H
00011
00012 #include <cascade/CascadeObject.h>
00013 #include <cascade/util/CascadeString.h>
00014 #include <cascade/util/CascadeFile.h>
00015 #include <cascade/graphics/CascadeDims.h>
00016 #include <cascade/graphics/CascadePoint.h>
00017 #include <cascade/graphics/CascadeRect.h>
00018 #include <cascade/graphics/CascadeColor.h>
00019 #include <cascade/graphics/CascadeFont.h>
00020 #include <cascade/interprocess/CascadeSharedMemZone.h>
00021
00023
00024 #define TEXTOUT_TOP (0)
00025 #define TEXTOUT_BOTTOM (1 << 0)
00026 #define TEXTOUT_BASELINE (1 << 1)
00027
00033
00039
00045
00046 #define TEXT_CENTER_VERTICALLY (1 << 0)
00047 #define TEXT_CENTER_HORIZONTALLY (1 << 1)
00048 #define TEXT_JUSTIFY_LEFT (1 << 2)
00049 #define TEXT_JUSTIFY_TOP (1 << 3)
00050 #define TEXT_JUSTIFY_BOTTOM (1 << 4)
00051 #define TEXT_JUSTIFY_RIGHT (1 << 5)
00052 #define TEXT_WORD_WRAP (1 << 6)
00053 #define TEXT_CLIP (1 << 7)
00054 #define TEXT_CLIP_WITH_DOTDOTDOT (1 << 8)
00055 #define TEXT_MEASURE_ONLY (1 << 9)
00056 #define TEXT_CLIP_LEFT (1 << 10)
00057 #define TEXT_CLIP_CENTER (1 << 11)
00058 #define TEXT_DONT_WRAP_ON_SPACE (1 << 12)
00059
00062
00065
00068
00071
00074
00077
00080
00083
00088
00091
00095
00099
00103
00132 class CascadeBitmap : public CascadeObject
00133 {
00134
00135 public:
00136 CascadeBitmap();
00140 virtual ~CascadeBitmap();
00145
00146 public:
00147 enum RamType {
00148 kVRAMOnly = 0,
00149 kMainRAMOnly = 1,
00150 kEither = 2
00151 };
00157
00158 public:
00159 virtual bool Create(const CascadeDims & dims, RamType ramType = kEither);
00173
00174 public:
00175 virtual bool CreateFromBitmapFile(CascadeFile & bitmapFile, RamType ramType = kEither);
00193
00194 public:
00195 virtual bool Destroy();
00203
00204 public:
00205 inline CascadeRect GetClipRect() const { return m_clipRect; }
00216
00217 void SetClipRect(const CascadeRect & rect);
00230
00231 public:
00232 virtual void FrameRect(const CascadeRect & rect, const CascadeColor & color );
00240
00241 virtual void FillRect(const CascadeRect & rect, const CascadeColor & color);
00248
00249 virtual void DrawLine(const CascadePoint & start, const CascadePoint & end, const CascadeColor & color);
00256
00257 virtual void TextOut(const CascadePoint & point, const CascadeString & string, const CascadeFont & font, const CascadeColor & color, u32 nFlags = TEXTOUT_TOP);
00274
00275 virtual bool DrawText(CascadeFont & font, const CascadeRect & rect, const CascadeString & string, const CascadeColor & color, u32 nFlags);
00301
00302 virtual void Blit(const CascadePoint & point, const CascadeBitmap & source, const CascadeRect & sourceRect);
00310 virtual void Blit(const CascadePoint & point, CascadeSharedMemZone & sourceZone, u32 nZoneOffset, u32 nPixelWidth, u32 nPixelHeight, u32 nBitDepth, const CascadeRect & sourceRect);
00324 virtual bool GrabBits(const CascadeRect & sourceRect, CascadeSharedMemZone & destZone, u32 nZoneOffset);
00336 virtual void GetPixel(const CascadePoint & point, CascadeColor & colorToSet) const;
00343
00344 virtual void SetPixel(const CascadePoint & point, const CascadeColor & color);
00351
00352 virtual CascadeDims GetDims() const;
00357
00358 inline CascadeRect GetRect() const { CascadeDims dims(GetDims()); return CascadeRect(0, 0, dims.w, dims.h); }
00364
00365 virtual u8 GetColorDepth() const;
00370
00371 virtual void * GetMemory();
00378
00379 virtual void Flush();
00386
00387 private:
00388
00389 #ifndef DOXY_SKIP
00390 friend class CascadeScreen;
00391 #endif
00392
00393 virtual void * AcquireDriverObject() const;
00394 virtual void ReleaseDriverObject() const;
00395
00396 private:
00397 void * m_pBitmapInternal;
00398
00399 protected:
00400 CascadeRect m_clipRect;
00401 };
00402
00403 #endif // #ifndef _ROKU_INCLUDE_CASCADE_GRAPHICS_CASCADEBITMAP_H
00404
00406
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423