Skip to content
OE_display.h 2.9 KiB
Newer Older
/*
 * 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 <stdint.h>
#include <vector>
#include "OE_document.h"
#include <GLFW/glfw3.h>

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);
		
		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] ;
3dsman's avatar
3dsman committed
		/** \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);