Commit Graph

303 Commits

Author SHA1 Message Date
Paul Cornett
632b58cdce Rewrite ConvertToGreyscale() and ConvertToDisabled()
They do almost the same thing, so use almost the same code.
Fixes ConvertToDisabled() modifying its own data.
Closes #15389


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74625 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-08-06 06:05:38 +00:00
Vadim Zeitlin
3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00
Vadim Zeitlin
1b7f2c727d Optimize wxImage::Scale() by pre-calculating the values used.
Precompute the values used by various resampling algorithms once instead of
doing it for each pixel. This dramatically speeds them up: more than 3 times
faster in wxImage benchmark with the small images and up to 5 times faster
with larger images.

Closes #15281.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74321 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-01 14:48:24 +00:00
Vadim Zeitlin
b712cc040f Fix wxIMAGE_QUALITY_HIGH definition.
Embarrassingly, wxIMAGE_QUALITY_HIGH was never used as it had the same value
as wxIMAGE_QUALITY_BILINEAR due to the changes to these constants in r67203.

After fixing its value in the enum, also change the switch on this enum
elements to avoid g++ warnings about unhandled enum values.

See #12845, #15281.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74309 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-06-29 12:51:47 +00:00
Vadim Zeitlin
b215dafcf1 Remove unnecessary default from a switch statement.
Don't check for impossible enum element value, it's better to not have the
default clause at all to get a warning from g++ if this enum ever changes
later. And for now the presence of default results in a warning from Coverity
about unreachable code.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73147 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-12-08 00:37:36 +00:00
Vadim Zeitlin
9a0f0f462f Don't initialize alpha twice when loading wxImage from resources.
Calling InitAlpha() when we already had loaded alpha from the resource data
results in an assert. Fix this by only initializing alpha if don't have it
yet.

Closes #14643.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72471 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-09-13 17:13:05 +00:00
Vadim Zeitlin
7462bddbaf Fix the use of AutoHBITMAP in recently added LoadImageFromResource().
Assignment operator of AutoHBITMAP doesn't work as expected (and probably
should be removed/fixed), avoid its use by explicitly calling Init().

Closes #14425.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71911 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-07-01 11:35:49 +00:00
Vadim Zeitlin
327972e7b6 Use bitmaps from resources by default in wxGTK under Windows.
Use wxBITMAP_TYPE_{BMP,CUR,ICON}_RESOURCE by default under Windows, even for
non-wxMSW ports.

Also allow loading wxImage from resources in all ports under MSW as a side
effect of this change.

Closes #14425.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71889 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-06-30 16:33:23 +00:00
Vadim Zeitlin
6bed673eb3 Don't crash in wxImage::SaveFile() if MIME type is not recognized.
Insert a missing "return false" whose lack resulted in a crash if the handler
for the given MIME type wasn't found.

Closes #14028.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70656 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-02-20 21:57:17 +00:00
Dimitri Schoolwerth
a57ea0102f Fixed unreferenced parameter warning.
Parameter xmpData was unused in wxImage::Create when compiling with wxUSE_XPM set to 0.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70022 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-12-17 01:13:22 +00:00
Vadim Zeitlin
b6963858fb Added wxIMAGE_OPTION_ORIGINAL_{WIDTH,HEIGHT} wxImage options.
These options allow to retrieve the original image size if the image was
scaled during load.

Closes #13662.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69759 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-11-14 13:35:48 +00:00
Dimitri Schoolwerth
a1b806b982 Replaced Ok() occurrences with IsOk() throughout trunk.
Additionally renamed wxOSX' private wxNativePrinterDC::Ok() function to IsOk().

Didn't deprecate the various Ok() functions: given the amount of changes already introduced in 3.0 a trivial one like this seems more suitable for after 3.0.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67681 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-05-03 16:29:04 +00:00
Vadim Zeitlin
de83bbe34f No changes, just simplify the mask checks in wxImage::Paste().
Replace the test of the form "(!a && b) || (a && b)" with a simple test for
"b" and then also replace the test for "b || (c && !b)" with just "b || c".
The end result is much easier to read and understand.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67614 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-26 22:57:08 +00:00
Vadim Zeitlin
be0d0fedf9 Optimize alpha handling in wxImage::Rotate90() too.
The changes of r66309 optimized the rotation of the pixel data by doing it in
entire strips instead of pixel by pixel, apply the same technique now to the
rotation of alpha data as well.

Closes #12739.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67613 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-26 22:57:05 +00:00
Dimitri Schoolwerth
fdb7d5bbc2 Changed behaviour of wxImageResizeQuality parameter in wxImage.Scale and wxImage.Rescale.
Made the following changes:

