Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / API_Bilat_Image_GL_Cuda / INC / gpu / ImageFonctionelMOOs_A_GPU.h
diff --git a/WCudaMSE/API_Bilat_Image_GL_Cuda/INC/gpu/ImageFonctionelMOOs_A_GPU.h b/WCudaMSE/API_Bilat_Image_GL_Cuda/INC/gpu/ImageFonctionelMOOs_A_GPU.h
new file mode 100755 (executable)
index 0000000..07c842f
--- /dev/null
@@ -0,0 +1,131 @@
+#ifndef IMAGE_FONCTIONEL_MOOS_A_GPU_H\r
+#define IMAGE_FONCTIONEL_MOOS_A_GPU_H\r
+\r
+#include "ImageMOOs_A_GPU.h"\r
+#include "DomaineMath_GPU.h"\r
+\r
+#include <stack>\r
+using std::stack;\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    Declaration                                     *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |*            Public                  *|\r
+ \*-------------------------------------*/\r
+\r
+namespace gpu\r
+    {\r
+\r
+    class CBI_GLIMAGE_CUDA ImageFonctionelMOOs_A: public ImageMOOs_A\r
+       {\r
+\r
+           /*--------------------------------------*\\r
+            |*         Constructor                 *|\r
+            \*-------------------------------------*/\r
+\r
+           public:\r
+\r
+           ImageFonctionelMOOs_A(unsigned int w, unsigned int h, gpu::DomaineMath domaineMath);\r
+\r
+           virtual ~ImageFonctionelMOOs_A();\r
+\r
+           /*--------------------------------------*\\r
+            |*         Methodes                    *|\r
+            \*-------------------------------------*/\r
+\r
+       public:\r
+           /**\r
+            * fillImageGL avec le domaine courant\r
+            * w et h fixe, ne change pas au cours du temps !\r
+            */\r
+           virtual void fillImageGL(uchar4* ptrDevImageGL, int w, int h, const gpu::DomaineMath& domaineNew)=0; //ptrDevImageGL zone memoire commune OpenGL et Cuda\r
+\r
+           /**\r
+            * Call each time the domaine change\r
+            *  1) Domaines : new domaine of the image\r
+            */\r
+           virtual void onDomaineChangePerformed(const gpu::DomaineMath& domaineNew);\r
+\r
+           /**\r
+            * Override\r
+            */\r
+           virtual void paintPrimitivesAPI(Graphic2Ds& ptrGraphic2D);\r
+\r
+           /**\r
+            * Last Domaine push in History\r
+            */\r
+           void restoreFromDomaineHistory();\r
+\r
+           /**\r
+            * First Domaine of History\r
+            */\r
+           void headOfDomaineHistory();\r
+\r
+           /**\r
+            * Override\r
+            */\r
+           virtual void print(ostream& stream) const;\r
+\r
+       private:\r
+\r
+           /**\r
+            * Override\r
+            * call fillImageGL with current domaine\r
+            */\r
+           virtual void fillImageGL(uchar4* ptrDevImageGL, int w, int h);\r
+\r
+           /*--------------------------------------*\\r
+            |*         Get                         *|\r
+            \*-------------------------------------*/\r
+\r
+       public:\r
+\r
+           /**\r
+            * Domaine currently used\r
+            */\r
+           gpu::DomaineMath getCurrentDomaine() const;\r
+\r
+           /*--------------------------------------*\\r
+            |*         Set                         *|\r
+            \*-------------------------------------*/\r
+\r
+       public:\r
+\r
+           void setCurrentDomaine(gpu::DomaineMath domaineNew);\r
+\r
+           void setEnableDomaineOverlay(bool isEnable);\r
+\r
+           /*--------------------------------------*\\r
+            |*         Is                          *|\r
+            \*-------------------------------------*/\r
+\r
+       public:\r
+\r
+           inline bool isEnableDomaineOverlay()\r
+               {\r
+               return enableDomaineOverlay;\r
+               }\r
+\r
+           /*--------------------------------------*\\r
+            |*         Attributs               *|\r
+            \*-------------------------------------*/\r
+\r
+       private:\r
+\r
+           //Input\r
+           gpu::DomaineMath homeDomaine;\r
+\r
+           //Tools\r
+           stack<gpu::DomaineMath> stackHistoryDomaine;\r
+           bool enableDomaineOverlay;\r
+\r
+       };\r
+    }\r
+\r
+#endif\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    End                                             *|\r
+ \*---------------------------------------------------------------------*/\r