aboutsummaryrefslogtreecommitdiff
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 hereHEADmaster
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))