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

Skip to content

Commit d2c7b16

Browse files
authored
Merge pull request #21412 from anntzer/svgg
Privatize some SVG internal APIs.
2 parents fa0c8f8 + 1cf5a33 commit d2c7b16

File tree

2 files changed

+48
-39
lines changed

2 files changed

+48
-39
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
``backend_svg.generate_transform`` and ``backend_svg.generate_css``
2+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3+
... are deprecated with no replacement.

lib/matplotlib/backends/backend_svg.py

Lines changed: 45 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -249,26 +249,34 @@ def flush(self):
249249
pass # replaced by the constructor
250250

251251

252+
def _generate_transform(transform_list):
253+
output = StringIO()
254+
for type, value in transform_list:
255+
if (type == 'scale' and (value == (1,) or value == (1, 1))
256+
or type == 'translate' and value == (0, 0)
257+
or type == 'rotate' and value == (0,)):
258+
continue
259+
if type == 'matrix' and isinstance(value, Affine2DBase):
260+
value = value.to_values()
261+
output.write('%s(%s)' % (
262+
type, ' '.join(short_float_fmt(x) for x in value)))
263+
return output.getvalue()
264+
265+
266+
@_api.deprecated("3.6")
252267
def generate_transform(transform_list=None):
253-
if transform_list:
254-
output = StringIO()
255-
for type, value in transform_list:
256-
if (type == 'scale' and (value == (1,) or value == (1, 1))
257-
or type == 'translate' and value == (0, 0)
258-
or type == 'rotate' and value == (0,)):
259-
continue
260-
if type == 'matrix' and isinstance(value, Affine2DBase):
261-
value = value.to_values()
262-
output.write('%s(%s)' % (
263-
type, ' '.join(short_float_fmt(x) for x in value)))
264-
return output.getvalue()
265-
return ''
268+
return _generate_transform(transform_list or [])
266269

267270

268-
def generate_css(attrib={}):
271+
def _generate_css(attrib):
269272
return "; ".join(f"{k}: {v}" for k, v in attrib.items())
270273

271274

275+
@_api.deprecated("3.6")
276+
def generate_css(attrib=None):
277+
return _generate_css(attrib or {})
278+
279+
272280
_capstyle_d = {'projecting': 'square', 'butt': 'butt', 'round': 'round'}
273281

274282

@@ -441,7 +449,7 @@ def ensure_metadata(mid):
441449

