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 STROKE_TRANSFORMER_H
9#define STROKE_TRANSFORMER_H
10
11
12#include "IconBuild.h"
13#include "PathTransformer.h"
14#include "Transformer.h"
15
16#include <agg_conv_stroke.h>
17
18
19_BEGIN_ICON_NAMESPACE
20
21
22typedef agg::conv_stroke<VertexSource> Stroke;
23
24class StrokeTransformer : public Transformer,
25						  public PathTransformer,
26						  public Stroke {
27 public:
28	enum {
29		archive_code	= 'strk',
30	};
31
32								StrokeTransformer(
33									VertexSource& source);
34								StrokeTransformer(
35									VertexSource& source,
36									BMessage* archive);
37
38	virtual						~StrokeTransformer();
39
40	// Transformer interface
41	virtual	Transformer*		Clone() const;
42
43	// PathTransformer interface
44	virtual	void				rewind(unsigned path_id);
45	virtual	unsigned			vertex(double* x, double* y);
46
47	virtual	void				SetSource(VertexSource& source);
48
49	virtual	bool				WantsOpenPaths() const;
50	virtual	double				ApproximationScale() const;
51
52#ifdef ICON_O_MATIC
53	// IconObject interface
54	virtual	status_t			Archive(BMessage* into,
55										bool deep = true) const;
56
57	virtual	PropertyObject*		MakePropertyObject() const;
58	virtual	bool				SetToPropertyObject(
59									const PropertyObject* object);
60#endif
61};
62
63
64_END_ICON_NAMESPACE
65
66
67#endif	// STROKE_TRANSFORMER_H
68