Index: trunk/nv/interface/context.hh
===================================================================
--- trunk/nv/interface/context.hh	(revision 32)
+++ trunk/nv/interface/context.hh	(revision 32)
@@ -0,0 +1,33 @@
+// Copyright (C) 2012-2013 ChaosForge / Kornel Kisielewicz
+// http://chaosforge.org/
+//
+// This file is part of NV Libraries.
+// For conditions of distribution and use, see copyright notice in nv.hh
+/**
+ * @file context.hh
+ * @author Kornel Kisielewicz epyon@chaosforge.org
+ * @brief Context class
+ */
+
+#ifndef NV_CONTEXT_HH
+#define NV_CONTEXT_HH
+
+#include <nv/common.hh>
+#include <nv/interface/clear_state.hh>
+#include <nv/interface/render_state.hh>
+
+namespace nv
+{
+	class context
+	{
+	public:
+		virtual void clear( const clear_state& cs ) = 0;
+	protected:
+		clear_state  m_clear_state;
+		render_state m_render_state;
+		ivec4        m_viewport;
+	};
+
+} // namespace nv
+
+#endif // NV_CONTEXT_HH
Index: trunk/nv/interface/device.hh
===================================================================
--- trunk/nv/interface/device.hh	(revision 32)
+++ trunk/nv/interface/device.hh	(revision 32)
@@ -0,0 +1,33 @@
+// Copyright (C) 2012-2013 ChaosForge / Kornel Kisielewicz
+// http://chaosforge.org/
+//
+// This file is part of NV Libraries.
+// For conditions of distribution and use, see copyright notice in nv.hh
+/**
+ * @file device.hh
+ * @author Kornel Kisielewicz epyon@chaosforge.org
+ * @brief Device class
+ */
+
+#ifndef NV_DEVICE_HH
+#define NV_DEVICE_HH
+
+#include <nv/common.hh>
+#include <nv/string.hh>
+
+namespace nv
+{
+	class window;
+	class program;
+
+	class device
+	{
+	public:
+		virtual window* create_window( uint16 width, uint16 height ) = 0;
+		virtual program* create_program( const string& vs_source, const string& fs_source, const string& gs_source = "" ) = 0;
+	};
+
+} // namespace nv
+
+
+#endif // NV_DEVICE_HH
Index: trunk/nv/interface/window.hh
===================================================================
--- trunk/nv/interface/window.hh	(revision 32)
+++ trunk/nv/interface/window.hh	(revision 32)
@@ -0,0 +1,33 @@
+// Copyright (C) 2012-2013 ChaosForge / Kornel Kisielewicz
+// http://chaosforge.org/
+//
+// This file is part of NV Libraries.
+// For conditions of distribution and use, see copyright notice in nv.hh
+/**
+ * @file window.hh
+ * @author Kornel Kisielewicz epyon@chaosforge.org
+ * @brief Window interface
+ */
+
+#ifndef NV_WINDOW_HH
+#define NV_WINDOW_HH
+
+#include <nv/common.hh>
+#include <nv/string.hh>
+
+namespace nv
+{
+
+	class window
+	{
+	public:
+		virtual uint16 get_width() const = 0;
+		virtual uint16 get_height() const = 0;
+		virtual string get_title() const = 0;
+		virtual void set_title( const string& title ) = 0;
+	};
+
+} // namespace nv
+
+
+#endif // NV_WINDOW_HH
