1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxQuantizer class
4 // Author: Julian Smart
7 // Copyright: (c) Julian Smart
9 /////////////////////////////////////////////////////////////////////////////
11 #ifndef _WX_QUANTIZE_H_
12 #define _WX_QUANTIZE_H_
14 #include "wx/object.h"
19 * Copyright (C) 1991-1996, Thomas G. Lane.
20 * This file is part of the Independent JPEG Group's software.
21 * For conditions of distribution and use, see the accompanying README file.
24 class WXDLLIMPEXP_FWD_CORE wxImage
;
25 class WXDLLIMPEXP_FWD_CORE wxPalette
;
29 * Based on the JPEG quantization code. Reduces the number of colours in a wxImage.
32 #define wxQUANTIZE_INCLUDE_WINDOWS_COLOURS 0x01
33 #define wxQUANTIZE_RETURN_8BIT_DATA 0x02
34 #define wxQUANTIZE_FILL_DESTINATION_IMAGE 0x04
36 class WXDLLIMPEXP_CORE wxQuantize
: public wxObject
39 DECLARE_DYNAMIC_CLASS(wxQuantize
)
44 virtual ~wxQuantize() {}
48 // Reduce the colours in the source image and put the result into the
49 // destination image. Both images may be the same, to overwrite the source image.
50 // Specify an optional palette pointer to receive the resulting palette.
51 // This palette may be passed to ConvertImageToBitmap, for example.
52 // If you pass a palette pointer, you must free the palette yourself.
54 static bool Quantize(const wxImage
& src
, wxImage
& dest
, wxPalette
** pPalette
, int desiredNoColours
= 236,
55 unsigned char** eightBitData
= 0, int flags
= wxQUANTIZE_INCLUDE_WINDOWS_COLOURS
|wxQUANTIZE_FILL_DESTINATION_IMAGE
|wxQUANTIZE_RETURN_8BIT_DATA
);
57 // This version sets a palette in the destination image so you don't
58 // have to manage it yourself.
60 static bool Quantize(const wxImage
& src
, wxImage
& dest
, int desiredNoColours
= 236,
61 unsigned char** eightBitData
= 0, int flags
= wxQUANTIZE_INCLUDE_WINDOWS_COLOURS
|wxQUANTIZE_FILL_DESTINATION_IMAGE
|wxQUANTIZE_RETURN_8BIT_DATA
);
65 // Converts input bitmap(s) into 8bit representation with custom palette
67 // in_rows and out_rows are arrays [0..h-1] of pointer to rows
68 // (in_rows contains w * 3 bytes per row, out_rows w bytes per row)
69 // fills out_rows with indexes into palette (which is also stored into palette variable)
70 static void DoQuantize(unsigned w
, unsigned h
, unsigned char **in_rows
, unsigned char **out_rows
, unsigned char *palette
, int desiredNoColours
);