synfig-core
1.0.3
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
src
synfig
curveset.h
Go to the documentation of this file.
1
/* === S Y N F I G ========================================================= */
21
/* ========================================================================= */
22
23
/* === S T A R T =========================================================== */
24
25
#ifndef __SYNFIG_CURVESET_H
26
#define __SYNFIG_CURVESET_H
27
28
/* === H E A D E R S ======================================================= */
29
#include "
blinepoint.h
"
30
#include <vector>
31
32
/* === M A C R O S ========================================================= */
33
34
/* === T Y P E D E F S ===================================================== */
35
36
/* === C L A S S E S & S T R U C T S ======================================= */
37
namespace
synfig
38
{
39
40
class
BLinePoint;
41
42
struct
CurvePoint
43
{
44
Point
p
;
45
Point
l
,
r
;
46
47
CurvePoint
() {}
48
CurvePoint
(
const
Point
&pin,
const
Vector
&left,
const
Vector
&right);
49
50
CurvePoint
(
const
BLinePoint
&bpoint);
51
};
52
53
class
CurveSet
54
{
55
bool
invert;
//winding order...
56
57
void
CleanUp(
int
curve = 0);
58
public
:
59
60
typedef
std::vector<CurvePoint>
region
;
61
typedef
std::vector<region>
set_type
;
62
63
set_type
set
;
//specifies a region object (assumes looping)
64
65
void
SetClamp
(
int
&i,
int
&si);
66
67
//actual stuff
68
CurveSet
(): invert() { }
69
70
//anything supporting iterator type operations
71
template
<
typename
Iterator >
72
CurveSet
(Iterator begin, Iterator end,
bool
invert =
false
):
73
invert()
74
{
75
set
.push_back(std::vector<CurvePoint>(begin,end));
76
CleanUp(invert);
77
}
78
79
CurveSet
operator&
(
const
CurveSet
&rhs)
const
;
//intersect
80
CurveSet
operator|
(
const
CurveSet
&rhs)
const
;
//union
81
CurveSet
operator-
(
const
CurveSet
&rhs)
const
;
//subtract
82
83
84
//Point containment
85
int
intersect
(
const
Point
&p)
const
;
86
};
87
88
}
89
/* === E N D =============================================================== */
90
91
#endif
Generated on Mon Nov 16 2015 15:33:39 for synfig-core by
1.8.1.2