diff options
author | Travis CI <zmoelnig@travis-ci.umlaeute.mur.at> | 2015-03-14 20:40:49 +0000 |
---|---|---|
committer | Travis CI <zmoelnig@travis-ci.umlaeute.mur.at> | 2015-03-14 20:40:49 +0000 |
commit | 5c694f159b012d1d94bf15bfe580dec52e4fe797 (patch) | |
tree | ce400f82d72f92189c50f54afa11c568cda53562 /Gem/develop/include/Gem/Base/GemShape.h |
Gem osx/x86_64
built '' for osx/x86_64
Diffstat (limited to 'Gem/develop/include/Gem/Base/GemShape.h')
-rw-r--r-- | Gem/develop/include/Gem/Base/GemShape.h | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/Gem/develop/include/Gem/Base/GemShape.h b/Gem/develop/include/Gem/Base/GemShape.h new file mode 100644 index 0000000..2878156 --- /dev/null +++ b/Gem/develop/include/Gem/Base/GemShape.h @@ -0,0 +1,141 @@ +/*----------------------------------------------------------------- + LOG + GEM - Graphics Environment for Multimedia + + Base class for shapes + + Copyright (c) 1997-1999 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_BASE_GEMSHAPE_H_ +#define _INCLUDE__GEM_BASE_GEMSHAPE_H_ + +#include "Base/GemBase.h" +#include <map> +/*----------------------------------------------------------------- + ------------------------------------------------------------------- + CLASS + GemShape + + Base class for shapes + + DESCRIPTION + + Inlet for a float - "ft1" + + "ft1" - the size of the shape + "draw" - the drawing style + "width" - the line width when drawing with lines + + -----------------------------------------------------------------*/ +class TexCoord; +class GEM_EXTERN GemShape : public GemBase +{ + public: + + ////////// + // Constructor + // [in] size - A size of 0. means to just use the default (ie, 1.) + GemShape(t_floatarg size); + GemShape(); + + protected: + + ////////// + // Destructor + virtual ~GemShape(); + + //----------------------------------- + // GROUP: Access functions + //----------------------------------- + + ////////// + // The width of the lines in line draw mode + void linewidthMess(float linewidth); + + ////////// + // The size of the object + void sizeMess(float size); + + ////////// + // How the object should be drawn + virtual void typeMess(t_symbol *type); + + //----------------------------------- + // GROUP: Utility functions + //----------------------------------- + + void SetVertex(GemState* state,float x, float y, float z, + float tx, float ty, + int curCoord); + + void SetVertex(GemState* state,float x, float y, float z, + float s, float t, float r, float q, + int curCoord); + + //----------------------------------- + // GROUP: Member variables + //----------------------------------- + + ////////// + // The line width for GL_LINE mode + GLfloat m_linewidth; + + ////////// + // The size of the object + GLfloat m_size; + + ////////// + // The drawing style (GL_LINE, GL_POLYGON, etc) + GLenum m_drawType; + + ////////// + // do we want blending? + GLboolean m_blend; + void blendMess(float blend); + + + //////// + // override this memberfunction to automatically enable softblended rendering,... + virtual void renderShape(GemState *state) {;} + + // OR + // override this memberfunction if you don't want softblending + virtual void render(GemState *state); + + + ////////// + // The size inlet + t_inlet *m_inlet; + + //----------------------------------- + // GROUP: Setup functions + //----------------------------------- + + ////////// + // creation callback + static void real_obj_setupCallback(t_class *classPtr) + { GemBase::real_obj_setupCallback(classPtr); GemShape::obj_setupCallback(classPtr); } + + private: + + static inline GemShape *GetMyClass(void *data) {return((GemShape *)((Obj_header *)data)->data);} + + ////////// + // static member functions + static void obj_setupCallback(t_class *classPtr); + + protected: + int m_texType, m_texNum; + TexCoord*m_texCoords; + bool m_lighting; + + std::map<std::string, GLenum>m_drawTypes; +}; + +#endif // for header file |