]> git.saurik.com Git - wxWidgets.git/blame_incremental - docs/latex/wx/image.tex
added ReadType convenience functions (patch 1764160)
[wxWidgets.git] / docs / latex / wx / image.tex
... / ...
CommitLineData
1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2%% Name: image.tex
3%% Purpose: wxImage documentation
4%% Author: wxWidgets Team
5%% Modified by:
6%% Created:
7%% RCS-ID: $Id$
8%% Copyright: (c) wxWidgets Team
9%% License: wxWindows license
10%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11
12\section{\class{wxImage}}\label{wximage}
13
14This class encapsulates a platform-independent image. An image can be created
15from data, or using \helpref{wxBitmap::ConvertToImage}{wxbitmapconverttoimage}. An image
16can be loaded from a file in a variety of formats, and is extensible to new formats
17via image format handlers. Functions are available to set and get image bits, so
18it can be used for basic image manipulation.
19
20A wxImage cannot (currently) be drawn directly to a \helpref{wxDC}{wxdc}. Instead,
21a platform-specific \helpref{wxBitmap}{wxbitmap} object must be created from it using
22the \helpref{wxBitmap::wxBitmap(wxImage,int depth)}{wxbitmapctor} constructor.
23This bitmap can then
24be drawn in a device context, using \helpref{wxDC::DrawBitmap}{wxdcdrawbitmap}.
25
26One colour value of the image may be used as a mask colour which will lead to the automatic
27creation of a \helpref{wxMask}{wxmask} object associated to the bitmap object.
28
29\wxheading{Alpha channel support}
30
31Starting from wxWidgets 2.5.0 wxImage supports alpha channel data, that is in
32addition to a byte for the red, green and blue colour components for each pixel
33it also stores a byte representing the pixel opacity. An alpha value of $0$
34corresponds to a transparent pixel (null opacity) while a value of $255$
35means that the pixel is 100\% opaque.
36
37Unlike RGB data, not all images have an alpha channel and before using
38\helpref{GetAlpha}{wximagegetalpha} you should check if this image contains
39an alpha channel with \helpref{HasAlpha}{wximagehasalpha}. Note that currently
40only the PNG format has full alpha channel support so only the images loaded
41from PNG files can have alpha and, if you initialize the image alpha channel
42yourself using \helpref{SetAlpha}{wximagesetalpha}, you should save it in PNG
43format to avoid losing it.
44
45
46\wxheading{Available image handlers}
47
48The following image handlers are available. {\bf wxBMPHandler} is always
49installed by default. To use other image formats, install the appropriate
50handler with \helpref{wxImage::AddHandler}{wximageaddhandler} or call
51\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}.
52
53\twocolwidtha{5cm}%
54\begin{twocollist}
55\twocolitem{\indexit{wxBMPHandler}}{For loading and saving, always installed.}
56\twocolitem{\indexit{wxPNGHandler}}{For loading (including alpha support) and saving.}
57\twocolitem{\indexit{wxJPEGHandler}}{For loading and saving.}
58\twocolitem{\indexit{wxGIFHandler}}{Only for loading, due to legal issues.}
59\twocolitem{\indexit{wxPCXHandler}}{For loading and saving (see below).}
60\twocolitem{\indexit{wxPNMHandler}}{For loading and saving (see below).}
61\twocolitem{\indexit{wxTIFFHandler}}{For loading and saving.}
62\twocolitem{\indexit{wxTGAHandler}}{For loading only.}
63\twocolitem{\indexit{wxIFFHandler}}{For loading only.}
64\twocolitem{\indexit{wxXPMHandler}}{For loading and saving.}
65\twocolitem{\indexit{wxICOHandler}}{For loading and saving.}
66\twocolitem{\indexit{wxCURHandler}}{For loading and saving.}
67\twocolitem{\indexit{wxANIHandler}}{For loading only.}
68\end{twocollist}
69
70When saving in PCX format, {\bf wxPCXHandler} will count the number of
71different colours in the image; if there are 256 or less colours, it will
72save as 8 bit, else it will save as 24 bit.
73
74Loading PNMs only works for ASCII or raw RGB images. When saving in
75PNM format, {\bf wxPNMHandler} will always save as raw RGB.
76
77\wxheading{Derived from}
78
79\helpref{wxObject}{wxobject}
80
81\wxheading{Include files}
82
83<wx/image.h>
84
85\wxheading{Library}
86
87\helpref{wxCore}{librarieslist}
88
89\wxheading{See also}
90
91\helpref{wxBitmap}{wxbitmap},
92\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}
93
94\latexignore{\rtfignore{\wxheading{Members}}}
95
96
97\membersection{wxImage::wxImage}\label{wximagector}
98
99\func{}{wxImage}{\void}
100
101Default constructor.
102
103\func{}{wxImage}{\param{const wxImage\& }{image}}
104
105Copy constructor, uses \helpref{reference counting}{trefcount}.
106
107\func{}{wxImage}{\param{const wxBitmap\&}{ bitmap}}
108
109(Deprecated form, use \helpref{wxBitmap::ConvertToImage}{wxbitmapconverttoimage}
110instead.) Constructs an image from a platform-dependent bitmap. This preserves
111mask information so that bitmaps and images can be converted back
112and forth without loss in that respect.
113
114\func{}{wxImage}{\param{int}{ width}, \param{int}{ height}, \param{bool}{ clear=true}}
115
116Creates an image with the given width and height. If {\it clear} is true, the new image will be initialized to black.
117Otherwise, the image data will be uninitialized.
118
119\func{}{wxImage}{\param{int}{ width}, \param{int}{ height}, \param{unsigned char*}{ data}, \param{bool}{ static\_data = \false}}
120
121Creates an image from given data with the given width and height. If
122{\it static\_data} is true, then wxImage will not delete the actual
123image data in its destructor, otherwise it will free it by calling
124{\it free()}.
125
126\func{}{wxImage}{\param{const wxString\& }{name}, \param{long}{ type = wxBITMAP\_TYPE\_ANY}, \param{int}{ index = -1}}
127
128\func{}{wxImage}{\param{const wxString\& }{name}, \param{const wxString\&}{ mimetype}, \param{int}{ index = -1}}
129
130Loads an image from a file.
131
132\func{}{wxImage}{\param{wxInputStream\& }{stream}, \param{long}{ type = wxBITMAP\_TYPE\_ANY}, \param{int}{ index = -1}}
133
134\func{}{wxImage}{\param{wxInputStream\& }{stream}, \param{const wxString\&}{ mimetype}, \param{int}{ index = -1}}
135
136Loads an image from an input stream.
137
138\func{}{wxImage}{\param{const char* const* }{xpmData}}
139
140Creates an image from XPM data.
141
142\wxheading{Parameters}
143
144\docparam{width}{Specifies the width of the image.}
145
146\docparam{height}{Specifies the height of the image.}
147
148\docparam{name}{Name of the file from which to load the image.}
149
150\docparam{stream}{Opened input stream from which to load the image. Currently, the stream must support seeking.}
151
152\docparam{type}{May be one of the following:
153
154\twocolwidtha{5cm}%
155\begin{twocollist}
156\twocolitem{\indexit{wxBITMAP\_TYPE\_BMP}}{Load a Windows bitmap file.}
157\twocolitem{\indexit{wxBITMAP\_TYPE\_GIF}}{Load a GIF bitmap file.}
158\twocolitem{\indexit{wxBITMAP\_TYPE\_JPEG}}{Load a JPEG bitmap file.}
159\twocolitem{\indexit{wxBITMAP\_TYPE\_PNG}}{Load a PNG bitmap file.}
160\twocolitem{\indexit{wxBITMAP\_TYPE\_PCX}}{Load a PCX bitmap file.}
161\twocolitem{\indexit{wxBITMAP\_TYPE\_PNM}}{Load a PNM bitmap file.}
162\twocolitem{\indexit{wxBITMAP\_TYPE\_TIF}}{Load a TIFF bitmap file.}
163\twocolitem{\indexit{wxBITMAP\_TYPE\_TGA}}{Load a TGA bitmap file.}
164\twocolitem{\indexit{wxBITMAP\_TYPE\_XPM}}{Load a XPM bitmap file.}
165\twocolitem{\indexit{wxBITMAP\_TYPE\_ICO}}{Load a Windows icon file (ICO).}
166\twocolitem{\indexit{wxBITMAP\_TYPE\_CUR}}{Load a Windows cursor file (CUR).}
167\twocolitem{\indexit{wxBITMAP\_TYPE\_ANI}}{Load a Windows animated cursor file (ANI).}
168\twocolitem{\indexit{wxBITMAP\_TYPE\_ANY}}{Will try to autodetect the format.}
169\end{twocollist}}
170
171\docparam{mimetype}{MIME type string (for example 'image/jpeg')}
172
173\docparam{index}{Index of the image to load in the case that the image file contains multiple images.
174This is only used by GIF, ICO and TIFF handlers. The default value (-1) means
175"choose the default image" and is interpreted as the first image (index=0) by
176the GIF and TIFF handler and as the largest and most colourful one by the ICO handler.}
177
178\docparam{xpmData}{A pointer to XPM image data.}
179
180\wxheading{Remarks}
181
182Depending on how wxWidgets has been configured, not all formats may be available.
183
184Note: any handler other than BMP must be previously
185initialized with \helpref{wxImage::AddHandler}{wximageaddhandler} or
186\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}.
187
188Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to get the
189hotspot for loaded cursor file:
190\begin{verbatim}
191 int hotspot_x = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_X);
192 int hotspot_y = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_Y);
193
194\end{verbatim}
195
196\wxheading{See also}
197
198\helpref{wxImage::LoadFile}{wximageloadfile}
199
200\pythonnote{Constructors supported by wxPython are:\par
201\indented{2cm}{\begin{twocollist}
202\twocolitem{{\bf wxImage(name, flag)}}{Loads an image from a file}
203\twocolitem{{\bf wxNullImage()}}{Create a null image (has no size or
204image data)}
205\twocolitem{{\bf wxEmptyImage(width, height)}}{Creates an empty image
206of the given size}
207\twocolitem{{\bf wxImageFromMime(name, mimetype}}{Creates an image from
208the given file of the given mimetype}
209\twocolitem{{\bf wxImageFromBitmap(bitmap)}}{Creates an image from a
210platform-dependent bitmap}
211\end{twocollist}}
212}
213
214\perlnote{Constructors supported by wxPerl are:\par
215\begin{itemize}
216\item{Wx::Image->new( bitmap )}
217\item{Wx::Image->new( icon )}
218\item{Wx::Image->new( width, height )}
219\item{Wx::Image->new( width, height, data )}
220\item{Wx::Image->new( file, type, index )}
221\item{Wx::Image->new( file, mimetype, index )}
222\item{Wx::Image->new( stream, type, index )}
223\item{Wx::Image->new( stream, mimetype, index )}
224\end{itemize}
225}
226
227
228\membersection{wxImage::\destruct{wxImage}}\label{wximagedtor}
229
230\func{}{\destruct{wxImage}}{\void}
231
232Destructor.
233See \helpref{reference-counted object destruction}{refcountdestruct} for more info.
234
235
236\membersection{wxImage::AddHandler}\label{wximageaddhandler}
237
238\func{static void}{AddHandler}{\param{wxImageHandler*}{ handler}}
239
240Adds a handler to the end of the static list of format handlers.
241
242\docparam{handler}{A new image format handler object. There is usually only one instance
243of a given handler class in an application session.}
244
245\wxheading{See also}
246
247\helpref{wxImageHandler}{wximagehandler}
248
249\func{bool}{CanRead}{\param{const wxString\&}{ filename}}
250
251returns true if the current image handlers can read this file
252
253\pythonnote{In wxPython this static method is named {\tt wxImage\_AddHandler}.}
254
255
256\membersection{wxImage::Blur}\label{wximageblur}
257
258\func{wxImage}{Blur}{\param{int}{ blurRadius}}
259
260Blurs the image in both horizontal and vertical directions by the specified pixel
261{\it blurRadius}. This should not be used when using a single mask colour
262for transparency.
263
264\wxheading{See also}
265
266\helpref{BlurHorizontal}{wximagehorzblur}
267\helpref{BlurVertical}{wximagevertblur}
268
269
270\membersection{wxImage::BlurHorizontal}\label{wximagehorzblur}
271
272\func{wxImage}{BlurHorizontal}{\param{int}{ blurRadius}}
273
274Blurs the image in the horizontal direction only. This should not be used
275when using a single mask colour for transparency.
276\wxheading{See also}
277
278\helpref{Blur}{wximageblur}
279\helpref{BlurVertical}{wximagevertblur}
280
281
282\membersection{wxImage::BlurVertical}\label{wximagevertblur}
283
284\func{wxImage}{BlurVertical}{\param{int}{ blurRadius}}
285
286Blurs the image in the vertical direction only. This should not be used
287when using a single mask colour for transparency.
288
289\wxheading{See also}
290
291\helpref{Blur}{wximageblur}
292\helpref{BlurHorizontal}{wximagehorzblur}
293
294
295\membersection{wxImage::CleanUpHandlers}\label{wximagecleanuphandlers}
296
297\func{static void}{CleanUpHandlers}{\void}
298
299Deletes all image handlers.
300
301This function is called by wxWidgets on exit.
302
303
304\membersection{wxImage::ComputeHistogram}\label{wximagecomputehistogram}
305
306\constfunc{unsigned long}{ComputeHistogram}{\param{wxImageHistogram\& }{histogram}}
307
308Computes the histogram of the image. {\it histogram} is a reference to
309wxImageHistogram object. wxImageHistogram is a specialization of
310\helpref{wxHashMap}{wxhashmap} "template" and is defined as follows:
311
312\begin{verbatim}
313class WXDLLEXPORT wxImageHistogramEntry
314{
315public:
316 wxImageHistogramEntry() : index(0), value(0) {}
317 unsigned long index;
318 unsigned long value;
319};
320
321WX_DECLARE_EXPORTED_HASH_MAP(unsigned long, wxImageHistogramEntry,
322 wxIntegerHash, wxIntegerEqual,
323 wxImageHistogram);
324\end{verbatim}
325
326\wxheading{Return value}
327
328Returns number of colours in the histogram.
329
330
331\membersection{wxImage::ConvertAlphaToMask}\label{wximageconvertalphatomask}
332
333\func{bool}{ConvertAlphaToMask}{\param{unsigned char}{ threshold = $128$}}
334
335If the image has alpha channel, this method converts it to mask. All pixels
336with alpha value less than \arg{threshold} are replaced with mask colour
337and the alpha channel is removed. Mask colour is chosen automatically using
338\helpref{FindFirstUnusedColour}{wximagefindfirstunusedcolour}.
339
340If the image image doesn't have alpha channel,
341ConvertAlphaToMask does nothing.
342
343\wxheading{Return value}
344
345\false if FindFirstUnusedColour returns \false, \true otherwise.
346
347
348\membersection{wxImage::ConvertToBitmap}\label{wximageconverttobitmap}
349
350\constfunc{wxBitmap}{ConvertToBitmap}{\void}
351
352Deprecated, use equivalent \helpref{wxBitmap constructor}{wxbitmapctor}
353(which takes wxImage and depth as its arguments) instead.
354
355
356\membersection{wxImage::ConvertToGreyscale}\label{wximageconverttogreyscale}
357
358\constfunc{wxImage}{ConvertToGreyscale}{\param{double}{ lr = 0.299}, \param{double}{ lg = 0.587}, \param{double}{ lb = 0.114}}
359
360Returns a greyscale version of the image. The returned image uses the luminance
361component of the original to calculate the greyscale. Defaults to using
362ITU-T BT.601 when converting to YUV, where every pixel equals
363(R * {\it lr}) + (G * {\it lg}) + (B * {\it lb}).
364
365
366\membersection{wxImage::ConvertToMono}\label{wxbitmapconverttomono}
367
368\constfunc{wxImage}{ConvertToMono}{\param{unsigned char}{ r}, \param{unsigned char}{ g}, \param{unsigned char}{ b}}
369
370Returns monochromatic version of the image. The returned image has white
371colour where the original has {\it (r,g,b)} colour and black colour
372everywhere else.
373
374
375\membersection{wxImage::Copy}\label{wximagecopy}
376
377\constfunc{wxImage}{Copy}{\void}
378
379Returns an identical copy of the image.
380
381
382\membersection{wxImage::Create}\label{wximagecreate}
383
384\func{bool}{Create}{\param{int}{ width}, \param{int}{ height}, \param{bool}{ clear=true}}
385
386Creates a fresh image. If {\it clear} is true, the new image will be initialized to black.
387Otherwise, the image data will be uninitialized.
388
389\wxheading{Parameters}
390
391\docparam{width}{The width of the image in pixels.}
392
393\docparam{height}{The height of the image in pixels.}
394
395\wxheading{Return value}
396
397true if the call succeeded, false otherwise.
398
399
400\membersection{wxImage::Destroy}\label{wximagedestroy}
401
402\func{void}{Destroy}{\void}
403
404Destroys the image data.
405
406
407\membersection{wxImage::FindFirstUnusedColour}\label{wximagefindfirstunusedcolour}
408
409\func{bool}{FindFirstUnusedColour}{\param{unsigned char *}{ r}, \param{unsigned char *}{ g}, \param{unsigned char *}{ b}, \param{unsigned char}{ startR = 1}, \param{unsigned char}{ startG = 0}, \param{unsigned char}{ startB = 0}}
410
411\wxheading{Parameters}
412
413\docparam{r,g,b}{Pointers to variables to save the colour.}
414
415\docparam{startR,startG,startB}{Initial values of the colour. Returned colour
416will have RGB values equal to or greater than these.}
417
418Finds the first colour that is never used in the image. The search begins at
419given initial colour and continues by increasing R, G and B components (in this
420order) by 1 until an unused colour is found or the colour space exhausted.
421
422\wxheading{Return value}
423
424Returns false if there is no unused colour left, true on success.
425
426\wxheading{Notes}
427
428Note that this method involves computing the histogram, which is
429computationally intensive operation.
430
431
432\membersection{wxImage::FindHandler}\label{wximagefindhandler}
433
434\func{static wxImageHandler*}{FindHandler}{\param{const wxString\& }{name}}
435
436Finds the handler with the given name.
437
438\func{static wxImageHandler*}{FindHandler}{\param{const wxString\& }{extension}, \param{long}{ imageType}}
439
440Finds the handler associated with the given extension and type.
441
442\func{static wxImageHandler*}{FindHandler}{\param{long }{imageType}}
443
444Finds the handler associated with the given image type.
445
446\func{static wxImageHandler*}{FindHandlerMime}{\param{const wxString\& }{mimetype}}
447
448Finds the handler associated with the given MIME type.
449
450\docparam{name}{The handler name.}
451
452\docparam{extension}{The file extension, such as ``bmp".}
453
454\docparam{imageType}{The image type, such as wxBITMAP\_TYPE\_BMP.}
455
456\docparam{mimetype}{MIME type.}
457
458\wxheading{Return value}
459
460A pointer to the handler if found, NULL otherwise.
461
462\wxheading{See also}
463
464\helpref{wxImageHandler}{wximagehandler}
465
466
467\membersection{wxImage::GetImageExtWildcard}\label{wximagegetimageextwildcard}
468
469\func{static wxString}{GetImageExtWildcard}{\void}
470
471Iterates all registered wxImageHandler objects, and returns a string containing file extension masks
472suitable for passing to file open/save dialog boxes.
473
474\wxheading{Return value}
475
476The format of the returned string is "(*.ext1;*.ext2)|*.ext1;*.ext2".
477
478It is usually a good idea to prepend a description before passing the result to the dialog.
479
480Example:
481
482\begin{verbatim}
483 wxFileDialog FileDlg( this, "Choose Image", ::wxGetCwd(), "", _("Image Files ") + wxImage::GetImageExtWildcard(), wxFD_OPEN );
484\end{verbatim}
485
486\wxheading{See also}
487
488\helpref{wxImageHandler}{wximagehandler}
489
490
491\membersection{wxImage::GetAlpha}\label{wximagegetalpha}
492
493\constfunc{unsigned char}{GetAlpha}{\param{int}{ x}, \param{int}{ y}}
494
495Returns the alpha value for the given pixel. This function may only be called
496for the images with alpha channel, use \helpref{HasAlpha}{wximagehasalpha} to
497check for this.
498
499The returned value is the {\it opacity} of the image, i.e. the value of $0$
500corresponds to the transparent pixels while the value of $255$ -- to the opaque
501ones.
502
503\constfunc{unsigned char *}{GetAlpha}{\void}
504
505Returns pointer to the array storing the alpha values for this image. This
506pointer is {\tt NULL} for the images without the alpha channel. If the image
507does have it, this pointer may be used to directly manipulate the alpha values
508which are stored as the \helpref{RGB}{wximagegetdata} ones.
509
510
511\membersection{wxImage::GetBlue}\label{wximagegetblue}
512
513\constfunc{unsigned char}{GetBlue}{\param{int}{ x}, \param{int}{ y}}
514
515Returns the blue intensity at the given coordinate.
516
517
518\membersection{wxImage::GetData}\label{wximagegetdata}
519
520\constfunc{unsigned char*}{GetData}{\void}
521
522Returns the image data as an array. This is most often used when doing
523direct image manipulation. The return value points to an array of
524characters in RGBRGBRGB$\ldots$ format in the top-to-bottom, left-to-right
525order, that is the first RGB triplet corresponds to the pixel first pixel of
526the first row, the second one --- to the second pixel of the first row and so
527on until the end of the first row, with second row following after it and so
528on.
529
530You should not delete the returned pointer nor pass it to
531\helpref{wxImage::SetData}{wximagesetdata}.
532
533
534\membersection{wxImage::GetGreen}\label{wximagegetgreen}
535
536\constfunc{unsigned char}{GetGreen}{\param{int}{ x}, \param{int}{ y}}
537
538Returns the green intensity at the given coordinate.
539
540
541\membersection{wxImage::GetImageCount}\label{wximagegetimagecount}
542
543\func{static int}{GetImageCount}{\param{const wxString\&}{ filename}, \param{long}{ type = wxBITMAP\_TYPE\_ANY}}
544
545\func{static int}{GetImageCount}{\param{wxInputStream\&}{ stream}, \param{long}{ type = wxBITMAP\_TYPE\_ANY}}
546
547If the image file contains more than one image and the image handler is capable
548of retrieving these individually, this function will return the number of
549available images.
550
551\docparam{name}{Name of the file to query.}
552
553\docparam{stream}{Opened input stream with image data. Currently, the stream must support seeking.}
554
555\docparam{type}{May be one of the following:
556
557\twocolwidtha{5cm}%
558\begin{twocollist}
559\twocolitem{\indexit{wxBITMAP\_TYPE\_BMP}}{Load a Windows bitmap file.}
560\twocolitem{\indexit{wxBITMAP\_TYPE\_GIF}}{Load a GIF bitmap file.}
561\twocolitem{\indexit{wxBITMAP\_TYPE\_JPEG}}{Load a JPEG bitmap file.}
562\twocolitem{\indexit{wxBITMAP\_TYPE\_PNG}}{Load a PNG bitmap file.}
563\twocolitem{\indexit{wxBITMAP\_TYPE\_PCX}}{Load a PCX bitmap file.}
564\twocolitem{\indexit{wxBITMAP\_TYPE\_PNM}}{Load a PNM bitmap file.}
565\twocolitem{\indexit{wxBITMAP\_TYPE\_TIF}}{Load a TIFF bitmap file.}
566\twocolitem{\indexit{wxBITMAP\_TYPE\_XPM}}{Load a XPM bitmap file.}
567\twocolitem{\indexit{wxBITMAP\_TYPE\_ICO}}{Load a Windows icon file (ICO).}
568\twocolitem{\indexit{wxBITMAP\_TYPE\_CUR}}{Load a Windows cursor file (CUR).}
569\twocolitem{\indexit{wxBITMAP\_TYPE\_ANI}}{Load a Windows animated cursor file (ANI).}
570\twocolitem{\indexit{wxBITMAP\_TYPE\_ANY}}{Will try to autodetect the format.}
571\end{twocollist}}
572
573\wxheading{Return value}
574
575Number of available images. For most image handlers, this is 1 (exceptions
576are TIFF and ICO formats).
577
578
579\membersection{wxImage::GetHandlers}\label{wximagegethandlers}
580
581\func{static wxList\&}{GetHandlers}{\void}
582
583Returns the static list of image format handlers.
584
585\wxheading{See also}
586
587\helpref{wxImageHandler}{wximagehandler}
588
589
590\membersection{wxImage::GetHeight}\label{wximagegetheight}
591
592\constfunc{int}{GetHeight}{\void}
593
594Gets the height of the image in pixels.
595
596
597\membersection{wxImage::GetMaskBlue}\label{wximagegetmaskblue}
598
599\constfunc{unsigned char}{GetMaskBlue}{\void}
600
601Gets the blue value of the mask colour.
602
603
604\membersection{wxImage::GetMaskGreen}\label{wximagegetmaskgreen}
605
606\constfunc{unsigned char}{GetMaskGreen}{\void}
607
608Gets the green value of the mask colour.
609
610
611\membersection{wxImage::GetMaskRed}\label{wximagegetmaskred}
612
613\constfunc{unsigned char}{GetMaskRed}{\void}
614
615Gets the red value of the mask colour.
616
617
618\membersection{wxImage::GetOrFindMaskColour}\label{wximagegetgetorsetmaskcolour}
619
620\constfunc{bool}{GetOrFindMaskColour}{\param{unsigned char}{ *r}, \param{unsigned char}{ *g}, \param{unsigned char}{ *b}}
621
622Get the current mask colour or find a suitable unused colour that could be
623used as a mask colour. Returns {\tt true} if the image currently has a mask.
624
625
626\membersection{wxImage::GetPalette}\label{wximagegetpalette}
627
628\constfunc{const wxPalette\&}{GetPalette}{\void}
629
630Returns the palette associated with the image. Currently the palette is only
631used when converting to wxBitmap under Windows. Some of the wxImage handlers
632have been modified to set the palette if one exists in the image file (usually
633256 or less colour images in GIF or PNG format).
634
635
636\membersection{wxImage::GetRed}\label{wximagegetred}
637
638\constfunc{unsigned char}{GetRed}{\param{int}{ x}, \param{int}{ y}}
639
640Returns the red intensity at the given coordinate.
641
642
643\membersection{wxImage::GetSubImage}\label{wximagegetsubimage}
644
645\constfunc{wxImage}{GetSubImage}{\param{const wxRect\&}{ rect}}
646
647Returns a sub image of the current one as long as the rect belongs entirely to
648the image.
649
650
651\membersection{wxImage::GetWidth}\label{wximagegetwidth}
652
653\constfunc{int}{GetWidth}{\void}
654
655Gets the width of the image in pixels.
656
657\wxheading{See also}
658
659\helpref{wxImage::GetHeight}{wximagegetheight}
660
661
662\membersection{HSVValue::HSVValue}\label{hsvvaluehsvvalue}
663
664\func{}{HSVValue}{\param{double }{h = 0.0}, \param{double }{s = 0.0}, \param{double }{v = 0.0}}
665
666Constructor for HSVValue, an object that contains values for hue, saturation and value which
667represent the value of a color. It is used by \helpref{wxImage::HSVtoRGB}{wximagehsvtorgb}
668and \helpref{wxImage::RGBtoHSV}{wximagergbtohsv}, which
669converts between HSV color space and RGB color space.
670
671\pythonnote{use wxImage\_HSVValue in wxPython}
672
673
674
675\membersection{wxImage::HSVtoRGB}\label{wximagehsvtorgb}
676
677\func{wxImage::RGBValue}{HSVtoRGB}{\param{const HSVValue \& }{hsv}}
678
679Converts a color in HSV color space to RGB color space.
680
681
682\membersection{wxImage::HasAlpha}\label{wximagehasalpha}
683
684\constfunc{bool}{HasAlpha}{\void}
685
686Returns true if this image has alpha channel, false otherwise.
687
688\wxheading{See also}
689
690\helpref{GetAlpha}{wximagegetalpha}, \helpref{SetAlpha}{wximagesetalpha}
691
692
693\membersection{wxImage::HasMask}\label{wximagehasmask}
694
695\constfunc{bool}{HasMask}{\void}
696
697Returns true if there is a mask active, false otherwise.
698
699
700\membersection{wxImage::GetOption}\label{wximagegetoption}
701
702\constfunc{wxString}{GetOption}{\param{const wxString\&}{ name}}
703
704Gets a user-defined option. The function is case-insensitive to {\it name}.
705
706For example, when saving as a JPEG file, the option {\bf quality} is
707used, which is a number between 0 and 100 (0 is terrible, 100 is very good).
708
709\wxheading{See also}
710
711\helpref{wxImage::SetOption}{wximagesetoption},\rtfsp
712\helpref{wxImage::GetOptionInt}{wximagegetoptionint},\rtfsp
713\helpref{wxImage::HasOption}{wximagehasoption}
714
715
716\membersection{wxImage::GetOptionInt}\label{wximagegetoptionint}
717
718\constfunc{int}{GetOptionInt}{\param{const wxString\&}{ name}}
719
720Gets a user-defined option as an integer. The function is case-insensitive to {\it name}.
721
722If the given option is not present, the function returns $0$. Use
723\helpref{wxImage::HasOption}{wximagehasoption} is $0$ is a possibly valid value
724for the option.
725
726Options for wxPNGHandler
727\twocolwidtha{5cm}%
728\begin{twocollist}
729\twocolitem{wxIMAGE\_OPTION\_PNG\_FORMAT}{Format for saving a PNG file.}
730\twocolitem{wxIMAGE\_OPTION\_PNG\_BITDEPTH}{Bit depth for every channel (R/G/B/A).}
731\end{twocollist}
732
733Supported values for wxIMAGE\_OPTION\_PNG\_FORMAT:
734\twocolwidtha{5cm}%
735\begin{twocollist}
736\twocolitem{wxPNG\_TYPE\_COLOUR}{Stores RGB image.}
737\twocolitem{wxPNG\_TYPE\_GREY}{Stores grey image, converts from RGB.}
738\twocolitem{wxPNG\_TYPE\_GREY\_RED}{Stores grey image, uses red value as grey.}
739\end{twocollist}
740
741
742\wxheading{See also}
743
744\helpref{wxImage::SetOption}{wximagesetoption},\rtfsp
745\helpref{wxImage::GetOption}{wximagegetoption}
746
747
748\membersection{wxImage::HasOption}\label{wximagehasoption}
749
750\constfunc{bool}{HasOption}{\param{const wxString\&}{ name}}
751
752Returns true if the given option is present. The function is case-insensitive to {\it name}.
753
754\wxheading{See also}
755
756\helpref{wxImage::SetOption}{wximagesetoption},\rtfsp
757\helpref{wxImage::GetOption}{wximagegetoption},\rtfsp
758\helpref{wxImage::GetOptionInt}{wximagegetoptionint}
759
760
761\membersection{wxImage::InitAlpha}\label{wximageinitalpha}
762
763\func{void}{InitAlpha}{\void}
764
765Initializes the image alpha channel data. It is an error to call it
766if the image already has alpha data. If it doesn't, alpha data will be
767by default initialized to all pixels being fully opaque. But if the image has a
768a mask colour, all mask pixels will be completely transparent.
769
770
771\membersection{wxImage::InitStandardHandlers}\label{wximageinitstandardhandlers}
772
773\func{static void}{InitStandardHandlers}{\void}
774
775Internal use only. Adds standard image format handlers. It only install BMP
776for the time being, which is used by wxBitmap.
777
778This function is called by wxWidgets on startup, and shouldn't be called by
779the user.
780
781\wxheading{See also}
782
783\helpref{wxImageHandler}{wximagehandler},
784\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}
785
786
787\membersection{wxImage::InsertHandler}\label{wximageinserthandler}
788
789\func{static void}{InsertHandler}{\param{wxImageHandler*}{ handler}}
790
791Adds a handler at the start of the static list of format handlers.
792
793\docparam{handler}{A new image format handler object. There is usually only one instance
794of a given handler class in an application session.}
795
796\wxheading{See also}
797
798\helpref{wxImageHandler}{wximagehandler}
799
800
801\membersection{wxImage::IsTransparent}\label{wximageistransparent}
802
803\constfunc{bool}{IsTransparent}{\param{int }{x}, \param{int }{y}, \param{unsigned char}{ threshold = $128$}}
804
805Returns \true if the given pixel is transparent, i.e. either has the mask
806colour if this image has a mask or if this image has alpha channel and alpha
807value of this pixel is strictly less than \arg{threshold}.
808
809
810\membersection{wxImage::LoadFile}\label{wximageloadfile}
811
812\func{bool}{LoadFile}{\param{const wxString\&}{ name}, \param{long}{ type = wxBITMAP\_TYPE\_ANY}, \param{int}{ index = -1}}
813
814\func{bool}{LoadFile}{\param{const wxString\&}{ name}, \param{const wxString\&}{ mimetype}, \param{int}{ index = -1}}
815
816Loads an image from a file. If no handler type is provided, the library will
817try to autodetect the format.
818
819\func{bool}{LoadFile}{\param{wxInputStream\&}{ stream}, \param{long}{ type}, \param{int}{ index = -1}}
820
821\func{bool}{LoadFile}{\param{wxInputStream\&}{ stream}, \param{const wxString\&}{ mimetype}, \param{int}{ index = -1}}
822
823Loads an image from an input stream.
824
825\wxheading{Parameters}
826
827\docparam{name}{Name of the file from which to load the image.}
828
829\docparam{stream}{Opened input stream from which to load the image. Currently, the stream must support seeking.}
830
831\docparam{type}{One of the following values:
832
833\twocolwidtha{5cm}%
834\begin{twocollist}
835\twocolitem{{\bf wxBITMAP\_TYPE\_BMP}}{Load a Windows image file.}
836\twocolitem{{\bf wxBITMAP\_TYPE\_GIF}}{Load a GIF image file.}
837\twocolitem{{\bf wxBITMAP\_TYPE\_JPEG}}{Load a JPEG image file.}
838\twocolitem{{\bf wxBITMAP\_TYPE\_PCX}}{Load a PCX image file.}
839\twocolitem{{\bf wxBITMAP\_TYPE\_PNG}}{Load a PNG image file.}
840\twocolitem{{\bf wxBITMAP\_TYPE\_PNM}}{Load a PNM image file.}
841\twocolitem{{\bf wxBITMAP\_TYPE\_TIF}}{Load a TIFF image file.}
842\twocolitem{{\bf wxBITMAP\_TYPE\_XPM}}{Load a XPM image file.}
843\twocolitem{{\bf wxBITMAP\_TYPE\_ICO}}{Load a Windows icon file (ICO).}
844\twocolitem{{\bf wxBITMAP\_TYPE\_CUR}}{Load a Windows cursor file (CUR).}
845\twocolitem{\indexit{wxBITMAP\_TYPE\_ANI}}{Load a Windows animated cursor file (ANI).}
846\twocolitem{{\bf wxBITMAP\_TYPE\_ANY}}{Will try to autodetect the format.}
847\end{twocollist}}
848
849\docparam{mimetype}{MIME type string (for example 'image/jpeg')}
850
851\docparam{index}{Index of the image to load in the case that the image file contains multiple images.
852This is only used by GIF, ICO and TIFF handlers. The default value (-1) means
853"choose the default image" and is interpreted as the first image (index=0) by
854the GIF and TIFF handler and as the largest and most colourful one by the ICO handler.}
855
856\wxheading{Remarks}
857
858Depending on how wxWidgets has been configured, not all formats may be available.
859
860Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to get the
861hotspot for loaded cursor file:
862\begin{verbatim}
863 int hotspot_x = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_X);
864 int hotspot_y = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_Y);
865
866\end{verbatim}
867
868\wxheading{Return value}
869
870true if the operation succeeded, false otherwise. If the optional index parameter is out of range,
871false is returned and a call to wxLogError() takes place.
872
873\wxheading{See also}
874
875\helpref{wxImage::SaveFile}{wximagesavefile}
876
877\pythonnote{In place of a single overloaded method name, wxPython
878implements the following methods:\par
879\indented{2cm}{\begin{twocollist}
880\twocolitem{{\bf LoadFile(filename, type)}}{Loads an image of the given
881type from a file}
882\twocolitem{{\bf LoadMimeFile(filename, mimetype)}}{Loads an image of the given
883mimetype from a file}
884\end{twocollist}}
885}
886
887\perlnote{Methods supported by wxPerl are:\par
888\begin{itemize}
889\item{bitmap->LoadFile( name, type )}
890\item{bitmap->LoadFile( name, mimetype )}
891\end{itemize}
892}
893
894
895
896\membersection{wxImage::IsOk}\label{wximageisok}
897
898\constfunc{bool}{IsOk}{\void}
899
900Returns true if image data is present.
901
902
903\membersection{RGBValue::RGBValue}\label{rgbvaluergbvalue}
904
905\func{}{RGBValue}{\param{unsigned char }{r = 0}, \param{unsigned char }{g = 0}, \param{unsigned char }{b = 0}}
906
907Constructor for RGBValue, an object that contains values for red, green and blue which
908represent the value of a color. It is used by \helpref{wxImage::HSVtoRGB}{wximagehsvtorgb}
909and \helpref{wxImage::RGBtoHSV}{wximagergbtohsv}, which
910converts between HSV color space and RGB color space.
911
912\pythonnote{use wxImage\_RGBValue in wxPython}
913
914
915\membersection{wxImage::RGBtoHSV}\label{wximagergbtohsv}
916
917\func{wxImage::HSVValue}{RGBtoHSV}{\param{const RGBValue\& }{rgb}}
918
919Converts a color in RGB color space to HSV color space.
920
921
922\membersection{wxImage::RemoveHandler}\label{wximageremovehandler}
923
924\func{static bool}{RemoveHandler}{\param{const wxString\& }{name}}
925
926Finds the handler with the given name, and removes it. The handler
927is not deleted.
928
929\docparam{name}{The handler name.}
930
931\wxheading{Return value}
932
933true if the handler was found and removed, false otherwise.
934
935\wxheading{See also}
936
937\helpref{wxImageHandler}{wximagehandler}
938
939
940\membersection{wxImage::Mirror}\label{wximagemirror}
941
942\constfunc{wxImage}{Mirror}{\param{bool}{ horizontally = true}}
943
944Returns a mirrored copy of the image. The parameter {\it horizontally}
945indicates the orientation.
946
947
948\membersection{wxImage::Replace}\label{wximagereplace}
949
950\func{void}{Replace}{\param{unsigned char}{ r1}, \param{unsigned char}{ g1}, \param{unsigned char}{ b1},
951\param{unsigned char}{ r2}, \param{unsigned char}{ g2}, \param{unsigned char}{ b2}}
952
953Replaces the colour specified by {\it r1,g1,b1} by the colour {\it r2,g2,b2}.
954
955
956\membersection{wxImage::Rescale}\label{wximagerescale}
957
958\func{wxImage \&}{Rescale}{\param{int}{ width}, \param{int}{ height}, \param{int}{ quality = wxIMAGE\_QUALITY\_NORMAL}}
959
960Changes the size of the image in-place by scaling it: after a call to this function,
961the image will have the given width and height.
962
963For a description of the {\it quality} parameter, see the \helpref{Scale}{wximagescale} function.
964
965Returns the (modified) image itself.
966
967\wxheading{See also}
968
969\helpref{Scale}{wximagescale}
970
971
972\membersection{wxImage::Resize}\label{wximageresize}
973
974\func{wxImage \&}{Resize}{\param{const wxSize\&}{ size}, \param{const wxPoint&}{ pos}, \param{int}{ red = -1}, \param{int}{ green = -1}, \param{int}{ blue = -1}}
975
976Changes the size of the image in-place without scaling it by adding either a border
977with the given colour or cropping as necessary. The image is pasted into a new
978image with the given {\it size} and background colour at the position {\it pos}
979relative to the upper left of the new image. If {\it red = green = blue = -1}
980then use either the current mask colour if set or find, use, and set a
981suitable mask colour for any newly exposed areas.
982
983Returns the (modified) image itself.
984
985\wxheading{See also}
986
987\helpref{Size}{wximagesize}
988
989
990\membersection{wxImage::Rotate}\label{wximagerotate}
991
992\func{wxImage}{Rotate}{\param{double}{ angle}, \param{const wxPoint\& }{rotationCentre},
993 \param{bool}{ interpolating = true}, \param{wxPoint*}{ offsetAfterRotation = NULL}}
994
995Rotates the image about the given point, by {\it angle} radians. Passing true
996to {\it interpolating} results in better image quality, but is slower. If the
997image has a mask, then the mask colour is used for the uncovered pixels in the
998rotated image background. Else, black (rgb 0, 0, 0) will be used.
999
1000Returns the rotated image, leaving this image intact.
1001
1002
1003\membersection{wxImage::RotateHue}\label{wximagerotatehue}
1004
1005\func{void}{RotateHue}{\param{double}{ angle}}
1006
1007Rotates the hue of each pixel in the image by {\it angle}, which is a double in
1008the range of -1.0 to +1.0, where -1.0 corresponds to -360 degrees and +1.0 corresponds
1009to +360 degrees.
1010
1011
1012\membersection{wxImage::Rotate90}\label{wximagerotate90}
1013
1014\constfunc{wxImage}{Rotate90}{\param{bool}{ clockwise = true}}
1015
1016Returns a copy of the image rotated 90 degrees in the direction
1017indicated by {\it clockwise}.
1018
1019
1020\membersection{wxImage::SaveFile}\label{wximagesavefile}
1021
1022\constfunc{bool}{SaveFile}{\param{const wxString\& }{name}, \param{int}{ type}}
1023
1024\constfunc{bool}{SaveFile}{\param{const wxString\& }{name}, \param{const wxString\&}{ mimetype}}
1025
1026Saves an image in the named file.
1027
1028\constfunc{bool}{SaveFile}{\param{const wxString\& }{name}}
1029
1030Saves an image in the named file. File type is determined from the extension of the
1031file name. Note that this function may fail if the extension is not recognized! You
1032can use one of the forms above to save images to files with non-standard extensions.
1033
1034\constfunc{bool}{SaveFile}{\param{wxOutputStream\& }{stream}, \param{int}{ type}}
1035
1036\constfunc{bool}{SaveFile}{\param{wxOutputStream\& }{stream}, \param{const wxString\&}{ mimetype}}
1037
1038Saves an image in the given stream.
1039
1040\wxheading{Parameters}
1041
1042\docparam{name}{Name of the file to save the image to.}
1043
1044\docparam{stream}{Opened output stream to save the image to.}
1045
1046\docparam{type}{Currently these types can be used:
1047
1048\twocolwidtha{5cm}%
1049\begin{twocollist}
1050\twocolitem{{\bf wxBITMAP\_TYPE\_BMP}}{Save a BMP image file.}
1051\twocolitem{{\bf wxBITMAP\_TYPE\_JPEG}}{Save a JPEG image file.}
1052\twocolitem{{\bf wxBITMAP\_TYPE\_PNG}}{Save a PNG image file.}
1053\twocolitem{{\bf wxBITMAP\_TYPE\_PCX}}{Save a PCX image file (tries to save as 8-bit if possible, falls back to 24-bit otherwise).}
1054\twocolitem{{\bf wxBITMAP\_TYPE\_PNM}}{Save a PNM image file (as raw RGB always).}
1055\twocolitem{{\bf wxBITMAP\_TYPE\_TIFF}}{Save a TIFF image file.}
1056\twocolitem{{\bf wxBITMAP\_TYPE\_XPM}}{Save a XPM image file.}
1057\twocolitem{{\bf wxBITMAP\_TYPE\_ICO}}{Save a Windows icon file (ICO) (the size may be up to 255 wide by 127 high. A single image is saved in 8 colors at the size supplied).}
1058\twocolitem{{\bf wxBITMAP\_TYPE\_CUR}}{Save a Windows cursor file (CUR).}
1059\end{twocollist}}
1060
1061\docparam{mimetype}{MIME type.}
1062
1063\wxheading{Return value}
1064
1065true if the operation succeeded, false otherwise.
1066
1067\wxheading{Remarks}
1068
1069Depending on how wxWidgets has been configured, not all formats may be available.
1070
1071Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to set the
1072hotspot before saving an image into a cursor file (default hotspot is in
1073the centre of the image):
1074\begin{verbatim}
1075 image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X, hotspotX);
1076 image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_Y, hotspotY);
1077
1078\end{verbatim}
1079
1080\wxheading{See also}
1081
1082\helpref{wxImage::LoadFile}{wximageloadfile}
1083
1084\pythonnote{In place of a single overloaded method name, wxPython
1085implements the following methods:\par
1086\indented{2cm}{\begin{twocollist}
1087\twocolitem{{\bf SaveFile(filename, type)}}{Saves the image using the given
1088type to the named file}
1089\twocolitem{{\bf SaveMimeFile(filename, mimetype)}}{Saves the image using the given
1090mimetype to the named file}
1091\end{twocollist}}
1092}
1093
1094\perlnote{Methods supported by wxPerl are:\par
1095\begin{itemize}
1096\item{bitmap->SaveFile( name, type )}
1097\item{bitmap->SaveFile( name, mimetype )}
1098\end{itemize}
1099}
1100
1101
1102\membersection{wxImage::Scale}\label{wximagescale}
1103
1104\constfunc{wxImage}{Scale}{\param{int}{ width}, \param{int}{ height}, \param{int}{ quality = wxIMAGE\_QUALITY\_NORMAL}}
1105
1106Returns a scaled version of the image. This is also useful for
1107scaling bitmaps in general as the only other way to scale bitmaps
1108is to blit a wxMemoryDC into another wxMemoryDC.
1109
1110\docparam{quality}{Determines what method to use for resampling the image. Can be one of the following:
1111
1112\twocolwidtha{5cm}%
1113\begin{twocollist}
1114\twocolitem{{\bf wxIMAGE\_QUALITY\_NORMAL}}{Uses the normal default scaling method of pixel replication}
1115\twocolitem{{\bf wxIMAGE\_QUALITY\_HIGH}}{Uses bicubic and box averaging resampling methods for upsampling and downsampling respectively}
1116\end{twocollist}}
1117
1118It should be noted that although using wxIMAGE\_QUALITY\_HIGH produces much nicer
1119looking results it is a slower method. Downsampling will use the box averaging method
1120which seems to operate very fast. If you are upsampling larger images using
1121this method you will most likely notice that it is a bit slower and in extreme cases
1122it will be quite substantially slower as the bicubic algorithm has to process a lot of
1123data.
1124
1125It should also be noted that the high quality scaling may not work as expected
1126when using a single mask colour for transparency, as the scaling will blur the
1127image and will therefore remove the mask partially. Using the alpha channel
1128will work.
1129
1130Example:
1131
1132\begin{verbatim}
1133 // get the bitmap from somewhere
1134 wxBitmap bmp = ...;
1135
1136 // rescale it to have size of 32*32
1137 if ( bmp.GetWidth() != 32 || bmp.GetHeight() != 32 )
1138 {
1139 wxImage image = bmp.ConvertToImage();
1140 bmp = wxBitmap(image.Scale(32, 32));
1141
1142 // another possibility:
1143 image.Rescale(32, 32);
1144 bmp = image;
1145 }
1146
1147\end{verbatim}
1148
1149\wxheading{See also}
1150
1151\helpref{Rescale}{wximagerescale}
1152
1153
1154\membersection{wxImage::Size}\label{wximagesize}
1155
1156\constfunc{wxImage}{Size}{\param{const wxSize\&}{ size}, \param{const wxPoint&}{ pos}, \param{int}{ red = -1}, \param{int}{ green = -1}, \param{int}{ blue = -1}}
1157
1158Returns a resized version of this image without scaling it by adding either a border
1159with the given colour or cropping as necessary. The image is pasted into a new
1160image with the given {\it size} and background colour at the position {\it pos}
1161relative to the upper left of the new image. If {\it red = green = blue = -1}
1162then use either the current mask colour if set or find, use, and set a
1163suitable mask colour for any newly exposed areas.
1164
1165\wxheading{See also}
1166
1167\helpref{Resize}{wximageresize}
1168
1169
1170\membersection{wxImage::SetAlpha}\label{wximagesetalpha}
1171
1172\func{void}{SetAlpha}{\param{unsigned char *}{alpha = {\tt NULL}},\param{bool}{ static\_data = \false}}
1173
1174This function is similar to \helpref{SetData}{wximagesetdata} and has similar
1175restrictions. The pointer passed to it may however be {\tt NULL} in which case
1176the function will allocate the alpha array internally -- this is useful to add
1177alpha channel data to an image which doesn't have any. If the pointer is not
1178{\tt NULL}, it must have one byte for each image pixel and be allocated with
1179{\tt malloc()}. wxImage takes ownership of the pointer and will free it unless
1180\arg{static\_data} parameter is set to \true -- in this case the caller should
1181do it.
1182
1183\func{void}{SetAlpha}{\param{int }{x}, \param{int }{y}, \param{unsigned char }{alpha}}
1184
1185Sets the alpha value for the given pixel. This function should only be called
1186if the image has alpha channel data, use \helpref{HasAlpha}{wximagehasalpha} to
1187check for this.
1188
1189
1190\membersection{wxImage::SetData}\label{wximagesetdata}
1191
1192\func{void}{SetData}{\param{unsigned char*}{data}}
1193
1194Sets the image data without performing checks. The data given must have
1195the size (width*height*3) or results will be unexpected. Don't use this
1196method if you aren't sure you know what you are doing.
1197
1198The data must have been allocated with {\tt malloc()}, {\large {\bf NOT}} with
1199{\tt operator new}.
1200
1201After this call the pointer to the data is owned by the wxImage object,
1202that will be responsible for deleting it.
1203Do not pass to this function a pointer obtained through
1204\helpref{wxImage::GetData}{wximagegetdata}.
1205
1206
1207\membersection{wxImage::SetMask}\label{wximagesetmask}
1208
1209\func{void}{SetMask}{\param{bool}{ hasMask = true}}
1210
1211Specifies whether there is a mask or not. The area of the mask is determined by the current mask colour.
1212
1213
1214\membersection{wxImage::SetMaskColour}\label{wximagesetmaskcolour}
1215
1216\func{void}{SetMaskColour}{\param{unsigned char }{red}, \param{unsigned char }{green}, \param{unsigned char }{blue}}
1217
1218Sets the mask colour for this image (and tells the image to use the mask).
1219
1220
1221\membersection{wxImage::SetMaskFromImage}\label{wximagesetmaskfromimage}
1222
1223\func{bool}{SetMaskFromImage}{\param{const wxImage\&}{ mask}, \param{unsigned char}{ mr}, \param{unsigned char}{ mg}, \param{unsigned char}{ mb}}
1224
1225\wxheading{Parameters}
1226
1227\docparam{mask}{The mask image to extract mask shape from. Must have same dimensions as the image.}
1228
1229\docparam{mr,mg,mb}{RGB value of pixels in {\it mask} that will be used to create the mask.}
1230
1231Sets image's mask so that the pixels that have RGB value of {\it mr,mg,mb}
1232in {\it mask} will be masked in the image. This is done by first finding an
1233unused colour in the image, setting this colour as the mask colour and then
1234using this colour to draw all pixels in the image who corresponding pixel
1235in {\it mask} has given RGB value.
1236
1237\wxheading{Return value}
1238
1239Returns false if {\it mask} does not have same dimensions as the image or if
1240there is no unused colour left. Returns true if the mask was successfully
1241applied.
1242
1243\wxheading{Notes}
1244
1245Note that this method involves computing the histogram, which is
1246computationally intensive operation.
1247
1248
1249\membersection{wxImage::SetOption}\label{wximagesetoption}
1250
1251\func{void}{SetOption}{\param{const wxString\&}{ name}, \param{const wxString\&}{ value}}
1252
1253\func{void}{SetOption}{\param{const wxString\&}{ name}, \param{int}{ value}}
1254
1255Sets a user-defined option. The function is case-insensitive to {\it name}.
1256
1257For example, when saving as a JPEG file, the option {\bf quality} is
1258used, which is a number between 0 and 100 (0 is terrible, 100 is very good).
1259
1260\wxheading{See also}
1261
1262\helpref{wxImage::GetOption}{wximagegetoption},\rtfsp
1263\helpref{wxImage::GetOptionInt}{wximagegetoptionint},\rtfsp
1264\helpref{wxImage::HasOption}{wximagehasoption}
1265
1266
1267\membersection{wxImage::SetPalette}\label{wximagesetpalette}
1268
1269\func{void}{SetPalette}{\param{const wxPalette\&}{ palette}}
1270
1271Associates a palette with the image. The palette may be used when converting
1272wxImage to wxBitmap (MSW only at present) or in file save operations (none as yet).
1273
1274
1275\membersection{wxImage::SetRGB}\label{wximagesetrgb}
1276
1277\func{void}{SetRGB}{\param{int }{x}, \param{int }{y}, \param{unsigned char }{red}, \param{unsigned char }{green}, \param{unsigned char }{blue}}
1278
1279Sets the pixel at the given coordinate. This routine performs bounds-checks
1280for the coordinate so it can be considered a safe way to manipulate the
1281data, but in some cases this might be too slow so that the data will have to
1282be set directly. In that case you will have to get access to the image data
1283using the \helpref{GetData}{wximagegetdata} method.
1284
1285
1286\membersection{wxImage::SetRGB}\label{wximagesetrgbrect}
1287
1288\func{void}{SetRGB}{\param{wxRect \& }{rect}, \param{unsigned char }{red}, \param{unsigned char }{green}, \param{unsigned char }{blue}}
1289
1290Sets the colour of the pixels within the given rectangle. This routine performs
1291bounds-checks for the coordinate so it can be considered a safe way to manipulate the
1292data.
1293
1294
1295\membersection{wxImage::operator $=$}\label{wximageassign}
1296
1297\func{wxImage\& }{operator $=$}{\param{const wxImage\& }{image}}
1298
1299Assignment operator, using \helpref{reference counting}{trefcount}.
1300
1301\wxheading{Parameters}
1302
1303\docparam{image}{Image to assign.}
1304
1305\wxheading{Return value}
1306
1307Returns 'this' object.
1308
1309
1310
1311\section{\class{wxImageHandler}}\label{wximagehandler}
1312
1313This is the base class for implementing image file loading/saving, and image creation from data.
1314It is used within wxImage and is not normally seen by the application.
1315
1316If you wish to extend the capabilities of wxImage, derive a class from wxImageHandler
1317and add the handler using \helpref{wxImage::AddHandler}{wximageaddhandler} in your
1318application initialisation.
1319
1320\wxheading{Note (Legal Issue)}
1321
1322This software is based in part on the work of the Independent JPEG Group.
1323
1324(Applies when wxWidgets is linked with JPEG support. wxJPEGHandler uses libjpeg
1325created by IJG.)
1326
1327\wxheading{Derived from}
1328
1329\helpref{wxObject}{wxobject}
1330
1331\wxheading{Include files}
1332
1333<wx/image.h>
1334
1335\wxheading{Library}
1336
1337\helpref{wxCore}{librarieslist}
1338
1339\wxheading{See also}
1340
1341\helpref{wxImage}{wximage},
1342\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}
1343
1344\latexignore{\rtfignore{\wxheading{Members}}}
1345
1346
1347\membersection{wxImageHandler::wxImageHandler}\label{wximagehandlerctor}
1348
1349\func{}{wxImageHandler}{\void}
1350
1351Default constructor. In your own default constructor, initialise the members
1352m\_name, m\_extension and m\_type.
1353
1354
1355\membersection{wxImageHandler::\destruct{wxImageHandler}}\label{wximagehandlerdtor}
1356
1357\func{}{\destruct{wxImageHandler}}{\void}
1358
1359Destroys the wxImageHandler object.
1360
1361
1362\membersection{wxImageHandler::GetName}\label{wximagehandlergetname}
1363
1364\constfunc{const wxString\&}{GetName}{\void}
1365
1366Gets the name of this handler.
1367
1368
1369\membersection{wxImageHandler::GetExtension}\label{wximagehandlergetextension}
1370
1371\constfunc{const wxString\&}{GetExtension}{\void}
1372
1373Gets the file extension associated with this handler.
1374
1375
1376\membersection{wxImageHandler::GetImageCount}\label{wximagehandlergetimagecount}
1377
1378\func{int}{GetImageCount}{\param{wxInputStream\&}{ stream}}
1379
1380If the image file contains more than one image and the image handler is capable
1381of retrieving these individually, this function will return the number of
1382available images.
1383
1384\docparam{stream}{Opened input stream for reading image data. Currently, the stream must support seeking.}
1385
1386\wxheading{Return value}
1387
1388Number of available images. For most image handlers, this is 1 (exceptions
1389are TIFF and ICO formats).
1390
1391
1392\membersection{wxImageHandler::GetType}\label{wximagehandlergettype}
1393
1394\constfunc{long}{GetType}{\void}
1395
1396Gets the image type associated with this handler.
1397
1398
1399\membersection{wxImageHandler::GetMimeType}\label{wximagehandlergetmimetype}
1400
1401\constfunc{const wxString\&}{GetMimeType}{\void}
1402
1403Gets the MIME type associated with this handler.
1404
1405
1406\membersection{wxImageHandler::LoadFile}\label{wximagehandlerloadfile}
1407
1408\func{bool}{LoadFile}{\param{wxImage* }{image}, \param{wxInputStream\&}{ stream}, \param{bool}{ verbose=true}, \param{int}{ index=0}}
1409
1410Loads a image from a stream, putting the resulting data into {\it image}. If the image file contains
1411more than one image and the image handler is capable of retrieving these individually, {\it index}
1412indicates which image to read from the stream.
1413
1414\wxheading{Parameters}
1415
1416\docparam{image}{The image object which is to be affected by this operation.}
1417
1418\docparam{stream}{Opened input stream for reading image data.}
1419
1420\docparam{verbose}{If set to true, errors reported by the image handler will produce wxLogMessages.}
1421
1422\docparam{index}{The index of the image in the file (starting from zero).}
1423
1424\wxheading{Return value}
1425
1426true if the operation succeeded, false otherwise.
1427
1428\wxheading{See also}
1429
1430\helpref{wxImage::LoadFile}{wximageloadfile},
1431\helpref{wxImage::SaveFile}{wximagesavefile},
1432\helpref{wxImageHandler::SaveFile}{wximagehandlersavefile}
1433
1434
1435\membersection{wxImageHandler::SaveFile}\label{wximagehandlersavefile}
1436
1437\func{bool}{SaveFile}{\param{wxImage* }{image}, \param{wxOutputStream\& }{stream}}
1438
1439Saves a image in the output stream.
1440
1441\wxheading{Parameters}
1442
1443\docparam{image}{The image object which is to be affected by this operation.}
1444
1445\docparam{stream}{Opened output stream for writing the data.}
1446
1447\wxheading{Return value}
1448
1449true if the operation succeeded, false otherwise.
1450
1451\wxheading{See also}
1452
1453\helpref{wxImage::LoadFile}{wximageloadfile},
1454\helpref{wxImage::SaveFile}{wximagesavefile},
1455\helpref{wxImageHandler::LoadFile}{wximagehandlerloadfile}
1456
1457
1458\membersection{wxImageHandler::SetName}\label{wximagehandlersetname}
1459
1460\func{void}{SetName}{\param{const wxString\& }{name}}
1461
1462Sets the handler name.
1463
1464\wxheading{Parameters}
1465
1466\docparam{name}{Handler name.}
1467
1468
1469\membersection{wxImageHandler::SetExtension}\label{wximagehandlersetextension}
1470
1471\func{void}{SetExtension}{\param{const wxString\& }{extension}}
1472
1473Sets the handler extension.
1474
1475\wxheading{Parameters}
1476
1477\docparam{extension}{Handler extension.}
1478
1479
1480\membersection{wxImageHandler::SetMimeType}\label{wximagehandlersetmimetype}
1481
1482\func{void}{SetMimeType}{\param{const wxString\& }{mimetype}}
1483
1484Sets the handler MIME type.
1485
1486\wxheading{Parameters}
1487
1488\docparam{mimename}{Handler MIME type.}
1489
1490
1491\membersection{wxImageHandler::SetType}\label{wximagehandlersettype}
1492
1493\func{void}{SetType}{\param{long }{type}}
1494
1495Sets the handler type.
1496
1497\wxheading{Parameters}
1498
1499\docparam{name}{Handler type.}