On Fri, 28 Apr 2023 21:34:36 GMT, Sergey Bylokhov <[email protected]> wrote:

> The description from big to small:
> 
> - Our code to handle the image types we support is too generic, the 
> LCMSImageLayout class can handle, byte, short, int, and double types, and 
> many various properties of the image layout. As a result, we pass a couple of 
> good parameters to the LCMSImageLayout and have to use safeXX methods in it 
> to calculate the final layout, and then validate it.
>   This patch moves the layout properties calculation to one place - the 
> constructor of LCMSImageLayout, and from the outside of the class, we now 
> pass only the data array and the number of components per pixel:
>  - The usage of Double type is removed, we do not use that type currently, 
> and do not plan to support it in the future. Note that we support the float 
> type, and I tried to implement it, but unfortunately, it is [intentionally 
> ](https://github.com/mm2/Little-CMS/issues/356)slow. So will continue to use 
> short type instead of float.
>  - Discussed a few times the  `do { } while (false);` block is removed.

src/java.desktop/share/native/liblcms/LCMS.c line 51:

> 49: #define DT_BYTE     sun_java2d_cmm_lcms_LCMSImageLayout_DT_BYTE
> 50: #define DT_SHORT    sun_java2d_cmm_lcms_LCMSImageLayout_DT_SHORT
> 51: #define DT_INT      sun_java2d_cmm_lcms_LCMSImageLayout_DT_INT

I don't understand why this isn't a step backwards.
It is overloading the "size" to mean the "type"
How would you tell the difference between SHORT vs UNSIGNED SHORT - both 2 
bytes,
or INT vs FLOAT - both 4 bytes ?
or LONG vs DOUBLE ..
If we ever need to, then this all needs to be reverted.
% cd java/lang 
%  grep BYTES *java 
Byte.java:    public static final int BYTES = SIZE / Byte.SIZE;
Character.java:    public static final int BYTES = SIZE / Byte.SIZE;
Double.java:    public static final int BYTES = SIZE / Byte.SIZE;
Float.java:    public static final int BYTES = SIZE / Byte.SIZE;
Integer.java:    public static final int BYTES = SIZE / Byte.SIZE;
Long.java:    public static final int BYTES = SIZE / Byte.SIZE;
Short.java:    public static final int BYTES = SIZE / Byte.SIZE;

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/13732#discussion_r1184257243

Reply via email to