include/GenUtils.h

Go to the documentation of this file.
00001 #ifndef GENUTILS_H
00002 #define GENUTILS_H
00003 
00004 #include "glwxConfig.h"
00005 #include "XMLUtils.h"
00006 #include <iostream>
00007 #include <fstream>
00008 #include <vector>
00009 
00010 #define deleteObject(A){ if(A){ delete   A; A = NULL; } }
00011 #define deleteArray(A) { if(A){ delete[] A; A = NULL; } }
00012 
00013 #define MAX_TEX_UNITS 8
00014 
00015 class Logger
00016 {
00017   public:
00018     static void writeImmidiateInfoLog(const std::string &info);
00019     static void writeFatalErrorLog(const std::string &logString);
00020     static bool writeErrorLog(const std::string &error);
00021     static void writeInfoLog(const std::string &info);
00022     static void initialize(const char* logfilename = NULL);
00023     static void flush();
00024 
00025   private:
00026     static vector<std::string> logStrings;
00027     static std::string         logPath;
00028 };
00029 
00030 class NamedObject
00031 {
00032 
00033   protected:
00034     std::string name;
00035 
00036   public:
00037     NamedObject(const char*  argName = NULL);
00038     NamedObject(const std::string &argName);
00039     NamedObject(const NamedObject &copy);
00040    ~NamedObject();
00041 
00042     NamedObject &operator=(const NamedObject &copy);
00043     void   setName(const char   *nameArg);
00044     void   setName(const std::string &name);
00045 
00046     const std::string &getName()     const;
00047     const char*        getCharName() const;
00048 
00049 };
00050 
00051 class Perlin
00052 {
00053   private:
00054     static void   normalize2(double v[2]);
00055     static void   normalize3(double v[3]);
00056 
00057   public:
00058     static void   setNoiseFrequency(int frequency);
00059     static int    getNoiseFrequency();
00060 
00061     static double noise1(double arg);
00062     static double noise2(double vec[2]);
00063     static double noise3(double vec[3]);
00064     static void   initialize();
00065     static double noise1D(double x,double alpha,double beta,int n);
00066     static double noise2D(double x, double y, double alpha, double beta, int n);
00067     static double noise3D(double x, double y, double z, double alpha, double beta, int n);
00068 };
00069 
00070 class MediaPathManager
00071 {
00072   public:
00073     static const std::string lookUpMediaPath(const std::string  &path);
00074     static const std::string getPathAt(int index);
00075 
00076     static bool  registerPath(const TiXmlElement *MediaPathNode);
00077     static bool  registerPath(const std::string  &path);
00078 
00079     static int   getPathCount();
00080     static void  printAllPaths();
00081 
00082   private:
00083     static std::vector<std::string> dataPaths;
00084 };
00085 
00086 template <class ODT>
00087 class DistanceObject
00088 {
00089   public:
00090     DistanceObject()
00091     {
00092       distance = 0.0f;
00093     }
00094 
00095     DistanceObject(const ODT &objectArg)
00096     {
00097       distance = 0.0f;
00098       object   = objectArg;
00099     }
00100 
00101     DistanceObject(const DistanceObject &copy)
00102     {
00103       operator=(copy);
00104     }
00105 
00106     DistanceObject &operator =(const DistanceObject &copy)
00107     {
00108       if(this != &copy)
00109       {
00110         distance = copy.distance;
00111         object   = copy.object;
00112       }
00113       return *this;
00114     }
00115 
00116     bool operator ==(const DistanceObject &copy)
00117     {
00118        return (distance == copy.distance);
00119     }
00120 
00121     bool operator >=(const DistanceObject &copy)
00122     {
00123        return (distance >= copy.distance);
00124     }
00125 
00126     bool operator <=(const DistanceObject &copy)
00127     {
00128        return (distance <= copy.distance);
00129     }
00130 
00131     bool operator >(const DistanceObject &copy)
00132     {
00133        return (distance > copy.distance);
00134     }
00135 
00136     bool operator < (const DistanceObject &copy)
00137     {
00138        return (distance < copy.distance);
00139     }
00140 
00141     void setDistance(float dist)
00142     {
00143       distance = dist;
00144     }
00145 
00146     float getDistance() const
00147     {
00148      return distance;
00149     }
00150 
00151     void setObject(const ODT& objectArg)
00152     {
00153       object =objectArg;
00154     }
00155 
00156     ODT &getObject()
00157     {
00158       return object;
00159     }
00160    private:
00161      float distance;
00162      ODT     object;
00163 
00164 };
00165 
00166 #endif

Generated on Wed Dec 5 20:32:03 2007 for GLWX by  doxygen 1.5.3