surface.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. #ifndef _surface_h_
  2. #define _surface_h_
  3. //////////////////////////////////////////////////////////////////////////////
  4. //
  5. // SurfaceTypes
  6. //
  7. //////////////////////////////////////////////////////////////////////////////
  8. class SurfaceTypeBase {};
  9. typedef TBitMask<SurfaceTypeBase, DWORD> SurfaceType;
  10. class SurfaceType2D : public SurfaceType { public: SurfaceType2D () : SurfaceType(0x01) {} };
  11. class SurfaceType3D : public SurfaceType { public: SurfaceType3D () : SurfaceType(0x02) {} };
  12. class SurfaceTypeZBuffer : public SurfaceType { public: SurfaceTypeZBuffer() : SurfaceType(0x08) {} };
  13. class SurfaceTypeVideo : public SurfaceType { public: SurfaceTypeVideo () : SurfaceType(0x10) {} };
  14. //////////////////////////////////////////////////////////////////////////////
  15. //
  16. // SurfaceSite
  17. //
  18. //////////////////////////////////////////////////////////////////////////////
  19. class SurfaceSite : public IObject {
  20. public:
  21. virtual void UpdateSurface(Surface* psurface) {};
  22. };
  23. //////////////////////////////////////////////////////////////////////////////
  24. //
  25. // Surface
  26. //
  27. //////////////////////////////////////////////////////////////////////////////
  28. class Surface : public IObject {
  29. public:
  30. //
  31. // constructors
  32. //
  33. virtual TRef<Surface> Copy() = 0;
  34. virtual TRef<Surface> CreateCompatibleSurface(const WinPoint& size, SurfaceType stype, SurfaceSite* psite = NULL) = 0;
  35. //
  36. // Serialization
  37. //
  38. virtual void Save(ZFile* pfile) = 0; // save as a bmp
  39. virtual void Write(ZFile* pfile) = 0; // write to an mdl file
  40. //
  41. // Set Attributes
  42. //
  43. virtual void SetSite(SurfaceSite* psite) = 0;
  44. virtual void SetName(const ZString& str) = 0;
  45. virtual void SetPixelFormat(PixelFormat* ppf) = 0;
  46. //
  47. // Get Attributes
  48. //
  49. virtual Engine* GetEngine() = 0;
  50. virtual Palette* GetPalette() = 0;
  51. virtual SurfaceType GetSurfaceType() = 0;
  52. virtual const WinPoint& GetSize() = 0;
  53. virtual PixelFormat* GetPixelFormat() = 0;
  54. //
  55. // Context
  56. //
  57. virtual Context* GetContext() = 0;
  58. virtual void ReleaseContext(Context* pcontext) = 0;
  59. //
  60. // Rendering attributes
  61. //
  62. virtual void Offset(const WinPoint& offset) = 0;
  63. virtual const WinPoint& GetOffset() = 0;
  64. virtual WinRect GetClipRect() = 0;
  65. virtual void SetClipRect(const WinRect& rect) = 0;
  66. virtual void RestoreClipRect(const WinRect& rect) = 0;
  67. //
  68. // Color Keying
  69. //
  70. virtual bool HasColorKey() = 0;
  71. virtual const Color& GetColorKey() = 0;
  72. virtual void SetColorKey(const Color& color) = 0;
  73. //
  74. // Direct Surface manipulation
  75. //
  76. virtual int GetPitch() = 0;
  77. virtual const BYTE* GetPointer() = 0;
  78. virtual const BYTE* GetPointer(const WinPoint& point) = 0;
  79. virtual BYTE* GetWritablePointer() = 0;
  80. virtual BYTE* GetWritablePointer(const WinPoint& point) = 0;
  81. virtual void ReleasePointer() = 0;
  82. virtual Pixel GetPixel(const WinPoint& point) = 0;
  83. virtual void SetPixel(const WinPoint& point, Pixel pixel) = 0;
  84. virtual Color GetColor(const WinPoint& point) = 0;
  85. virtual void SetColor(const WinPoint& point, const Color& color) = 0;
  86. //
  87. // Drawing
  88. //
  89. virtual void BitBlt(const WinPoint& point, Surface* psurfaceSource) = 0;
  90. virtual void BitBlt(const WinPoint& point, Surface* psurfaceSource, const WinRect& rectSource) = 0;
  91. virtual void BitBlt(const WinRect& point, Surface* psurfaceSource) = 0;
  92. virtual void BitBlt(const WinRect& point, Surface* psurfaceSource, const WinRect& rectSource) = 0;
  93. virtual void BitBltFromCenter(const WinPoint& point, Surface* psurfaceSource) = 0;
  94. virtual void FillRect(const WinRect& rect, Pixel pixel) = 0;
  95. virtual void FillRect(const WinRect& rect, const Color& color) = 0;
  96. virtual void FillSurface(Pixel pixel) = 0;
  97. virtual void FillSurface(const Color& color) = 0;
  98. virtual void FillSurfaceWithColorKey() = 0;
  99. //
  100. // Text
  101. //
  102. virtual void DrawString(
  103. IEngineFont* pfont,
  104. const Color& color,
  105. const WinPoint& point,
  106. const ZString& str
  107. ) = 0;
  108. virtual void DrawStringWithShadow(
  109. IEngineFont* pfont,
  110. const Color& color,
  111. const Color& colorShadow,
  112. const WinPoint& point,
  113. const ZString& str
  114. ) = 0;
  115. };
  116. #endif