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_actionsBirailStitchs.h"
#include "OE_document.h"
///////// actionNewBirailStitch ///////////////
/// \brief OE_actionNewBirailStitch::OE_actionNewBirailStitch
/// \param curve1
/// \param curve2
/// \param reverse1
/// \param reverse2
/// \param offset1
/// \param offset2
/// \param len
///
OE_actionNewBirailStitch::OE_actionNewBirailStitch(OE_document* doc, bool reverse1, bool reverse2, float offset1, float offset2, float len) : OE_actions(doc)
action = new OE_actionNewStitch(document, new OE_birailstitch(document->threads.front(), reverse1, reverse2, offset1, offset2, len));
}
OE_actionNewBirailStitch::~OE_actionNewBirailStitch()
{
}
void OE_actionNewBirailStitch::undo()
{
if (active&&action)
{
action->undo();
}
active = false;
}
void OE_actionNewBirailStitch::redo()
{
if (!active && action)
{
action->redo();
}
active = true;
}
///////// OE_actionSetBirailStitchLen ///////////////
/// \brief OE_actionSetBirailStitchLen::OE_actionSetBirailStitchLen
/// \param stitch
/// \param len
///
OE_actionSetBirailStitchLen::OE_actionSetBirailStitchLen(OE_document* doc, OE_birailstitch* stitch, float len) : OE_actions (doc)
if (document && stitch)
{
actionStitch = stitch;
oldLen = actionStitch->getLen();
actionStitch->setLen(len);
}
}
OE_actionSetBirailStitchLen::~OE_actionSetBirailStitchLen()
{
}
void OE_actionSetBirailStitchLen::undo()
{
if (active)
{
actionStitch->setLen(switchVal(actionStitch->getLen(), &oldLen));
active = false;
}
}
void OE_actionSetBirailStitchLen::redo()
{
if (!active)
{
actionStitch->setLen(switchVal(actionStitch->getLen(), &oldLen));
active = true;
}
}
///////// OE_actionSetBirailStitchOffset1 ///////////////
/// \brief OE_actionSetBirailStitchOffset1::OE_actionSetBirailStitchOffset1
/// \param stitch
/// \param offset
///
OE_actionSetBirailStitchOffset1::OE_actionSetBirailStitchOffset1(OE_document* doc, OE_birailstitch* stitch, float offset) : OE_actions(doc)
if (document&&stitch)
{
actionStitch = stitch;
oldOffset = actionStitch->getOffset1();
OE_actionSetBirailStitchOffset1::~OE_actionSetBirailStitchOffset1()
{
}
void OE_actionSetBirailStitchOffset1::undo()
{
if (active)
{
actionStitch->setOffset1(switchVal(actionStitch->getOffset1(), &oldOffset));
active = false;
}
}
void OE_actionSetBirailStitchOffset1::redo()
{
if (!active)
{
actionStitch->setOffset1(switchVal(actionStitch->getOffset1(), &oldOffset));
active = true;
}
}
///////// OE_actionSetBirailStitchOffset2 ///////////////
/// \brief OE_actionSetBirailStitchOffset2::OE_actionSetBirailStitchOffset2
/// \param stitch
/// \param offset
///
OE_actionSetBirailStitchOffset2::OE_actionSetBirailStitchOffset2(OE_document* doc, OE_birailstitch* stitch, float offset) : OE_actions(doc)
if (document&&stitch)
{
actionStitch = stitch;
oldOffset = actionStitch->getOffset2();
OE_actionSetBirailStitchOffset2::~OE_actionSetBirailStitchOffset2()
{
}
void OE_actionSetBirailStitchOffset2::undo()
{
if (active)
{
actionStitch->setOffset2(switchVal(actionStitch->getOffset2(), &oldOffset));
active = false;
}
}
void OE_actionSetBirailStitchOffset2::redo()
{
if (!active)
{
actionStitch->setOffset2(switchVal(actionStitch->getOffset2(), &oldOffset));
active = true;
}
///////// OE_actionScaleSelectedBirailStitchLen///////////////
/// \brief OE_actionScaleSelectedBirailStitchLen::OE_actionScaleSelectedBirailStitchLen
/// \param scale
///
OE_actionScaleSelectedBirailStitchLen::OE_actionScaleSelectedBirailStitchLen(OE_document* doc, float scale) : OE_actions(doc)
{
if (document)
{
OE_birailstitch* tmpBirailStitch;
for(auto selStitch : document->selectedStitchs)
{
tmpBirailStitch = dynamic_cast<OE_birailstitch*>(selStitch);
actions.push_back(new OE_actionSetBirailStitchLen(document, tmpBirailStitch, tmpBirailStitch->getLen()*scale));
OE_actionScaleSelectedBirailStitchLen::~OE_actionScaleSelectedBirailStitchLen()
{
if (!active)
{
while(!actions.empty()) delete actions.front(), actions.pop_front();
}
void OE_actionScaleSelectedBirailStitchLen::undo()
{
if (active)
{
for(auto action : actions)
active = false;
}
}
void OE_actionScaleSelectedBirailStitchLen::redo()
{
if (!active)
{
for(auto action : actions)
void OE_actionScaleSelectedBirailStitchLen::scaleLen(float /*scale*/)