00001 #ifndef _context_hh_ 00002 #define _context_hh_ 00003 00004 #include "vector.hh" 00005 #include "matrix.hh" 00006 00007 namespace anoid { 00009 namespace context { 00010 00011 class Context { 00012 protected: 00013 simple::Matrix _current; 00014 public: 00015 Context(): _current() {} 00016 virtual void initWindow(int width, int height) = 0; 00017 virtual void initFullscreen(int width, int height) = 0; 00018 virtual void setView() = 0; 00019 virtual void loadIdentity() = 0; 00020 virtual void pushMatrix() = 0; 00021 virtual void popMatrix() = 0; 00022 virtual void rotate(simple::Matrix &rotation) = 0; 00023 virtual void scale(simple::Vector &scale) = 0; 00024 virtual void translate(simple::Vector &translation) = 0; 00025 virtual int beginFigure() = 0; 00026 virtual void endFigure() = 0; 00027 virtual void removeFigure(int id) = 0; 00028 void drawTriangle(simple::Vector A, simple::Vector B, simple::Vector C, simple::Vector normal) { drawTriangle(A, B, C, normal, 0); } 00029 void drawQuad(simple::Vector A, simple::Vector B, simple::Vector C, simple::Vector D, simple::Vector normal) { drawQuad(A, B, C, D, normal, 0); } 00030 virtual void drawTriangle(simple::Vector &A, simple::Vector &B, simple::Vector &C, simple::Vector &normal, int a = 0) = 0; 00031 virtual void drawQuad(simple::Vector &A, simple::Vector &B, simple::Vector &C, simple::Vector &D, simple::Vector &normal, int a = 0) = 0; 00032 virtual void drawFigure(int id) = 0; 00033 virtual simple::Matrix getMatrix() = 0; 00034 virtual void setMatrix(simple::Matrix &m) = 0; 00035 virtual void swapBuffers() = 0; 00036 virtual ~Context() {} 00037 }; 00038 00039 }; 00040 }; 00041 00042 #endif