Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

CascadeBitmap.h

Go to the documentation of this file.
00001 //
00002 // CascadeBitmap.h - header file for class CascadeBitmap
00003 //
00004 // Copyright (c) 2003, Roku, LLC.  All rights reserved.
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 // class CascadeBitmap #defines
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; // not really const but I know what I'm doing
00394     virtual void   ReleaseDriverObject() const; // not really const but I know what I'm doing
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 //  LOG
00408 //  20-Jan-03   dwoodward       created
00409 //  20-Jan-03   dwoodward       1.0 STATUS: 100% complete
00410 //  21-Jan-03   dwoodward   added CreateFromBitmapFile
00411 //  27-Jan-03   dwoodward   added AcquireDriverObject and ReleaseDriverObject
00412 //  10-Feb-03   dwoodward   added GetClipRect and SetClipRect; made some functions const
00413 //  12-Feb-03   dwoodward   added nFlags to TextOut
00414 //  19-Feb-03   dwoodward   added RamType parameter to Create functions
00415 //  06-Mar-03   dwoodward   added Destroy()
00416 //  22-Apr-03   dwoodward   added overloaded version of Blit() that takes a CascadeSharedMemZone
00417 //  05-May-03   dwoodward   doxygenated
00418 //  05-Aug-03   dsletten    added DrawText()
00419 //  19-Aug-03   mjkobb      Added TEXT_CLIP_LEFT and TEXT_CLIP_CENTER
00420 //  21-Aug-03   dwoodward   removed GL stuff
00421 //  03-Sep-04   dwoodward   added GrabBits()
00422 //  21-Apr-05   dwoodward   added GetMemory()
00423 //  22-Apr-05   dwoodward   added Flush()

Generated on Sun Jul 24 14:27:17 2005 for Cascade Library by  doxygen 1.4.1