--- /dev/null
+//
+// GUI element base class
+//
+// by James L. Hammons
+//
+
+#ifndef __ELEMENT_H__
+#define __ELEMENT_H__
+
+#include "SDL.h"
+#include "types.h"
+
+class Element
+{
+ public:
+ Element(uint32 x = 0, uint32 y = 0, uint32 w = 0, uint32 h = 0)
+ { extents.x = x, extents.y = y, extents.w = w, extents.h = h; }
+ // These are "pure" virtual functions...
+ virtual void HandleKey(SDLKey key) = 0;
+ virtual void HandleMouseMove(uint32 x, uint32 y) = 0;
+ virtual void HandleMouseButton(uint32 x, uint32 y, bool mouseDown) = 0;
+ virtual void Draw(uint32, uint32) = 0;
+ virtual void Notify(Element *) = 0;
+//Needed? virtual ~Element() = 0;
+//We're not allocating anything in the base class, so the answer would be NO.
+ bool Inside(uint32 x, uint32 y);
+
+ // Class method
+ static void SetScreenAndPitch(uint32 * s, uint32 p) { screenBuffer = s, pitch = p; }
+
+ protected:
+ SDL_Rect extents;
+ uint32 state;
+
+ // Class variables...
+ static uint32 * screenBuffer;
+ static uint32 pitch;
+};
+
+#endif // __ELEMENT_H__