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.
*
*/
#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 <GLFW/glfw3.h>
class OE_interfaceDisplay : public OE_display
{
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 bool setDisplayStyle(unsigned int displayStyleId);
OE_display::OE_displayStyle* addDisplayStyle();
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);
bool checkJoinCurveControl(OE_joincurve* joinCurve, int &index);
bool pickingTool(int toolType, int toolIndex);
bool pickingMoveTool();
bool pickingScaleTool();
bool pickingStitch(int stitchIndex);
bool pickingStitchControl(int stitchIndex, int ctrlType, int ctrlIndex);
bool pickingCurve(int curveIndex);
bool pickingCurveControl(int curveIndex, int ctrlType, int ctrlIndex);
bool drawPicking();
bool selectApply(std::list<OE_pointcurve*> selectedCurves, std::list<OE_stitchs*> selectedStitches);
bool draw();
enum State
{
None,
Selection,
MoveSelection,
ScaleSelection,
NewSubcurve,
TraceSubcurve,
MoveSubcurve,
MovePointcurve,
MovePointstitch,
DelPointstitch,
OffsetWidthLinestitch,
ScaleLenLinestitch,
};
std::vector<OE_display::OE_displayStyle*> displayStyles;
std::list<OE_pointcurve*> selectedCurves;
std::list<OE_stitchs*> selectedStitches;
bool changeDpi = true;
//bool selection = false;
State editionState = None;
int joincurve_id = 0;
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;
bool run;
public slots:
void SetSelectedStitchPattern(int index);
void openFile();
void saveFile();
void undo();
void redo();
void closeSelectedCurve();
void deleteSelectedStitches();
void selectNextStitch();
void selectPreviousStitch();
void newLinestitch();
void newBirailstitch();
void newFillstitch();
void scaleSelectedStitchLen(float scale);
void scaleSelectedStitchWidth(float scale);
void zoomOnSelection();
void stitchSelectionChange();
void refreshStitchList();
void refreshStitch(OE_stitchs* stitch);