Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Tiago Peixoto
graph-tool
Commits
ecd308f1
Commit
ecd308f1
authored
Aug 31, 2015
by
Tiago Peixoto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improve performance of graph_draw() and draw_hierarchy()
parent
83186f00
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
370 additions
and
396 deletions
+370
-396
src/graph/draw/graph_cairo_draw.cc
src/graph/draw/graph_cairo_draw.cc
+26
-14
src/graph_tool/__init__.py
src/graph_tool/__init__.py
+1
-1
src/graph_tool/draw/cairo_draw.py
src/graph_tool/draw/cairo_draw.py
+342
-380
src/graph_tool/draw/gtk_draw.py
src/graph_tool/draw/gtk_draw.py
+1
-1
No files found.
src/graph/draw/graph_cairo_draw.cc
View file @
ecd308f1
...
...
@@ -1040,7 +1040,7 @@ public:
_attrs
.
template
get
<
vector
<
double
>
>
(
EDGE_CONTROL_POINTS
);
vector
<
double
>
gradient
=
_attrs
.
template
get
<
vector
<
double
>
>
(
EDGE_GRADIENT
);
if
(
gradient
.
size
()
==
1
)
if
(
gradient
.
size
()
==
2
)
{
auto
e_color
=
_attrs
.
template
get
<
color_t
>(
EDGE_COLOR
);
auto
s_color
=
_s
.
_attrs
.
template
get
<
color_t
>(
VERTEX_FILL_COLOR
);
...
...
@@ -1109,10 +1109,8 @@ public:
color_t
color
=
_attrs
.
template
get
<
color_t
>(
EDGE_COLOR
);
double
pw
;
pw
=
_attrs
.
template
get
<
double
>(
EDGE_PENWIDTH
);
double
pw
=
_attrs
.
template
get
<
double
>(
EDGE_PENWIDTH
);
pw
=
get_user_dist
(
cr
,
pw
);
cr
.
set_line_width
(
pw
);
pos_t
pos_begin_marker
=
pos_begin
;
pos_t
pos_end_marker
=
pos_end
;
...
...
@@ -1155,6 +1153,7 @@ public:
double
sx1
,
sy1
,
sx2
,
sy2
;
draw_edge_markers
(
pos_begin_marker
,
pos_begin_d
,
pos_end_marker
,
pos_end_d
,
controls
,
marker_size
,
cr
);
cr
.
set_line_width
(
pw
);
draw_edge_line
(
pos_begin
,
pos_end
,
controls
,
cr
);
cr
.
get_stroke_extents
(
sx1
,
sy1
,
sx2
,
sy2
);
cr
.
begin_new_path
();
...
...
@@ -1282,6 +1281,7 @@ public:
}
draw_edge_line
(
pos_begin
,
pos_end
,
controls
,
cr
);
cr
.
set_line_width
(
pw
);
cr
.
stroke
();
cr
.
reset_clip
();
draw_edge_markers
(
pos_begin_marker
,
pos_begin_d
,
pos_end_marker
,
...
...
@@ -1531,14 +1531,17 @@ void draw_vertices(Graph&, pair<VertexIterator, VertexIterator> v_range,
Cairo
::
Context
&
cr
)
{
typedef
typename
graph_traits
<
Graph
>::
vertex_descriptor
vertex_t
;
for
(
VertexIterator
v
=
v_range
.
first
;
v
!=
v_range
.
second
;
++
v
)
if
(
offset
>
count
)
{
if
(
count
<
offset
)
{
count
++
;
cont
inue
;
}
size_t
dist
=
std
::
distance
(
v_range
.
first
,
v_range
.
second
);
size_t
skip
=
std
::
min
(
offset
-
count
,
dist
);
std
::
advance
(
v_range
.
first
,
skip
)
;
co
u
nt
+=
skip
;
}
for
(
VertexIterator
v
=
v_range
.
first
;
v
!=
v_range
.
second
;
++
v
)
{
pos_t
pos
;
if
(
pos_map
[
*
v
].
size
()
>=
2
)
{
...
...
@@ -1562,14 +1565,23 @@ void draw_edges(Graph& g, pair<EdgeIterator, EdgeIterator> e_range,
{
typedef
typename
graph_traits
<
Graph
>::
vertex_descriptor
vertex_t
;
typedef
typename
graph_traits
<
Graph
>::
edge_descriptor
edge_t
;
for
(
EdgeIterator
e
=
e_range
.
first
;
e
!=
e_range
.
second
;
++
e
)
if
(
offset
>
count
)
{
if
(
count
<
offset
)
size_t
E
=
num_edges
(
g
);
if
(
offset
-
count
>=
E
)
{
count
++
;
continue
;
count
+=
E
;
return
;
}
size_t
dist
=
std
::
distance
(
e_range
.
first
,
e_range
.
second
);
size_t
skip
=
std
::
min
(
offset
-
count
,
dist
);
std
::
advance
(
e_range
.
first
,
skip
);
count
+=
skip
;
}
for
(
EdgeIterator
e
=
e_range
.
first
;
e
!=
e_range
.
second
;
++
e
)
{
vertex_t
s
,
t
;
s
=
source
(
*
e
,
g
);
t
=
target
(
*
e
,
g
);
...
...
src/graph_tool/__init__.py
View file @
ecd308f1
...
...
@@ -761,7 +761,7 @@ class PropertyMap(object):
return
numpy
.
array
(
self
.
fa
)
except
ValueError
:
p
=
ungroup_vector_property
(
self
,
pos
)
return
numpy
.
array
([
x
.
a
for
x
in
p
])
return
numpy
.
array
([
x
.
f
a
for
x
in
p
])
def
set_2d_array
(
self
,
a
,
pos
=
None
):
r
"""Set the entries of the vector-valued property map from a
...
...
src/graph_tool/draw/cairo_draw.py
View file @
ecd308f1
This diff is collapsed.
Click to expand it.
src/graph_tool/draw/gtk_draw.py
View file @
ecd308f1
...
...
@@ -265,7 +265,7 @@ class GraphWidget(Gtk.DrawingArea):
self
.
smatrix
=
cairo
.
Matrix
()
# surface to screen
self
.
pointer
=
[
0
,
0
]
self
.
picked
=
False
self
.
selected
=
g
.
new_vertex_property
(
"bool"
)
self
.
selected
=
g
.
new_vertex_property
(
"bool"
,
False
)
self
.
sel_edge_filt
=
g
.
new_edge_property
(
"bool"
,
False
)
self
.
srect
=
None
self
.
drag_begin
=
None
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment