summaryrefslogtreecommitdiff
path: root/libs/canvas/canvas/outline.h
blob: 52b1f010610031d3ff17b5aa98107b918544fdc1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#ifndef __CANVAS_OUTLINE_H__
#define __CANVAS_OUTLINE_H__

#include <stdint.h>
#include "canvas/types.h"
#include "canvas/item.h"

namespace ArdourCanvas {

class Outline : virtual public Item
{
public:
	Outline (Group *);
	virtual ~Outline () {}

	void add_outline_state (XMLNode *) const;
	void set_outline_state (XMLNode const *);
	
	Color outline_color () const {
		return _outline_color;
	}

	virtual void set_outline_color (Color);

	Distance outline_width () const {
		return _outline_width;
	}
	
	virtual void set_outline_width (Distance);

	bool outline () const {
		return _outline;
	}

	void set_outline (bool);

#ifdef CANVAS_COMPATIBILITY
	int& property_first_arrowhead () {
		return _foo_int;
	}
	int& property_last_arrowhead () {
		return _foo_int;
	}
	int& property_arrow_shape_a () {
		return _foo_int;
	}
	int& property_arrow_shape_b () {
		return _foo_int;
	}
	int& property_arrow_shape_c () {
		return _foo_int;
	}
	bool& property_draw () {
		return _foo_bool;
	}
#endif	

protected:

	void setup_outline_context (Cairo::RefPtr<Cairo::Context>) const;
	
	Color _outline_color;
	Distance _outline_width;
	bool _outline;

#ifdef CANVAS_COMPATIBILITY
	int _foo_int;
	bool _foo_bool;
#endif
};

}

#endif