gKitGL
|
00001 00002 #ifndef _GK_EFFECT_H 00003 #define _GK_EFFECT_H 00004 00005 #include <string> 00006 #include <vector> 00007 00008 #include "IOResource.h" 00009 #include "TextFile.h" 00010 00011 00012 namespace gk { 00013 00014 //! charge un fichier texte decoupe en sections (nommees). utilise pour grouper tous les shaders d'un programme, par exemple. 00015 //! un fichier effet (extension .gkfx) est un ensemble de paires (cle, valeur). cle est le nom des sections, valeur est le contenu des sections. 00016 //! une section est representee par un TextFile qui est egalement un ensemble de paires (cle, valeur). 00017 //! cf effect_main.cpp pour un exemple complet. 00018 class Effect : public IOResource 00019 { 00020 std::vector<TextFile *> m_text; 00021 00022 std::string m_last_line; 00023 std::string m_last_section; 00024 int m_line_number; 00025 char m_last_char; 00026 00027 int read_line( FILE *in ); 00028 int read_section( FILE *in ); 00029 00030 public: 00031 //! constructeur par defaut. 00032 Effect( ); 00033 //! constructeur, charge le fichier 'filename'. 00034 Effect( const std::string& filename ); 00035 00036 //! destructeur. 00037 ~Effect( ); 00038 00039 //! charge un fichier gkfx. 00040 int read( const std::string& filename ); 00041 00042 //! reinitialise le contenu du fichier. 00043 int clear( ); 00044 00045 //! recherche une section d'apres son nom / sa cle. renvoie le contenu de la section, un TextFile. 00046 //! renvoie TextFile::notFound() en cas d'erreur / si la cle n'existe pas. 00047 TextFile *find( const std::string& key ) const; 00048 }; 00049 00050 00051 } 00052 00053 #endif