about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/docx/image/bmp.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/docx/image/bmp.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are here HEAD master
Diffstat (limited to '.venv/lib/python3.12/site-packages/docx/image/bmp.py')
-rw-r--r--.venv/lib/python3.12/site-packages/docx/image/bmp.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/docx/image/bmp.py b/.venv/lib/python3.12/site-packages/docx/image/bmp.py
new file mode 100644
index 00000000..115b01d5
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/docx/image/bmp.py
@@ -0,0 +1,43 @@
+from .constants import MIME_TYPE
+from .helpers import LITTLE_ENDIAN, StreamReader
+from .image import BaseImageHeader
+
+
+class Bmp(BaseImageHeader):
+    """Image header parser for BMP images."""
+
+    @classmethod
+    def from_stream(cls, stream):
+        """Return |Bmp| instance having header properties parsed from the BMP image in
+        `stream`."""
+        stream_rdr = StreamReader(stream, LITTLE_ENDIAN)
+
+        px_width = stream_rdr.read_long(0x12)
+        px_height = stream_rdr.read_long(0x16)
+
+        horz_px_per_meter = stream_rdr.read_long(0x26)
+        vert_px_per_meter = stream_rdr.read_long(0x2A)
+
+        horz_dpi = cls._dpi(horz_px_per_meter)
+        vert_dpi = cls._dpi(vert_px_per_meter)
+
+        return cls(px_width, px_height, horz_dpi, vert_dpi)
+
+    @property
+    def content_type(self):
+        """MIME content type for this image, unconditionally `image/bmp` for BMP
+        images."""
+        return MIME_TYPE.BMP
+
+    @property
+    def default_ext(self):
+        """Default filename extension, always 'bmp' for BMP images."""
+        return "bmp"
+
+    @staticmethod
+    def _dpi(px_per_meter):
+        """Return the integer pixels per inch from `px_per_meter`, defaulting to 96 if
+        `px_per_meter` is zero."""
+        if px_per_meter == 0:
+            return 96
+        return int(round(px_per_meter * 0.0254))