|
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