@@ -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+
255264def _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 \n 0 1 0 0 0 \n 0 0 1 0 0 \n 1 1 1 1 0 \n 0 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