--- /dev/null
+#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