Skip to content
OE_interfaceDisplay.h 3.03 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_INTERFACEDISPLAY_H
#define OE_INTERFACEDISPLAY_H

#include "OE_utils.h"
#include <stdint.h>
#include <vector>
#include "OE_document.h"
#include "OE_display.h"
#include "OE_editDisplay.h"
#include "OE_commandDisplay.h"

#include "curves/OE_joincurve.h"
3dsman's avatar
3dsman committed
#include "curves/OE_subcurve.h"
//#include <GLFW/glfw3.h>

class OE_interfaceDisplay : public OE_display
{
public:
	
		
        /** Default constructor */
raoul's avatar
raoul committed
		OE_interfaceDisplay(OE_document *document=NULL);
        /** Default destructor */
        virtual ~OE_interfaceDisplay();

        virtual bool setDocument(OE_document * document);
        virtual bool setController(OE_controller* controller);
		
		virtual void showAll();

        virtual void mouse_Pos(double x, double y);
        virtual void mouse_Button(int button, int action, int mods);
        virtual void scroll(double xoffset, double yoffset);
        virtual void resize(int width, int height);
        virtual void key(int key, int scancode, int action, int mods);

        bool checkPicking();
        bool select();
3dsman's avatar
3dsman committed
        bool selectBox();
        bool selectApply(std::list<OE_pointcurve*> selectedCurves, std::list<OE_stitchs*> selectedStitches);
		bool draw();
        bool draw(bool select);

    protected:
    private:
		enum State {None, NewSubcurve, TraceSubcurve, MoveSubcurve, MovePointcurve, ScaleWidthLinestitch, ScaleLenLinestitch};
        OE_editDisplay* editDisplay = NULL;
        OE_commandDisplay* commandDisplay = NULL;
        OE_display* curDisplay = NULL;
        std::list<OE_stitchs*> selectedStitches;

        int modState = 0; //key modifier state
        vector_2d clicOldMouse;
3dsman's avatar
3dsman committed
        bool selection = false;
        int joincurve_id = 0;
3dsman's avatar
3dsman committed
        OE_curve* closestCurve = 0;
        OE_joincurve* curJoincurve = 0;
        OE_subcurve* editSubcurve = 0;
        vector_2dt editClosestPoint;
        OE_stitchs* selControlStitch = 0;
        OE_curve* selControlCurve = 0;
        int selControlType = 0;
        int selControlIndex = 0;

		int toolAction = 0;