@@ -249,26 +249,34 @@ def flush(self):
249
249
pass # replaced by the constructor
250
250
251
251
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" )
252
267
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 [])
266
269
267
270
268
- def generate_css (attrib = {} ):
271
+ def _generate_css (attrib ):
269
272
return "; " .join (f"{ k } : { v } " for k , v in attrib .items ())
270
273
271
274
275
+ @_api .deprecated ("3.6" )
276
+ def generate_css (attrib = None ):
277
+ return _generate_css (attrib or {})
278
+
279
+
272
280
_capstyle_d = {'projecting' : 'square' , 'butt' : 'butt' , 'round' : 'round' }
273
281
274
282
@@ -441,7 +449,7 @@ def ensure_metadata(mid):
441
449
442
450
def _write_default_style (self ):
443
451
writer = self .writer
444
- default_style = generate_css ({
452
+ default_style = _generate_css ({
445
453
'stroke-linejoin' : 'round' ,
446
454
'stroke-linecap' : 'butt' })
447
455
writer .start ('defs' )
@@ -528,7 +536,7 @@ def _write_hatches(self):
528
536
writer .element (
529
537
'path' ,
530
538
d = path_data ,
531
- style = generate_css (hatch_style )
539
+ style = _generate_css (hatch_style )
532
540
)
533
541
writer .end ('pattern' )
534
542
writer .end ('defs' )
@@ -579,7 +587,7 @@ def _get_style_dict(self, gc, rgbFace):
579
587
return attrib
580
588
581
589
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 ))
583
591
584
592
def _get_clip_attrs (self , gc ):
585
593
cliprect = gc .get_clip_rectangle ()
@@ -682,9 +690,9 @@ def draw_markers(
682
690
marker_trans + Affine2D ().scale (1.0 , - 1.0 ),
683
691
simplify = False )
684
692
style = self ._get_style_dict (gc , rgbFace )
685
- dictkey = (path_data , generate_css (style ))
693
+ dictkey = (path_data , _generate_css (style ))
686
694
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 ()
688
696
if k .startswith ('stroke' )})
689
697
690
698
if oid is None :
@@ -842,13 +850,13 @@ def draw_gouraud_triangle(self, gc, points, colors, trans):
842
850
writer .element (
843
851
'stop' ,
844
852
offset = '1' ,
845
- style = generate_css ({
853
+ style = _generate_css ({
846
854
'stop-color' : rgb2hex (avg_color ),
847
855
'stop-opacity' : short_float_fmt (rgba_color [- 1 ])}))
848
856
writer .element (
849
857
'stop' ,
850
858
offset = '0' ,
851
- style = generate_css ({'stop-color' : rgb2hex (rgba_color ),
859
+ style = _generate_css ({'stop-color' : rgb2hex (rgba_color ),
852
860
'stop-opacity' : "0" }))
853
861
854
862
writer .end ('linearGradient' )
@@ -958,7 +966,7 @@ def draw_image(self, gc, x, y, im, transform=None):
958
966
959
967
self .writer .element (
960
968
'image' ,
961
- transform = generate_transform ([
969
+ transform = _generate_transform ([
962
970
('scale' , (1 , - 1 )), ('translate' , (0 , - h ))]),
963
971
x = short_float_fmt (x ),
964
972
y = short_float_fmt (- (self .height - y - h )),
@@ -977,7 +985,7 @@ def draw_image(self, gc, x, y, im, transform=None):
977
985
.scale (1.0 , - 1.0 )
978
986
.translate (0.0 , self .height ))
979
987
980
- attrib ['transform' ] = generate_transform (
988
+ attrib ['transform' ] = _generate_transform (
981
989
[('matrix' , flipped .frozen ())])
982
990
attrib ['style' ] = (
983
991
'image-rendering:crisp-edges;'
@@ -1007,7 +1015,7 @@ def _update_glyph_map_defs(self, glyph_map_new):
1007
1015
Path (vertices * 64 , codes ), simplify = False )
1008
1016
writer .element (
1009
1017
'path' , id = char_id , d = path_data ,
1010
- transform = generate_transform ([('scale' , (1 / 64 ,))]))
1018
+ transform = _generate_transform ([('scale' , (1 / 64 ,))]))
1011
1019
writer .end ('defs' )
1012
1020
self ._glyph_map .update (glyph_map_new )
1013
1021
@@ -1045,8 +1053,8 @@ def _draw_text_as_path(self, gc, x, y, s, prop, angle, ismath, mtext=None):
1045
1053
style ['opacity' ] = short_float_fmt (alpha )
1046
1054
font_scale = fontsize / text2path .FONT_SCALE
1047
1055
attrib = {
1048
- 'style' : generate_css (style ),
1049
- 'transform' : generate_transform ([
1056
+ 'style' : _generate_css (style ),
1057
+ 'transform' : _generate_transform ([
1050
1058
('translate' , (x , y )),
1051
1059
('rotate' , (- angle ,)),
1052
1060
('scale' , (font_scale , - font_scale ))]),
@@ -1082,7 +1090,7 @@ def _draw_text_as_path(self, gc, x, y, s, prop, angle, ismath, mtext=None):
1082
1090
char_id = self ._adjust_char_id (char_id )
1083
1091
writer .element (
1084
1092
'use' ,
1085
- transform = generate_transform ([
1093
+ transform = _generate_transform ([
1086
1094
('translate' , (xposition , yposition )),
1087
1095
('scale' , (scale ,)),
1088
1096
]),
@@ -1125,7 +1133,7 @@ def _draw_text_as_text(self, gc, x, y, s, prop, angle, ismath, mtext=None):
1125
1133
style ['font' ] = ' ' .join (font_parts )
1126
1134
if prop .get_stretch () != 'normal' :
1127
1135
style ['font-stretch' ] = prop .get_stretch ()
1128
- attrib ['style' ] = generate_css (style )
1136
+ attrib ['style' ] = _generate_css (style )
1129
1137
1130
1138
if mtext and (angle == 0 or mtext .get_rotation_mode () == "anchor" ):
1131
1139
# 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):
1151
1159
1152
1160
attrib ['x' ] = short_float_fmt (ax )
1153
1161
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
+
1160
1166
else :
1161
- attrib ['transform' ] = generate_transform ([
1167
+ attrib ['transform' ] = _generate_transform ([
1162
1168
('translate' , (x , y )),
1163
1169
('rotate' , (- angle ,))])
1164
1170
1165
- writer .element ('text' , s , attrib = attrib )
1171
+ writer .element ('text' , s , attrib = attrib )
1166
1172
1167
1173
else :
1168
1174
writer .comment (s )
@@ -1173,8 +1179,8 @@ def _draw_text_as_text(self, gc, x, y, s, prop, angle, ismath, mtext=None):
1173
1179
# Apply attributes to 'g', not 'text', because we likely have some
1174
1180
# rectangles as well with the same style and transformation.
1175
1181
writer .start ('g' ,
1176
- style = generate_css (style ),
1177
- transform = generate_transform ([
1182
+ style = _generate_css (style ),
1183
+ transform = _generate_transform ([
1178
1184
('translate' , (x , y )),
1179
1185
('rotate' , (- angle ,))]),
1180
1186
)
@@ -1199,7 +1205,7 @@ def _draw_text_as_text(self, gc, x, y, s, prop, angle, ismath, mtext=None):
1199
1205
style = {'font' : ' ' .join (font_parts )}
1200
1206
if entry .stretch != 'normal' :
1201
1207
style ['font-stretch' ] = entry .stretch
1202
- style = generate_css (style )
1208
+ style = _generate_css (style )
1203
1209
if thetext == 32 :
1204
1210
thetext = 0xa0 # non-breaking space
1205
1211
spans .setdefault (style , []).append ((new_x , - new_y , thetext ))
0 commit comments