4
4
* Copyright (C) 1991-1996, Thomas G. Lane.
5
5
* Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
6
* Copyright (C) 2009-2011, D. R. Commander.
6
* Copyright (C) 2009-2012, D. R. Commander.
7
7
* This file is part of the Independent JPEG Group's software.
8
8
* For conditions of distribution and use, see the accompanying README file.
95
96
#define RGB_PIXELSIZE EXT_RGB_PIXELSIZE
96
97
#define rgb_ycc_convert_internal extrgb_ycc_convert_internal
97
98
#define rgb_gray_convert_internal extrgb_gray_convert_internal
99
#define rgb_rgb_convert_internal extrgb_rgb_convert_internal
98
100
#include "jccolext.c"
102
104
#undef RGB_PIXELSIZE
103
105
#undef rgb_ycc_convert_internal
104
106
#undef rgb_gray_convert_internal
107
#undef rgb_rgb_convert_internal
106
109
#define RGB_RED EXT_RGBX_RED
107
110
#define RGB_GREEN EXT_RGBX_GREEN
109
112
#define RGB_PIXELSIZE EXT_RGBX_PIXELSIZE
110
113
#define rgb_ycc_convert_internal extrgbx_ycc_convert_internal
111
114
#define rgb_gray_convert_internal extrgbx_gray_convert_internal
115
#define rgb_rgb_convert_internal extrgbx_rgb_convert_internal
112
116
#include "jccolext.c"
116
120
#undef RGB_PIXELSIZE
117
121
#undef rgb_ycc_convert_internal
118
122
#undef rgb_gray_convert_internal
123
#undef rgb_rgb_convert_internal
120
125
#define RGB_RED EXT_BGR_RED
121
126
#define RGB_GREEN EXT_BGR_GREEN
123
128
#define RGB_PIXELSIZE EXT_BGR_PIXELSIZE
124
129
#define rgb_ycc_convert_internal extbgr_ycc_convert_internal
125
130
#define rgb_gray_convert_internal extbgr_gray_convert_internal
131
#define rgb_rgb_convert_internal extbgr_rgb_convert_internal
126
132
#include "jccolext.c"
130
136
#undef RGB_PIXELSIZE
131
137
#undef rgb_ycc_convert_internal
132
138
#undef rgb_gray_convert_internal
139
#undef rgb_rgb_convert_internal
134
141
#define RGB_RED EXT_BGRX_RED
135
142
#define RGB_GREEN EXT_BGRX_GREEN
137
144
#define RGB_PIXELSIZE EXT_BGRX_PIXELSIZE
138
145
#define rgb_ycc_convert_internal extbgrx_ycc_convert_internal
139
146
#define rgb_gray_convert_internal extbgrx_gray_convert_internal
147
#define rgb_rgb_convert_internal extbgrx_rgb_convert_internal
140
148
#include "jccolext.c"
144
152
#undef RGB_PIXELSIZE
145
153
#undef rgb_ycc_convert_internal
146
154
#undef rgb_gray_convert_internal
155
#undef rgb_rgb_convert_internal
148
157
#define RGB_RED EXT_XBGR_RED
149
158
#define RGB_GREEN EXT_XBGR_GREEN
151
160
#define RGB_PIXELSIZE EXT_XBGR_PIXELSIZE
152
161
#define rgb_ycc_convert_internal extxbgr_ycc_convert_internal
153
162
#define rgb_gray_convert_internal extxbgr_gray_convert_internal
163
#define rgb_rgb_convert_internal extxbgr_rgb_convert_internal
154
164
#include "jccolext.c"
158
168
#undef RGB_PIXELSIZE
159
169
#undef rgb_ycc_convert_internal
160
170
#undef rgb_gray_convert_internal
171
#undef rgb_rgb_convert_internal
162
173
#define RGB_RED EXT_XRGB_RED
163
174
#define RGB_GREEN EXT_XRGB_GREEN
165
176
#define RGB_PIXELSIZE EXT_XRGB_PIXELSIZE
166
177
#define rgb_ycc_convert_internal extxrgb_ycc_convert_internal
167
178
#define rgb_gray_convert_internal extxrgb_gray_convert_internal
179
#define rgb_rgb_convert_internal extxrgb_rgb_convert_internal
168
180
#include "jccolext.c"
322
* Extended RGB to plain RGB conversion
326
rgb_rgb_convert (j_compress_ptr cinfo,
327
JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
328
JDIMENSION output_row, int num_rows)
330
switch (cinfo->in_color_space) {
332
extrgb_rgb_convert_internal(cinfo, input_buf, output_buf, output_row,
337
extrgbx_rgb_convert_internal(cinfo, input_buf, output_buf, output_row,
341
extbgr_rgb_convert_internal(cinfo, input_buf, output_buf, output_row,
346
extbgrx_rgb_convert_internal(cinfo, input_buf, output_buf, output_row,
351
extxbgr_rgb_convert_internal(cinfo, input_buf, output_buf, output_row,
356
extxrgb_rgb_convert_internal(cinfo, input_buf, output_buf, output_row,
360
rgb_rgb_convert_internal(cinfo, input_buf, output_buf, output_row,
309
368
* Convert some rows of samples to the JPEG colorspace.
310
369
* This version handles Adobe-style CMYK->YCCK conversion,
311
370
* where we convert R=1-C, G=1-M, and B=1-Y to YCbCr using the same
535
584
if (cinfo->num_components != 3)
536
585
ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
537
if (cinfo->in_color_space == cinfo->jpeg_color_space &&
538
rgb_pixelsize[cinfo->in_color_space] == 3)
586
if (rgb_red[cinfo->in_color_space] == 0 &&
587
rgb_green[cinfo->in_color_space] == 1 &&
588
rgb_blue[cinfo->in_color_space] == 2 &&
589
rgb_pixelsize[cinfo->in_color_space] == 3)
539
590
cconvert->pub.color_convert = null_convert;
591
else if (cinfo->in_color_space == JCS_RGB ||
592
cinfo->in_color_space == JCS_EXT_RGB ||
593
cinfo->in_color_space == JCS_EXT_RGBX ||
594
cinfo->in_color_space == JCS_EXT_BGR ||
595
cinfo->in_color_space == JCS_EXT_BGRX ||
596
cinfo->in_color_space == JCS_EXT_XBGR ||
597
cinfo->in_color_space == JCS_EXT_XRGB ||
598
cinfo->in_color_space == JCS_EXT_RGBA ||
599
cinfo->in_color_space == JCS_EXT_BGRA ||
600
cinfo->in_color_space == JCS_EXT_ABGR ||
601
cinfo->in_color_space == JCS_EXT_ARGB)
602
cconvert->pub.color_convert = rgb_rgb_convert;
541
604
ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);