Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / API_Bilat_Image_GL / INC / common / ImageMOOs_I.h
diff --git a/WCudaMSE/API_Bilat_Image_GL/INC/common/ImageMOOs_I.h b/WCudaMSE/API_Bilat_Image_GL/INC/common/ImageMOOs_I.h
new file mode 100755 (executable)
index 0000000..03921ae
--- /dev/null
@@ -0,0 +1,149 @@
+#ifndef IMAGEMOOS_A_H\r
+#define IMAGEMOOS_A_H\r
+\r
+#include "envGLImage.h"\r
+#include "KeyListener_I.h"\r
+#include "MouseListener_I.h"\r
+#include "ImageObserver_I.h"\r
+#include "Graphic2Ds.h"\r
+\r
+#include <iostream>\r
+#include <string>\r
+#include <vector>\r
+\r
+using std::vector;\r
+using std::string;\r
+using std::ostream;\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    Declaration                                     *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |*            Public                  *|\r
+ \*-------------------------------------*/\r
+\r
+/**\r
+ * Base class for Image Model.\r
+ */\r
+class CBI_GLIMAGE ImageMOOs_I\r
+    {\r
+\r
+       /*--------------------------------------*\\r
+        |*             Constructor             *|\r
+        \*-------------------------------------*/\r
+    public:\r
+       ImageMOOs_I(unsigned int width, unsigned int height);\r
+\r
+       ImageMOOs_I(const ImageMOOs_I &imageSource);\r
+\r
+       /*--------------------------------------*\\r
+        |*             Destructor              *|\r
+        \*-------------------------------------*/\r
+    public:\r
+       virtual ~ImageMOOs_I();\r
+\r
+       /*--------------------------------------*\\r
+        |*             Methodes                *|\r
+        \*-------------------------------------*/\r
+    public:\r
+       /**\r
+        * A redefinir par l'utilisateur\r
+        */\r
+       virtual void animationStep(bool& isNeedUpdateView)=0;\r
+\r
+       /**\r
+        * A redefinir par l'utilisateur\r
+        */\r
+       virtual void paintPrimitives(Graphic2Ds& ptrGraphic2D)=0;\r
+\r
+       /**\r
+        * call by API\r
+        */\r
+       virtual void animationStepAPI(bool& isNeedUpdateView);\r
+\r
+       /**\r
+        * call by API\r
+        */\r
+       virtual void paintPrimitivesAPI(Graphic2Ds& ptrGraphic2D);\r
+\r
+       virtual void print(ostream& stream) const;\r
+\r
+       void registerImageObserver(ImageObserver_I &ptrObserver);\r
+\r
+       void unregisterImageObserver(ImageObserver_I &ptrObserver);\r
+\r
+       /*\r
+        * Notify all registred ImageObserver_I\r
+        * @see registerImageObserver\r
+        */\r
+       void update() const;\r
+\r
+       /*--------------------------------------*\\r
+        |*             Set                     *|\r
+        \*-------------------------------------*/\r
+    public:\r
+\r
+       void setKeyListener(KeyListener_I* ptrKeyListener);\r
+\r
+       void setMouseListener(MouseListener_I* ptrMouseListener);\r
+\r
+       /*--------------------------------------*\\r
+        |*             Get                     *|\r
+        \*-------------------------------------*/\r
+\r
+    public:\r
+\r
+       inline unsigned int getW() const\r
+           {\r
+           return width;\r
+           }\r
+\r
+       inline unsigned int getH() const\r
+           {\r
+           return height;\r
+           }\r
+\r
+       inline KeyListener_I* getKeyListener() const\r
+           {\r
+           return ptrKeyListener;\r
+           }\r
+\r
+       inline MouseListener_I* getMouseListener() const\r
+           {\r
+           return ptrMouseListener;\r
+           }\r
+\r
+       unsigned int getSizeOctet() const;\r
+\r
+       /*--------------------------------------*\\r
+        |*             Friend                  *|\r
+        \*-------------------------------------*/\r
+\r
+       /**\r
+        * call image.print(stream)\r
+        */\r
+       CBI_GLIMAGE\r
+       friend ostream& operator<<(ostream& stream, const ImageMOOs_I& image);\r
+\r
+       /*--------------------------------------*\\r
+        |*             Attributs               *|\r
+        \*-------------------------------------*/\r
+\r
+    private:\r
+       // Inputs\r
+       unsigned int width;\r
+       unsigned int height;\r
+\r
+       // Tools\r
+       KeyListener_I* ptrKeyListener;\r
+       MouseListener_I* ptrMouseListener;\r
+       vector<ImageObserver_I*> vectorObservable;\r
+\r
+    };\r
+\r
+#endif\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    End                                             *|\r
+ \*---------------------------------------------------------------------*/\r