/* * Copyright (c) 2015 Tricoire Sebastien 3dsman@free.fr * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. * */ #ifndef OE_DISPLAY_H #define OE_DISPLAY_H #include "OE_utils.h" #include #include #include "OE_document.h" #include class OE_display { public: /** Default constructor */ OE_display(); OE_display(OE_document document); /** Default destructor */ virtual ~OE_display(); bool setDocument(OE_document * document); void mouse_Pos(double x, double y); void mouse_Button(int button, int action, int mods); void scroll(double xoffset, double yoffset); void resize(int width, int height); void showAll(); void drawframe(); bool draw(); bool forceRefresh = true; protected: private: /** \brief is displaying controls. */ bool controls = false; float cx, cy; float zoom = 1.0; int mouseX, mouseY, mouseXInit, mouseYInit = -1; bool pan = false; int width, height; GLFWwindow* window; const GLFWvidmode* mode; OE_curve* selectedCurve = nullptr; OE_stitchs* selectedStitch = nullptr; OE_document * document; /** \brief color of the curve */ static unsigned char lineColor[4] ; /** \brief color of the handle lines */ static unsigned char controlLineColor[4] ; /** \brief color of the handle points */ static unsigned char controlPointColor[4] ; /** \brief color of the curve start and end points */ static unsigned char controlStartPointColor[4] ; /** \brief color of the curve */ static unsigned char stitchLineColor[4] ; /** \brief color of the handle points */ static unsigned char stitchPointColor[4] ; /** \brief color of the curve start and end points */ static unsigned char stitchStartPointColor[4] ; bool refresh(); void drawTriangle(vector_2d point1, vector_2d point2, float size); bool drawCurve(OE_curve * curve); bool drawStitch(OE_stitchs * stitch); bool drawCurveControl(OE_curve * curve); bool drawStitchControl(OE_stitchs * stitch); }; #endif // OE_DISPLAY_H