+#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