engine.h 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. #ifndef _engine_H_
  2. #define _engine_H_
  3. //////////////////////////////////////////////////////////////////////////////
  4. //
  5. //
  6. //
  7. //////////////////////////////////////////////////////////////////////////////
  8. #define EnablePerformanceCounters
  9. #ifdef _DEBUG
  10. //
  11. // Setting this to true will log every dx call made
  12. //
  13. extern bool g_bDumpDD;
  14. #endif
  15. //////////////////////////////////////////////////////////////////////////////
  16. //
  17. // Requires ZLib
  18. //
  19. //////////////////////////////////////////////////////////////////////////////
  20. #include "zlib.h"
  21. //////////////////////////////////////////////////////////////////////////////
  22. //
  23. // Basic 3D Types
  24. //
  25. //////////////////////////////////////////////////////////////////////////////
  26. #include "color.h"
  27. #include "pixel.h"
  28. #include "pixelformat.h"
  29. //////////////////////////////////////////////////////////////////////////////
  30. //
  31. // Engine Headers
  32. //
  33. //////////////////////////////////////////////////////////////////////////////
  34. class Context;
  35. class Camera;
  36. class Surface;
  37. class Engine;
  38. class Surface;
  39. class Material;
  40. class Palette;
  41. #include "value.h"
  42. #include "font.h"
  43. #include "namespace.h"
  44. #include "mdl.h"
  45. #include "bounds.h"
  46. #include "context.h"
  47. #include "surface.h"
  48. #include "material.h"
  49. #include "palette.h"
  50. //////////////////////////////////////////////////////////////////////////////
  51. //
  52. // Input
  53. //
  54. //////////////////////////////////////////////////////////////////////////////
  55. #include "inputengine.h"
  56. //////////////////////////////////////////////////////////////////////////////
  57. //
  58. // Engine
  59. //
  60. //////////////////////////////////////////////////////////////////////////////
  61. class Engine : public IObject {
  62. public:
  63. //
  64. // Initialization and cleanup
  65. //
  66. virtual void SetFocusWindow(Window* pwindow, bool bStartFullscreen) = 0;
  67. virtual void Terminate() = 0;
  68. virtual bool IsDeviceReady(bool& bChanges) = 0;
  69. //
  70. // Attributes
  71. //
  72. virtual void SetAllowSecondary(bool bAllowSecondary) = 0;
  73. virtual void SetAllow3DAcceleration(bool bAllow3DAcceleration) = 0;
  74. virtual void Set3DAccelerationImportant(bool b3DAccelerationImportant) = 0;
  75. virtual void SetFullscreen(bool bFullscreen) = 0;
  76. virtual void SetFullscreenSize(const WinPoint& point) = 0;
  77. virtual void ChangeFullscreenSize(bool bLarger) = 0;
  78. virtual void SetGammaLevel(float value) = 0;
  79. virtual bool IsFullscreen() = 0;
  80. virtual bool PrimaryHas3DAcceleration() = 0;
  81. virtual bool GetAllowSecondary() = 0;
  82. virtual bool GetAllow3DAcceleration() = 0;
  83. virtual bool Get3DAccelerationImportant() = 0;
  84. virtual bool GetUsing3DAcceleration() = 0;
  85. virtual ZString GetDeviceName() = 0;
  86. virtual const WinPoint& GetFullscreenSize() = 0;
  87. virtual float GetGammaLevel() = 0;
  88. //
  89. // For our exception handler
  90. //
  91. virtual void DebugSetWindowed() = 0;
  92. //
  93. // Screen access
  94. //
  95. virtual void BltToWindow(Window* pwindow, const WinPoint& point, Surface* psurface, const WinRect& rect) = 0;
  96. virtual void Flip() = 0;
  97. //
  98. // Surface Constructors
  99. //
  100. virtual TRef<Surface> CreateSurface(HBITMAP hbitmap) = 0;
  101. virtual TRef<Surface> CreateSurface(
  102. const WinPoint& size,
  103. SurfaceType stype,
  104. SurfaceSite* psite = NULL
  105. ) = 0;
  106. virtual TRef<Surface> CreateSurface(
  107. const WinPoint& size,
  108. PixelFormat* ppf,
  109. Palette* ppalette = NULL,
  110. SurfaceType stype = SurfaceType2D(),
  111. SurfaceSite* psite = NULL
  112. ) = 0;
  113. virtual TRef<Surface> CreateSurface(
  114. const WinPoint& size,
  115. PixelFormat* ppf,
  116. Palette* ppalette,
  117. int pitch,
  118. BYTE* pdata,
  119. IObject* pobjectMemory
  120. ) = 0;
  121. //
  122. // Performance counters
  123. //
  124. virtual int GetTotalTextureMemory() = 0;
  125. virtual int GetAvailableTextureMemory() = 0;
  126. virtual int GetTotalVideoMemory() = 0;
  127. virtual int GetAvailableVideoMemory() = 0;
  128. };
  129. TRef<Engine> CreateEngine(bool bAllow3DAcceleration, bool bAllowSecondary);
  130. //////////////////////////////////////////////////////////////////////////////
  131. //
  132. // Justification
  133. //
  134. //////////////////////////////////////////////////////////////////////////////
  135. class JustificationBase {};
  136. typedef TBitMask<JustificationBase, DWORD> Justification;
  137. class JustifyLeft : public Justification { public: JustifyLeft () : Justification(0x01) {} };
  138. class JustifyRight : public Justification { public: JustifyRight () : Justification(0x02) {} };
  139. class JustifyTop : public Justification { public: JustifyTop () : Justification(0x04) {} };
  140. class JustifyBottom : public Justification { public: JustifyBottom () : Justification(0x08) {} };
  141. class JustifyXCenter : public Justification { public: JustifyXCenter () : Justification(0x10) {} };
  142. class JustifyYCenter : public Justification { public: JustifyYCenter () : Justification(0x20) {} };
  143. class JustifyLeftClipRight : public Justification { public: JustifyLeftClipRight() : Justification(0x40) {} };
  144. class JustifyCenter : public Justification { public: JustifyCenter () : Justification(0x30) {} };
  145. //////////////////////////////////////////////////////////////////////////////
  146. //
  147. // Modeling Headers
  148. //
  149. //////////////////////////////////////////////////////////////////////////////
  150. #include "transform.h"
  151. #include "keyframe.h"
  152. #include "model.h"
  153. #include "camera.h"
  154. #include "viewport.h"
  155. #include "geometry.h"
  156. #include "bspgeo.h"
  157. #include "image.h"
  158. //////////////////////////////////////////////////////////////////////////////
  159. //
  160. // Panes
  161. //
  162. //////////////////////////////////////////////////////////////////////////////
  163. #include "pane.h"
  164. #include "toppane.h"
  165. #include "paneimage.h"
  166. //////////////////////////////////////////////////////////////////////////////
  167. //
  168. // Popups
  169. //
  170. //////////////////////////////////////////////////////////////////////////////
  171. #include "popup.h"
  172. #include "menu.h"
  173. //////////////////////////////////////////////////////////////////////////////
  174. //
  175. // EngineWindow and EngineApp
  176. //
  177. //////////////////////////////////////////////////////////////////////////////
  178. #include "caption.h"
  179. #include "engineapp.h"
  180. #include "enginewindow.h"
  181. //////////////////////////////////////////////////////////////////////////////
  182. //
  183. // Sub classes
  184. //
  185. //////////////////////////////////////////////////////////////////////////////
  186. #include "frameimage.h"
  187. #include "button.h"
  188. #include "controls.h"
  189. #endif