*** misc/jpeg-6b/jconfig.h Tue Jan 30 16:14:52 2007 --- misc/build/jpeg-6b/jconfig.h Tue Jan 30 16:14:09 2007 *************** *** 1 **** ! dummy --- 1,16 ---- ! #define HAVE_PROTOTYPES ! #define HAVE_UNSIGNED_CHAR ! #define HAVE_UNSIGNED_SHORT ! #undef CHAR_IS_UNSIGNED ! #define HAVE_STDDEF_H ! #define HAVE_STDLIB_H ! #undef NEED_BSD_STRINGS ! #undef NEED_SYS_TYPES_H ! #undef NEED_FAR_POINTERS ! #undef NEED_SHORT_EXTERNAL_NAMES ! #undef INCOMPLETE_TYPES_BROKEN ! ! #ifdef JPEG_INTERNALS ! #undef RIGHT_SHIFT_IS_UNSIGNED ! #define NO_GETENV ! #endif *** misc/jpeg-6b/jdcolor.c Mon Aug 4 01:39:16 1997 --- misc/build/jpeg-6b/jdcolor.c Tue Jan 30 16:14:09 2007 *************** *** 284,289 **** --- 284,373 ---- } } + METHODDEF(void) + ycck_rgb_convert (j_decompress_ptr cinfo, + JSAMPIMAGE input_buf, JDIMENSION input_row, + JSAMPARRAY output_buf, int num_rows) + { + my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert; + JDIMENSION num_cols = cinfo->output_width; + long cc, cm, cy, ck; + long y, cb, cr; + register JSAMPROW outptr; + register JSAMPROW inptr0, inptr1, inptr2, inptr3; + register JDIMENSION col; + register JSAMPLE* range_limit = cinfo->sample_range_limit; + register int* Crrtab = cconvert->Cr_r_tab; + register int* Cbbtab = cconvert->Cb_b_tab; + register INT32* Crgtab = cconvert->Cr_g_tab; + register INT32* Cbgtab = cconvert->Cb_g_tab; + SHIFT_TEMPS + + while( --num_rows >= 0 ) + { + inptr0 = input_buf[0][input_row]; + inptr1 = input_buf[1][input_row]; + inptr2 = input_buf[2][input_row]; + inptr3 = input_buf[3][input_row++]; + + for( col = 0, outptr = *output_buf++; col < num_cols; col++ ) + { + y = GETJSAMPLE(inptr0[col]); + cb = GETJSAMPLE(inptr1[col]); + cr = GETJSAMPLE(inptr2[col]); + + // YCCK => CMYK + cc = 255L - range_limit[MAXJSAMPLE - (y + Crrtab[cr])]; + cm = 255L - range_limit[MAXJSAMPLE - (y + ((int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS)))]; + cy = 255L - range_limit[MAXJSAMPLE - (y + Cbbtab[cb])]; + ck = 255L - inptr3[col]; + + // CMYK => RGB + outptr[ RGB_RED ] = range_limit[ 255L - ( cc + ck ) ]; + outptr[ RGB_GREEN ] = range_limit[ 255L - ( cm + ck ) ]; + outptr[ RGB_BLUE ] = range_limit[ 255L - ( cy + ck ) ]; + outptr += RGB_PIXELSIZE; + } + } + } + + METHODDEF(void) + cmyk_rgb_convert (j_decompress_ptr cinfo, + JSAMPIMAGE input_buf, JDIMENSION input_row, + JSAMPARRAY output_buf, int num_rows) + { + my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert; + JDIMENSION num_cols = cinfo->output_width; + long cc, cm, cy, ck; + long y, cb, cr; + register JSAMPROW outptr; + register JSAMPROW inptr0, inptr1, inptr2, inptr3; + register JDIMENSION col; + register JSAMPLE* range_limit = cinfo->sample_range_limit; + SHIFT_TEMPS + + while( --num_rows >= 0 ) + { + inptr0 = input_buf[0][input_row]; + inptr1 = input_buf[1][input_row]; + inptr2 = input_buf[2][input_row]; + inptr3 = input_buf[3][input_row++]; + + for( col = 0, outptr = *output_buf++; col < num_cols; col++ ) + { + cc = 255 - GETJSAMPLE(inptr0[col]); + cm = 255 - GETJSAMPLE(inptr1[col]); + cy = 255 - GETJSAMPLE(inptr2[col]); + ck = 255 - GETJSAMPLE(inptr3[col]); + + // CMYK => RGB + outptr[ RGB_RED ] = range_limit[ 255L - ( cc + ck ) ]; + outptr[ RGB_GREEN ] = range_limit[ 255L - ( cm + ck ) ]; + outptr[ RGB_BLUE ] = range_limit[ 255L - ( cy + ck ) ]; + outptr += RGB_PIXELSIZE; + } + } + } /* * Empty method for start_pass. *************** *** 364,369 **** --- 448,458 ---- cconvert->pub.color_convert = gray_rgb_convert; } else if (cinfo->jpeg_color_space == JCS_RGB && RGB_PIXELSIZE == 3) { cconvert->pub.color_convert = null_convert; + } else if (cinfo->jpeg_color_space == JCS_YCCK) { + cconvert->pub.color_convert = ycck_rgb_convert; + build_ycc_rgb_table(cinfo); + } else if (cinfo->jpeg_color_space == JCS_CMYK) { + cconvert->pub.color_convert = cmyk_rgb_convert; } else ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL); break; *** misc/jpeg-6b/jmorecfg.h Sun Aug 10 01:58:56 1997 --- misc/build/jpeg-6b/jmorecfg.h Tue Jan 30 16:14:09 2007 *************** *** 157,164 **** /* INT32 must hold at least signed 32-bit values. */ ! #ifndef XMD_H /* X11/xmd.h correctly defines INT32 */ ! typedef long INT32; #endif /* Datatype used for image dimensions. The JPEG standard only supports --- 157,164 ---- /* INT32 must hold at least signed 32-bit values. */ ! #if !defined XMD_H && !defined _SOLAR_H /* X11/xmd.h correctly defines INT32 */ ! typedef int INT32; #endif /* Datatype used for image dimensions. The JPEG standard only supports *************** *** 311,319 **** * can't use color quantization if you change that value. */ ! #define RGB_RED 0 /* Offset of Red in an RGB scanline element */ #define RGB_GREEN 1 /* Offset of Green */ ! #define RGB_BLUE 2 /* Offset of Blue */ #define RGB_PIXELSIZE 3 /* JSAMPLEs per RGB scanline element */ --- 311,319 ---- * can't use color quantization if you change that value. */ ! #define RGB_RED 2 /* Offset of Red in an RGB scanline element */ #define RGB_GREEN 1 /* Offset of Green */ ! #define RGB_BLUE 0 /* Offset of Blue */ #define RGB_PIXELSIZE 3 /* JSAMPLEs per RGB scanline element */ *** misc/jpeg-6b/makefile.mk Tue Jan 30 16:14:52 2007 --- misc/build/jpeg-6b/makefile.mk Tue Jan 30 16:14:40 2007 *************** *** 1 **** ! dummy --- 1,81 ---- ! #************************************************************************* ! # ! # $RCSfile: makefile.mk,v $ ! # ! # $Revision: 1.5 $ ! # ! # last change: $Author: thb $ $Date: 2001/08/14 12:53:46 $ ! # ! # Copyright according the GNU Public License. ! # ! #************************************************************************* ! ! PRJ=..$/..$/..$/.. ! ! PRJNAME=jpeg ! TARGET=jpeglib ! LIBTARGET=NO ! EXTERNAL_WARNINGS_NOT_ERRORS=TRUE ! ! # --- Settings ----------------------------------------------------------- ! ! .INCLUDE : settings.mk ! ! ! .IF "$(GUI)$(CPU)"=="WNTP" ! CFLAGS=$(CFLAGS) -Od ! .ENDIF ! ! # --- Files -------------------------------------------------------- ! ! SLOFILES= $(SLO)$/jcapimin.obj \ ! $(SLO)$/jcapistd.obj \ ! $(SLO)$/jccoefct.obj \ ! $(SLO)$/jccolor.obj \ ! $(SLO)$/jcdctmgr.obj \ ! $(SLO)$/jcinit.obj \ ! $(SLO)$/jchuff.obj \ ! $(SLO)$/jcphuff.obj \ ! $(SLO)$/jcmainct.obj \ ! $(SLO)$/jcmarker.obj \ ! $(SLO)$/jcmaster.obj \ ! $(SLO)$/jcomapi.obj \ ! $(SLO)$/jcparam.obj \ ! $(SLO)$/jcprepct.obj \ ! $(SLO)$/jcsample.obj \ ! $(SLO)$/jdhuff.obj \ ! $(SLO)$/jdinput.obj \ ! $(SLO)$/jdtrans.obj \ ! $(SLO)$/jdapimin.obj \ ! $(SLO)$/jdapistd.obj \ ! $(SLO)$/jdatadst.obj \ ! $(SLO)$/jdatasrc.obj \ ! $(SLO)$/jdcoefct.obj \ ! $(SLO)$/jdcolor.obj \ ! $(SLO)$/jddctmgr.obj \ ! $(SLO)$/jdphuff.obj \ ! $(SLO)$/jdmainct.obj \ ! $(SLO)$/jdmarker.obj \ ! $(SLO)$/jdmaster.obj \ ! $(SLO)$/jdmerge.obj \ ! $(SLO)$/jdpostct.obj \ ! $(SLO)$/jdsample.obj \ ! $(SLO)$/jerror.obj \ ! $(SLO)$/jfdctflt.obj \ ! $(SLO)$/jfdctfst.obj \ ! $(SLO)$/jfdctint.obj \ ! $(SLO)$/jidctflt.obj \ ! $(SLO)$/jidctfst.obj \ ! $(SLO)$/jidctint.obj \ ! $(SLO)$/jidctred.obj \ ! $(SLO)$/jmemmgr.obj \ ! $(SLO)$/jmemnobs.obj \ ! $(SLO)$/jquant1.obj \ ! $(SLO)$/jquant2.obj \ ! $(SLO)$/jutils.obj ! ! LIB1TARGET=$(SLB)$/$(TARGET).lib ! LIB1ARCHIV=$(LB)$/lib$(TARGET).a ! LIB1OBJFILES=$(SLOFILES) ! ! .INCLUDE : target.mk