10e684ccfSStephan Aßmus /* 2*7c4b3726SStephan 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 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, 190e684ccfSStephan Aßmus const char* actionName, 200e684ccfSStephan Aßmus uint32 nameIndex) 210e684ccfSStephan Aßmus : Command(), 220e684ccfSStephan Aßmus fOldPivot(pivot), 230e684ccfSStephan Aßmus fOldTranslation(translation), 240e684ccfSStephan Aßmus fOldRotation(rotation), 250e684ccfSStephan Aßmus fOldXScale(xScale), 260e684ccfSStephan Aßmus fOldYScale(yScale), 270e684ccfSStephan Aßmus 280e684ccfSStephan Aßmus fNewPivot(pivot), 290e684ccfSStephan Aßmus fNewTranslation(translation), 300e684ccfSStephan Aßmus fNewRotation(rotation), 310e684ccfSStephan Aßmus fNewXScale(xScale), 320e684ccfSStephan Aßmus fNewYScale(yScale), 330e684ccfSStephan Aßmus 340e684ccfSStephan Aßmus fName(actionName), 350e684ccfSStephan Aßmus fNameIndex(nameIndex) 360e684ccfSStephan Aßmus { 370e684ccfSStephan Aßmus } 380e684ccfSStephan Aßmus 390e684ccfSStephan Aßmus // constructor 400e684ccfSStephan Aßmus TransformCommand::TransformCommand(const char* actionName, 410e684ccfSStephan Aßmus uint32 nameIndex) 420e684ccfSStephan Aßmus : Command(), 430e684ccfSStephan Aßmus fOldPivot(B_ORIGIN), 440e684ccfSStephan Aßmus fOldTranslation(B_ORIGIN), 450e684ccfSStephan Aßmus fOldRotation(0.0), 460e684ccfSStephan Aßmus fOldXScale(1.0), 470e684ccfSStephan Aßmus fOldYScale(1.0), 480e684ccfSStephan Aßmus 490e684ccfSStephan Aßmus fNewPivot(B_ORIGIN), 500e684ccfSStephan Aßmus fNewTranslation(B_ORIGIN), 510e684ccfSStephan Aßmus fNewRotation(0.0), 520e684ccfSStephan Aßmus fNewXScale(1.0), 530e684ccfSStephan Aßmus fNewYScale(1.0), 540e684ccfSStephan Aßmus 550e684ccfSStephan Aßmus fName(actionName), 560e684ccfSStephan Aßmus fNameIndex(nameIndex) 570e684ccfSStephan Aßmus { 580e684ccfSStephan Aßmus } 590e684ccfSStephan Aßmus 600e684ccfSStephan Aßmus // destructor 610e684ccfSStephan Aßmus TransformCommand::~TransformCommand() 620e684ccfSStephan Aßmus { 630e684ccfSStephan Aßmus } 640e684ccfSStephan Aßmus 650e684ccfSStephan Aßmus // InitCheck 660e684ccfSStephan Aßmus status_t 670e684ccfSStephan Aßmus TransformCommand::InitCheck() 680e684ccfSStephan Aßmus { 690e684ccfSStephan Aßmus if ((fNewPivot != fOldPivot 700e684ccfSStephan Aßmus || fNewTranslation != fOldTranslation 710e684ccfSStephan Aßmus || fNewRotation != fOldRotation 720e684ccfSStephan Aßmus || fNewXScale != fOldXScale 730e684ccfSStephan Aßmus || fNewYScale != fOldYScale)) 740e684ccfSStephan Aßmus return B_OK; 75*7c4b3726SStephan Aßmus 760e684ccfSStephan Aßmus return B_NO_INIT; 770e684ccfSStephan Aßmus } 780e684ccfSStephan Aßmus 790e684ccfSStephan Aßmus // Perform 800e684ccfSStephan Aßmus status_t 810e684ccfSStephan Aßmus TransformCommand::Perform() 820e684ccfSStephan Aßmus { 830e684ccfSStephan Aßmus // objects are already transformed 840e684ccfSStephan Aßmus return B_OK; 850e684ccfSStephan Aßmus } 860e684ccfSStephan Aßmus 870e684ccfSStephan Aßmus // Undo 880e684ccfSStephan Aßmus status_t 890e684ccfSStephan Aßmus TransformCommand::Undo() 900e684ccfSStephan Aßmus { 9161b0e9e3SStephan Aßmus _SetTransformation(fOldPivot, 9261b0e9e3SStephan Aßmus fOldTranslation, 9361b0e9e3SStephan Aßmus fOldRotation, 9461b0e9e3SStephan Aßmus fOldXScale, 9561b0e9e3SStephan Aßmus fOldYScale); 96*7c4b3726SStephan Aßmus return B_OK; 970e684ccfSStephan Aßmus } 980e684ccfSStephan Aßmus 990e684ccfSStephan Aßmus // Redo 1000e684ccfSStephan Aßmus status_t 1010e684ccfSStephan Aßmus TransformCommand::Redo() 1020e684ccfSStephan Aßmus { 10361b0e9e3SStephan Aßmus _SetTransformation(fNewPivot, 10461b0e9e3SStephan Aßmus fNewTranslation, 10561b0e9e3SStephan Aßmus fNewRotation, 10661b0e9e3SStephan Aßmus fNewXScale, 10761b0e9e3SStephan Aßmus fNewYScale); 108*7c4b3726SStephan Aßmus return B_OK; 1090e684ccfSStephan Aßmus } 1100e684ccfSStephan Aßmus 1110e684ccfSStephan Aßmus // GetName 1120e684ccfSStephan Aßmus void 1130e684ccfSStephan Aßmus TransformCommand::GetName(BString& name) 1140e684ccfSStephan Aßmus { 1150e684ccfSStephan Aßmus name << _GetString(fNameIndex, fName.String()); 1160e684ccfSStephan Aßmus } 1170e684ccfSStephan Aßmus 1180e684ccfSStephan Aßmus // SetNewTransformation 1190e684ccfSStephan Aßmus void 1200e684ccfSStephan Aßmus TransformCommand::SetNewTransformation(BPoint pivot, 1210e684ccfSStephan Aßmus BPoint translation, 1220e684ccfSStephan Aßmus double rotation, 1230e684ccfSStephan Aßmus double xScale, 1240e684ccfSStephan Aßmus double yScale) 1250e684ccfSStephan Aßmus { 1260e684ccfSStephan Aßmus fNewPivot = pivot; 1270e684ccfSStephan Aßmus fNewTranslation = translation; 1280e684ccfSStephan Aßmus fNewRotation = rotation; 1290e684ccfSStephan Aßmus fNewXScale = xScale; 1300e684ccfSStephan Aßmus fNewYScale = yScale; 1310e684ccfSStephan Aßmus } 1320e684ccfSStephan Aßmus 1330e684ccfSStephan Aßmus // SetNewTranslation 1340e684ccfSStephan Aßmus void 1350e684ccfSStephan Aßmus TransformCommand::SetNewTranslation(BPoint translation) 1360e684ccfSStephan Aßmus { 1370e684ccfSStephan Aßmus // NOTE: convinience method for nudging 1380e684ccfSStephan Aßmus fNewTranslation = translation; 1390e684ccfSStephan Aßmus } 1400e684ccfSStephan Aßmus 1410e684ccfSStephan Aßmus // SetName 1420e684ccfSStephan Aßmus void 1430e684ccfSStephan Aßmus TransformCommand::SetName(const char* actionName, uint32 nameIndex) 1440e684ccfSStephan Aßmus { 1450e684ccfSStephan Aßmus fName.SetTo(actionName); 1460e684ccfSStephan Aßmus fNameIndex = nameIndex; 1470e684ccfSStephan Aßmus } 1480e684ccfSStephan Aßmus 149