xref: /haiku/src/libs/icon/transformer/PathSource.h (revision 12a257d7f8da26b16637f34a73f8135e6da4d983)
1fb07ece0SStephan Aßmus /*
2325a6253SAxel Dörfler  * Copyright 2006-2007, Haiku.
3fb07ece0SStephan Aßmus  * Distributed under the terms of the MIT License.
4fb07ece0SStephan Aßmus  *
5fb07ece0SStephan Aßmus  * Authors:
6fb07ece0SStephan Aßmus  *		Stephan Aßmus <superstippi@gmx.de>
7fb07ece0SStephan Aßmus  */
8fb07ece0SStephan Aßmus #ifndef PATH_SOURCE_H
9fb07ece0SStephan Aßmus #define PATH_SOURCE_H
10fb07ece0SStephan Aßmus 
11325a6253SAxel Dörfler 
12fb07ece0SStephan Aßmus #include "Transformer.h"
13fb07ece0SStephan Aßmus 
14fb07ece0SStephan Aßmus #include "agg_path_storage.h"
15fb07ece0SStephan Aßmus #include "agg_conv_curve.h"
16fb07ece0SStephan Aßmus 
17325a6253SAxel Dörfler 
18325a6253SAxel Dörfler namespace BPrivate {
19325a6253SAxel Dörfler namespace Icon {
20325a6253SAxel Dörfler 
21fb07ece0SStephan Aßmus class PathContainer;
22fb07ece0SStephan Aßmus class VectorPath;
23fb07ece0SStephan Aßmus 
24fb07ece0SStephan Aßmus typedef agg::path_storage					AGGPath;
25fb07ece0SStephan Aßmus typedef agg::conv_curve<AGGPath>			AGGCurvedPath;
26fb07ece0SStephan Aßmus 
27fb07ece0SStephan Aßmus class PathSource : public VertexSource {
28fb07ece0SStephan Aßmus  public:
29fb07ece0SStephan Aßmus 								PathSource(PathContainer* paths);
30fb07ece0SStephan Aßmus 	virtual						~PathSource();
31fb07ece0SStephan Aßmus 
32fb07ece0SStephan Aßmus     virtual	void				rewind(unsigned path_id);
33fb07ece0SStephan Aßmus     virtual	unsigned			vertex(double* x, double* y);
34fb07ece0SStephan Aßmus 
35fb07ece0SStephan Aßmus 	virtual	bool				WantsOpenPaths() const;
36fb07ece0SStephan Aßmus 	virtual	double				ApproximationScale() const;
37fb07ece0SStephan Aßmus 
38fb07ece0SStephan Aßmus 	// PathSource
39fb07ece0SStephan Aßmus 			void				Update(bool leavePathsOpen,
40fb07ece0SStephan Aßmus 									double approximationScale);
41fb07ece0SStephan Aßmus 
42*12a257d7SStephan Aßmus 			void				SetGlobalScale(double scale);
43*12a257d7SStephan Aßmus 
44fb07ece0SStephan Aßmus  private:
45fb07ece0SStephan Aßmus 		 	PathContainer*		fPaths;
46fb07ece0SStephan Aßmus 		 	AGGPath				fAGGPath;
47fb07ece0SStephan Aßmus 		 	AGGCurvedPath		fAGGCurvedPath;
48*12a257d7SStephan Aßmus 
49*12a257d7SStephan Aßmus 		 	double				fGlobalScale;
50*12a257d7SStephan Aßmus 		 	double				fLastTransformerScale;
51fb07ece0SStephan Aßmus };
52fb07ece0SStephan Aßmus 
53325a6253SAxel Dörfler }	// namespace Icon
54325a6253SAxel Dörfler }	// namespace BPrivate
55325a6253SAxel Dörfler 
56fb07ece0SStephan Aßmus #endif	// PATH_SOURCE_H
57