]> git.scottworley.com Git - paperdoorknob/blobdiff - glowfic.py
wrapfigure 0pt width means auto-scale
[paperdoorknob] / glowfic.py
index 0eab425d863dadb8669468af9ebc49a87527f19b..7a9f82aaf40e248b3c9806176da26a91e05cc26f 100644 (file)
@@ -81,9 +81,9 @@ def makeChunk(chunk_dom: Tag, image_store: ImageStore) -> Chunk:
                  content)
 
 
-def renderIcon(icon_path: str | None) -> bytes:
-    return b'\\includegraphics{%s}' % icon_path.encode(
-        'UTF-8') if icon_path else b''
+def renderIcon(icon_path: str | None, image_size: float) -> bytes:
+    return b'\\includegraphics[width=%fmm,height=%fmm,keepaspectratio]{%s}' % (
+        image_size, image_size, icon_path.encode('UTF-8')) if icon_path else b''
 
 
 class Layout(ABC):
@@ -104,21 +104,25 @@ class ContentOnlyLayout(Layout):
 
 class BelowIconLayout(Layout):
 
-    def __init__(self, texifier: Texifier) -> None:
+    def __init__(self, texifier: Texifier, image_size: float) -> None:
         self._texifier = texifier
+        self._image_size = image_size
 
     def renderChunk(self, chunk: Chunk) -> bytes:
-        icon_width = b'0.25\\textwidth'  # TODO: Make this configurable
-        return b'''\\begin{wrapfigure}{l}{%s}
+        return b'''\\begin{wrapfigure}{l}{0pt}
 %s
+
 %s
+
 %s
+
 %s
 \\end{wrapfigure}
+
 %s
+
 ''' % (
-            icon_width,
-            renderIcon(chunk.icon),
+            renderIcon(chunk.icon, self._image_size),
             chunk.character.encode('UTF-8') if chunk.character else b'',
             chunk.screen_name.encode('UTF-8') if chunk.screen_name else b'',
             chunk.author.encode('UTF-8') if chunk.author else b'',