mirror of
https://github.com/boostorg/gil.git
synced 2026-01-26 18:42:12 +00:00
Correct calculation to correctly map CMYK 0 to minimum and 1 to maximum of input and output channel types. If float-point division is necessary, use double instead of float which may be too narrow for large operands. cmyk32_pixel_t is based on uint32_t which multiplication by its maximum may yield result too large to fit 32-bit float. For example, (uint32_t(c) - uint32_t(k)) * float(s) for c = 4294967295, k = 0, s = 1.0 results in 4294967300 value which does not fit uint32_t. Fixes #406, but does not fix #479