diff --git a/output_webp_backup/0.svg b/output_webp_backup/0.svg
deleted file mode 100644
index 127892d..0000000
--- a/output_webp_backup/0.svg
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
diff --git a/output_webp_backup/1.svg b/output_webp_backup/1.svg
deleted file mode 100644
index 1292efa..0000000
--- a/output_webp_backup/1.svg
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
diff --git a/output_webp_backup/2.svg b/output_webp_backup/2.svg
deleted file mode 100644
index fbf53f2..0000000
--- a/output_webp_backup/2.svg
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
diff --git a/output_webp_backup/3.svg b/output_webp_backup/3.svg
deleted file mode 100644
index 07248a9..0000000
--- a/output_webp_backup/3.svg
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
diff --git a/output_webp_backup/4.svg b/output_webp_backup/4.svg
deleted file mode 100644
index a4b7361..0000000
--- a/output_webp_backup/4.svg
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
diff --git a/output_webp_backup/5.svg b/output_webp_backup/5.svg
deleted file mode 100644
index 4fc8b74..0000000
--- a/output_webp_backup/5.svg
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
diff --git a/output_webp_backup/6.svg b/output_webp_backup/6.svg
deleted file mode 100644
index 16a374e..0000000
--- a/output_webp_backup/6.svg
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
diff --git a/output_webp_backup/7.svg b/output_webp_backup/7.svg
deleted file mode 100644
index 68c4f79..0000000
--- a/output_webp_backup/7.svg
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
diff --git a/output_webp_backup/8.svg b/output_webp_backup/8.svg
deleted file mode 100644
index f0e4da7..0000000
--- a/output_webp_backup/8.svg
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
diff --git a/output_webp_backup/9.svg b/output_webp_backup/9.svg
deleted file mode 100644
index cf92b55..0000000
--- a/output_webp_backup/9.svg
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
diff --git a/romancolumn.webp b/romancolumn.webp
deleted file mode 100644
index 9f1ab14..0000000
Binary files a/romancolumn.webp and /dev/null differ
diff --git a/shift_paths.py b/shift_paths.py
deleted file mode 100644
index 9cba52c..0000000
--- a/shift_paths.py
+++ /dev/null
@@ -1,130 +0,0 @@
-import os
-import re
-import xml.etree.ElementTree as ET
-import json
-
-def parse_viewbox(root):
- vb = root.get('viewBox')
- if vb:
- parts = [float(x) for x in vb.split()]
- if len(parts) == 4:
- return parts[2], parts[3] # Width, Height
- width = root.get('width')
- height = root.get('height')
- if width and height:
- return float(width.replace('in','').replace('px','')) * 96, float(height.replace('in','').replace('px','')) * 96 # rough approx if units
- return 30.0, 40.0 # Fallback
-
-def tokenize_path(d):
- # Split by commands and numbers.
- # Commands: M, m, L, l, V, v, H, h, C, c, S, s, Q, q, T, t, A, a, Z, z
- # Numbers: float regex
- tokens = re.findall(r'[a-zA-Z]|[-+]?(?:\d*\.\d+|\d+)(?:[eE][-+]?\d+)?', d)
- return tokens
-
-def is_num(t):
- try:
- float(t)
- return True
- except:
- return False
-
-def shift_d(d, dx, dy):
- tokens = tokenize_path(d)
- new_tokens = []
-
- current_cmd = ''
- i = 0
-
- # SVG 1.1: first command must be M or m. m treated as absolute M.
-
- while i < len(tokens):
- t = tokens[i]
- if not is_num(t):
- current_cmd = t
- new_tokens.append(t)
- i += 1
-
- # Special case for 'm' at start: first pair absolute, rest relative
- if current_cmd == 'm' and len(new_tokens) == 1:
- # First pair
- if i+1 < len(tokens):
- x = float(tokens[i]) + dx
- y = float(tokens[i+1]) + dy
- new_tokens.extend([f"{x:.4f}", f"{y:.4f}"])
- i += 2
- # Subsequent pairs are relative line-tos, do NOT shift
-
- continue
-
- # It's a number, implies continuation of previous command or implicit line-to
- # If we are here, we are processing parameters for current_cmd
-
- # Determine if absolute coordinate
- if current_cmd in ['M', 'L', 'C', 'S', 'Q', 'T']:
- # Pairs of X, Y
- x = float(tokens[i]) + dx
- y = float(tokens[i+1]) + dy
- new_tokens.extend([f"{x:.4f}", f"{y:.4f}"])
- i += 2
- elif current_cmd == 'V':
- y = float(tokens[i]) + dy
- new_tokens.append(f"{y:.4f}")
- i += 1
- elif current_cmd == 'H':
- x = float(tokens[i]) + dx
- new_tokens.append(f"{x:.4f}")
- i += 1
- elif current_cmd == 'A':
- # rx ry rot large sweep x y
- # skip 5
- new_tokens.extend(tokens[i:i+5])
- i += 5
- x = float(tokens[i]) + dx
- y = float(tokens[i+1]) + dy
- new_tokens.extend([f"{x:.4f}", f"{y:.4f}"])
- i += 2
- else:
- # Relative commands (m, l, c, s, q, t, v, h, a) - do NOT shift
- # Just copy tokens until next command
- # But we need to know how many args to consume?
- # Easier: just iterate until next alpha token
- new_tokens.append(t)
- i += 1
-
- return ' '.join(new_tokens)
-
-base_dir = 'output_webp'
-final_paths = {}
-
-for num in range(10):
- filename = os.path.join(base_dir, f'{num}.svg')
- if os.path.exists(filename):
- try:
- tree = ET.parse(filename)
- root = tree.getroot()
-
- w, h = parse_viewbox(root)
- cx, cy = w/2, h/2
-
- # Find path
- ns = {'svg': 'http://www.w3.org/2000/svg'}
- path = root.find('.//svg:path', ns)
- if not path:
- path = root.find('.//{http://www.w3.org/2000/svg}path')
- if not path:
- for elem in root.iter():
- if elem.tag.endswith('path'):
- path = elem
- break
-
- if path is not None:
- d = path.get('d')
- if d:
- # Shift so center is 0,0
- shifted = shift_d(d, -cx, -cy)
- final_paths[str(num)] = shifted
- except Exception as e:
- print(f"Error {num}: {e}")
-
-print(json.dumps(final_paths))