--- /dev/null
+
+/*] Copyright (c) 2009-2010, Charles McGarvey [**************************
+**] All rights reserved.
+*
+* vi:ts=4 sw=4 tw=75
+*
+* Distributable under the terms and conditions of the 2-clause BSD license;
+* see the file COPYING for a complete text of the license.
+*
+**************************************************************************/
+
+#ifndef _MOOF_VIEW_HH_
+#define _MOOF_VIEW_HH_
+
+#include <list>
+#include <string>
+
+#include <boost/shared_ptr.hpp>
+
+#include <Moof/Event.hh>
+#include <Moof/Math.hh>
+
+
+namespace Mf {
+
+
+class Settings;
+class Video;
+
+class View;
+typedef boost::shared_ptr<View> ViewP;
+
+/**
+ * The core is essentially a stack of layers. While running, it updates
+ * each layer from the bottom up every timestep. It also draws each layer
+ * from the bottom up, adhering to the maximum frame-rate. Events are sent
+ * to each layer from the top down until a layer signals the event was
+ * handled. The core is also responsible for firing timers on time. The
+ * core will continue running as long as there are layers on the stack.
+ */
+
+class View
+{
+public:
+
+ // loads settings: rngseed, timestep, framerate, showfps
+ View(Settings& settings, Video& video);
+ View();
+
+ virtual ~View() {}
+
+ virtual void didAddToView() {}
+ virtual void willRemoveFromView() {}
+
+ virtual void update(Scalar t, Scalar dt);
+ virtual void draw(Scalar alpha) const;
+ virtual bool handleEvent(const Event& event);
+
+
+ void addChild(ViewP view);
+ ViewP removeChild(View* view);
+ ViewP removeChild(ViewP view);
+ void clear();
+
+ View& parent() const;
+ const std::list<ViewP>& children() const;
+
+ // do not call these without adding the view to a hierarchy with a base
+ // view constructed with settings and a video context
+ Settings& settings() const;
+ Video& video() const;
+
+ // set this machine in motion
+ void run();
+ void stop();
+ bool isRunning() const;
+
+private:
+
+ class Impl;
+ boost::shared_ptr<Impl> mImpl;
+};
+
+
+} // namespace Mf
+
+#endif // _MOOF_VIEW_HH_
+