#include "wx/image.h"
#include "wx/quantize.h"
+#ifdef __WXMSW__
+#include <windows.h>
+#endif
+
#include <stdlib.h>
#include <string.h>
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;
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;
}
/* 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;
/* 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;
}
}
memset((void *) histogram[i], 0,
HIST_C1_ELEMS*HIST_C2_ELEMS * sizeof(histcell));
}
- cquantize->needs_zeroed = false;
+ cquantize->needs_zeroed = FALSE;
}
}
my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
/* Reset the inverse color map */
- cquantize->needs_zeroed = true;
+ cquantize->needs_zeroed = TRUE;
}
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
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);
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;
+}
+