FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
matplotlib/src/path_cleanup.cpp at master · gitj/matplotlib · GitHub
gitj
matplotlib
Repository navigation
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
matplotlib
/
src
/
path_cleanup.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
91 lines (77 loc) · 2.78 KB
Breadcrumbs
matplotlib
/
src
/
path_cleanup.cpp
Copy path
File metadata and controls
91 lines (77 loc) · 2.78 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
-*- mode: c++; c-basic-offset: 4 -*-
*/
#
include
<
Python.h
>
#
define
NO_IMPORT_ARRAY
#
include
"
numpy/arrayobject.h
"
#
include
"
agg_py_path_iterator.h
"
#
include
"
agg_conv_transform.h
"
#
include
"
agg_py_transforms.h
"
#
include
"
path_converters.h
"
class
PathCleanupIterator
{
typedef
agg::conv_transform<PathIterator>
transformed_path_t
;
typedef
PathNanRemover<
transformed_path_t
>
nan_removal_t
;
typedef
PathClipper<
nan_removal_t
>
clipped_t
;
typedef
PathSnapper<
clipped_t
>
snapped_t
;
typedef
PathSimplifier<
snapped_t
>
simplify_t
;
Py::Object m_path_obj;
PathIterator m_path_iter;
agg::trans_affine m_transform;
transformed_path_t
m_transformed;
nan_removal_t
m_nan_removed;
clipped_t
m_clipped;
snapped_t
m_snapped;
simplify_t
m_simplify;
public:
PathCleanupIterator
(PyObject* path, agg::trans_affine trans,
bool
remove_nans,
bool
do_clip,
const
agg::rect_base<
double
>& rect,
e_snap_mode snap_mode,
double
stroke_width,
bool
do_simplify) :
m_path_obj
(path,
true
),
m_path_iter
(m_path_obj),
m_transform
(trans),
m_transformed
(m_path_iter, m_transform),
m_nan_removed
(m_transformed, remove_nans, m_path_iter.has_curves()),
m_clipped
(m_nan_removed, do_clip, rect),
m_snapped
(m_clipped, snap_mode, m_path_iter.total_vertices(),
stroke_width),
m_simplify
(m_snapped, do_simplify && m_path_iter.should_simplify(),
m_path_iter.simplify_threshold())
{
Py_INCREF
(path);
m_path_iter.
rewind
(
0
);
}
unsigned
vertex
(
double
* x,
double
* y)
{
return
m_simplify.
vertex
(x, y);
}
};
extern
"
C
"
{
void
*
get_path_iterator
(
PyObject* path, PyObject* trans,
int
remove_nans,
int
do_clip,
double
rect[
4
], e_snap_mode snap_mode,
double
stroke_width,
int
do_simplify)
{
agg::trans_affine agg_trans =
py_to_agg_transformation_matrix
(trans,
false
);
agg::rect_base<
double
>
clip_rect
(rect[
0
], rect[
1
], rect[
2
], rect[
3
]);
PathCleanupIterator* pipeline =
new
PathCleanupIterator
(
path, agg_trans, remove_nans !=
0
, do_clip !=
0
,
clip_rect, snap_mode, stroke_width, do_simplify !=
0
);
return
(
void
*)pipeline;
}
unsigned
get_vertex
(
void
* pipeline,
double
* x,
double
* y)
{
PathCleanupIterator* pipeline_iter = (PathCleanupIterator*)pipeline;
unsigned
code = pipeline_iter->
vertex
(x, y);
return
code;
}
void
free_path_iterator
(
void
* pipeline)
{
PathCleanupIterator* pipeline_iter = (PathCleanupIterator*)pipeline;
delete
pipeline_iter;
}
}
Back
|
FazBrowse Home
|
New Git URL