Cleanup: remove redundant doxygen \file argument
[blender.git] / intern / elbeem / intern / ntl_geometryshader.h
1 /** \file \ingroup elbeem
2  */
3 /******************************************************************************
4  *
5  * El'Beem - Free Surface Fluid Simulation with the Lattice Boltzmann Method
6  * Copyright 2003-2006 Nils Thuerey
7  *
8  * Interface for a geometry shader
9  *
10  *****************************************************************************/
11 #ifndef NTL_GEOMETRYSHADER_H
12 #define NTL_GEOMETRYSHADER_H
13
14 #include "ntl_geometryclass.h"
15
16 #ifdef WITH_CXX_GUARDEDALLOC
17 #  include "MEM_guardedalloc.h"
18 #endif
19
20 class ntlGeometryObject;
21 class ntlRenderGlobals;
22
23 class ntlGeometryShader : 
24         public ntlGeometryClass
25 {
26
27         public:
28
29                 //! Default constructor
30                 inline ntlGeometryShader() :
31                         ntlGeometryClass(), mOutFilename("")
32                         {};
33                 //! Default destructor
34                 virtual ~ntlGeometryShader() {};
35
36                 //! Return type id
37                 virtual int getTypeId() { return GEOCLASSTID_SHADER; }
38
39                 /*! Initialize object, should return !=0 upon error */
40                 virtual int initializeShader() = 0;
41
42                 /*! Do further object initialization after all geometry has been constructed, should return !=0 upon error */
43                 virtual int postGeoConstrInit(ntlRenderGlobals *glob) { glob=NULL; /*unused*/ return 0; };
44
45                 /*! Get start iterator for all objects */
46                 virtual vector<ntlGeometryObject *>::iterator getObjectsBegin() { return mObjects.begin(); }
47                 /*! Get end iterator for all objects */
48                 virtual vector<ntlGeometryObject *>::iterator getObjectsEnd() { return mObjects.end(); }
49                 
50                 /*! notify object that dump is in progress (e.g. for field dump) */
51                 virtual void notifyShaderOfDump(int dumptype, int frameNr,char *frameNrStr,string outfilename) = 0;
52
53                 /*! get output filename, returns global render outfile if empty */
54                 string getOutFilename( void ) { return mOutFilename; }
55
56         protected:
57
58                 //! vector for the objects
59                 vector<ntlGeometryObject *> mObjects;
60
61
62                 /*! surface output name for this simulation */
63                 string mOutFilename; 
64
65 private:
66 #ifdef WITH_CXX_GUARDEDALLOC
67         MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlGeometryShader")
68 #endif
69 };
70
71 #endif
72