/* * 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. * */ #pragma once #include "OE_utils.h" #include #include #include "OE_document.h" #include "OE_display.h" //#include "OE_editDisplay.h" //#include "OE_commandDisplay.h" #include "curves/OE_joincurve.h" #include "curves/OE_subcurve.h" //#include class OE_interfaceDisplay : public OE_display { Q_OBJECT public: /** Default constructor */ OE_interfaceDisplay(QWidget* parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()); /** Default destructor */ virtual ~OE_interfaceDisplay(); virtual bool setDocument(OE_document* document); virtual bool setController(OE_controller* controller); OE_document* getDocument(); OE_controller* getController(); virtual void showAll(); virtual bool mouse_Pos(double x, double y); virtual bool mouse_Button(QMouseEvent* event); virtual void scroll(double xoffset, double yoffset); virtual void resize(int width, int height); virtual void key(QKeyEvent* event); bool checkJoinCurveControl(OE_joincurve* joinCurve, int &index); bool checkPicking(); bool drawPicking(); void selectBox(); bool selectApply(std::list selectedCurves, std::list selectedStitches); bool draw(); private: enum screen { edit, command, }; enum State { None, Selection, MoveSelection, ScaleSelection, AddSubcurve, NewSubcurve, TraceSubcurve, MoveSubcurve, MovePointcurve, MovePointstitch, DelPointstitch, OffsetWidthLinestitch, ScaleLenLinestitch, }; OE_display::OE_displayStyle* editStyle = NULL; OE_display::OE_displayStyle* commandStyle = NULL; //OE_display* curDisplay = NULL; screen curScreen = edit; std::list selectedCurves; std::list selectedStitches; Qt::KeyboardModifiers modState; bool changeDpi = true; vector_2d clicOldMouse; //bool selection = false; State editionState = None; int joincurve_id = 0; OE_curve* closestCurve = 0; OE_joincurve* curJoincurve = 0; int subcurve_id = -1; OE_subcurve* editSubcurve = 0; vector_2dt editClosestPoint; OE_stitchs* selControlStitch = 0; OE_curve* selControlCurve = 0; int selControlType = 0; int selControlIndex = 0; int toolAction = 0; bool run; public slots: void SetSelectedStitchPattern(int index); signals: void stitchSelectionChange(); void refreshStitchList(); void refreshStitch(OE_stitchs* stitch); };