gKitGL
Effect.h
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
 All Classes Namespaces Functions Variables Typedefs Enumerator Friends