Skip to content
OE_actionsLinkStitchs.cpp 2.79 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.
 *
 */


#include "actions/OE_actionsStitchs.h"
#include "actions/OE_actionsLinkStitchs.h"
#include "OE_document.h"


///////// OE_actionAddPointLinkStitch ///////////////
/// \brief OE_actionAddPointLinkStitch::OE_actionAddPointLinkStitch
/// \param pos
/// \param point

OE_actionAddPointLinkStitch::OE_actionAddPointLinkStitch(OE_linkstitch* stitch, int _pos, vector_2d _point)
{
	if (!document||!stitch)return;

	pos = _pos;
	point = _point;
	actionStitch = stitch;

}

OE_actionAddPointLinkStitch::~OE_actionAddPointLinkStitch(){}

void OE_actionAddPointLinkStitch::undo()
{
	if (active)
	{
		active = false;
	}
}

void OE_actionAddPointLinkStitch::redo()
{
	if (!active)
	{
		active = true;
	}
}

void OE_actionAddPointLinkStitch::setOffset(vector_2d _offset)
{
	if (!actionStitch||!active) return;

	offset = _offset;
	actionStitch->setStepPt(pos,point + offset);
}


///////// OE_actionMovePointLinkStitch ///////////////
/// \brief OE_actionMovePointLinkStitch::OE_actionMovePointLinkStitch
/// \param pos
/// \param offset

OE_actionMovePointLinkStitch::OE_actionMovePointLinkStitch(OE_linkstitch* stitch, int _pos, vector_2d _offset)
{
	if (!document||!stitch)return;

	pos = _pos;
	offset = _offset;
	actionStitch = stitch;
	oldPoint = actionStitch->getStepPt(pos);
	actionStitch->setStepPt(pos,oldPoint + offset);

}

OE_actionMovePointLinkStitch::~OE_actionMovePointLinkStitch(){}

void OE_actionMovePointLinkStitch::undo()
{
	if (active)
	{
		actionStitch->setStepPt(pos,oldPoint);
		active = false;
	}
}

void OE_actionMovePointLinkStitch::redo()
{
	if (!active)
	{
		actionStitch->setStepPt(pos,oldPoint + offset);
		active = true;
	}
}

void OE_actionMovePointLinkStitch::setOffset(vector_2d _offset)
{
	if (!actionStitch||!active) return;

	offset = _offset;
	actionStitch->setStepPt(pos,oldPoint + offset);
}