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