1/*
2 * Copyright 2006, Haiku.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Stephan A��mus <superstippi@gmx.de>
7 */
8
9#ifndef TRANSFORM_COMMAND_H
10#define TRANSFORM_COMMAND_H
11
12#include <Point.h>
13#include <String.h>
14
15#include "Command.h"
16
17class TransformCommand : public Command {
18 public:
19								TransformCommand(BPoint pivot,
20												 BPoint translation,
21												 double rotation,
22												 double xScale,
23												 double yScale,
24
25												 const char* actionName);
26
27								TransformCommand(const char* actionName);
28
29	virtual						~TransformCommand();
30
31	// Command interface
32	virtual	status_t			InitCheck();
33
34	virtual	status_t			Perform();
35	virtual status_t			Undo();
36	virtual status_t			Redo();
37
38	virtual void				GetName(BString& name);
39
40	// TransformCommand
41			void				SetNewTransformation(BPoint pivot,
42													 BPoint translation,
43													 double rotation,
44													 double xScale,
45													 double yScale);
46
47			void				SetNewTranslation(BPoint translation);
48				// convinience for "nudging"
49
50			void				SetName(const char* actionName);
51
52 protected:
53	virtual	status_t			_SetTransformation(BPoint pivot,
54												   BPoint translation,
55												   double rotation,
56												   double xScale,
57												   double yScale) const = 0;
58
59			BPoint				fOldPivot;
60			BPoint				fOldTranslation;
61			double				fOldRotation;
62			double				fOldXScale;
63			double				fOldYScale;
64
65			BPoint				fNewPivot;
66			BPoint				fNewTranslation;
67			double				fNewRotation;
68			double				fNewXScale;
69			double				fNewYScale;
70
71			BString				fName;
72};
73
74#endif // TRANSFORM_COMMAND_H
75