]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/quantize.cpp
fixed rounding errors in variable status bar panes widths computation (patch 1030021)
[wxWidgets.git] / src / common / quantize.cpp
index 47ca3a956d2317df58d39041f569bb7d9de9962b..7d85887189a49c2a5d27fb30ae9dc207582e1288 100644 (file)
@@ -30,7 +30,7 @@
 
 /* modified by Vaclav Slavik for use as jpeglib-independent module */
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma implementation "quantize.h"
 #endif
 
 #endif
 
 #ifndef WX_PRECOMP
+    #include "wx/palette.h"
 #endif
 
+#if wxUSE_IMAGE
+
 #include "wx/image.h"
 #include "wx/quantize.h"
 
 #ifdef __WXMSW__
-#include <windows.h>
+#include "wx/msw/private.h"
 #endif
 
 #include <stdlib.h>
@@ -90,7 +93,7 @@ typedef struct {
         JSAMPLE *sample_range_limit, *srl_orig;
 } j_decompress;
 
-#ifdef __WINDOWS__
+#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
     #define JMETHOD(type,methodname,arglist)  type (__cdecl methodname) arglist
 #else
     #define JMETHOD(type,methodname,arglist)  type (methodname) arglist
@@ -334,7 +337,7 @@ typedef my_cquantizer * my_cquantize_ptr;
 
 void
 prescan_quantize (j_decompress_ptr cinfo, JSAMPARRAY input_buf,
-          JSAMPARRAY output_buf, int num_rows)
+          JSAMPARRAY WXUNUSED(output_buf), int num_rows)
 {
   my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
   register JSAMPROW ptr;
@@ -549,7 +552,7 @@ median_cut (j_decompress_ptr cinfo, boxptr boxlist, int numboxes,
     /* Select box to split.
      * Current algorithm: by population for first half, then by volume.
      */
-    if (numboxes*2 <= desired_colors) {
+    if ((numboxes*2) <= desired_colors) {
       b1 = find_biggest_color_pop(boxlist, numboxes);
     } else {
       b1 = find_biggest_volume(boxlist, numboxes);
@@ -1284,7 +1287,7 @@ finish_pass1 (j_decompress_ptr cinfo)
 
 
 void
-finish_pass2 (j_decompress_ptr cinfo)
+finish_pass2 (j_decompress_ptr WXUNUSED(cinfo))
 {
   /* no work */
 }
@@ -1299,7 +1302,6 @@ start_pass_2_quant (j_decompress_ptr cinfo, bool is_pre_scan)
 {
   my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
   hist3d histogram = cquantize->histogram;
-  int i;
 
   if (is_pre_scan) {
     /* Set up method pointers */
@@ -1311,9 +1313,6 @@ start_pass_2_quant (j_decompress_ptr cinfo, bool is_pre_scan)
     cquantize->pub.color_quantize = pass2_fs_dither;
     cquantize->pub.finish_pass = finish_pass2;
 
-    /* Make sure color count is acceptable */
-    i = cinfo->actual_number_of_colors;
-
     {
       size_t arraysize = (size_t) ((cinfo->output_width + 2) *
                    (3 * sizeof(FSERROR)));
@@ -1331,7 +1330,7 @@ start_pass_2_quant (j_decompress_ptr cinfo, bool is_pre_scan)
   }
   /* Zero the histogram or inverse color map, if necessary */
   if (cquantize->needs_zeroed) {
-    for (i = 0; i < HIST_C0_ELEMS; i++) {
+    for (int i = 0; i < HIST_C0_ELEMS; i++) {
       memset((void  *) histogram[i], 0,
         HIST_C1_ELEMS*HIST_C2_ELEMS * sizeof(histcell));
     }
@@ -1507,8 +1506,6 @@ bool wxQuantize::Quantize(const wxImage& src, wxImage& dest,
 
 {
     int i;
-    int w = src.GetWidth();
-    int h = src.GetHeight();
 
     int windowsSystemColourCount = 20;
 
@@ -1526,8 +1523,9 @@ bool wxQuantize::Quantize(const wxImage& src, wxImage& dest,
 #endif
 
     // create rows info:
+    int h = src.GetHeight();
+    int w = src.GetWidth();
     unsigned char **rows = new unsigned char *[h];
-    h = src.GetHeight(), w = src.GetWidth();
     unsigned char *imgdt = src.GetData();
     for (i = 0; i < h; i++)
         rows[i] = imgdt + 3/*RGB*/ * w * i;
@@ -1580,7 +1578,7 @@ bool wxQuantize::Quantize(const wxImage& src, wxImage& dest,
         delete[] data8bit;
 
 #if wxUSE_PALETTE
-    // Make a wxWindows palette
+    // Make a wxWidgets palette
     if (pPalette)
     {
         unsigned char* r = new unsigned char[256];
@@ -1654,3 +1652,6 @@ bool wxQuantize::Quantize(const wxImage& src,
     return TRUE;
 }
 
+#endif
+    // wxUSE_IMAGE
+