|
43 | 43 |
|
44 | 44 |
|
45 | 45 | def _is_vector_renderer(renderer): |
46 | | - # 1. Check the mode name |
| 46 | + # 1. Check the renderer name |
| 47 | + vector_bases = {'RendererPdf', 'RendererSVG', 'RendererPS'} |
47 | 48 | # If it's MixedModeRenderer, get the actual renderer recursively |
48 | | - while type(renderer).__name__ == 'MixedModeRenderer': |
49 | | - eff = getattr(renderer, '_renderer', renderer) |
50 | | - mod = getattr(eff.__class__, '__module__', '').lower() |
51 | | - if any(x in mod for x in ('pdf', 'svg', 'ps')): |
| 49 | + actual_renderer = renderer |
| 50 | + while type(actual_renderer).__name__ == 'MixedModeRenderer': |
| 51 | + actual_renderer = getattr(actual_renderer, '_renderer', actual_renderer) |
| 52 | + renderer_name = type(actual_renderer).__name__ |
| 53 | + if renderer_name in vector_bases: |
52 | 54 | return True |
53 | | - # 2. The vectorized backends |
54 | | - vector_bases = ( |
55 | | - 'RendererPdf', 'RendererSVG', 'RendererPS' |
56 | | - ) |
57 | | - if any(base in type(renderer).__name__ for base in vector_bases): |
58 | | - return True |
59 | | - # 3. fallback: Agg/bitmap are not vector renderers |
60 | | - if 'agg' in mod or 'bitmap' in mod: |
61 | | - return False |
62 | | - # 4. For unknown renderers, assume they are not vector |
| 55 | + # 3. For unknown renderers, assume they are not vector |
63 | 56 | return False |
64 | 57 |
|
65 | 58 |
|
|
0 commit comments