1/* 2 * Copyright 2006-2007, Haiku. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Stephan A��mus <superstippi@gmx.de> 7 */ 8 9#include "TransformCommand.h" 10 11#include <stdio.h> 12 13// constructor 14TransformCommand::TransformCommand(BPoint pivot, 15 BPoint translation, 16 double rotation, 17 double xScale, 18 double yScale, 19 const char* actionName, 20 uint32 nameIndex) 21 : Command(), 22 fOldPivot(pivot), 23 fOldTranslation(translation), 24 fOldRotation(rotation), 25 fOldXScale(xScale), 26 fOldYScale(yScale), 27 28 fNewPivot(pivot), 29 fNewTranslation(translation), 30 fNewRotation(rotation), 31 fNewXScale(xScale), 32 fNewYScale(yScale), 33 34 fName(actionName), 35 fNameIndex(nameIndex) 36{ 37} 38 39// constructor 40TransformCommand::TransformCommand(const char* actionName, 41 uint32 nameIndex) 42 : Command(), 43 fOldPivot(B_ORIGIN), 44 fOldTranslation(B_ORIGIN), 45 fOldRotation(0.0), 46 fOldXScale(1.0), 47 fOldYScale(1.0), 48 49 fNewPivot(B_ORIGIN), 50 fNewTranslation(B_ORIGIN), 51 fNewRotation(0.0), 52 fNewXScale(1.0), 53 fNewYScale(1.0), 54 55 fName(actionName), 56 fNameIndex(nameIndex) 57{ 58} 59 60// destructor 61TransformCommand::~TransformCommand() 62{ 63} 64 65// InitCheck 66status_t 67TransformCommand::InitCheck() 68{ 69 if ((fNewPivot != fOldPivot 70 || fNewTranslation != fOldTranslation 71 || fNewRotation != fOldRotation 72 || fNewXScale != fOldXScale 73 || fNewYScale != fOldYScale)) 74 return B_OK; 75 76 return B_NO_INIT; 77} 78 79// Perform 80status_t 81TransformCommand::Perform() 82{ 83 // objects are already transformed 84 return B_OK; 85} 86 87// Undo 88status_t 89TransformCommand::Undo() 90{ 91 _SetTransformation(fOldPivot, 92 fOldTranslation, 93 fOldRotation, 94 fOldXScale, 95 fOldYScale); 96 return B_OK; 97} 98 99// Redo 100status_t 101TransformCommand::Redo() 102{ 103 _SetTransformation(fNewPivot, 104 fNewTranslation, 105 fNewRotation, 106 fNewXScale, 107 fNewYScale); 108 return B_OK; 109} 110 111// GetName 112void 113TransformCommand::GetName(BString& name) 114{ 115 name << _GetString(fNameIndex, fName.String()); 116} 117 118// SetNewTransformation 119void 120TransformCommand::SetNewTransformation(BPoint pivot, 121 BPoint translation, 122 double rotation, 123 double xScale, 124 double yScale) 125{ 126 fNewPivot = pivot; 127 fNewTranslation = translation; 128 fNewRotation = rotation; 129 fNewXScale = xScale; 130 fNewYScale = yScale; 131} 132 133// SetNewTranslation 134void 135TransformCommand::SetNewTranslation(BPoint translation) 136{ 137 // NOTE: convinience method for nudging 138 fNewTranslation = translation; 139} 140 141// SetName 142void 143TransformCommand::SetName(const char* actionName, uint32 nameIndex) 144{ 145 fName.SetTo(actionName); 146 fNameIndex = nameIndex; 147} 148 149