]> git.saurik.com Git - wxWidgets.git/blob - docs/latex/wx/image.tex
Added wxRect::Intersect() documentation (patch 1868322 from Laurent Humbertclaude).
[wxWidgets.git] / docs / latex / wx / image.tex
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
14 This class encapsulates a platform-independent image. An image can be created
15 from data, or using \helpref{wxBitmap::ConvertToImage}{wxbitmapconverttoimage}. An image
16 can be loaded from a file in a variety of formats, and is extensible to new formats
17 via image format handlers. Functions are available to set and get image bits, so
18 it can be used for basic image manipulation.
19
20 A wxImage cannot (currently) be drawn directly to a \helpref{wxDC}{wxdc}. Instead,
21 a platform-specific \helpref{wxBitmap}{wxbitmap} object must be created from it using
22 the \helpref{wxBitmap::wxBitmap(wxImage,int depth)}{wxbitmapctor} constructor.
23 This bitmap can then
24 be drawn in a device context, using \helpref{wxDC::DrawBitmap}{wxdcdrawbitmap}.
25
26 One colour value of the image may be used as a mask colour which will lead to the automatic
27 creation of a \helpref{wxMask}{wxmask} object associated to the bitmap object.
28
29 \wxheading{Alpha channel support}
30
31 Starting from wxWidgets 2.5.0 wxImage supports alpha channel data, that is in
32 addition to a byte for the red, green and blue colour components for each pixel
33 it also stores a byte representing the pixel opacity. An alpha value of $0$
34 corresponds to a transparent pixel (null opacity) while a value of $255$
35 means that the pixel is 100\% opaque.
36
37 Unlike RGB data, not all images have an alpha channel and before using
38 \helpref{GetAlpha}{wximagegetalpha} you should check if this image contains
39 an alpha channel with \helpref{HasAlpha}{wximagehasalpha}. Note that currently
40 only the PNG format has full alpha channel support so only the images loaded
41 from PNG files can have alpha and, if you initialize the image alpha channel
42 yourself using \helpref{SetAlpha}{wximagesetalpha}, you should save it in PNG
43 format to avoid losing it.
44
45
46 \wxheading{Available image handlers}
47
48 The following image handlers are available. {\bf wxBMPHandler} is always
49 installed by default. To use other image formats, install the appropriate
50 handler 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
70 When saving in PCX format, {\bf wxPCXHandler} will count the number of
71 different colours in the image; if there are 256 or less colours, it will
72 save as 8 bit, else it will save as 24 bit.
73
74 Loading PNMs only works for ASCII or raw RGB images. When saving in
75 PNM 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
101 Default constructor.
102
103 \func{}{wxImage}{\param{const wxImage\& }{image}}
104
105 Copy constructor, uses \helpref{reference counting}{trefcount}.
106
107 \func{}{wxImage}{\param{const wxBitmap\&}{ bitmap}}
108
109 (Deprecated form, use \helpref{wxBitmap::ConvertToImage}{wxbitmapconverttoimage}
110 instead.) Constructs an image from a platform-dependent bitmap. This preserves
111 mask information so that bitmaps and images can be converted back
112 and forth without loss in that respect.
113
114 \func{}{wxImage}{\param{int}{ width}, \param{int}{ height}, \param{bool}{ clear=true}}
115
116 Creates an image with the given width and height. If {\it clear} is true, the new image will be initialized to black.
117 Otherwise, 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
121 Creates 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
123 image 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
130 Loads 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
136 Loads an image from an input stream.
137
138 \func{}{wxImage}{\param{const char* const* }{xpmData}}
139
140 Creates 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.
174 This 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
176 the 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
182 Depending on how wxWidgets has been configured, not all formats may be available.
183
184 Note: any handler other than BMP must be previously
185 initialized with \helpref{wxImage::AddHandler}{wximageaddhandler} or
186 \helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}.
187
188 Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to get the
189 hotspot 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
204 image data)}
205 \twocolitem{{\bf wxEmptyImage(width, height)}}{Creates an empty image
206 of the given size}
207 \twocolitem{{\bf wxImageFromMime(name, mimetype}}{Creates an image from
208 the given file of the given mimetype}
209 \twocolitem{{\bf wxImageFromBitmap(bitmap)}}{Creates an image from a
210 platform-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
232 Destructor.
233 See \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
240 Adds 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
243 of 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
251 returns 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
260 Blurs 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
262 for 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
274 Blurs the image in the horizontal direction only. This should not be used
275 when 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
286 Blurs the image in the vertical direction only. This should not be used
287 when 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
299 Deletes all image handlers.
300
301 This 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
308 Computes the histogram of the image. {\it histogram} is a reference to
309 wxImageHistogram object. wxImageHistogram is a specialization of
310 \helpref{wxHashMap}{wxhashmap} "template" and is defined as follows:
311
312 \begin{verbatim}
313 class WXDLLEXPORT wxImageHistogramEntry
314 {
315 public:
316 wxImageHistogramEntry() : index(0), value(0) {}
317 unsigned long index;
318 unsigned long value;
319 };
320
321 WX_DECLARE_EXPORTED_HASH_MAP(unsigned long, wxImageHistogramEntry,
322 wxIntegerHash, wxIntegerEqual,
323 wxImageHistogram);
324 \end{verbatim}
325
326 \wxheading{Return value}
327
328 Returns 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
335 If the image has alpha channel, this method converts it to mask. All pixels
336 with alpha value less than \arg{threshold} are replaced with mask colour
337 and the alpha channel is removed. Mask colour is chosen automatically using
338 \helpref{FindFirstUnusedColour}{wximagefindfirstunusedcolour}.
339
340 If the image image doesn't have alpha channel,
341 ConvertAlphaToMask 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
352 Deprecated, 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
360 Returns a greyscale version of the image. The returned image uses the luminance
361 component of the original to calculate the greyscale. Defaults to using
362 ITU-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
370 Returns monochromatic version of the image. The returned image has white
371 colour where the original has {\it (r,g,b)} colour and black colour
372 everywhere else.
373
374
375 \membersection{wxImage::Copy}\label{wximagecopy}
376
377 \constfunc{wxImage}{Copy}{\void}
378
379 Returns 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
386 Creates a fresh image. If {\it clear} is true, the new image will be initialized to black.
387 Otherwise, 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
397 true if the call succeeded, false otherwise.
398
399
400 \membersection{wxImage::Destroy}\label{wximagedestroy}
401
402 \func{void}{Destroy}{\void}
403
404 Destroys 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
416 will have RGB values equal to or greater than these.}
417
418 Finds the first colour that is never used in the image. The search begins at
419 given initial colour and continues by increasing R, G and B components (in this
420 order) by 1 until an unused colour is found or the colour space exhausted.
421
422 \wxheading{Return value}
423
424 Returns false if there is no unused colour left, true on success.
425
426 \wxheading{Notes}
427
428 Note that this method involves computing the histogram, which is
429 computationally intensive operation.
430
431
432 \membersection{wxImage::FindHandler}\label{wximagefindhandler}
433
434 \func{static wxImageHandler*}{FindHandler}{\param{const wxString\& }{name}}
435
436 Finds the handler with the given name.
437
438 \func{static wxImageHandler*}{FindHandler}{\param{const wxString\& }{extension}, \param{long}{ imageType}}
439
440 Finds the handler associated with the given extension and type.
441
442 \func{static wxImageHandler*}{FindHandler}{\param{long }{imageType}}
443
444 Finds the handler associated with the given image type.
445
446 \func{static wxImageHandler*}{FindHandlerMime}{\param{const wxString\& }{mimetype}}
447
448 Finds 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
460 A 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
471 Iterates all registered wxImageHandler objects, and returns a string containing file extension masks
472 suitable for passing to file open/save dialog boxes.
473
474 \wxheading{Return value}
475
476 The format of the returned string is "(*.ext1;*.ext2)|*.ext1;*.ext2".
477
478 It is usually a good idea to prepend a description before passing the result to the dialog.
479
480 Example:
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
495 Returns the alpha value for the given pixel. This function may only be called
496 for the images with alpha channel, use \helpref{HasAlpha}{wximagehasalpha} to
497 check for this.
498
499 The returned value is the {\it opacity} of the image, i.e. the value of $0$
500 corresponds to the transparent pixels while the value of $255$ -- to the opaque
501 ones.
502
503 \constfunc{unsigned char *}{GetAlpha}{\void}
504
505 Returns pointer to the array storing the alpha values for this image. This
506 pointer is {\tt NULL} for the images without the alpha channel. If the image
507 does have it, this pointer may be used to directly manipulate the alpha values
508 which 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
515 Returns the blue intensity at the given coordinate.
516
517
518 \membersection{wxImage::GetData}\label{wximagegetdata}
519
520 \constfunc{unsigned char*}{GetData}{\void}
521
522 Returns the image data as an array. This is most often used when doing
523 direct image manipulation. The return value points to an array of
524 characters in RGBRGBRGB$\ldots$ format in the top-to-bottom, left-to-right
525 order, that is the first RGB triplet corresponds to the pixel first pixel of
526 the first row, the second one --- to the second pixel of the first row and so
527 on until the end of the first row, with second row following after it and so
528 on.
529
530 You 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
538 Returns 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
547 If the image file contains more than one image and the image handler is capable
548 of retrieving these individually, this function will return the number of
549 available 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
575 Number of available images. For most image handlers, this is 1 (exceptions
576 are TIFF and ICO formats).
577
578
579 \membersection{wxImage::GetHandlers}\label{wximagegethandlers}
580
581 \func{static wxList\&}{GetHandlers}{\void}
582
583 Returns 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
594 Gets the height of the image in pixels.
595
596
597 \membersection{wxImage::GetMaskBlue}\label{wximagegetmaskblue}
598
599 \constfunc{unsigned char}{GetMaskBlue}{\void}
600
601 Gets the blue value of the mask colour.
602
603
604 \membersection{wxImage::GetMaskGreen}\label{wximagegetmaskgreen}
605
606 \constfunc{unsigned char}{GetMaskGreen}{\void}
607
608 Gets the green value of the mask colour.
609
610
611 \membersection{wxImage::GetMaskRed}\label{wximagegetmaskred}
612
613 \constfunc{unsigned char}{GetMaskRed}{\void}
614
615 Gets 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
622 Get the current mask colour or find a suitable unused colour that could be
623 used 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
630 Returns the palette associated with the image. Currently the palette is only
631 used when converting to wxBitmap under Windows. Some of the wxImage handlers
632 have been modified to set the palette if one exists in the image file (usually
633 256 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
640 Returns 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
647 Returns a sub image of the current one as long as the rect belongs entirely to
648 the image.
649
650
651 \membersection{wxImage::GetWidth}\label{wximagegetwidth}
652
653 \constfunc{int}{GetWidth}{\void}
654
655 Gets 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
666 Constructor for HSVValue, an object that contains values for hue, saturation and value which
667 represent the value of a color. It is used by \helpref{wxImage::HSVtoRGB}{wximagehsvtorgb}
668 and \helpref{wxImage::RGBtoHSV}{wximagergbtohsv}, which
669 converts 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
679 Converts 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
686 Returns 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
697 Returns 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
704 Gets a user-defined option. The function is case-insensitive to {\it name}.
705
706 For example, when saving as a JPEG file, the option {\bf quality} is
707 used, 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
720 Gets a user-defined option as an integer. The function is case-insensitive to {\it name}.
721
722 If the given option is not present, the function returns $0$. Use
723 \helpref{wxImage::HasOption}{wximagehasoption} is $0$ is a possibly valid value
724 for the option.
725
726 Options 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
733 Supported 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
752 Returns 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
765 Initializes the image alpha channel data. It is an error to call it
766 if the image already has alpha data. If it doesn't, alpha data will be
767 by default initialized to all pixels being fully opaque. But if the image has a
768 a 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
775 Internal use only. Adds standard image format handlers. It only install BMP
776 for the time being, which is used by wxBitmap.
777
778 This function is called by wxWidgets on startup, and shouldn't be called by
779 the user.
780
781 \wxheading{See also}
782
783 \helpref{wxImageHandler}{wximagehandler},
784 \helpref{wxInitAllImageHandlers}{wxinitallimagehandlers},
785 \helpref{wxQuantize}{wxquantize}
786
787
788 \membersection{wxImage::InsertHandler}\label{wximageinserthandler}
789
790 \func{static void}{InsertHandler}{\param{wxImageHandler*}{ handler}}
791
792 Adds a handler at the start of the static list of format handlers.
793
794 \docparam{handler}{A new image format handler object. There is usually only one instance
795 of a given handler class in an application session.}
796
797 \wxheading{See also}
798
799 \helpref{wxImageHandler}{wximagehandler}
800
801
802 \membersection{wxImage::IsTransparent}\label{wximageistransparent}
803
804 \constfunc{bool}{IsTransparent}{\param{int }{x}, \param{int }{y}, \param{unsigned char}{ threshold = $128$}}
805
806 Returns \true if the given pixel is transparent, i.e. either has the mask
807 colour if this image has a mask or if this image has alpha channel and alpha
808 value of this pixel is strictly less than \arg{threshold}.
809
810
811 \membersection{wxImage::LoadFile}\label{wximageloadfile}
812
813 \func{bool}{LoadFile}{\param{const wxString\&}{ name}, \param{long}{ type = wxBITMAP\_TYPE\_ANY}, \param{int}{ index = -1}}
814
815 \func{bool}{LoadFile}{\param{const wxString\&}{ name}, \param{const wxString\&}{ mimetype}, \param{int}{ index = -1}}
816
817 Loads an image from a file. If no handler type is provided, the library will
818 try to autodetect the format.
819
820 \func{bool}{LoadFile}{\param{wxInputStream\&}{ stream}, \param{long}{ type}, \param{int}{ index = -1}}
821
822 \func{bool}{LoadFile}{\param{wxInputStream\&}{ stream}, \param{const wxString\&}{ mimetype}, \param{int}{ index = -1}}
823
824 Loads an image from an input stream.
825
826 \wxheading{Parameters}
827
828 \docparam{name}{Name of the file from which to load the image.}
829
830 \docparam{stream}{Opened input stream from which to load the image. Currently, the stream must support seeking.}
831
832 \docparam{type}{One of the following values:
833
834 \twocolwidtha{5cm}%
835 \begin{twocollist}
836 \twocolitem{{\bf wxBITMAP\_TYPE\_BMP}}{Load a Windows image file.}
837 \twocolitem{{\bf wxBITMAP\_TYPE\_GIF}}{Load a GIF image file.}
838 \twocolitem{{\bf wxBITMAP\_TYPE\_JPEG}}{Load a JPEG image file.}
839 \twocolitem{{\bf wxBITMAP\_TYPE\_PCX}}{Load a PCX image file.}
840 \twocolitem{{\bf wxBITMAP\_TYPE\_PNG}}{Load a PNG image file.}
841 \twocolitem{{\bf wxBITMAP\_TYPE\_PNM}}{Load a PNM image file.}
842 \twocolitem{{\bf wxBITMAP\_TYPE\_TIF}}{Load a TIFF image file.}
843 \twocolitem{{\bf wxBITMAP\_TYPE\_XPM}}{Load a XPM image file.}
844 \twocolitem{{\bf wxBITMAP\_TYPE\_ICO}}{Load a Windows icon file (ICO).}
845 \twocolitem{{\bf wxBITMAP\_TYPE\_CUR}}{Load a Windows cursor file (CUR).}
846 \twocolitem{\indexit{wxBITMAP\_TYPE\_ANI}}{Load a Windows animated cursor file (ANI).}
847 \twocolitem{{\bf wxBITMAP\_TYPE\_ANY}}{Will try to autodetect the format.}
848 \end{twocollist}}
849
850 \docparam{mimetype}{MIME type string (for example 'image/jpeg')}
851
852 \docparam{index}{Index of the image to load in the case that the image file contains multiple images.
853 This is only used by GIF, ICO and TIFF handlers. The default value (-1) means
854 "choose the default image" and is interpreted as the first image (index=0) by
855 the GIF and TIFF handler and as the largest and most colourful one by the ICO handler.}
856
857 \wxheading{Remarks}
858
859 Depending on how wxWidgets has been configured, not all formats may be available.
860
861 Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to get the
862 hotspot for loaded cursor file:
863 \begin{verbatim}
864 int hotspot_x = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_X);
865 int hotspot_y = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_Y);
866
867 \end{verbatim}
868
869 \wxheading{Return value}
870
871 true if the operation succeeded, false otherwise. If the optional index parameter is out of range,
872 false is returned and a call to wxLogError() takes place.
873
874 \wxheading{See also}
875
876 \helpref{wxImage::SaveFile}{wximagesavefile}
877
878 \pythonnote{In place of a single overloaded method name, wxPython
879 implements the following methods:\par
880 \indented{2cm}{\begin{twocollist}
881 \twocolitem{{\bf LoadFile(filename, type)}}{Loads an image of the given
882 type from a file}
883 \twocolitem{{\bf LoadMimeFile(filename, mimetype)}}{Loads an image of the given
884 mimetype from a file}
885 \end{twocollist}}
886 }
887
888 \perlnote{Methods supported by wxPerl are:\par
889 \begin{itemize}
890 \item{bitmap->LoadFile( name, type )}
891 \item{bitmap->LoadFile( name, mimetype )}
892 \end{itemize}
893 }
894
895
896
897 \membersection{wxImage::IsOk}\label{wximageisok}
898
899 \constfunc{bool}{IsOk}{\void}
900
901 Returns true if image data is present.
902
903
904 \membersection{RGBValue::RGBValue}\label{rgbvaluergbvalue}
905
906 \func{}{RGBValue}{\param{unsigned char }{r = 0}, \param{unsigned char }{g = 0}, \param{unsigned char }{b = 0}}
907
908 Constructor for RGBValue, an object that contains values for red, green and blue which
909 represent the value of a color. It is used by \helpref{wxImage::HSVtoRGB}{wximagehsvtorgb}
910 and \helpref{wxImage::RGBtoHSV}{wximagergbtohsv}, which
911 converts between HSV color space and RGB color space.
912
913 \pythonnote{use wxImage\_RGBValue in wxPython}
914
915
916 \membersection{wxImage::RGBtoHSV}\label{wximagergbtohsv}
917
918 \func{wxImage::HSVValue}{RGBtoHSV}{\param{const RGBValue\& }{rgb}}
919
920 Converts a color in RGB color space to HSV color space.
921
922
923 \membersection{wxImage::RemoveHandler}\label{wximageremovehandler}
924
925 \func{static bool}{RemoveHandler}{\param{const wxString\& }{name}}
926
927 Finds the handler with the given name, and removes it. The handler
928 is not deleted.
929
930 \docparam{name}{The handler name.}
931
932 \wxheading{Return value}
933
934 true if the handler was found and removed, false otherwise.
935
936 \wxheading{See also}
937
938 \helpref{wxImageHandler}{wximagehandler}
939
940
941 \membersection{wxImage::Mirror}\label{wximagemirror}
942
943 \constfunc{wxImage}{Mirror}{\param{bool}{ horizontally = true}}
944
945 Returns a mirrored copy of the image. The parameter {\it horizontally}
946 indicates the orientation.
947
948
949 \membersection{wxImage::Paste}\label{wximagepaste}
950
951 \func{void}{Paste}{\param{const wxImage\& }{image}, \param{int }{x}, \param{int }{y}}
952
953 Copy the data of the given \arg{image} to the specified position in this image.
954
955 \membersection{wxImage::Replace}\label{wximagereplace}
956
957 \func{void}{Replace}{\param{unsigned char}{ r1}, \param{unsigned char}{ g1}, \param{unsigned char}{ b1},
958 \param{unsigned char}{ r2}, \param{unsigned char}{ g2}, \param{unsigned char}{ b2}}
959
960 Replaces the colour specified by {\it r1,g1,b1} by the colour {\it r2,g2,b2}.
961
962
963 \membersection{wxImage::Rescale}\label{wximagerescale}
964
965 \func{wxImage \&}{Rescale}{\param{int}{ width}, \param{int}{ height}, \param{int}{ quality = wxIMAGE\_QUALITY\_NORMAL}}
966
967 Changes the size of the image in-place by scaling it: after a call to this function,
968 the image will have the given width and height.
969
970 For a description of the {\it quality} parameter, see the \helpref{Scale}{wximagescale} function.
971
972 Returns the (modified) image itself.
973
974 \wxheading{See also}
975
976 \helpref{Scale}{wximagescale}
977
978
979 \membersection{wxImage::Resize}\label{wximageresize}
980
981 \func{wxImage \&}{Resize}{\param{const wxSize\&}{ size}, \param{const wxPoint&}{ pos}, \param{int}{ red = -1}, \param{int}{ green = -1}, \param{int}{ blue = -1}}
982
983 Changes the size of the image in-place without scaling it by adding either a border
984 with the given colour or cropping as necessary. The image is pasted into a new
985 image with the given {\it size} and background colour at the position {\it pos}
986 relative to the upper left of the new image. If {\it red = green = blue = -1}
987 then use either the current mask colour if set or find, use, and set a
988 suitable mask colour for any newly exposed areas.
989
990 Returns the (modified) image itself.
991
992 \wxheading{See also}
993
994 \helpref{Size}{wximagesize}
995
996
997 \membersection{wxImage::Rotate}\label{wximagerotate}
998
999 \func{wxImage}{Rotate}{\param{double}{ angle}, \param{const wxPoint\& }{rotationCentre},
1000 \param{bool}{ interpolating = true}, \param{wxPoint*}{ offsetAfterRotation = NULL}}
1001
1002 Rotates the image about the given point, by {\it angle} radians. Passing true
1003 to {\it interpolating} results in better image quality, but is slower. If the
1004 image has a mask, then the mask colour is used for the uncovered pixels in the
1005 rotated image background. Else, black (rgb 0, 0, 0) will be used.
1006
1007 Returns the rotated image, leaving this image intact.
1008
1009
1010 \membersection{wxImage::RotateHue}\label{wximagerotatehue}
1011
1012 \func{void}{RotateHue}{\param{double}{ angle}}
1013
1014 Rotates the hue of each pixel in the image by {\it angle}, which is a double in
1015 the range of -1.0 to +1.0, where -1.0 corresponds to -360 degrees and +1.0 corresponds
1016 to +360 degrees.
1017
1018
1019 \membersection{wxImage::Rotate90}\label{wximagerotate90}
1020
1021 \constfunc{wxImage}{Rotate90}{\param{bool}{ clockwise = true}}
1022
1023 Returns a copy of the image rotated 90 degrees in the direction
1024 indicated by {\it clockwise}.
1025
1026
1027 \membersection{wxImage::SaveFile}\label{wximagesavefile}
1028
1029 \constfunc{bool}{SaveFile}{\param{const wxString\& }{name}, \param{int}{ type}}
1030
1031 \constfunc{bool}{SaveFile}{\param{const wxString\& }{name}, \param{const wxString\&}{ mimetype}}
1032
1033 Saves an image in the named file.
1034
1035 \constfunc{bool}{SaveFile}{\param{const wxString\& }{name}}
1036
1037 Saves an image in the named file. File type is determined from the extension of the
1038 file name. Note that this function may fail if the extension is not recognized! You
1039 can use one of the forms above to save images to files with non-standard extensions.
1040
1041 \constfunc{bool}{SaveFile}{\param{wxOutputStream\& }{stream}, \param{int}{ type}}
1042
1043 \constfunc{bool}{SaveFile}{\param{wxOutputStream\& }{stream}, \param{const wxString\&}{ mimetype}}
1044
1045 Saves an image in the given stream.
1046
1047 \wxheading{Parameters}
1048
1049 \docparam{name}{Name of the file to save the image to.}
1050
1051 \docparam{stream}{Opened output stream to save the image to.}
1052
1053 \docparam{type}{Currently these types can be used:
1054
1055 \twocolwidtha{5cm}%
1056 \begin{twocollist}
1057 \twocolitem{{\bf wxBITMAP\_TYPE\_BMP}}{Save a BMP image file.}
1058 \twocolitem{{\bf wxBITMAP\_TYPE\_JPEG}}{Save a JPEG image file.}
1059 \twocolitem{{\bf wxBITMAP\_TYPE\_PNG}}{Save a PNG image file.}
1060 \twocolitem{{\bf wxBITMAP\_TYPE\_PCX}}{Save a PCX image file (tries to save as 8-bit if possible, falls back to 24-bit otherwise).}
1061 \twocolitem{{\bf wxBITMAP\_TYPE\_PNM}}{Save a PNM image file (as raw RGB always).}
1062 \twocolitem{{\bf wxBITMAP\_TYPE\_TIFF}}{Save a TIFF image file.}
1063 \twocolitem{{\bf wxBITMAP\_TYPE\_XPM}}{Save a XPM image file.}
1064 \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).}
1065 \twocolitem{{\bf wxBITMAP\_TYPE\_CUR}}{Save a Windows cursor file (CUR).}
1066 \end{twocollist}}
1067
1068 \docparam{mimetype}{MIME type.}
1069
1070 \wxheading{Return value}
1071
1072 true if the operation succeeded, false otherwise.
1073
1074 \wxheading{Remarks}
1075
1076 Depending on how wxWidgets has been configured, not all formats may be available.
1077
1078 Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to set the
1079 hotspot before saving an image into a cursor file (default hotspot is in
1080 the centre of the image):
1081 \begin{verbatim}
1082 image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X, hotspotX);
1083 image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_Y, hotspotY);
1084
1085 \end{verbatim}
1086
1087 \wxheading{See also}
1088
1089 \helpref{wxImage::LoadFile}{wximageloadfile}
1090
1091 \pythonnote{In place of a single overloaded method name, wxPython
1092 implements the following methods:\par
1093 \indented{2cm}{\begin{twocollist}
1094 \twocolitem{{\bf SaveFile(filename, type)}}{Saves the image using the given
1095 type to the named file}
1096 \twocolitem{{\bf SaveMimeFile(filename, mimetype)}}{Saves the image using the given
1097 mimetype to the named file}
1098 \end{twocollist}}
1099 }
1100
1101 \perlnote{Methods supported by wxPerl are:\par
1102 \begin{itemize}
1103 \item{bitmap->SaveFile( name, type )}
1104 \item{bitmap->SaveFile( name, mimetype )}
1105 \end{itemize}
1106 }
1107
1108
1109 \membersection{wxImage::Scale}\label{wximagescale}
1110
1111 \constfunc{wxImage}{Scale}{\param{int}{ width}, \param{int}{ height}, \param{int}{ quality = wxIMAGE\_QUALITY\_NORMAL}}
1112
1113 Returns a scaled version of the image. This is also useful for
1114 scaling bitmaps in general as the only other way to scale bitmaps
1115 is to blit a wxMemoryDC into another wxMemoryDC.
1116
1117 \docparam{quality}{Determines what method to use for resampling the image. Can be one of the following:
1118
1119 \twocolwidtha{5cm}%
1120 \begin{twocollist}
1121 \twocolitem{{\bf wxIMAGE\_QUALITY\_NORMAL}}{Uses the normal default scaling method of pixel replication}
1122 \twocolitem{{\bf wxIMAGE\_QUALITY\_HIGH}}{Uses bicubic and box averaging resampling methods for upsampling and downsampling respectively}
1123 \end{twocollist}}
1124
1125 It should be noted that although using wxIMAGE\_QUALITY\_HIGH produces much nicer
1126 looking results it is a slower method. Downsampling will use the box averaging method
1127 which seems to operate very fast. If you are upsampling larger images using
1128 this method you will most likely notice that it is a bit slower and in extreme cases
1129 it will be quite substantially slower as the bicubic algorithm has to process a lot of
1130 data.
1131
1132 It should also be noted that the high quality scaling may not work as expected
1133 when using a single mask colour for transparency, as the scaling will blur the
1134 image and will therefore remove the mask partially. Using the alpha channel
1135 will work.
1136
1137 Example:
1138
1139 \begin{verbatim}
1140 // get the bitmap from somewhere
1141 wxBitmap bmp = ...;
1142
1143 // rescale it to have size of 32*32
1144 if ( bmp.GetWidth() != 32 || bmp.GetHeight() != 32 )
1145 {
1146 wxImage image = bmp.ConvertToImage();
1147 bmp = wxBitmap(image.Scale(32, 32));
1148
1149 // another possibility:
1150 image.Rescale(32, 32);
1151 bmp = image;
1152 }
1153
1154 \end{verbatim}
1155
1156 \wxheading{See also}
1157
1158 \helpref{Rescale}{wximagerescale}
1159
1160
1161 \membersection{wxImage::Size}\label{wximagesize}
1162
1163 \constfunc{wxImage}{Size}{\param{const wxSize\&}{ size}, \param{const wxPoint&}{ pos}, \param{int}{ red = -1}, \param{int}{ green = -1}, \param{int}{ blue = -1}}
1164
1165 Returns a resized version of this image without scaling it by adding either a border
1166 with the given colour or cropping as necessary. The image is pasted into a new
1167 image with the given {\it size} and background colour at the position {\it pos}
1168 relative to the upper left of the new image. If {\it red = green = blue = -1}
1169 then the areas of the larger image not covered by this image are made
1170 transparent by filling them with the image mask colour (which will be allocated
1171 automatically if it isn't currently set). Otherwise, the areas will be filled
1172 with the colour with the specified RGB components.
1173
1174 \wxheading{See also}
1175
1176 \helpref{Resize}{wximageresize}
1177
1178
1179 \membersection{wxImage::SetAlpha}\label{wximagesetalpha}
1180
1181 \func{void}{SetAlpha}{\param{unsigned char *}{alpha = {\tt NULL}},\param{bool}{ static\_data = \false}}
1182
1183 This function is similar to \helpref{SetData}{wximagesetdata} and has similar
1184 restrictions. The pointer passed to it may however be {\tt NULL} in which case
1185 the function will allocate the alpha array internally -- this is useful to add
1186 alpha channel data to an image which doesn't have any. If the pointer is not
1187 {\tt NULL}, it must have one byte for each image pixel and be allocated with
1188 {\tt malloc()}. wxImage takes ownership of the pointer and will free it unless
1189 \arg{static\_data} parameter is set to \true -- in this case the caller should
1190 do it.
1191
1192 \func{void}{SetAlpha}{\param{int }{x}, \param{int }{y}, \param{unsigned char }{alpha}}
1193
1194 Sets the alpha value for the given pixel. This function should only be called
1195 if the image has alpha channel data, use \helpref{HasAlpha}{wximagehasalpha} to
1196 check for this.
1197
1198
1199 \membersection{wxImage::SetData}\label{wximagesetdata}
1200
1201 \func{void}{SetData}{\param{unsigned char*}{data}}
1202
1203 Sets the image data without performing checks. The data given must have
1204 the size (width*height*3) or results will be unexpected. Don't use this
1205 method if you aren't sure you know what you are doing.
1206
1207 The data must have been allocated with {\tt malloc()}, {\large {\bf NOT}} with
1208 {\tt operator new}.
1209
1210 After this call the pointer to the data is owned by the wxImage object,
1211 that will be responsible for deleting it.
1212 Do not pass to this function a pointer obtained through
1213 \helpref{wxImage::GetData}{wximagegetdata}.
1214
1215
1216 \membersection{wxImage::SetMask}\label{wximagesetmask}
1217
1218 \func{void}{SetMask}{\param{bool}{ hasMask = true}}
1219
1220 Specifies whether there is a mask or not. The area of the mask is determined by the current mask colour.
1221
1222
1223 \membersection{wxImage::SetMaskColour}\label{wximagesetmaskcolour}
1224
1225 \func{void}{SetMaskColour}{\param{unsigned char }{red}, \param{unsigned char }{green}, \param{unsigned char }{blue}}
1226
1227 Sets the mask colour for this image (and tells the image to use the mask).
1228
1229
1230 \membersection{wxImage::SetMaskFromImage}\label{wximagesetmaskfromimage}
1231
1232 \func{bool}{SetMaskFromImage}{\param{const wxImage\&}{ mask}, \param{unsigned char}{ mr}, \param{unsigned char}{ mg}, \param{unsigned char}{ mb}}
1233
1234 \wxheading{Parameters}
1235
1236 \docparam{mask}{The mask image to extract mask shape from. Must have same dimensions as the image.}
1237
1238 \docparam{mr,mg,mb}{RGB value of pixels in {\it mask} that will be used to create the mask.}
1239
1240 Sets image's mask so that the pixels that have RGB value of {\it mr,mg,mb}
1241 in {\it mask} will be masked in the image. This is done by first finding an
1242 unused colour in the image, setting this colour as the mask colour and then
1243 using this colour to draw all pixels in the image who corresponding pixel
1244 in {\it mask} has given RGB value.
1245
1246 \wxheading{Return value}
1247
1248 Returns false if {\it mask} does not have same dimensions as the image or if
1249 there is no unused colour left. Returns true if the mask was successfully
1250 applied.
1251
1252 \wxheading{Notes}
1253
1254 Note that this method involves computing the histogram, which is
1255 computationally intensive operation.
1256
1257
1258 \membersection{wxImage::SetOption}\label{wximagesetoption}
1259
1260 \func{void}{SetOption}{\param{const wxString\&}{ name}, \param{const wxString\&}{ value}}
1261
1262 \func{void}{SetOption}{\param{const wxString\&}{ name}, \param{int}{ value}}
1263
1264 Sets a user-defined option. The function is case-insensitive to {\it name}.
1265
1266 For example, when saving as a JPEG file, the option {\bf quality} is
1267 used, which is a number between 0 and 100 (0 is terrible, 100 is very good).
1268
1269 \wxheading{See also}
1270
1271 \helpref{wxImage::GetOption}{wximagegetoption},\rtfsp
1272 \helpref{wxImage::GetOptionInt}{wximagegetoptionint},\rtfsp
1273 \helpref{wxImage::HasOption}{wximagehasoption}
1274
1275
1276 \membersection{wxImage::SetPalette}\label{wximagesetpalette}
1277
1278 \func{void}{SetPalette}{\param{const wxPalette\&}{ palette}}
1279
1280 Associates a palette with the image. The palette may be used when converting
1281 wxImage to wxBitmap (MSW only at present) or in file save operations (none as yet).
1282
1283
1284 \membersection{wxImage::SetRGB}\label{wximagesetrgb}
1285
1286 \func{void}{SetRGB}{\param{int }{x}, \param{int }{y}, \param{unsigned char }{red}, \param{unsigned char }{green}, \param{unsigned char }{blue}}
1287
1288 Sets the pixel at the given coordinate. This routine performs bounds-checks
1289 for the coordinate so it can be considered a safe way to manipulate the
1290 data, but in some cases this might be too slow so that the data will have to
1291 be set directly. In that case you will have to get access to the image data
1292 using the \helpref{GetData}{wximagegetdata} method.
1293
1294
1295 \membersection{wxImage::SetRGB}\label{wximagesetrgbrect}
1296
1297 \func{void}{SetRGB}{\param{wxRect \& }{rect}, \param{unsigned char }{red}, \param{unsigned char }{green}, \param{unsigned char }{blue}}
1298
1299 Sets the colour of the pixels within the given rectangle. This routine performs
1300 bounds-checks for the coordinate so it can be considered a safe way to manipulate the
1301 data.
1302
1303
1304 \membersection{wxImage::operator $=$}\label{wximageassign}
1305
1306 \func{wxImage\& }{operator $=$}{\param{const wxImage\& }{image}}
1307
1308 Assignment operator, using \helpref{reference counting}{trefcount}.
1309
1310 \wxheading{Parameters}
1311
1312 \docparam{image}{Image to assign.}
1313
1314 \wxheading{Return value}
1315
1316 Returns 'this' object.
1317
1318
1319
1320 \section{\class{wxImageHandler}}\label{wximagehandler}
1321
1322 This is the base class for implementing image file loading/saving, and image creation from data.
1323 It is used within wxImage and is not normally seen by the application.
1324
1325 If you wish to extend the capabilities of wxImage, derive a class from wxImageHandler
1326 and add the handler using \helpref{wxImage::AddHandler}{wximageaddhandler} in your
1327 application initialisation.
1328
1329 \wxheading{Note (Legal Issue)}
1330
1331 This software is based in part on the work of the Independent JPEG Group.
1332
1333 (Applies when wxWidgets is linked with JPEG support. wxJPEGHandler uses libjpeg
1334 created by IJG.)
1335
1336 \wxheading{Derived from}
1337
1338 \helpref{wxObject}{wxobject}
1339
1340 \wxheading{Include files}
1341
1342 <wx/image.h>
1343
1344 \wxheading{Library}
1345
1346 \helpref{wxCore}{librarieslist}
1347
1348 \wxheading{See also}
1349
1350 \helpref{wxImage}{wximage},
1351 \helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}
1352
1353 \latexignore{\rtfignore{\wxheading{Members}}}
1354
1355
1356 \membersection{wxImageHandler::wxImageHandler}\label{wximagehandlerctor}
1357
1358 \func{}{wxImageHandler}{\void}
1359
1360 Default constructor. In your own default constructor, initialise the members
1361 m\_name, m\_extension and m\_type.
1362
1363
1364 \membersection{wxImageHandler::\destruct{wxImageHandler}}\label{wximagehandlerdtor}
1365
1366 \func{}{\destruct{wxImageHandler}}{\void}
1367
1368 Destroys the wxImageHandler object.
1369
1370
1371 \membersection{wxImageHandler::GetName}\label{wximagehandlergetname}
1372
1373 \constfunc{const wxString\&}{GetName}{\void}
1374
1375 Gets the name of this handler.
1376
1377
1378 \membersection{wxImageHandler::GetExtension}\label{wximagehandlergetextension}
1379
1380 \constfunc{const wxString\&}{GetExtension}{\void}
1381
1382 Gets the file extension associated with this handler.
1383
1384
1385 \membersection{wxImageHandler::GetImageCount}\label{wximagehandlergetimagecount}
1386
1387 \func{int}{GetImageCount}{\param{wxInputStream\&}{ stream}}
1388
1389 If the image file contains more than one image and the image handler is capable
1390 of retrieving these individually, this function will return the number of
1391 available images.
1392
1393 \docparam{stream}{Opened input stream for reading image data. Currently, the stream must support seeking.}
1394
1395 \wxheading{Return value}
1396
1397 Number of available images. For most image handlers, this is 1 (exceptions
1398 are TIFF and ICO formats).
1399
1400
1401 \membersection{wxImageHandler::GetType}\label{wximagehandlergettype}
1402
1403 \constfunc{long}{GetType}{\void}
1404
1405 Gets the image type associated with this handler.
1406
1407
1408 \membersection{wxImageHandler::GetMimeType}\label{wximagehandlergetmimetype}
1409
1410 \constfunc{const wxString\&}{GetMimeType}{\void}
1411
1412 Gets the MIME type associated with this handler.
1413
1414
1415 \membersection{wxImageHandler::LoadFile}\label{wximagehandlerloadfile}
1416
1417 \func{bool}{LoadFile}{\param{wxImage* }{image}, \param{wxInputStream\&}{ stream}, \param{bool}{ verbose=true}, \param{int}{ index=0}}
1418
1419 Loads a image from a stream, putting the resulting data into {\it image}. If the image file contains
1420 more than one image and the image handler is capable of retrieving these individually, {\it index}
1421 indicates which image to read from the stream.
1422
1423 \wxheading{Parameters}
1424
1425 \docparam{image}{The image object which is to be affected by this operation.}
1426
1427 \docparam{stream}{Opened input stream for reading image data.}
1428
1429 \docparam{verbose}{If set to true, errors reported by the image handler will produce wxLogMessages.}
1430
1431 \docparam{index}{The index of the image in the file (starting from zero).}
1432
1433 \wxheading{Return value}
1434
1435 true if the operation succeeded, false otherwise.
1436
1437 \wxheading{See also}
1438
1439 \helpref{wxImage::LoadFile}{wximageloadfile},
1440 \helpref{wxImage::SaveFile}{wximagesavefile},
1441 \helpref{wxImageHandler::SaveFile}{wximagehandlersavefile}
1442
1443
1444 \membersection{wxImageHandler::SaveFile}\label{wximagehandlersavefile}
1445
1446 \func{bool}{SaveFile}{\param{wxImage* }{image}, \param{wxOutputStream\& }{stream}}
1447
1448 Saves a image in the output stream.
1449
1450 \wxheading{Parameters}
1451
1452 \docparam{image}{The image object which is to be affected by this operation.}
1453
1454 \docparam{stream}{Opened output stream for writing the data.}
1455
1456 \wxheading{Return value}
1457
1458 true if the operation succeeded, false otherwise.
1459
1460 \wxheading{See also}
1461
1462 \helpref{wxImage::LoadFile}{wximageloadfile},
1463 \helpref{wxImage::SaveFile}{wximagesavefile},
1464 \helpref{wxImageHandler::LoadFile}{wximagehandlerloadfile}
1465
1466
1467 \membersection{wxImageHandler::SetName}\label{wximagehandlersetname}
1468
1469 \func{void}{SetName}{\param{const wxString\& }{name}}
1470
1471 Sets the handler name.
1472
1473 \wxheading{Parameters}
1474
1475 \docparam{name}{Handler name.}
1476
1477
1478 \membersection{wxImageHandler::SetExtension}\label{wximagehandlersetextension}
1479
1480 \func{void}{SetExtension}{\param{const wxString\& }{extension}}
1481
1482 Sets the handler extension.
1483
1484 \wxheading{Parameters}
1485
1486 \docparam{extension}{Handler extension.}
1487
1488
1489 \membersection{wxImageHandler::SetMimeType}\label{wximagehandlersetmimetype}
1490
1491 \func{void}{SetMimeType}{\param{const wxString\& }{mimetype}}
1492
1493 Sets the handler MIME type.
1494
1495 \wxheading{Parameters}
1496
1497 \docparam{mimename}{Handler MIME type.}
1498
1499
1500 \membersection{wxImageHandler::SetType}\label{wximagehandlersettype}
1501
1502 \func{void}{SetType}{\param{long }{type}}
1503
1504 Sets the handler type.
1505
1506 \wxheading{Parameters}
1507
1508 \docparam{name}{Handler type.}