| Index: jdcolor.c
|
| ===================================================================
|
| --- jdcolor.c (revision 134206)
|
| +++ jdcolor.c (working copy)
|
| @@ -3,7 +3,7 @@
|
| *
|
| * Copyright (C) 1991-1997, Thomas G. Lane.
|
| * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
|
| - * Copyright (C) 2009, 2011, D. R. Commander.
|
| + * Copyright (C) 2009, 2011-2012, D. R. Commander.
|
| * This file is part of the Independent JPEG Group's software.
|
| * For conditions of distribution and use, see the accompanying README file.
|
| *
|
| @@ -14,6 +14,7 @@
|
| #include "jinclude.h"
|
| #include "jpeglib.h"
|
| #include "jsimd.h"
|
| +#include "config.h"
|
|
|
|
|
| /* Private subobject */
|
| @@ -79,6 +80,7 @@
|
| #define RGB_PIXELSIZE EXT_RGB_PIXELSIZE
|
| #define ycc_rgb_convert_internal ycc_extrgb_convert_internal
|
| #define gray_rgb_convert_internal gray_extrgb_convert_internal
|
| +#define rgb_rgb_convert_internal rgb_extrgb_convert_internal
|
| #include "jdcolext.c"
|
| #undef RGB_RED
|
| #undef RGB_GREEN
|
| @@ -86,6 +88,7 @@
|
| #undef RGB_PIXELSIZE
|
| #undef ycc_rgb_convert_internal
|
| #undef gray_rgb_convert_internal
|
| +#undef rgb_rgb_convert_internal
|
|
|
| #define RGB_RED EXT_RGBX_RED
|
| #define RGB_GREEN EXT_RGBX_GREEN
|
| @@ -94,6 +97,7 @@
|
| #define RGB_PIXELSIZE EXT_RGBX_PIXELSIZE
|
| #define ycc_rgb_convert_internal ycc_extrgbx_convert_internal
|
| #define gray_rgb_convert_internal gray_extrgbx_convert_internal
|
| +#define rgb_rgb_convert_internal rgb_extrgbx_convert_internal
|
| #include "jdcolext.c"
|
| #undef RGB_RED
|
| #undef RGB_GREEN
|
| @@ -102,6 +106,7 @@
|
| #undef RGB_PIXELSIZE
|
| #undef ycc_rgb_convert_internal
|
| #undef gray_rgb_convert_internal
|
| +#undef rgb_rgb_convert_internal
|
|
|
| #define RGB_RED EXT_BGR_RED
|
| #define RGB_GREEN EXT_BGR_GREEN
|
| @@ -109,6 +114,7 @@
|
| #define RGB_PIXELSIZE EXT_BGR_PIXELSIZE
|
| #define ycc_rgb_convert_internal ycc_extbgr_convert_internal
|
| #define gray_rgb_convert_internal gray_extbgr_convert_internal
|
| +#define rgb_rgb_convert_internal rgb_extbgr_convert_internal
|
| #include "jdcolext.c"
|
| #undef RGB_RED
|
| #undef RGB_GREEN
|
| @@ -116,6 +122,7 @@
|
| #undef RGB_PIXELSIZE
|
| #undef ycc_rgb_convert_internal
|
| #undef gray_rgb_convert_internal
|
| +#undef rgb_rgb_convert_internal
|
|
|
| #define RGB_RED EXT_BGRX_RED
|
| #define RGB_GREEN EXT_BGRX_GREEN
|
| @@ -124,6 +131,7 @@
|
| #define RGB_PIXELSIZE EXT_BGRX_PIXELSIZE
|
| #define ycc_rgb_convert_internal ycc_extbgrx_convert_internal
|
| #define gray_rgb_convert_internal gray_extbgrx_convert_internal
|
| +#define rgb_rgb_convert_internal rgb_extbgrx_convert_internal
|
| #include "jdcolext.c"
|
| #undef RGB_RED
|
| #undef RGB_GREEN
|
| @@ -132,6 +140,7 @@
|
| #undef RGB_PIXELSIZE
|
| #undef ycc_rgb_convert_internal
|
| #undef gray_rgb_convert_internal
|
| +#undef rgb_rgb_convert_internal
|
|
|
| #define RGB_RED EXT_XBGR_RED
|
| #define RGB_GREEN EXT_XBGR_GREEN
|
| @@ -140,6 +149,7 @@
|
| #define RGB_PIXELSIZE EXT_XBGR_PIXELSIZE
|
| #define ycc_rgb_convert_internal ycc_extxbgr_convert_internal
|
| #define gray_rgb_convert_internal gray_extxbgr_convert_internal
|
| +#define rgb_rgb_convert_internal rgb_extxbgr_convert_internal
|
| #include "jdcolext.c"
|
| #undef RGB_RED
|
| #undef RGB_GREEN
|
| @@ -148,6 +158,7 @@
|
| #undef RGB_PIXELSIZE
|
| #undef ycc_rgb_convert_internal
|
| #undef gray_rgb_convert_internal
|
| +#undef rgb_rgb_convert_internal
|
|
|
| #define RGB_RED EXT_XRGB_RED
|
| #define RGB_GREEN EXT_XRGB_GREEN
|
| @@ -156,6 +167,7 @@
|
| #define RGB_PIXELSIZE EXT_XRGB_PIXELSIZE
|
| #define ycc_rgb_convert_internal ycc_extxrgb_convert_internal
|
| #define gray_rgb_convert_internal gray_extxrgb_convert_internal
|
| +#define rgb_rgb_convert_internal rgb_extxrgb_convert_internal
|
| #include "jdcolext.c"
|
| #undef RGB_RED
|
| #undef RGB_GREEN
|
| @@ -164,6 +176,7 @@
|
| #undef RGB_PIXELSIZE
|
| #undef ycc_rgb_convert_internal
|
| #undef gray_rgb_convert_internal
|
| +#undef rgb_rgb_convert_internal
|
|
|
|
|
| /*
|
| @@ -352,6 +365,51 @@
|
|
|
|
|
| /*
|
| + * Convert plain RGB to extended RGB
|
| + */
|
| +
|
| +METHODDEF(void)
|
| +rgb_rgb_convert (j_decompress_ptr cinfo,
|
| + JSAMPIMAGE input_buf, JDIMENSION input_row,
|
| + JSAMPARRAY output_buf, int num_rows)
|
| +{
|
| + switch (cinfo->out_color_space) {
|
| + case JCS_EXT_RGB:
|
| + rgb_extrgb_convert_internal(cinfo, input_buf, input_row, output_buf,
|
| + num_rows);
|
| + break;
|
| + case JCS_EXT_RGBX:
|
| + case JCS_EXT_RGBA:
|
| + rgb_extrgbx_convert_internal(cinfo, input_buf, input_row, output_buf,
|
| + num_rows);
|
| + break;
|
| + case JCS_EXT_BGR:
|
| + rgb_extbgr_convert_internal(cinfo, input_buf, input_row, output_buf,
|
| + num_rows);
|
| + break;
|
| + case JCS_EXT_BGRX:
|
| + case JCS_EXT_BGRA:
|
| + rgb_extbgrx_convert_internal(cinfo, input_buf, input_row, output_buf,
|
| + num_rows);
|
| + break;
|
| + case JCS_EXT_XBGR:
|
| + case JCS_EXT_ABGR:
|
| + rgb_extxbgr_convert_internal(cinfo, input_buf, input_row, output_buf,
|
| + num_rows);
|
| + break;
|
| + case JCS_EXT_XRGB:
|
| + case JCS_EXT_ARGB:
|
| + rgb_extxrgb_convert_internal(cinfo, input_buf, input_row, output_buf,
|
| + num_rows);
|
| + break;
|
| + default:
|
| + rgb_rgb_convert_internal(cinfo, input_buf, input_row, output_buf,
|
| + num_rows);
|
| + break;
|
| + }
|
| +}
|
| +
|
| +/*
|
| * Adobe-style YCCK->CMYK conversion.
|
| * We convert YCbCr to R=1-C, G=1-M, and B=1-Y using the same
|
| * conversion as above, while passing K (black) unchanged.
|
| @@ -493,9 +551,14 @@
|
| }
|
| } else if (cinfo->jpeg_color_space == JCS_GRAYSCALE) {
|
| cconvert->pub.color_convert = gray_rgb_convert;
|
| - } else if (cinfo->jpeg_color_space == cinfo->out_color_space &&
|
| - rgb_pixelsize[cinfo->out_color_space] == 3) {
|
| - cconvert->pub.color_convert = null_convert;
|
| + } else if (cinfo->jpeg_color_space == JCS_RGB) {
|
| + if (rgb_red[cinfo->out_color_space] == 0 &&
|
| + rgb_green[cinfo->out_color_space] == 1 &&
|
| + rgb_blue[cinfo->out_color_space] == 2 &&
|
| + rgb_pixelsize[cinfo->out_color_space] == 3)
|
| + cconvert->pub.color_convert = null_convert;
|
| + else
|
| + cconvert->pub.color_convert = rgb_rgb_convert;
|
| } else
|
| ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
|
| break;
|
|
|