00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 #ifndef GLIFT_MULTI_TEX_COORD_GEN
00015 #define GLIFT_MULTI_TEX_COORD_GEN
00016 
00017 #include "../core/gliftObject.h"
00018 #include "../util/gliftDecl.h"
00019 #include <mathGutz.h>
00020 #include <arrayGutz.h>
00021 
00022 #include <vector>
00023 
00024 namespace glift {
00025 
00026 typedef std::vector<gutz::arrayw2f>     Vecarrayw2f;
00027 typedef std::vector<gutz::arrayo2f> MultiTexCoord;
00028 typedef std::vector<MultiTexCoord*> MultiPrimTexCoord;
00029 
00030 class _export_ MultiTexCoordGen
00031 {
00032 public:
00033         virtual MultiTexCoord* genTexCoords( const gutz::arrayw2f& rawTexCoord, const gutz::vec3f& primScale ) const = 0;
00034 };
00035 
00036 class _export_ TexCoordGen : public GliftObject
00037 {
00038 public:
00039         virtual ~TexCoordGen() {}
00040 
00041 
00042         virtual gutz::arrayo2f operator()() = 0;                                         
00043 
00044 
00045 
00046 
00047         virtual gutz::arrayo2f operator()( const gutz::arrayw2f& coords, const gutz::vec3f& dimen ); 
00048         
00049 
00050         gutz::arrayo2f genTexCoords() { return (*this)(); }
00051         gutz::arrayo2f genTexCoords( const gutz::arrayw2f coords, const gutz::vec3f& dimen ) { return (*this)(coords, dimen); }
00052 };
00053 
00054 } 
00055 
00056 #endif