10e684ccfSStephan Aßmus /*
27c4b3726SStephan Aßmus * Copyright 2006-2007, Haiku.
30e684ccfSStephan Aßmus * Distributed under the terms of the MIT License.
40e684ccfSStephan Aßmus *
50e684ccfSStephan Aßmus * Authors:
60e684ccfSStephan Aßmus * Stephan Aßmus <superstippi@gmx.de>
70e684ccfSStephan Aßmus */
80e684ccfSStephan Aßmus
90e684ccfSStephan Aßmus #include "TransformCommand.h"
100e684ccfSStephan Aßmus
110e684ccfSStephan Aßmus #include <stdio.h>
120e684ccfSStephan Aßmus
130e684ccfSStephan Aßmus // constructor
TransformCommand(BPoint pivot,BPoint translation,double rotation,double xScale,double yScale,const char * actionName)140e684ccfSStephan Aßmus TransformCommand::TransformCommand(BPoint pivot,
150e684ccfSStephan Aßmus BPoint translation,
160e684ccfSStephan Aßmus double rotation,
170e684ccfSStephan Aßmus double xScale,
180e684ccfSStephan Aßmus double yScale,
19*a75a222bSZardshard const char* actionName)
200e684ccfSStephan Aßmus : Command(),
210e684ccfSStephan Aßmus fOldPivot(pivot),
220e684ccfSStephan Aßmus fOldTranslation(translation),
230e684ccfSStephan Aßmus fOldRotation(rotation),
240e684ccfSStephan Aßmus fOldXScale(xScale),
250e684ccfSStephan Aßmus fOldYScale(yScale),
260e684ccfSStephan Aßmus
270e684ccfSStephan Aßmus fNewPivot(pivot),
280e684ccfSStephan Aßmus fNewTranslation(translation),
290e684ccfSStephan Aßmus fNewRotation(rotation),
300e684ccfSStephan Aßmus fNewXScale(xScale),
310e684ccfSStephan Aßmus fNewYScale(yScale),
320e684ccfSStephan Aßmus
33*a75a222bSZardshard fName(actionName)
340e684ccfSStephan Aßmus {
350e684ccfSStephan Aßmus }
360e684ccfSStephan Aßmus
370e684ccfSStephan Aßmus // constructor
TransformCommand(const char * actionName)38*a75a222bSZardshard TransformCommand::TransformCommand(const char* actionName)
390e684ccfSStephan Aßmus : Command(),
400e684ccfSStephan Aßmus fOldPivot(B_ORIGIN),
410e684ccfSStephan Aßmus fOldTranslation(B_ORIGIN),
420e684ccfSStephan Aßmus fOldRotation(0.0),
430e684ccfSStephan Aßmus fOldXScale(1.0),
440e684ccfSStephan Aßmus fOldYScale(1.0),
450e684ccfSStephan Aßmus
460e684ccfSStephan Aßmus fNewPivot(B_ORIGIN),
470e684ccfSStephan Aßmus fNewTranslation(B_ORIGIN),
480e684ccfSStephan Aßmus fNewRotation(0.0),
490e684ccfSStephan Aßmus fNewXScale(1.0),
500e684ccfSStephan Aßmus fNewYScale(1.0),
510e684ccfSStephan Aßmus
52*a75a222bSZardshard fName(actionName)
530e684ccfSStephan Aßmus {
540e684ccfSStephan Aßmus }
550e684ccfSStephan Aßmus
560e684ccfSStephan Aßmus // destructor
~TransformCommand()570e684ccfSStephan Aßmus TransformCommand::~TransformCommand()
580e684ccfSStephan Aßmus {
590e684ccfSStephan Aßmus }
600e684ccfSStephan Aßmus
610e684ccfSStephan Aßmus // InitCheck
620e684ccfSStephan Aßmus status_t
InitCheck()630e684ccfSStephan Aßmus TransformCommand::InitCheck()
640e684ccfSStephan Aßmus {
650e684ccfSStephan Aßmus if ((fNewPivot != fOldPivot
660e684ccfSStephan Aßmus || fNewTranslation != fOldTranslation
670e684ccfSStephan Aßmus || fNewRotation != fOldRotation
680e684ccfSStephan Aßmus || fNewXScale != fOldXScale
690e684ccfSStephan Aßmus || fNewYScale != fOldYScale))
700e684ccfSStephan Aßmus return B_OK;
717c4b3726SStephan Aßmus
720e684ccfSStephan Aßmus return B_NO_INIT;
730e684ccfSStephan Aßmus }
740e684ccfSStephan Aßmus
750e684ccfSStephan Aßmus // Perform
760e684ccfSStephan Aßmus status_t
Perform()770e684ccfSStephan Aßmus TransformCommand::Perform()
780e684ccfSStephan Aßmus {
790e684ccfSStephan Aßmus // objects are already transformed
800e684ccfSStephan Aßmus return B_OK;
810e684ccfSStephan Aßmus }
820e684ccfSStephan Aßmus
830e684ccfSStephan Aßmus // Undo
840e684ccfSStephan Aßmus status_t
Undo()850e684ccfSStephan Aßmus TransformCommand::Undo()
860e684ccfSStephan Aßmus {
8761b0e9e3SStephan Aßmus _SetTransformation(fOldPivot,
8861b0e9e3SStephan Aßmus fOldTranslation,
8961b0e9e3SStephan Aßmus fOldRotation,
9061b0e9e3SStephan Aßmus fOldXScale,
9161b0e9e3SStephan Aßmus fOldYScale);
927c4b3726SStephan Aßmus return B_OK;
930e684ccfSStephan Aßmus }
940e684ccfSStephan Aßmus
950e684ccfSStephan Aßmus // Redo
960e684ccfSStephan Aßmus status_t
Redo()970e684ccfSStephan Aßmus TransformCommand::Redo()
980e684ccfSStephan Aßmus {
9961b0e9e3SStephan Aßmus _SetTransformation(fNewPivot,
10061b0e9e3SStephan Aßmus fNewTranslation,
10161b0e9e3SStephan Aßmus fNewRotation,
10261b0e9e3SStephan Aßmus fNewXScale,
10361b0e9e3SStephan Aßmus fNewYScale);
1047c4b3726SStephan Aßmus return B_OK;
1050e684ccfSStephan Aßmus }
1060e684ccfSStephan Aßmus
1070e684ccfSStephan Aßmus // GetName
1080e684ccfSStephan Aßmus void
GetName(BString & name)1090e684ccfSStephan Aßmus TransformCommand::GetName(BString& name)
1100e684ccfSStephan Aßmus {
111*a75a222bSZardshard name << fName.String();
1120e684ccfSStephan Aßmus }
1130e684ccfSStephan Aßmus
1140e684ccfSStephan Aßmus // SetNewTransformation
1150e684ccfSStephan Aßmus void
SetNewTransformation(BPoint pivot,BPoint translation,double rotation,double xScale,double yScale)1160e684ccfSStephan Aßmus TransformCommand::SetNewTransformation(BPoint pivot,
1170e684ccfSStephan Aßmus BPoint translation,
1180e684ccfSStephan Aßmus double rotation,
1190e684ccfSStephan Aßmus double xScale,
1200e684ccfSStephan Aßmus double yScale)
1210e684ccfSStephan Aßmus {
1220e684ccfSStephan Aßmus fNewPivot = pivot;
1230e684ccfSStephan Aßmus fNewTranslation = translation;
1240e684ccfSStephan Aßmus fNewRotation = rotation;
1250e684ccfSStephan Aßmus fNewXScale = xScale;
1260e684ccfSStephan Aßmus fNewYScale = yScale;
1270e684ccfSStephan Aßmus }
1280e684ccfSStephan Aßmus
1290e684ccfSStephan Aßmus // SetNewTranslation
1300e684ccfSStephan Aßmus void
SetNewTranslation(BPoint translation)1310e684ccfSStephan Aßmus TransformCommand::SetNewTranslation(BPoint translation)
1320e684ccfSStephan Aßmus {
1330e684ccfSStephan Aßmus // NOTE: convinience method for nudging
1340e684ccfSStephan Aßmus fNewTranslation = translation;
1350e684ccfSStephan Aßmus }
1360e684ccfSStephan Aßmus
1370e684ccfSStephan Aßmus // SetName
1380e684ccfSStephan Aßmus void
SetName(const char * actionName)139*a75a222bSZardshard TransformCommand::SetName(const char* actionName)
1400e684ccfSStephan Aßmus {
1410e684ccfSStephan Aßmus fName.SetTo(actionName);
1420e684ccfSStephan Aßmus }
143