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_CONTROLLER_H
#define OE_CONTROLLER_H
#include "OE_display.h"
#include "OE_document.h"
#include "OE_joincurve.h"
#include "OE_subcurve.h"
#include "OE_pointcurve.h"
3dsman
committed
#include "OE_linkstitch.h"
class OE_controller
{
public:
/** Default constructor */
OE_controller(OE_display * display, OE_document* document );
/** Default destructor */
virtual ~OE_controller();
/** \brief to create a new curve. */
bool test();
bool setDefault();
/** \brief return linestitch if the index is pointing on a linestitch, else return null */
OE_stitchs* getStitch (unsigned index);
OE_linestitch* getLineStitch (unsigned index);
OE_birailstitch* getBirailStitch (unsigned index);
3dsman
committed
OE_linkstitch* getLinkStitch (unsigned index);
OE_thread* getThread (unsigned index);
/** \brief to create a new curve. */
bool addCurve( std::vector<vector_2d> points, bool closed);
bool addCurve( OE_curve* curve);
3dsman
committed
bool addStitch(OE_stitchs * stitch);
/** \brief to create a new linestitch. */
bool addLineStitch();
bool addLineStitch( OE_curve* curve,float curveStart, float curveEnd, float len, float width, unsigned motif, float offset);
3dsman
committed
/** \brief to create a new birailstitch. */
bool addBirailStitch(OE_curve* curve1, OE_curve* curve2, bool reverse1, bool reverse2, float offset1, float offset2, float len);
3dsman
committed
/** \brief to create a new linkstitch. */
bool addLinkStitch(OE_stitchs* stitchStart, OE_stitchs* stitchEnd);
/** \brief to create a new thread. */
bool addThread();
bool addThread(unsigned char r, unsigned char g, unsigned char b, float width );
3dsman
committed
bool refreshStitchs();
bool setLineStitchMotif( unsigned index, unsigned motif);
bool setLineStitchCurve( unsigned index, OE_curve* curve);
bool setLineStitchSub( unsigned index, float start, float end);
bool setLineStitchSize( unsigned index, float len, float width);
bool setBirailStitchCurves( unsigned index, OE_curve* curve1, OE_curve* curve2);
bool setBirailStitchSub( unsigned index, float start1, float end1, bool reverse1, float start2, float end2, bool reverse2);
bool setBirailStitchSize( unsigned index, float len, float offset1, float offset2);
3dsman
committed
bool setLinkStitchStitch( unsigned index, OE_stitchs* stitchStart, OE_stitchs* stitchEnd);
bool setStitchThread(unsigned index, OE_thread * thread);
bool setThreadColor(unsigned index, unsigned char r, unsigned char g, unsigned char b );
bool setThreadWidth(unsigned index, float width );