X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3f4fc7967b595ea8257696baff78e1866511223d..c13cace12594b37706e9520a6fbd602c949f8127:/src/common/quantize.cpp diff --git a/src/common/quantize.cpp b/src/common/quantize.cpp index 5f579ba9ef..ac79f1b657 100644 --- a/src/common/quantize.cpp +++ b/src/common/quantize.cpp @@ -48,6 +48,10 @@ #include "wx/image.h" #include "wx/quantize.h" +#ifdef __WXMSW__ +#include +#endif + #include #include @@ -1051,13 +1055,13 @@ pass2_fs_dither (j_decompress_ptr cinfo, dir = -1; dir3 = -3; errorptr = cquantize->fserrors + (width+1)*3; /* => entry after last column */ - cquantize->on_odd_row = false; /* flip for next time */ + cquantize->on_odd_row = FALSE; /* flip for next time */ } else { /* work left to right in this row */ dir = 1; dir3 = 3; errorptr = cquantize->fserrors; /* => entry before first real column */ - cquantize->on_odd_row = true; /* flip for next time */ + cquantize->on_odd_row = TRUE; /* flip for next time */ } /* Preset error values: no error propagated to first pixel from left */ cur0 = cur1 = cur2 = 0; @@ -1217,7 +1221,7 @@ finish_pass1 (j_decompress_ptr cinfo) cinfo->colormap = cquantize->sv_colormap; select_colors(cinfo, cquantize->desired); /* Force next pass to zero the color index table */ - cquantize->needs_zeroed = true; + cquantize->needs_zeroed = TRUE; } @@ -1243,7 +1247,7 @@ start_pass_2_quant (j_decompress_ptr cinfo, bool is_pre_scan) /* Set up method pointers */ cquantize->pub.color_quantize = prescan_quantize; cquantize->pub.finish_pass = finish_pass1; - cquantize->needs_zeroed = true; /* Always zero histogram */ + cquantize->needs_zeroed = TRUE; /* Always zero histogram */ } else { /* Set up method pointers */ cquantize->pub.color_quantize = pass2_fs_dither; @@ -1263,7 +1267,7 @@ start_pass_2_quant (j_decompress_ptr cinfo, bool is_pre_scan) /* Make the error-limit table if we didn't already. */ if (cquantize->error_limiter == NULL) init_error_limit(cinfo); - cquantize->on_odd_row = false; + cquantize->on_odd_row = FALSE; } } @@ -1273,7 +1277,7 @@ start_pass_2_quant (j_decompress_ptr cinfo, bool is_pre_scan) memset((void *) histogram[i], 0, HIST_C1_ELEMS*HIST_C2_ELEMS * sizeof(histcell)); } - cquantize->needs_zeroed = false; + cquantize->needs_zeroed = FALSE; } } @@ -1288,7 +1292,7 @@ new_color_map_2_quant (j_decompress_ptr cinfo) my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize; /* Reset the inverse color map */ - cquantize->needs_zeroed = true; + cquantize->needs_zeroed = TRUE; } @@ -1315,7 +1319,7 @@ jinit_2pass_quantizer (j_decompress_ptr cinfo) for (i = 0; i < HIST_C0_ELEMS; i++) { cquantize->histogram[i] = (hist2d) malloc(HIST_C1_ELEMS*HIST_C2_ELEMS * sizeof(histcell)); } - cquantize->needs_zeroed = true; /* histogram is garbage now */ + cquantize->needs_zeroed = TRUE; /* histogram is garbage now */ /* Allocate storage for the completed colormap, if required. * We do this now since it is storage and may affect @@ -1404,11 +1408,11 @@ void wxQuantize::DoQuantize(unsigned w, unsigned h, unsigned char **in_rows, uns cquantize = (my_cquantize_ptr) dec.cquantize; - cquantize->pub.start_pass(&dec, true); + cquantize->pub.start_pass(&dec, TRUE); cquantize->pub.color_quantize(&dec, in_rows, out_rows, h); cquantize->pub.finish_pass(&dec); - cquantize->pub.start_pass(&dec, false); + cquantize->pub.start_pass(&dec, FALSE); cquantize->pub.color_quantize(&dec, in_rows, out_rows, h); cquantize->pub.finish_pass(&dec); @@ -1562,3 +1566,23 @@ bool wxQuantize::Quantize(const wxImage& src, wxImage& dest, wxPalette** pPalett return TRUE; } +// This version sets a palette in the destination image so you don't +// have to manage it yourself. + +bool wxQuantize::Quantize(const wxImage& src, wxImage& dest, int desiredNoColours, + unsigned char** eightBitData, int flags) +{ + wxPalette* palette = NULL; + if (Quantize(src, dest, & palette, desiredNoColours, eightBitData, flags)) + { + if (palette) + { + dest.SetPalette(* palette); + delete palette; + } + return TRUE; + } + else + return FALSE; +} +