|
4 | 4 | import six
|
5 | 5 |
|
6 | 6 | from collections import OrderedDict, namedtuple
|
7 |
| -from contextlib import contextmanager |
8 | 7 | from functools import wraps
|
9 | 8 | import inspect
|
10 | 9 | import re
|
@@ -43,30 +42,23 @@ def allow_rasterization(draw):
|
43 | 42 | other setup function calls, such as starting and flushing a mixed-mode
|
44 | 43 | renderer.
|
45 | 44 | """
|
46 |
| - @contextmanager |
47 |
| - def with_rasterized(artist, renderer): |
48 |
| - |
49 |
| - if artist.get_rasterized(): |
50 |
| - renderer.start_rasterizing() |
51 |
| - |
52 |
| - if artist.get_agg_filter() is not None: |
53 |
| - renderer.start_filter() |
54 | 45 |
|
| 46 | + # the axes class has a second argument inframe for its draw method. |
| 47 | + @wraps(draw) |
| 48 | + def draw_wrapper(artist, renderer, *args, **kwargs): |
55 | 49 | try:
|
56 |
| - yield |
| 50 | + if artist.get_rasterized(): |
| 51 | + renderer.start_rasterizing() |
| 52 | + if artist.get_agg_filter() is not None: |
| 53 | + renderer.start_filter() |
| 54 | + |
| 55 | + return draw(artist, renderer, *args, **kwargs) |
57 | 56 | finally:
|
58 | 57 | if artist.get_agg_filter() is not None:
|
59 | 58 | renderer.stop_filter(artist.get_agg_filter())
|
60 |
| - |
61 | 59 | if artist.get_rasterized():
|
62 | 60 | renderer.stop_rasterizing()
|
63 | 61 |
|
64 |
| - # the axes class has a second argument inframe for its draw method. |
65 |
| - @wraps(draw) |
66 |
| - def draw_wrapper(artist, renderer, *args, **kwargs): |
67 |
| - with with_rasterized(artist, renderer): |
68 |
| - return draw(artist, renderer, *args, **kwargs) |
69 |
| - |
70 | 62 | draw_wrapper._supports_rasterization = True
|
71 | 63 | return draw_wrapper
|
72 | 64 |
|
|
0 commit comments