Newer
Older
* This file is part of project OpenEmbroidery. It's copyrighted by
* the contributors recorded in the version control history of the file.
* Original project location https://code.electrolab.fr/openEmbroidery/openEmbroidery_software
*
* SPDX-License-Identifier: CECILL-2.1
* License-Filename: Licence_CeCILL_V2.1-en.txt
*/
#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*/)