442450
def _write_default_style(self):
443451
writer = self.writer
444-
default_style = generate_css({
452+
default_style = _generate_css({
445453
'stroke-linejoin': 'round',
446454
'stroke-linecap': 'butt'})
447455
writer.start('defs')
@@ -528,7 +536,7 @@ def _write_hatches(self):
528536
writer.element(
529537
'path',
530538
d=path_data,
531-
style=generate_css(hatch_style)
539+
style=_generate_css(hatch_style)
532540
)
533541
writer.end('pattern')
534542
writer.end('defs')
@@ -579,7 +587,7 @@ def _get_style_dict(self, gc, rgbFace):
579587
return attrib
580588

581589
def _get_style(self, gc, rgbFace):
582-
return generate_css(self._get_style_dict(gc, rgbFace))
590+
return _generate_css(self._get_style_dict(gc, rgbFace))
583591

584592
def _get_clip_attrs(self, gc):
585593
cliprect = gc.get_clip_rectangle()
@@ -682,9 +690,9 @@ def draw_markers(
682690
marker_trans + Affine2D().scale(1.0, -1.0),
683691
simplify=False)
684692
style = self._get_style_dict(gc, rgbFace)
685-
dictkey = (path_data, generate_css(style))
693+
dictkey = (path_data, _generate_css(style))
686694
oid = self._markers.get(dictkey)
687-
style = generate_css({k: v for k, v in style.items()
695+
style = _generate_css({k: v for k, v in style.items()
688696
if k.startswith('stroke')})
689697

690698
if oid is None:
@@ -842,13 +850,13 @@ def draw_gouraud_triangle(self, gc, points, colors, trans):
842850
writer.element(
843851
'stop',
844852
offset='1',
845-
style=generate_css({
853+
style=_generate_css({
846854
'stop-color': rgb2hex(avg_color),
847855
'stop-opacity': short_float_fmt(rgba_color[-1])}))
848856
writer.element(
849857
'stop',
850858
offset='0',
851-
style=generate_css({'stop-color': rgb2hex(rgba_color),
859+
style=_generate_css({'stop-color': rgb2hex(rgba_color),
852860
'stop-opacity': "0"}))
853861

854862
writer.end('linearGradient')
@@ -958,7 +966,7 @@ def draw_image(self, gc, x, y, im, transform=None):
958966

959967
self.writer.element(
960968
'image',
961-
transform=generate_transform([
969+
transform=_generate_transform([
962970
('scale', (1, -1)), ('translate', (0, -h))]),
963971
x=short_float_fmt(x),
964972
y=short_float_fmt(-(self.height - y - h)),
@@ -977,7 +985,7 @@ def draw_image(self, gc, x, y, im, transform=None):
977985
.scale(1.0, -1.0)
978986
.translate(0.0, self.height))
979987

980-
attrib['transform'] = generate_transform(
988+
attrib['transform'] = _generate_transform(
981989
[('matrix', flipped.frozen())])
982990
attrib['style'] = (
983991
'image-rendering:crisp-edges;'
@@ -1007,7 +1015,7 @@ def _update_glyph_map_defs(self, glyph_map_new):
10071015
Path(vertices * 64, codes), simplify=False)
10081016
writer.element(
10091017
'path', id=char_id, d=path_data,
1010-
transform=generate_transform([('scale', (1 / 64,))]))
1018+
transform=_generate_transform([('scale', (1 / 64,))]))
10111019
writer.end('defs')
10121020
self._glyph_map.update(glyph_map_new)
10131021

@@ -1045,8 +1053,8 @@ def _draw_text_as_path(self, gc, x, y, s, prop, angle, ismath, mtext=None):
10451053
style['opacity'] = short_float_fmt(alpha)
10461054
font_scale = fontsize / text2path.FONT_SCALE
10471055
attrib = {
1048-
'style': generate_css(style),
1049-
'transform': generate_transform([
1056+
'style': _generate_css(style),
1057+
'transform': _generate_transform([
10501058
('translate', (x, y)),
10511059
('rotate', (-angle,)),
10521060
('scale', (font_scale, -font_scale))]),
@@ -1082,7 +1090,7 @@ def _draw_text_as_path(self, gc, x, y, s, prop, angle, ismath, mtext=None):
10821090
char_id = self._adjust_char_id(char_id)
10831091
writer.element(
10841092
'use',
1085-
transform=generate_transform([
1093+
transform=_generate_transform([
10861094
('translate', (xposition, yposition)),
10871095
('scale', (scale,)),
10881096
]),
@@ -1125,7 +1133,7 @@ def _draw_text_as_text(self, gc, x, y, s, prop, angle, ismath, mtext=None):
11251133
style['font'] = ' '.join(font_parts)
11261134
if prop.get_stretch() != 'normal':
11271135
style['font-stretch'] = prop.get_stretch()
1128-
attrib['style'] = generate_css(style)
1136+
attrib['style'] = _generate_css(style)
11291137

11301138
if mtext and (angle == 0 or mtext.get_rotation_mode() == "anchor"):
11311139
# If text anchoring can be supported, get the original
@@ -1151,18 +1159,16 @@ def _draw_text_as_text(self, gc, x, y, s, prop, angle, ismath, mtext=None):
11511159

11521160
attrib['x'] = short_float_fmt(ax)
11531161
attrib['y'] = short_float_fmt(ay)
1154-
attrib['style'] = generate_css(style)
1155-
attrib['transform'] = "rotate(%s, %s, %s)" % (
1156-
short_float_fmt(-angle),
1157-
short_float_fmt(ax),
1158-
short_float_fmt(ay))
1159-
writer.element('text', s, attrib=attrib)
1162+
attrib['style'] = _generate_css(style)
1163+
attrib['transform'] = _generate_transform([
1164+
("rotate", (-angle, ax, ay))])
1165+
11601166
else:
1161-
attrib['transform'] = generate_transform([
1167+
attrib['transform'] = _generate_transform([
11621168
('translate', (x, y)),
11631169
('rotate', (-angle,))])
11641170

1165-
writer.element('text', s, attrib=attrib)
1171+
writer.element('text', s, attrib=attrib)
11661172

11671173
else:
11681174
writer.comment(s)
@@ -1173,8 +1179,8 @@ def _draw_text_as_text(self, gc, x, y, s, prop, angle, ismath, mtext=None):
11731179
# Apply attributes to 'g', not 'text', because we likely have some
11741180
# rectangles as well with the same style and transformation.
11751181
writer.start('g',
1176-
style=generate_css(style),
1177-
transform=generate_transform([
1182+
style=_generate_css(style),
1183+
transform=_generate_transform([
11781184
('translate', (x, y)),
11791185
('rotate', (-angle,))]),
11801186
)
@@ -1199,7 +1205,7 @@ def _draw_text_as_text(self, gc, x, y, s, prop, angle, ismath, mtext=None):
11991205
style = {'font': ' '.join(font_parts)}
12001206
if entry.stretch != 'normal':
12011207
style['font-stretch'] = entry.stretch
1202-
style = generate_css(style)
1208+
style = _generate_css(style)
12031209
if thetext == 32:
12041210
thetext = 0xa0 # non-breaking space
12051211
spans.setdefault(style, []).append((new_x, -new_y, thetext))

0 commit comments

Comments
 (0)