Page principale | Liste des namespaces | Hiérarchie des classes | Liste par ordre alphabétique | Liste des composants | Liste des fichiers | Membres des namespaces | Composants | Déclarations

ExNihiloNameSpace.cpp

Aller à la documentation de ce fichier.
00001 /*
00002  * ExNihilo 3D Engine
00003  * 
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License as published by
00006  *  the Free Software Foundation; either version 2 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  This program is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU Library General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU General Public License
00015  *  along with this program; if not, write to the Free Software
00016  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00017  *
00018  * Please read AUTHORS file !!!
00019  * 
00020  * $Id: ExNihiloNameSpace.cpp,v 1.7 2002/12/13 11:45:03 data Exp $
00021  *
00022  */
00023 
00024 #include "ExNihiloNameSpace.h"
00025 
00026 void ExNihilo::InitBasicObjectList(void)
00027 {
00028         float i;        
00029         glNewList(GRILLE,GL_COMPILE);
00030         glDisable(GL_LIGHTING);
00031         glBegin(GL_LINES);
00032                 glColor3f(1.0f,0.0f,0.0f);
00033                 for ( i=-100;i<101;i+=2)
00034                 {       
00035                         glVertex3f(0.0f,      i, 100.0f);
00036                         glVertex3f(0.0f,      i,-100.0f);
00037                         glVertex3f(0.0f, 100.0f,      i);
00038                         glVertex3f(0.0f,-100.0f,      i);
00039                 }
00040                 glColor3f(0.0,1.0f,0.0f);
00041                 
00042                 for ( i=-100;i<101;i+=2)
00043                 {
00044                         glVertex3f( 100.0f,     i,0.0f);
00045                         glVertex3f(-100.0f,     i,0.0f);
00046                         glVertex3f(     i, 100.0f,0.0f);
00047                         glVertex3f(     i,-100.0f,0.0f);
00048                 }
00049                 glColor3f(0.0,0.0f,1.0f);
00050                 for (i=-100;i<101;i+=2)
00051                 {
00052                         glVertex3f( 100.0f,0.0f,      i);
00053                         glVertex3f(-100.0f,0.0f,      i);
00054                         glVertex3f(      i,0.0f, 100.0f);
00055                         glVertex3f(      i,0.0f,-100.0f);
00056                 }
00057         glEnd();
00058         glColor3f(1.0,1.0f,1.0f);
00059         glEnable(GL_LIGHTING);
00060         glEndList();
00061 
00062 
00063 }
00064 void ExNihilo::DrawGrid(int size)
00065 {
00066         int i;
00067         glDisable(GL_LIGHTING);
00068         glBegin(GL_LINES);
00069                 glColor3f(1.0f,0.0f,0.0f);
00070                 for ( i=-size;i<size+1;i+=2)
00071                 {       
00072                         glVertex3f(0.0f,      i, size);
00073                         glVertex3f(0.0f,      i,-size);
00074                         glVertex3f(0.0f, size,      i);
00075                         glVertex3f(0.0f,-size,      i);
00076                 }
00077                 glColor3f(0.0,1.0f,0.0f);
00078 
00079                 for ( i=-size;i<size+1;i+=2)
00080                 {
00081                         glVertex3f( size,     i,0.0f);
00082                         glVertex3f(-size,     i,0.0f);
00083                         glVertex3f(     i, size,0.0f);
00084                         glVertex3f(     i,-size,0.0f);
00085                 }
00086                 glColor3f(0.0,0.0f,1.0f);
00087                 for (i=-size;i<size+1;i+=2)
00088                 {
00089                         glVertex3f( size,0.0f,      i);
00090                         glVertex3f(-size,0.0f,      i);
00091                         glVertex3f(      i,0.0f, size);
00092                         glVertex3f(      i,0.0f,-size);
00093                 }
00094         glEnd();
00095 }
00096 
00097 void ExNihilo::ShowGlError(void)
00098 {
00099         switch(glGetError())
00100                 {
00101                 case GL_NO_ERROR:
00102                         std::cout<<"No Error "<<std::endl;
00103                         break;
00104                 case GL_INVALID_OPERATION:
00105                         std::cout<<"Error Invalid operation "<<std::endl;
00106                         break;
00107                 case GL_INVALID_VALUE:
00108                         std::cout<<"Error Invalid value "<<std::endl;
00109                         break;
00110                 case GL_INVALID_ENUM:
00111                         std::cout<<"Error Invalid enum "<<std::endl;
00112                         break;
00113                 case GL_STACK_OVERFLOW:
00114                         std::cout<<"Error stack overflow "<<std::endl;
00115                         break;
00116                 case GL_STACK_UNDERFLOW:
00117                         std::cout<<"Error stack underflow "<<std::endl;
00118                         break;
00119                 case GL_OUT_OF_MEMORY:
00120                         std::cout<<"Error out of memory"<<std::endl;
00121                         break;
00122                 default:
00123                         std::cout<<"Uknow error ?"<<std::endl;
00124                         //std::cout<<gluErrorString(glGetError())<<std::endl;
00125                 }
00126                 
00127 }
00128 
00129 int ExNihilo::GetResolutionX()
00130 {
00131         return glutGet(GLUT_WINDOW_WIDTH);
00132 }
00133 int ExNihilo::GetResolutionY()
00134 {
00135         return glutGet(GLUT_WINDOW_HEIGHT);
00136 }
00137 
00138 void ExNihilo::RenderBitmapString(float x, float y, void *font,std::string string)
00139 {
00140         const char *c;
00141         glRasterPos2f(x, y);
00142         for (c=string.data(); *c != '\0'; c++)
00143         {
00144            glutBitmapCharacter(font, *c);
00145         }
00146 }
00147 
00148 void ExNihilo::EnterOrthoMode(void)
00149 {
00150         glPushMatrix(); 
00151         glMatrixMode(GL_PROJECTION);                                            
00152         glPushMatrix();                                                                 
00153         glLoadIdentity();
00154         glOrtho( 0,glutGet(GLUT_WINDOW_WIDTH),glutGet(GLUT_WINDOW_HEIGHT),0,0,1);       
00155         glMatrixMode(GL_MODELVIEW);                                                             
00156         glLoadIdentity();                                                                               
00157 }
00158 
00159 void ExNihilo::LeaveOrthoMode(void)     
00160 {
00161         glMatrixMode( GL_PROJECTION );                                                  
00162         glPopMatrix();                                                                                  
00163         glMatrixMode( GL_MODELVIEW );                                                   
00164         glPopMatrix();
00165 }
00166 
00167 void ExNihilo::WriteToScreen(float x,float y,std::string String)
00168 {
00169         ExNihilo::EnterOrthoMode();
00170         ExNihilo::RenderBitmapString(x,y,(void *)GLUT_BITMAP_HELVETICA_12,String);
00171         ExNihilo::LeaveOrthoMode();
00172 }
00173 
00174 void ExNihilo::WriteToScreen(float x,float y,float r,float g,float b,std::string String)
00175 {
00176         ExNihilo::EnterOrthoMode();
00177         glPushAttrib(GL_ALL_ATTRIB_BITS);
00178         glDisable(GL_LIGHTING);
00179         glEnable(GL_BLEND);
00180         glEnable(GL_ALPHA);
00181         glBlendFunc(GL_ONE,GL_ONE);
00182         glEnable(GL_ALPHA_TEST);
00183         glAlphaFunc(GL_GREATER,0);
00184         glDisable(GL_DEPTH_TEST);
00185         glColor4f(r,g,b,1.0f);
00186         ExNihilo::RenderBitmapString(x,y,(void *)GLUT_BITMAP_HELVETICA_12,String);
00187         glPopAttrib();
00188         ExNihilo::LeaveOrthoMode();
00189         
00190 }
00191 
00192 void ExNihilo::WriteToScreen24(float x,float y,float r,float g,float b,std::string String)
00193 {
00194         ExNihilo::EnterOrthoMode();
00195         glPushAttrib(GL_ALL_ATTRIB_BITS);
00196         glDisable(GL_LIGHTING);
00197         glEnable(GL_BLEND);
00198         glEnable(GL_ALPHA);
00199         glBlendFunc(GL_ONE,GL_ONE);
00200         glEnable(GL_ALPHA_TEST);
00201         glAlphaFunc(GL_GREATER,0);
00202         glDisable(GL_DEPTH_TEST);
00203         glColor4f(r,g,b,1.0f);
00204         ExNihilo::RenderBitmapString(x,y,(void *)GLUT_BITMAP_TIMES_ROMAN_24,String);
00205         glPopAttrib();
00206         ExNihilo::LeaveOrthoMode();
00207         
00208 }
00209 
00210 void ExNihilo::DrawCadre(float x,float y,float lx,float ly,float r,float g,float b,float blend)
00211 {
00212         ExNihilo::EnterOrthoMode();
00213         glPushAttrib(GL_ALL_ATTRIB_BITS);
00214         glDisable(GL_LIGHTING);
00215         glEnable(GL_BLEND);
00216         glEnable(GL_ALPHA);
00217         glBlendFunc(GL_ONE,GL_ONE);
00218         glEnable(GL_ALPHA_TEST);
00219         glAlphaFunc(GL_GREATER,0);
00220         glDisable(GL_DEPTH_TEST);
00221         glColor4f(r,g,b,blend);
00222         glBegin(GL_QUADS);
00223                 glVertex2f(x,y);
00224                 glVertex2f(x,y+ly);
00225                 glVertex2f(x+lx,y+ly);
00226                 glVertex2f(x+lx,y);
00227         glEnd();
00228         glDisable(GL_BLEND);
00229         glDisable(GL_ALPHA);
00230         glEnable(GL_DEPTH_TEST);
00231         glBegin(GL_LINE_STRIP);
00232                 glVertex2f(x,y);
00233                 glVertex2f(x,y+ly);
00234                 glVertex2f(x+lx,y+ly);
00235                 glVertex2f(x+lx,y);
00236                 glVertex2f(x,y);
00237         glEnd();
00238         glPopAttrib();
00239         ExNihilo::LeaveOrthoMode();
00240 }
00241 
00242 std::string ExNihilo::ExtracValueFromSring(std::string buffstring,std::string start,std::string end)
00243 {
00244         char buffer[255];
00245         memset(buffer,0,255);
00246         try
00247         {
00248                 buffstring.copy(buffer,buffstring.find(end,buffstring.find(start)+start.size())-buffstring.find(start)-start.size(),buffstring.find(start)+start.size());
00249         }
00250         catch(...)
00251         {
00252                 throw ExCExpStringNotFound();
00253         }
00254         return buffer;
00255 }
00256 
00257 int ExNihilo::ExtractIntValueFromSring(std::string buffstring,std::string start,std::string end)
00258 {
00259         char buffer[255];
00260         memset(buffer,0,255);
00261         try{buffstring.copy(buffer,buffstring.find(end,buffstring.find(start)+start.size())-buffstring.find(start)-start.size(),buffstring.find(start)+start.size());}
00262         catch(...){throw ExCExpStringNotFound();}
00263         return atoi(buffer);
00264 }
00265 
00266 float ExNihilo::ExtractFloatValueFromSring(std::string buffstring,std::string start,std::string end)
00267 {
00268         char buffer[255];
00269         memset(buffer,0,255);
00270         try{buffstring.copy(buffer,buffstring.find(end,buffstring.find(start)+start.size())-buffstring.find(start)-start.size(),buffstring.find(start)+start.size());}
00271         catch(...){throw ExCExpStringNotFound();}
00272         return atof(buffer);
00273 }
00274 
00275 std::string ExNihilo::ExtracStringValueFromFile(std::string FileName, std::string start,std::string end)
00276 {
00277         char buffer[255],b[256];memset(buffer,0,255);
00278         std::ifstream fin;
00279         std::string buffstring;
00280         fin.open(FileName.data(),std::ios::in);
00281         if(fin.is_open())
00282         {
00283                 try
00284                 {
00285                         do
00286                         {
00287                                 memset(b,0,255);
00288                                 fin.getline(b,256,'\n');
00289                                 buffstring=buffstring+b;
00290                         }while(!fin.eof());
00291                         fin.close();
00292                 }catch(...){throw ExCExpFileReadError();}
00293         }else throw   ExCExpFileNotFound();
00294         buffstring.copy(buffer,buffstring.find(end,buffstring.find(start)+start.size())-buffstring.find(start)-start.size(),buffstring.find(start)+start.size());
00295         return buffer;
00296 }
00297 
00298 int ExNihilo::ExtractIntValueFromFile(std::string FileName, std::string start,std::string end)
00299 {
00300         return atoi(ExNihilo::ExtracStringValueFromFile(FileName,start,end).data());
00301 }
00302 
00303 float ExNihilo::ExtractFloatValueFromFile(std::string FileName, std::string start,std::string end)
00304 {
00305         return atof(ExNihilo::ExtracStringValueFromFile(FileName,start,end).data());
00306 }
00307 
00308 int ExNihilo::ExtracStringCommandFromString(std::string FileName,std::string command,std::string &TargetString)
00309 {
00310         return 1;
00311 }
00312 
00313 int ExNihilo::ExtracStringCommandFromFile(std::string FileName,std::string command,std::string &TargetString)
00314 {
00315         char buffer[255],b[256];memset(buffer,0,255);
00316         std::ifstream fin;
00317         std::string buffstring;
00318         fin.open(FileName.data(),std::ios::in);
00319         if(fin.is_open())
00320         {
00321                 try
00322                 {
00323                         do
00324                         {
00325                                 memset(b,0,255);
00326                                 fin.getline(b,256,'\n');
00327                                 buffstring=buffstring+b;
00328                         }while(!fin.eof());
00329                         fin.close();
00330                 }catch(...){throw ExCExpFileReadError();}
00331         }else throw   ExCExpFileNotFound();
00332 //      buffstring.copy(buffer,buffstring.find(end,buffstring.find(start)+start.size())-buffstring.find(start)-start.size(),buffstring.find(start)+start.size());
00333         TargetString=buffer;
00334         return 1;
00335 }
00336 
00337 
00338 ExCAction ExtractActionFromString(std::string FileName,std::string command,std::string &TargetString)
00339 {
00340         ExCAction RetAction;
00341         
00342         return RetAction;
00343 }
00344 void ExNihilo::AddKeyToBuffer(int key,std::string &buffer)
00345 {
00346         switch(key)
00347         {
00348         case KEYBOARD_DOWN_A:buffer.append("a");break;
00349         case KEYBOARD_DOWN_Z:buffer.append("z");break;
00350         case KEYBOARD_DOWN_E:buffer.append("e");break;
00351         case KEYBOARD_DOWN_R:buffer.append("r");break;
00352         case KEYBOARD_DOWN_T:buffer.append("t");break;
00353         case KEYBOARD_DOWN_Y:buffer.append("y");break;
00354         case KEYBOARD_DOWN_U:buffer.append("u");break;
00355         case KEYBOARD_DOWN_I:buffer.append("i");break;
00356         case KEYBOARD_DOWN_O:buffer.append("o");break;
00357         case KEYBOARD_DOWN_P:buffer.append("p");break;
00358         case KEYBOARD_DOWN_Q:buffer.append("q");break;
00359         case KEYBOARD_DOWN_S:buffer.append("s");break;
00360         case KEYBOARD_DOWN_D:buffer.append("d");break;
00361         case KEYBOARD_DOWN_F:buffer.append("f");break;
00362         case KEYBOARD_DOWN_G:buffer.append("g");break;
00363         case KEYBOARD_DOWN_H:buffer.append("h");break;
00364         case KEYBOARD_DOWN_J:buffer.append("j");break;
00365         case KEYBOARD_DOWN_K:buffer.append("k");break;
00366         case KEYBOARD_DOWN_L:buffer.append("l");break;
00367         case KEYBOARD_DOWN_M:buffer.append("m");break;
00368         case KEYBOARD_DOWN_W:buffer.append("w");break;
00369         case KEYBOARD_DOWN_X:buffer.append("x");break;
00370         case KEYBOARD_DOWN_C:buffer.append("c");break;
00371         case KEYBOARD_DOWN_V:buffer.append("v");break;
00372         case KEYBOARD_DOWN_B:buffer.append("b");break;
00373         case KEYBOARD_DOWN_N:buffer.append("n");break;
00374         case KEYBOARD_DOWN_M_A:buffer.append("A");break;
00375         case KEYBOARD_DOWN_M_Z:buffer.append("Z");break;
00376         case KEYBOARD_DOWN_M_E:buffer.append("E");break;
00377         case KEYBOARD_DOWN_M_R:buffer.append("R");break;
00378         case KEYBOARD_DOWN_M_T:buffer.append("T");break;
00379         case KEYBOARD_DOWN_M_Y:buffer.append("Y");break;
00380         case KEYBOARD_DOWN_M_U:buffer.append("U");break;
00381         case KEYBOARD_DOWN_M_I:buffer.append("I");break;
00382         case KEYBOARD_DOWN_M_O:buffer.append("O");break;
00383         case KEYBOARD_DOWN_M_P:buffer.append("P");break;
00384         case KEYBOARD_DOWN_M_Q:buffer.append("Q");break;
00385         case KEYBOARD_DOWN_M_S:buffer.append("S");break;
00386         case KEYBOARD_DOWN_M_D:buffer.append("D");break;
00387         case KEYBOARD_DOWN_M_F:buffer.append("F");break;
00388         case KEYBOARD_DOWN_M_G:buffer.append("G");break;
00389         case KEYBOARD_DOWN_M_H:buffer.append("H");break;
00390         case KEYBOARD_DOWN_M_J:buffer.append("J");break;
00391         case KEYBOARD_DOWN_M_K:buffer.append("K");break;
00392         case KEYBOARD_DOWN_M_L:buffer.append("L");break;
00393         case KEYBOARD_DOWN_M_M:buffer.append("M");break;
00394         case KEYBOARD_DOWN_M_W:buffer.append("W");break;
00395         case KEYBOARD_DOWN_M_X:buffer.append("X");break;
00396         case KEYBOARD_DOWN_M_C:buffer.append("C");break;
00397         case KEYBOARD_DOWN_M_V:buffer.append("V");break;
00398         case KEYBOARD_DOWN_M_B:buffer.append("B");break;
00399         case KEYBOARD_DOWN_M_N:buffer.append("N");break;
00400         case KEYBOARD_DOWN_0:buffer.append("0");break;
00401         case KEYBOARD_DOWN_1:buffer.append("1");break;
00402         case KEYBOARD_DOWN_2:buffer.append("2");break;
00403         case KEYBOARD_DOWN_3:buffer.append("3");break;
00404         case KEYBOARD_DOWN_4:buffer.append("4");break;
00405         case KEYBOARD_DOWN_5:buffer.append("5");break;
00406         case KEYBOARD_DOWN_6:buffer.append("6");break;
00407         case KEYBOARD_DOWN_7:buffer.append("7");break;
00408         case KEYBOARD_DOWN_8:buffer.append("8");break;
00409         case KEYBOARD_DOWN_9:buffer.append("9");break;
00410         case KEYBOARD_DOWN__:buffer.append("_");break;
00411         case KEYBOARD_DOWN_2POINTS:buffer.append(":");break;
00412         case KEYBOARD_DOWN_POINT:buffer.append(".");break;
00413         case KEYBOARD_DOWN_SPACE:buffer.append(" ");break;
00414         case KEYBOARD_DOWN_CTRL_U:buffer = "";break;
00415         default :break;
00416         }
00417 }
00418 
00419 std::string ExNihilo::GetFileExtension(std::string FileName)
00420 {
00421         std::string ReturnString;
00422         0<FileName.find(".") ? (ReturnString=FileName.substr(FileName.find(".")+1,FileName.size()-FileName.find(".")-1)) : (ReturnString="BADEXTENSION");
00423         return ReturnString;
00424 }
00425 
00426 

Généré le Tue Oct 28 12:43:38 2003 pour ExNihilo par doxygen 1.3.4