diff options
Diffstat (limited to 'packages/noncvs/windows/extra/Gem/dev/Gem/GLStack.h')
-rw-r--r-- | packages/noncvs/windows/extra/Gem/dev/Gem/GLStack.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/packages/noncvs/windows/extra/Gem/dev/Gem/GLStack.h b/packages/noncvs/windows/extra/Gem/dev/Gem/GLStack.h new file mode 100644 index 00000000..c8ef7bf2 --- /dev/null +++ b/packages/noncvs/windows/extra/Gem/dev/Gem/GLStack.h @@ -0,0 +1,74 @@ +/*----------------------------------------------------------------- + LOG + GEM - Graphics Environment for Multimedia + + handling of diverse openGL stacks + + Copyright (c) 1997-2000 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + + -----------------------------------------------------------------*/ +#ifndef _INCLUDE__GEM_GEM_GLSTACK_H_ +#define _INCLUDE__GEM_GEM_GLSTACK_H_ + +#include "Gem/ExportDef.h" + +#include <memory> + +namespace gem { +class GEM_EXTERN GLStack { + public: + GLStack(bool haveValidContext=false); + virtual ~GLStack(void); + + enum GemStackId { MODELVIEW, COLOR, TEXTURE, PROJECTION }; + + /** push the given matrix to the stack if the maximum has not been reached + * returns true on success and false otherwise (stack overflow) + * NOTE: needs valid openGL context + * NOTE: might change the current matrix mode; you have to manually reset it + */ + bool push(enum GemStackId); + + /** pushes all matrices possible + * NOTE: finishes in MODELVIEW matrix mode + */ + void push(void); + + /** pop the given matrix from the stack if the maximum has not been reached + * returns true on success and false otherwise (stack underflow) + * NOTE: needs valid openGL context + * NOTE: might change the current matrix mode; you have to manually reset it + */ + bool pop(enum GemStackId); + /** pops all matrices possible + * NOTE: finishes in MODELVIEW matrix mode + */ + void pop(void); + + /** + * reset the maximum stack depth of the given stack + * NOTE: needs valid openGL context + */ + void reset(void); + /** + * reset the maximum stack depth of all stacks + * returns the current stack depth (-1 on failure) + * NOTE: needs valid openGL context + */ + int reset(enum GemStackId); + + void print(void); + + private: + class Data; + std::auto_ptr<Data>data; +}; + +} /* namespace gem */ + + +#endif /* _INCLUDE__GEM_GEM_GLSTACK_H_ */ |