* Formerly specifying to resize using wxIMAGE_QUALITY_BICUBIC or wxIMAGE_QUALITY_BILINEAR could result in the ResampleBox method being used. Now always resize with the method that the user actually specified.

* Added wxIMAGE_QUALITY_BOX_AVERAGE to explicitly allow resizing with the ResampleBox method.

* Previously wxIMAGE_QUALITY_HIGH was equal to wxIMAGE_QUALITY_BICUBIC. It has been changed to use wxIMAGE_QUALITY_BOX_AVERAGE when reducing the size of an image and wxIMAGE_QUALITY_BICUBIC in all other cases.

Closes #12845.



git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67203 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-15 16:42:34 +00:00
Dimitri Schoolwerth
41774f1b20 Changed wxImage.ResampleBox to always use a box size of at least 2 by 2 pixels.
Previously when resizing by more than 50% (for example resizing from 100x100 to 51x51 or 140x140) a box size of 1x1 would be used which effectively would give the same result as using nearest neighbour. Make sure that at least a box size of 2x2 pixels is always used.

Patch by scottb, see also #12845.



git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67202 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-15 16:37:04 +00:00
Vadim Zeitlin
4776c0b783 Optimize pixels rotation in wxImage::Rotate90().
Rotate the image by entire strips instead of doing it pixel by pixel.

This seems to result in about 50% performance gain.

Closes #12739.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66309 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-12-03 12:40:03 +00:00
Vadim Zeitlin
89a1395ebc Optimize wxImage::Rotate90() by rotating alpha separately.
Bringing the alpha rotation out in a separate loop results in an
approximatively 10% performance improvement.

Closes #12712.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66254 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-24 12:43:36 +00:00
Vadim Zeitlin
94803e4ec8 Rewind the input stream after failing to load image from it.
For seekable streams, don't change the current position when loading image
fails. This allows the subsequent image handlers to succeed during image
format auto-detection even if a previous, erroneously chosen, handler failed.

Closes #12702.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66252 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-24 00:42:45 +00:00
Vadim Zeitlin
3f74b7aeb6 Improve error messages from wxImage::LoadFile().
The error given when loading an image file failed was not very useful because
they didn't specify which file exactly we failed to load and also because the
numeric handler type which means nothing at all to the end user (and not much
to the developer) was used.

Use the description of the file format instead and also always give the name
of the file that we failed to load.

Finally, remove the test for file existence: this is one of many reasons why
opening the file could fail and it doesn't make sense to handle it specially,
just let the underlying stream generate the appropriate error message in all
cases.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66251 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-24 00:42:35 +00:00
Vadim Zeitlin
5d4510dc48 No real changes, just minor cleanup of wxImage code.
Make more local variables const. Use consistent spacing. Don't use needless
comparison with NULL. Don't avoid not using double negation.

See #12682.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66177 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-17 01:20:44 +00:00
Vadim Zeitlin
0fe7cd1da4 Don't pass a bool to wxImage::MakeEmptyClone() which takes an enum.
Correct the changes of r66167 which accidentally left a call to
MakeEmptyClone() using its previous signature.

See #12682.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66176 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-17 01:20:38 +00:00
Vadim Zeitlin
496dbbe76e No changes, just refactor common code in wxImage cloning functions.
Extract code common to several wxImage methods creating new images based on an
existing one in a new MakeEmptyClone() method.

Closes #12682.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66167 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-16 22:37:59 +00:00
Vadim Zeitlin
0547ad09cc Handle image hot spot in wxImage::Rotate180().
Set the hot spot coordinates correctly for the image returned from
Rotate180(), just as it's already done by Rotate90().

Closes #12680.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66149 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-14 12:09:51 +00:00
Vadim Zeitlin
8524dec372 Add wxImage::Rotate180() function.
Closes #12679.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66146 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-14 01:02:35 +00:00
Vadim Zeitlin
000c2be40d Handle hot spots in wxImage::Rotate90().
Set hot spot coordinates for the rotated image if the original one had them.

Also handle the case when the source image has both alpha and mask correctly.

Closes #3680.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66145 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-14 01:02:27 +00:00
Vadim Zeitlin
878f28d8c8 Changed wxImage::ConvertAlphaToMask() return type to bool.
Make this function more useful by returning true from it if alpha channel was
really converted to the mask by it.

Closes #12637.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65990 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-02 11:57:09 +00:00
Vadim Zeitlin
b7c31456fe Fix print format specifiers used for enum values.
Enums are ints, not longs, so use %d instead of %ld to avoid asserts under LP64
64 bit architectures.

Closes #12556.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65797 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-10-13 22:10:33 +00:00
Vadim Zeitlin
90fbb09ae2 Add wxImage::ClearAlpha().
This simple method can be used to remove alpha channel from the image.

