#ifndef GLW_RENDERABLE_H #define GLW_RENDERABLE_H #include #include "./object.h" namespace glw { class RenderableArguments : public ObjectArguments { public: typedef ObjectArguments BaseType; typedef RenderableArguments ThisType; GLenum format; RenderableArguments(void) { this->clear(); } void clear(void) { BaseType::clear(); this->format = GL_NONE; } }; class SafeRenderable : public virtual SafeObject { public: typedef SafeObject BaseType; typedef SafeRenderable ThisType; GLenum format(void) const { return this->m_format; } virtual int imageDimensions (void) const = 0; virtual bool isArray (void) const = 0; protected: GLenum m_format; SafeRenderable(Context * ctx) : BaseType (ctx) , m_format (GL_NONE) { ; } }; class Renderable : public Object, public virtual SafeRenderable { public: typedef Object BaseType; typedef SafeRenderable SafeType; typedef Renderable ThisType; protected: Renderable(Context * ctx) : SafeObject (ctx) , SafeType (ctx) , BaseType (ctx) { ; } }; typedef detail::SafeHandle RenderableHandle; typedef detail::UnsafeHandle BoundRenderable; }; #endif // GLW_RENDERABLE_H