xref: /haiku/src/apps/icon-o-matic/transformable/TransformGradientBox.h (revision 2263aa8f9c06d596d9415a9185ae7fbfc810c5ff)
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 
1125dc253dSIngo Weinhold #include "IconBuild.h"
120e1ba39fSStephan Aßmus #include "TransformBox.h"
130e1ba39fSStephan Aßmus 
14*2263aa8fSZardshard #include <Referenceable.h>
15*2263aa8fSZardshard 
16325a6253SAxel Dörfler 
170e1ba39fSStephan Aßmus class CanvasView;
18325a6253SAxel Dörfler 
1925dc253dSIngo Weinhold _BEGIN_ICON_NAMESPACE
200e1ba39fSStephan Aßmus 	class Gradient;
210e1ba39fSStephan Aßmus 	class Shape;
2225dc253dSIngo Weinhold _END_ICON_NAMESPACE
2325dc253dSIngo Weinhold 
2425dc253dSIngo Weinhold _USING_ICON_NAMESPACE
2525dc253dSIngo Weinhold 
260e1ba39fSStephan Aßmus 
270e1ba39fSStephan Aßmus class TransformGradientBox : public TransformBox {
280e1ba39fSStephan Aßmus  public:
290e1ba39fSStephan Aßmus 									TransformGradientBox(CanvasView* view,
300e1ba39fSStephan Aßmus 														 Gradient* gradient,
310e1ba39fSStephan Aßmus 														 Shape* parent);
320e1ba39fSStephan Aßmus 	virtual							~TransformGradientBox();
330e1ba39fSStephan Aßmus 
340e1ba39fSStephan Aßmus 	// Observer interface (Manipulator is an Observer)
350e1ba39fSStephan Aßmus 	virtual	void					ObjectChanged(const Observable* object);
360e1ba39fSStephan Aßmus 
370e1ba39fSStephan Aßmus 	// TransformBox interface
380e1ba39fSStephan Aßmus 	virtual	void					Update(bool deep = true);
390e1ba39fSStephan Aßmus 
400e1ba39fSStephan Aßmus 	virtual	void					TransformFromCanvas(BPoint& point) const;
410e1ba39fSStephan Aßmus 	virtual	void					TransformToCanvas(BPoint& point) const;
420e1ba39fSStephan Aßmus 	virtual	float					ZoomLevel() const;
430e1ba39fSStephan Aßmus 	virtual	double					ViewSpaceRotation() const;
440e1ba39fSStephan Aßmus 
450e1ba39fSStephan Aßmus 	virtual	TransformCommand*		MakeCommand(const char* actionName,
460e1ba39fSStephan Aßmus 												uint32 nameIndex);
470e1ba39fSStephan Aßmus 
480e1ba39fSStephan Aßmus 	// TransformGradientBox
490e1ba39fSStephan Aßmus 			Command*				Perform();
500e1ba39fSStephan Aßmus 			Command*				Cancel();
510e1ba39fSStephan Aßmus  private:
520e1ba39fSStephan Aßmus 			CanvasView*				fCanvasView;
530e1ba39fSStephan Aßmus 
540e1ba39fSStephan Aßmus 			Shape*					fShape;
55*2263aa8fSZardshard 			BReference<Gradient>	fGradient;
560e1ba39fSStephan Aßmus 			int32					fCount;
570e1ba39fSStephan Aßmus 
580e1ba39fSStephan Aßmus 			// saves the transformable object transformation states
590e1ba39fSStephan Aßmus 			// prior to this transformation
600e1ba39fSStephan Aßmus 			double					fOriginals[matrix_size];
610e1ba39fSStephan Aßmus };
620e1ba39fSStephan Aßmus 
630e1ba39fSStephan Aßmus #endif // TRANSFORM_GRADIENT_BOX_H
640e1ba39fSStephan Aßmus 
65