[AC] [DA] and [ACDC] added
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
-1
@@ -15,7 +15,7 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: e440-generator
|
||||
image: git.baumann.gr/adebaumann/e440-generator:1.01
|
||||
image: git.baumann.gr/adebaumann/e440-generator:1.02
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 5000
|
||||
|
||||
+68
@@ -101,6 +101,57 @@ _FRAC_AXIS = 0.32
|
||||
_FRAC_GAP = 0.14
|
||||
_FRAC_SIDE = 0.12
|
||||
|
||||
_SYM_WIDTH = 0.75
|
||||
_SYM_HEIGHT = 0.50
|
||||
_SYM_LW = 0.08
|
||||
_SYM_RISE = 0.25
|
||||
|
||||
|
||||
def _symbol_svg(name: str, x: float, y: float, fs: float, fill: str) -> str:
|
||||
w = fs * _SYM_WIDTH
|
||||
h = fs * _SYM_HEIGHT
|
||||
lw = fs * _SYM_LW
|
||||
yc = y - _SYM_RISE * fs
|
||||
stroke = f"fill:none;stroke:{fill};stroke-width:{lw:.5f};stroke-linecap:round"
|
||||
|
||||
if name == "ac":
|
||||
d = (
|
||||
f"M {x:.5f},{yc:.5f}"
|
||||
f" C {x + w / 3:.5f},{yc - h / 2:.5f}"
|
||||
f" {x + 2 * w / 3:.5f},{yc + h / 2:.5f}"
|
||||
f" {x + w:.5f},{yc:.5f}"
|
||||
)
|
||||
return f'<path style="{stroke}" d="{d}"/>'
|
||||
|
||||
elif name == "dc":
|
||||
dash = w / 5
|
||||
gap = w / 5
|
||||
y1 = yc - h / 4
|
||||
y2 = yc + h / 4
|
||||
p1 = f'<line x1="{x:.5f}" y1="{y1:.5f}" x2="{x + w:.5f}" y2="{y1:.5f}" style="{stroke}" />'
|
||||
p2 = f'<line x1="{x:.5f}" y1="{y2:.5f}" x2="{x + dash:.5f}" y2="{y2:.5f}" style="{stroke}" />'
|
||||
p3 = f'<line x1="{x + dash + gap:.5f}" y1="{y2:.5f}" x2="{x + 2 * dash + gap:.5f}" y2="{y2:.5f}" style="{stroke}" />'
|
||||
p4 = f'<line x1="{x + 2 * dash + 2 * gap:.5f}" y1="{y2:.5f}" x2="{x + w:.5f}" y2="{y2:.5f}" style="{stroke}" />'
|
||||
return p1 + "\n " + p2 + "\n " + p3 + "\n " + p4
|
||||
|
||||
else: # acdc
|
||||
y_wave = yc - h / 4
|
||||
y_dash = yc + h / 4
|
||||
dash = w / 5
|
||||
gap = w / 5
|
||||
d = (
|
||||
f"M {x:.5f},{y_wave:.5f}"
|
||||
f" C {x + w / 3:.5f},{y_wave - h / 2:.5f}"
|
||||
f" {x + 2 * w / 3:.5f},{y_wave + h / 2:.5f}"
|
||||
f" {x + w:.5f},{y_wave:.5f}"
|
||||
)
|
||||
p1 = f'<path style="{stroke}" d="{d}"/>'
|
||||
p2 = f'<line x1="{x:.5f}" y1="{y_dash:.5f}" x2="{x + dash:.5f}" y2="{y_dash:.5f}" style="{stroke}" />'
|
||||
p3 = f'<line x1="{x + dash + gap:.5f}" y1="{y_dash:.5f}" x2="{x + 2 * dash + gap:.5f}" y2="{y_dash:.5f}" style="{stroke}" />'
|
||||
p4 = f'<line x1="{x + 2 * dash + 2 * gap:.5f}" y1="{y_dash:.5f}" x2="{x + w:.5f}" y2="{y_dash:.5f}" style="{stroke}" />'
|
||||
return p1 + "\n " + p2 + "\n " + p3 + "\n " + p4
|
||||
|
||||
|
||||
_UNIT_BOX_X0, _UNIT_BOX_X1 = UNIT_X - 15.0, UNIT_X + 15.0
|
||||
_UNIT_BOX_Y0, _UNIT_BOX_Y1 = UNIT_Y - 6.0, UNIT_Y + 6.0
|
||||
_UNIT_MAX_FS = 9.46938021
|
||||
@@ -182,6 +233,16 @@ def _parse_markup(s: str):
|
||||
inner, j = _extract_braced(s, i)
|
||||
nodes.append(_parse_braced(inner))
|
||||
i = j
|
||||
elif c == "[":
|
||||
end = s.find("]", i + 1)
|
||||
if end > i:
|
||||
name = s[i + 1 : end].lower()
|
||||
if name in ("ac", "dc", "acdc"):
|
||||
nodes.append(("sym", name))
|
||||
i = end + 1
|
||||
continue
|
||||
nodes.append(("lit", c))
|
||||
i += 1
|
||||
else:
|
||||
nodes.append(("lit", c))
|
||||
i += 1
|
||||
@@ -205,6 +266,8 @@ def _measure(nodes, fs: float, fd: _FontData) -> float:
|
||||
max(_measure(n[1], fs2, fd), _measure(n[2], fs2, fd))
|
||||
+ 2 * _FRAC_SIDE * fs2
|
||||
)
|
||||
elif n[0] == "sym":
|
||||
w += fs * _SYM_WIDTH
|
||||
return w
|
||||
|
||||
|
||||
@@ -238,6 +301,8 @@ def _vbounds(nodes, fs: float, fd: _FontData):
|
||||
dt, db = _vbounds(n[2], fs2, fd)
|
||||
a = min(nt + num_base, axis)
|
||||
b = max(db + den_base, axis)
|
||||
elif n[0] == "sym":
|
||||
a, b = -_SYM_HEIGHT / 2 * fs, _SYM_HEIGHT / 2 * fs
|
||||
else:
|
||||
continue
|
||||
lo, hi = min(lo, a), max(hi, b)
|
||||
@@ -279,6 +344,9 @@ def _draw_nodes(nodes, x: float, y: float, fs: float, fill: str, fd: _FontData):
|
||||
f' style="stroke:{fill};stroke-width:{fs * 0.055:.5f};stroke-linecap:butt" />'
|
||||
)
|
||||
cx += bar_w
|
||||
elif n[0] == "sym":
|
||||
parts.append(_symbol_svg(n[1], cx, y, fs, fill))
|
||||
cx += fs * _SYM_WIDTH
|
||||
return parts, cx - x
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user