xref: /haiku/src/apps/icon-o-matic/transformable/TransformGradientBox.h (revision 25dc253d6ab28ce204fa4de2d3e7a27d167fc817)
10e1ba39fSStephan Aßmus /*
2325a6253SAxel Dörfler  * Copyright 2006-2007, Haiku.
30e1ba39fSStephan Aßmus  * Distributed under the terms of the MIT License.
40e1ba39fSStephan Aßmus  *
50e1ba39fSStephan Aßmus  * Authors:
60e1ba39fSStephan Aßmus  *		Stephan Aßmus <superstippi@gmx.de>
70e1ba39fSStephan Aßmus  */
80e1ba39fSStephan Aßmus #ifndef TRANSFORM_GRADIENT_BOX_H
90e1ba39fSStephan Aßmus #define TRANSFORM_GRADIENT_BOX_H
100e1ba39fSStephan Aßmus 
11325a6253SAxel Dörfler 
12*25dc253dSIngo Weinhold #include "IconBuild.h"
130e1ba39fSStephan Aßmus #include "TransformBox.h"
140e1ba39fSStephan Aßmus 
15325a6253SAxel Dörfler 
160e1ba39fSStephan Aßmus class CanvasView;
17325a6253SAxel Dörfler 
18*25dc253dSIngo Weinhold _BEGIN_ICON_NAMESPACE
190e1ba39fSStephan Aßmus 	class Gradient;
200e1ba39fSStephan Aßmus 	class Shape;
21*25dc253dSIngo Weinhold _END_ICON_NAMESPACE
22*25dc253dSIngo Weinhold 
23*25dc253dSIngo Weinhold _USING_ICON_NAMESPACE
24*25dc253dSIngo Weinhold 
250e1ba39fSStephan Aßmus 
260e1ba39fSStephan Aßmus class TransformGradientBox : public TransformBox {
270e1ba39fSStephan Aßmus  public:
280e1ba39fSStephan Aßmus 								TransformGradientBox(CanvasView* view,
290e1ba39fSStephan Aßmus 													 Gradient* gradient,
300e1ba39fSStephan Aßmus 													 Shape* parent);
310e1ba39fSStephan Aßmus 	virtual						~TransformGradientBox();
320e1ba39fSStephan Aßmus 
330e1ba39fSStephan Aßmus 	// Observer interface (Manipulator is an Observer)
340e1ba39fSStephan Aßmus 	virtual	void				ObjectChanged(const Observable* object);
350e1ba39fSStephan Aßmus 
360e1ba39fSStephan Aßmus 	// TransformBox interface
370e1ba39fSStephan Aßmus 	virtual	void				Update(bool deep = true);
380e1ba39fSStephan Aßmus 
390e1ba39fSStephan Aßmus 	virtual	void				TransformFromCanvas(BPoint& point) const;
400e1ba39fSStephan Aßmus 	virtual	void				TransformToCanvas(BPoint& point) const;
410e1ba39fSStephan Aßmus 	virtual	float				ZoomLevel() const;
420e1ba39fSStephan Aßmus 	virtual	double				ViewSpaceRotation() const;
430e1ba39fSStephan Aßmus 
440e1ba39fSStephan Aßmus 	virtual	TransformCommand*	MakeCommand(const char* actionName,
450e1ba39fSStephan Aßmus 											uint32 nameIndex);
460e1ba39fSStephan Aßmus 
470e1ba39fSStephan Aßmus 	// TransformGradientBox
480e1ba39fSStephan Aßmus 			Command*			Perform();
490e1ba39fSStephan Aßmus 			Command*			Cancel();
500e1ba39fSStephan Aßmus  private:
510e1ba39fSStephan Aßmus 			CanvasView*			fCanvasView;
520e1ba39fSStephan Aßmus 
530e1ba39fSStephan Aßmus 			Shape*				fShape;
540e1ba39fSStephan Aßmus 			Gradient*			fGradient;
550e1ba39fSStephan Aßmus 			int32				fCount;
560e1ba39fSStephan Aßmus 
570e1ba39fSStephan Aßmus 			// saves the transformable object transformation states
580e1ba39fSStephan Aßmus 			// prior to this transformation
590e1ba39fSStephan Aßmus 			double				fOriginals[matrix_size];
600e1ba39fSStephan Aßmus };
610e1ba39fSStephan Aßmus 
620e1ba39fSStephan Aßmus #endif // TRANSFORM_GRADIENT_BOX_H
630e1ba39fSStephan Aßmus 
64