diff options
author | Campbell Barton <ideasman42@gmail.com> | 2020-06-11 07:56:09 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2020-06-11 08:04:11 +0300 |
commit | 2c463a82500e4ada715a4a0a8a00c0eb00dceb79 (patch) | |
tree | 57d285990259830abc994647f2d4e4d3856811bd /source/blender/imbuf/intern | |
parent | 04390941050b1b790cbe812e9a8867cb56c93565 (diff) |
ImBuf: use more accurate DPI/PPM conversion
Use 0.0254 for conversion as 39.3700787 isn't exactly 1/0.0254
and can't be written as a round float/double.
Diffstat (limited to 'source/blender/imbuf/intern')
-rw-r--r-- | source/blender/imbuf/intern/openexr/openexr_api.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index 882808cbc14..0555d213b3f 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -390,7 +390,8 @@ static void openexr_header_metadata(Header *header, struct ImBuf *ibuf) } if (ibuf->ppm[0] > 0.0) { - addXDensity(*header, ibuf->ppm[0] / 39.3700787); /* 1 meter = 39.3700787 inches */ + /* Convert meters to inches. */ + addXDensity(*header, ibuf->ppm[0] * 0.0254); } } @@ -1920,7 +1921,8 @@ struct ImBuf *imb_load_openexr(const unsigned char *mem, ibuf->flags |= exr_is_half_float(*file) ? IB_halffloat : 0; if (hasXDensity(file->header(0))) { - ibuf->ppm[0] = xDensity(file->header(0)) * 39.3700787f; + /* Convert inches to meters. */ + ibuf->ppm[0] = (double)xDensity(file->header(0)) / 0.0254; ibuf->ppm[1] = ibuf->ppm[0] * (double)file->header(0).pixelAspectRatio(); } |