See #10915.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63922 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-04-09 13:15:20 +00:00
Paul Cornett
b50e6e416e preserve type when loaded image is rescaled, #11543
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62900 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-12-16 17:10:52 +00:00
Vadim Zeitlin
945c909da9 Suppress harmless g++ warnings about converting float/double to int.
The conversion is done on purpose on these places so just suppress the warning
by using explicit casts.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62679 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-18 09:56:59 +00:00
Julian Smart
198c264dbc Applied part of #10034: wxImage::ConvertToDisabled()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62099 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-09-24 20:05:33 +00:00
Vadim Zeitlin
a4dac1907b Avoid spurious uninitialized variable warning.
Last change introduced a new warning in optimized g++ build, fix it.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61793 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-08-31 00:05:29 +00:00
Vadim Zeitlin
2e51fb3041 Correct wxImage::Size() again; add unit tests for it.
wxImage::Size() didn't handle the paste position correctly.

Closes #7874.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61792 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-08-30 21:43:11 +00:00
Vadim Zeitlin
180f3c7461 Add support for bilinear resize algorithm to wxImage.
Add wxIMAGE_QUALITY_BILINEAR in addition to the existing wxIMAGE_QUALITY_BICUBIC,
it is supposed to be much faster yet yield almost the same results.

Closes #11034.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61791 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-08-30 21:11:37 +00:00
Vadim Zeitlin
03647350fc No changes, just removed hard tabs and trailing white space.
This commit is huge but there are no non-white-space changes in it.

Some files containing third-party sources (src/msw/wince/time.cpp,
src/x11/pango*.cpp) were left unchanged.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61724 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-08-21 10:41:26 +00:00
Vadim Zeitlin
9a83f86094 Globally replace _T() with wxT().
Standardize on using a single macro across all wxWidgets sources and solve the name clash with Sun CC standard headers (see #10660).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-23 20:30:22 +00:00
Francesco Montorsi
8faef7ccbc document that CanRead() and GetImageCount() functions of wxImageHandlers do NOT modify the current stream position and that they require seekable streams; rename current GetImageCount() functions to DoGetImageCount() and put save-and-restore stream position logic in GetImageCount(); add comments in the various DoCanRead() and in DoGetImageCount() where the stream position is modified; remove unneeded SeekI(0) calls from DoCanRead() and DoGetImageCount() functions: they didn't allow to load images from non-seekable streams; implement forward-seeking in wxInputStream::SeekI() also for non-seekable streams
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60852 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-06-01 11:43:36 +00:00
Francesco Montorsi
72a9034bd4 add overloads of ctors and Create() functions taking wxSize; document the various Create() overloads; reorganize wxImage docs categorizing the various functions
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59525 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-14 13:28:28 +00:00
Vadim Zeitlin
ba4800d3ae add support for multiple extensions to wxImage handlers (closes #10570)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59461 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-09 23:13:34 +00:00
Vadim Zeitlin
c0c133e13b add wx-prefixed and semicolon-requiring versions of DECLARE_NO_{COPY,ASSIGN}_CLASS macros
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58757 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-08 11:45:59 +00:00
Vadim Zeitlin
c1099d9254 allow specifying the mask colour in wxImage::ConvertAlphaToMask() (closes #10143)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58404 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-25 17:23:39 +00:00
Francesco Montorsi
fc3762b5fc add wxImage::Clear (patch by troelsk); closes #10141
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57946 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-09 15:35:59 +00:00
Robert Roebling
a805de23ff Mark alpha a static data (not to be freed), too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57528 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-24 15:45:34 +00:00
Vadim Zeitlin
36abe9d421 added the possibility to rescale the image during loading, especially useful with JPEGs (#8390) (change to the sample accidentally committed as r56820)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56821 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-11-17 13:54:42 +00:00
Vadim Zeitlin
5c33522fca replace wx_{const,static,reinterpret}_cast with their standard C++ equivalents
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56644 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-11-02 02:39:52 +00:00
Vadim Zeitlin
85f818733c copy both alpha and mask in Paste() (#9658)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54935 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-08-02 22:00:53 +00:00
Vadim Zeitlin
9d1c7e8474 add wxImage::SetType() and use it in animation decoders (#9639)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54932 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-08-02 20:13:41 +00:00
Vadim Zeitlin
591d3fa210 remember the last type used for loading or saving the image and return it from GetType() (#9551)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54086 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-06-11 00:28:23 +00:00
Vadim Zeitlin
e98e625cbb change longs used for bitmap types to wxBitmapType (#9126)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53999 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-06-06 23:33:58 +00:00