[gimp] plug-ins: now adding support for 16 and 32-bit RGBA raw data.
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] plug-ins: now adding support for 16 and 32-bit RGBA raw data.
- Date: Mon, 20 Jun 2022 23:49:53 +0000 (UTC)
commit 2ffb7c12d1a6ad62499ad3221e4e92f50c0679e3
Author: Jehan <jehan girinstud io>
Date: Tue Jun 21 01:49:09 2022 +0200
plug-ins: now adding support for 16 and 32-bit RGBA raw data.
Quite easy now that we have generic code paths.
plug-ins/common/file-raw-data.c | 61 +++++++++++++++++++++++++++++++++++++++--
1 file changed, 59 insertions(+), 2 deletions(-)
---
diff --git a/plug-ins/common/file-raw-data.c b/plug-ins/common/file-raw-data.c
index 7f35efe40f..2900241461 100644
--- a/plug-ins/common/file-raw-data.c
+++ b/plug-ins/common/file-raw-data.c
@@ -92,6 +92,10 @@ typedef enum
/* RGB Image with an Alpha channel */
RAW_RGBA_8BPP,
+ RAW_RGBA_16BPP_BE,
+ RAW_RGBA_16BPP_LE,
+ RAW_RGBA_32BPP_BE,
+ RAW_RGBA_32BPP_LE,
RAW_RGB565_BE, /* RGB Image 16bit, 5,6,5 bits per channel, big-endian */
RAW_RGB565_LE, /* RGB Image 16bit, 5,6,5 bits per channel, little-endian */
@@ -739,7 +743,9 @@ raw_load_standard (RawGimpData *data,
type == RAW_GRAY_32BPP_BE ||
type == RAW_GRAY_32BPP_SBE ||
type == RAW_RGB_16BPP_BE ||
- type == RAW_RGB_32BPP_BE);
+ type == RAW_RGB_32BPP_BE ||
+ type == RAW_RGBA_16BPP_BE ||
+ type == RAW_RGBA_32BPP_BE);
is_signed = (type == RAW_GRAY_16BPP_SBE ||
type == RAW_GRAY_32BPP_SBE);
@@ -1304,6 +1310,16 @@ get_bpp (GimpProcedureConfig *config,
*bpp = 4;
break;
+ case RAW_RGBA_16BPP_BE:
+ case RAW_RGBA_16BPP_LE:
+ *bpp = 8;
+ break;
+
+ case RAW_RGBA_32BPP_BE:
+ case RAW_RGBA_32BPP_LE:
+ *bpp = 16;
+ break;
+
case RAW_GRAY_1BPP:
*bpp = 1;
*bitspp = 1;
@@ -1515,6 +1531,22 @@ load_image (GFile *file,
itype = GIMP_RGB;
break;
+ case RAW_RGBA_16BPP_BE:
+ case RAW_RGBA_16BPP_LE:
+ bpp = 8;
+ ltype = GIMP_RGBA_IMAGE;
+ itype = GIMP_RGB;
+ precision = GIMP_PRECISION_U16_NON_LINEAR;
+ break;
+
+ case RAW_RGBA_32BPP_BE:
+ case RAW_RGBA_32BPP_LE:
+ bpp = 16;
+ ltype = GIMP_RGBA_IMAGE;
+ itype = GIMP_RGB;
+ precision = GIMP_PRECISION_U32_NON_LINEAR;
+ break;
+
case RAW_GRAY_1BPP:
bpp = 1;
bitspp = 1;
@@ -1593,7 +1625,12 @@ load_image (GFile *file,
case RAW_RGB_16BPP_LE:
case RAW_RGB_32BPP_BE:
case RAW_RGB_32BPP_LE:
+
case RAW_RGBA_8BPP:
+ case RAW_RGBA_16BPP_BE:
+ case RAW_RGBA_16BPP_LE:
+ case RAW_RGBA_32BPP_BE:
+ case RAW_RGBA_32BPP_LE:
raw_load_standard (data, width, height, bpp, offset, pixel_format);
break;
@@ -1692,7 +1729,9 @@ preview_update (GimpPreviewArea *preview,
pixel_format == RAW_GRAY_32BPP_BE ||
pixel_format == RAW_GRAY_32BPP_SBE ||
pixel_format == RAW_RGB_16BPP_BE ||
- pixel_format == RAW_RGB_32BPP_BE);
+ pixel_format == RAW_RGB_32BPP_BE ||
+ pixel_format == RAW_RGBA_16BPP_BE ||
+ pixel_format == RAW_RGBA_32BPP_BE);
is_signed = (pixel_format == RAW_GRAY_16BPP_SBE ||
pixel_format == RAW_GRAY_32BPP_SBE);
@@ -1701,6 +1740,20 @@ preview_update (GimpPreviewArea *preview,
case RAW_RGBA_8BPP:
bpc = 1;
bpp = 4;
+ case RAW_RGBA_16BPP_BE:
+ case RAW_RGBA_16BPP_LE:
+ if (bpc == 0)
+ {
+ bpc = 2;
+ bpp = 8;
+ }
+ case RAW_RGBA_32BPP_BE:
+ case RAW_RGBA_32BPP_LE:
+ if (bpc == 0)
+ {
+ bpc = 4;
+ bpp = 16;
+ }
n_components = 4;
preview_type = GIMP_RGBA_IMAGE;
case RAW_RGB_8BPP:
@@ -2331,6 +2384,10 @@ load_dialog (GFile *file,
_("RGB 32-bit Little Endian"), RAW_RGB_32BPP_LE,
_("RGBA 8-bit"), RAW_RGBA_8BPP,
+ _("RGBA 16-bit Big Endian"), RAW_RGBA_16BPP_BE,
+ _("RGBA 16-bit Little Endian"), RAW_RGBA_16BPP_LE,
+ _("RGBA 32-bit Big Endian"), RAW_RGBA_32BPP_BE,
+ _("RGBA 32-bit Little Endian"), RAW_RGBA_32BPP_LE,
_("RGB565 Big Endian"), RAW_RGB565_BE,
_("RGB565 Little Endian"), RAW_RGB565_LE,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]