--- /dev/null
+#ifndef GL_MUTLI_COURBES_H_\r
+#define GL_MUTLI_COURBES_H_\r
+\r
+#include "envBilatMultiCourbes.h"\r
+#include "MultiCourbeOptions.h"\r
+#include "MultiCourbesMOO_A.h"\r
+#include "Displayable_A.h"\r
+#include "bilat_GL.h"\r
+#include "VertexBufferObject.h"\r
+#include "ShaderLoaders.h"\r
+#include <atomic>\r
+//#include <boost/atomic.hpp>\r
+\r
+#include "cuda.h"\r
+#include "cuda_gl_interop.h" //link between GL and Cuda\r\r
+\r
+using std::atomic;\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* Declaration *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |* Public *|\r
+ \*-------------------------------------*/\r
+\r
+/**\r
+\r
+ *\r
+ */\r
+\r
+/**\r
+ * Inputs :\r
+ *\r
+ * n nb Courbes\r
+ * m nbPoints par courbes\r
+ *\r
+ * shaderPath la racine contenant les shader suivants :\r
+ *\r
+ * lib/ColorieurCarteHSB.glsl\r
+ * lib/ColorieurHSB.glsl\r
+ * multiCourbeHSBFragmentShader.glsl\r
+ * multiCourbeHSBFragmentShader.glsl\r
+ */\r
+class CBI_MULTI_COURBES GLMutliCourbes: public Displayable_A\r
+ {\r
+ /*--------------------------------------*\\r
+ |* Constructor *|\r
+ \*-------------------------------------*/\r
+\r
+ public:\r
+\r
+ /**\r
+ * Inputs :\r
+ *\r
+ * shaderPath la racine contenant les shader suivants :\r
+ *\r
+ * lib/ColorieurCarteHSB.glsl\r
+ * lib/ColorieurHSB.glsl\r
+ * multiCourbeHSBFragmentShader.glsl\r
+ * multiCourbeHSBFragmentShader.glsl\r
+ *\r
+ * Algorithme coloration:\r
+ *\r
+ * (A1) les courbes sont colorier en HSB, en fonction de y\r
+ * (A2) Si y est a l'interieur du sueil [sMin.sMax], la couleur utilisee sera la couleur "anatomique"\r
+ * (A3) minMax permet de calibrer le hue, ie de definier a quelle intensite y associer le hueMin et le hueMax\r
+ *\r
+ * Options:\r
+ *\r
+ * intervalHue01\r
+ *\r
+ * Permet de sp�cifier [hMin,hMax]\r
+ *\r
+ * seuil\r
+ *\r
+ * Permet de sp�cifier [sMin,sMax] (cf ci-dessus)\r
+ *\r
+ * colorAnatomique\r
+ *\r
+ * Couleur RGBA qui sera afficher si y se trouve � l'interieur du seuil.\r
+ *\r
+ * minMax\r
+ *\r
+ * Permet de specifier [vMin,vMax], de telle sorte que vMin soit colorier avec hMin, et vMax avec hMax\r
+ * Il s'agit d'une calibration.\r
+ */\r
+ GLMutliCourbes(MultiCourbesMOO_A* ptrMultiCourbeMOO, string shaderPath);\r
+\r
+ /*--------------------------------------*\\r
+ |* Destructor *|\r
+ \*-------------------------------------*/\r
+\r
+ public:\r
+\r
+ virtual ~GLMutliCourbes();\r
+\r
+ /*--------------------------------------*\\r
+ |* Methodes *|\r
+ \*-------------------------------------*/\r
+\r
+ public:\r
+\r
+ /**\r
+ * Override\r
+ */\r
+ virtual void init(Panel_A &panel);\r
+\r
+ /**\r
+ * Override\r
+ */\r
+ virtual void reshape(Panel_A &panel, int w, int h);\r
+\r
+ /**\r
+ * Override\r
+ */\r
+ virtual void display(Panel_A &panel);\r
+\r
+ /**\r
+ * Override\r
+ */\r
+ virtual void release(Panel_A &panel);\r
+\r
+ /**\r
+ * On next repaint, fillVBOValues will be called.\r
+ */\r
+ void update();\r
+\r
+ /*--------------------------------------*\\r
+ |* Get *|\r
+ \*-------------------------------------*/\r
+\r
+ MultiCourbesMOO_A* getMultiCoursbeMOO() const;\r
+\r
+ /*--------------------------------------*\\r
+ |* Attributs *|\r
+ \*--------------------------------------*/\r
+\r
+ private:\r
+\r
+ void loadShader();\r
+ void createVBOs();\r
+ void initInterop();\r
+ void drawMultiCourbes(Panel_A &panel);\r
+ void updateGL(Panel_A &panel);\r
+\r
+ private:\r
+\r
+ // Inputs\r
+ MultiCourbesMOO_A* ptrMultiCourbeMOO;\r
+ string shaderPath;\r
+\r
+ // OpenGL\r
+ VertexBufferObject* ptrVBOVertices;\r
+ VertexBufferObject* ptrVBOValues;\r
+ ShaderPrograms* ptrShaderProgram;\r
+\r
+ //Cuda GL Interop\r
+ cudaGraphicsResource* cudaRessource;\r
+ cudaStream_t streamToSynchronize;\r
+\r
+ // Tools\r
+ std::atomic<bool> isNeedUpdate;\r
+ bool isInit;\r
+ };\r
+\r
+#endif \r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* End *|\r
+ \*---------------------------------------------------------------------*/\r