aboutsummaryrefslogtreecommitdiffstats
path: root/window.h
diff options
context:
space:
mode:
Diffstat (limited to 'window.h')
-rw-r--r--window.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/window.h b/window.h
new file mode 100644
index 0000000..9313a92
--- /dev/null
+++ b/window.h
@@ -0,0 +1,95 @@
+/**
+ *
+ *
+ */
+
+#ifndef WINDOW_H
+#define WINDOW_H
+
+#include <stdint.h>
+#include "petri.h"
+
+/*
+ * Window Position
+ * Keeps track of window position
+ */
+struct Window_Pos {
+ uint16_t posx;
+ uint16_t posy;
+};
+
+/*
+ * Window Size
+ * Keeps track of window size
+ */
+struct Window_Size {
+ uint16_t width;
+ uint16_t height;
+};
+
+
+class Window {
+protected:
+ Petri petri;
+ bool bad;
+ struct Window_Size winsize;
+ struct Window_Pos winposition;
+
+ /**
+ * Draws a fungus to the window display
+ * @param f The fungus to draw
+ */
+ virtual void drawFungus(const Fungus& f);
+
+public:
+ Window() {
+ winsize = {0, 0};
+ winposition = {0, 0};
+ bad = true; // Since there is nothing to be drawn
+ }
+
+ /**
+ * Creates a new window in a given position and a given size
+ * @param pos Position of window
+ * @param size Size of window
+ * @param p Petri dish to display
+ */
+ Window(const Window_Pos& pos, const Window_Size& size, const Petri& p) {
+ winsize.width = size.width;
+ winsize.height = size.height;
+ winposition.posx = pos.posx;
+ winposition.posy = pos.posy;
+ bad = false;
+ petri = p;
+ }
+
+ /**
+ * Destroy the window
+ */
+ virtual ~Window();
+
+ /**
+ * Starts the simulation
+ */
+ virtual void doFungus();
+
+ /**
+ * Gives position of window
+ * @return Window_Pos struct holding window current position
+ */
+ virtual Window_Pos getWindowPosition() const { return winposition; }
+
+ /**
+ * Gives window size
+ * @return Window_Size struct holding size of current window
+ */
+ virtual Window_Size getWindowSize() const { return winsize; }
+
+ /**
+ * Tells if there has been some error setting up the window
+ * @return True if there is an error, False if not
+ */
+ virtual bool isBad() const { return bad; }
+};
+
+#endif