Skip to content

Commit 399d561

Browse files
authored
Merge pull request #1397 from mathics/svg-inset-box-text-size
Specify SVG text size in InsetBox
2 parents 47fd094 + c6c39c8 commit 399d561

1 file changed

Lines changed: 24 additions & 17 deletions

File tree

mathics/formatter/svg.py

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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):
9797
add_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):
112112
add_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:
188188
add_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):
206209
add_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):
240247
add_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):
256263
add_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):
281288
add_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):
312319
add_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):
337344
add_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

Comments
 (0)