@@ -76,7 +76,7 @@ def create_css(
7676 return "; " .join (css )
7777
7878
79- def arrow_box (self , offset = None ):
79+ def arrow_box (self , ** options ):
8080 width = self .style .get_line_width (face_element = False )
8181 style = create_css (edge_color = self .edge_color , stroke_width = width )
8282 polyline = self .curve .make_draw_svg (style )
@@ -97,7 +97,7 @@ def polygon(points):
9797add_conversion_fn (ArrowBox , arrow_box )
9898
9999
100- def beziercurvebox (self , offset = None ):
100+ def beziercurvebox (self , ** options ):
101101 line_width = self .style .get_line_width (face_element = False )
102102 style = create_css (edge_color = self .edge_color , stroke_width = line_width )
103103
@@ -112,7 +112,7 @@ def beziercurvebox(self, offset=None):
112112add_conversion_fn (BezierCurveBox )
113113
114114
115- def filled_curve_box (self , offset = None ):
115+ def filled_curve_box (self , ** options ):
116116 line_width = self .style .get_line_width (face_element = False )
117117 style = create_css (
118118 edge_color = self .edge_color , face_color = self .face_color , stroke_width = line_width
@@ -149,9 +149,9 @@ def graphics_box(self, leaves=None, **options) -> str:
149149
150150 format_fn = lookup_method (elements , "svg" )
151151 if format_fn is not None :
152- svg_body = format_fn (elements , offset = options . get ( "offset" , None ) )
152+ svg_body = format_fn (elements , ** options )
153153 else :
154- svg_body = elements .to_svg (offset = options . get ( "offset" , None ) )
154+ svg_body = elements .to_svg (** options )
155155
156156 if self .background_color is not None :
157157 # Wrap svg_elements in a rectangle
@@ -188,14 +188,17 @@ def graphics_box(self, leaves=None, **options) -> str:
188188add_conversion_fn (GraphicsBox , graphics_box )
189189
190190
191- def graphics_elements (self , offset = None ):
191+ def graphics_elements (self , ** options )-> str :
192+ """
193+ SVG Formatting for a list of graphics elements.
194+ """
192195 result = []
193196 for element in self .elements :
194197 format_fn = lookup_method (element , "svg" )
195198 if format_fn is None :
196- result .append (element .to_svg (offset ))
199+ result .append (element .to_svg (** options ))
197200 else :
198- result .append (format_fn (element , offset ))
201+ result .append (format_fn (element , ** options ))
199202
200203 return "\n " .join (result )
201204
@@ -206,9 +209,12 @@ def graphics_elements(self, offset=None):
206209add_conversion_fn (Graphics3DElements )
207210
208211
209- def inset_box (self , offset = None ):
212+ def inset_box (self , ** options )-> str :
213+ """
214+ SVG Formatting for boxing an Inset in a graphic.
215+ """
210216 x , y = self .pos .pos ()
211- if offset :
217+ if options . get ( " offset" , None ) :
212218 x = x + offset [0 ]
213219 y = y + offset [1 ]
214220
@@ -226,7 +232,8 @@ def inset_box(self, offset=None):
226232 # FIXME: don't hard code text_style_opts, but allow these to be adjustable.
227233 text_style_opts = "text-anchor:middle; dominant-baseline:middle;"
228234 content = self .content .boxes_to_text (evaluation = self .graphics .evaluation )
229- svg = f'<text { text_pos_opts } style="{ text_style_opts } { css_style } ">{ content } </text>'
235+ font_size = f'''font-size="{ options .get ("point_size" , "10px" )} "'''
236+ svg = f'<text { text_pos_opts } { font_size } style="{ text_style_opts } { css_style } ">{ content } </text>'
230237
231238 # content = self.content.boxes_to_mathml(evaluation=self.graphics.evaluation)
232239 # style = create_css(font_color=self.color)
@@ -240,7 +247,7 @@ def inset_box(self, offset=None):
240247add_conversion_fn (InsetBox , inset_box )
241248
242249
243- def line_box (self , offset = None ) :
250+ def line_box (self , ** options ) -> str :
244251 line_width = self .style .get_line_width (face_element = False )
245252 style = create_css (edge_color = self .edge_color , stroke_width = line_width )
246253 svg = ""
@@ -256,7 +263,7 @@ def line_box(self, offset=None):
256263add_conversion_fn (LineBox , line_box )
257264
258265
259- def pointbox (self , offset = None ) :
266+ def pointbox (self , ** options ) -> str :
260267 point_size , _ = self .style .get_style (PointSize , face_element = False )
261268 if point_size is None :
262269 point_size = PointSize (self .graphics , value = 0.005 )
@@ -281,7 +288,7 @@ def pointbox(self, offset=None):
281288add_conversion_fn (PointBox )
282289
283290
284- def polygonbox (self , offset = None ):
291+ def polygonbox (self , ** options ):
285292 line_width = self .style .get_line_width (face_element = True )
286293 if self .vertex_colors is None :
287294 face_color = self .face_color
@@ -312,15 +319,15 @@ def polygonbox(self, offset=None):
312319add_conversion_fn (PolygonBox )
313320
314321
315- def rectanglebox (self , offset = None ):
322+ def rectanglebox (self , ** options ):
316323 line_width = self .style .get_line_width (face_element = True )
317324 x1 , y1 = self .p1 .pos ()
318325 x2 , y2 = self .p2 .pos ()
319326 xmin = min (x1 , x2 )
320327 ymin = min (y1 , y2 )
321328 w = max (x1 , x2 ) - xmin
322329 h = max (y1 , y2 ) - ymin
323- if offset :
330+ if options . get ( " offset" , None ) :
324331 x1 , x2 = x1 + offset [0 ], x2 + offset [0 ]
325332 y1 , y2 = y1 + offset [1 ], y2 + offset [1 ]
326333 style = create_css (self .edge_color , self .face_color , line_width )
@@ -337,7 +344,7 @@ def rectanglebox(self, offset=None):
337344add_conversion_fn (RectangleBox )
338345
339346
340- def _roundbox (self , offset = None ):
347+ def _roundbox (self , ** options ):
341348 x , y = self .c .pos ()
342349 rx , ry = self .r .pos ()
343350 rx -= x
0 commit comments