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 #ifndef TRANSFORM_GRADIENT_BOX_H 9 #define TRANSFORM_GRADIENT_BOX_H 10 11 12 #include "IconBuild.h" 13 #include "TransformBox.h" 14 15 16 class CanvasView; 17 18 _BEGIN_ICON_NAMESPACE 19 class Gradient; 20 class Shape; 21 _END_ICON_NAMESPACE 22 23 _USING_ICON_NAMESPACE 24 25 26 class TransformGradientBox : public TransformBox { 27 public: 28 TransformGradientBox(CanvasView* view, 29 Gradient* gradient, 30 Shape* parent); 31 virtual ~TransformGradientBox(); 32 33 // Observer interface (Manipulator is an Observer) 34 virtual void ObjectChanged(const Observable* object); 35 36 // TransformBox interface 37 virtual void Update(bool deep = true); 38 39 virtual void TransformFromCanvas(BPoint& point) const; 40 virtual void TransformToCanvas(BPoint& point) const; 41 virtual float ZoomLevel() const; 42 virtual double ViewSpaceRotation() const; 43 44 virtual TransformCommand* MakeCommand(const char* actionName, 45 uint32 nameIndex); 46 47 // TransformGradientBox 48 Command* Perform(); 49 Command* Cancel(); 50 private: 51 CanvasView* fCanvasView; 52 53 Shape* fShape; 54 Gradient* fGradient; 55 int32 fCount; 56 57 // saves the transformable object transformation states 58 // prior to this transformation 59 double fOriginals[matrix_size]; 60 }; 61 62 #endif // TRANSFORM_GRADIENT_BOX_H 63 64