Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d5f597d

Browse files
authored
Merge pull request #31143 from anntzer/svgattrib
Deprecate public access to XMLWriter; simplify some attribute settings
2 parents b308fcd + 04fecdd commit d5f597d

2 files changed

Lines changed: 31 additions & 25 deletions

File tree

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
``backend_svg.XMLWriter`` is deprecated
2+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3+
It is an internal helper not intended for external use.

lib/matplotlib/backends/backend_svg.py

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def _short_float_fmt(x):
104104
return f'{x:f}'.rstrip('0').rstrip('.')
105105

106106

107-
class XMLWriter:
107+
class _XMLWriter:
108108
"""
109109
Parameters
110110
----------
@@ -252,6 +252,15 @@ def flush(self):
252252
pass # replaced by the constructor
253253

254254

255+
@mpl._api.deprecated("3.11")
256+
class XMLWriter(_XMLWriter):
257+
"""
258+
An XML writer class.
259+
260+
:meta private:
261+
"""
262+
263+
255264
def _generate_transform(transform_list):
256265
parts = []
257266
for type, value in transform_list:
@@ -295,7 +304,7 @@ def __init__(self, width, height, svgwriter, basename=None, image_dpi=72,
295304
*, metadata=None):
296305
self.width = width
297306
self.height = height
298-
self.writer = XMLWriter(svgwriter)
307+
self.writer = _XMLWriter(svgwriter)
299308
self.image_dpi = image_dpi # actual dpi at which we rasterize stuff
300309

301310
if basename is None:
@@ -926,7 +935,7 @@ def draw_gouraud_triangles(self, gc, triangles_array, colors_array,
926935
id='colorMat')
927936
writer.element(
928937
'feColorMatrix',
929-
attrib={'type': 'matrix'},
938+
type='matrix',
930939
values='1 0 0 0 0 \n0 1 0 0 0 \n0 0 1 0 0 \n1 1 1 1 0 \n0 0 0 0 1 ')
931940
writer.end('filter')
932941

@@ -982,37 +991,30 @@ def draw_image(self, gc, x, y, im, transform=None):
982991
if transform is None:
983992
w = 72.0 * w / self.image_dpi
984993
h = 72.0 * h / self.image_dpi
985-
986994
self.writer.element(
987995
'image',
988996
transform=_generate_transform([
989997
('scale', (1, -1)), ('translate', (0, -h))]),
990998
x=_short_float_fmt(x),
991999
y=_short_float_fmt(-(self.height - y - h)),
9921000
width=_short_float_fmt(w), height=_short_float_fmt(h),
993-
attrib=attrib)
1001+
attrib=attrib,
1002+
)
9941003
else:
9951004
alpha = gc.get_alpha()
9961005
if alpha != 1.0:
9971006
attrib['opacity'] = _short_float_fmt(alpha)
998-
9991007
flipped = (
1000-
Affine2D().scale(1.0 / w, 1.0 / h) +
1001-
transform +
1002-
Affine2D()
1003-
.translate(x, y)
1004-
.scale(1.0, -1.0)
1005-
.translate(0.0, self.height))
1006-
1007-
attrib['transform'] = _generate_transform(
1008-
[('matrix', flipped.frozen())])
1009-
attrib['style'] = (
1010-
'image-rendering:crisp-edges;'
1011-
'image-rendering:pixelated')
1008+
Affine2D().scale(1 / w, 1 / h)
1009+
+ transform
1010+
+ Affine2D().translate(x, y).scale(1, -1).translate(0, self.height))
10121011
self.writer.element(
10131012
'image',
10141013
width=_short_float_fmt(w), height=_short_float_fmt(h),
1015-
attrib=attrib)
1014+
attrib=attrib,
1015+
transform=_generate_transform([('matrix', flipped.frozen())]),
1016+
style='image-rendering:crisp-edges;image-rendering:pixelated',
1017+
)
10161018

10171019
if url is not None:
10181020
self.writer.end('a')
@@ -1060,14 +1062,15 @@ def _draw_text_as_path(self, gc, x, y, s, prop, angle, ismath, mtext=None):
10601062
if alpha != 1:
10611063
style['opacity'] = _short_float_fmt(alpha)
10621064
font_scale = fontsize / text2path.FONT_SCALE
1063-
attrib = {
1064-
'style': _generate_css(style),
1065-
'transform': _generate_transform([
1065+
writer.start(
1066+
'g',
1067+
style=_generate_css(style),
1068+
transform=_generate_transform([
10661069
('translate', (x, y)),
10671070
('rotate', (-angle,)),
1068-
('scale', (font_scale, -font_scale))]),
1069-
}
1070-
writer.start('g', attrib=attrib)
1071+
('scale', (font_scale, -font_scale)),
1072+
]),
1073+
)
10711074

10721075
if not ismath:
10731076
font = text2path._get_font(prop)

0 commit comments

Comments
 (0)