From: Vadim Zeitlin Date: Mon, 5 Jul 1999 21:08:29 +0000 (+0000) Subject: made wxImage::Scale() const to not confuse people any more and added X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/ce9a75d225a393cd09681aeda19bec908e4c622d?ds=inline made wxImage::Scale() const to not confuse people any more and added a Rescale() which changes the image size "in place". Documented both changes too. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2955 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/docs/latex/wx/image.tex b/docs/latex/wx/image.tex index abed242634..c99c8a9ecd 100644 --- a/docs/latex/wx/image.tex +++ b/docs/latex/wx/image.tex @@ -433,15 +433,50 @@ mimetype to the named file} \end{twocollist}} } +\membersection{wxImage::Rescale}\label{wximagerescale} + +\func{wxImage}{Rescale}{\param{int}{ width}, \param{int}{ height}} + +Changes the size of the image in-place: after a call to this function, thei +mage will have the given width and height. + +\wxheading{See also} + +\helpref{Scale}{wximagescale} + \membersection{wxImage::Scale}\label{wximagescale} -\func{wxImage}{Scale}{\param{int}{ width}, \param{int}{ height}} +\constfunc{wxImage}{Scale}{\param{int}{ width}, \param{int}{ height}} Returns a scaled version of the image. This is also useful for scaling bitmaps in general as the only other way to scale bitmaps -is to blit a wxMemoryDC into another wxMemoryDC. Windows can do such -scaling itself but in the GTK port, scaling bitmaps is done using -this routine internally. +is to blit a wxMemoryDC into another wxMemoryDC. + +NB: although Windows can do such scaling itself but in the GTK port, scaling +bitmaps is done using this routine internally. + +Example: + +\begin{verbatim} + // get the bitmap from somewhere + wxBitmap bmp = ...; + + // rescale it to have size of 32*32 + if ( bmp.GetWidth() != 32 || bmp.GetHeight() != 32 ) + { + wxImage image(bmp); + bmp = image.Scale(32, 32).ConvertToBitmap(); + + // another possibility: + image.Rescale(32, 32); + bmp = image; + } + +\end{verbatim} + +\wxheading{See also} + +\helpref{Rescale}{wximagerescale} \membersection{wxImage::SetData}\label{wximagesetdata} diff --git a/include/wx/image.h b/include/wx/image.h index 2a1c3ad5b0..bd3d484582 100644 --- a/include/wx/image.h +++ b/include/wx/image.h @@ -195,13 +195,18 @@ public: // these functions get implemented in /src/(platform)/bitmap.cpp wxImage( const wxBitmap &bitmap ); + operator wxBitmap() const { return ConvertToBitmap(); } wxBitmap ConvertToBitmap() const; void Create( int width, int height ); void Destroy(); - wxImage Scale( int width, int height ); - + // return the new image with size width*height + wxImage Scale( int width, int height ) const; + + // rescales the image in place + wxImage Rescale( int width, int height ) { *this = Scale(width, height); } + // these routines are slow but safe void SetRGB( int x, int y, unsigned char r, unsigned char g, unsigned char b ); unsigned char GetRed( int x, int y ); @@ -238,18 +243,19 @@ public: void SetMask( bool mask = TRUE ); bool HasMask() const; - inline wxImage& operator = (const wxImage& image) - { if ((*this) == image) - return (*this); + wxImage& operator = (const wxImage& image) + { + if ( (*this) != image ) Ref(image); - return *this; } + return *this; + } - inline bool operator == (const wxImage& image) + bool operator == (const wxImage& image) { return m_refData == image.m_refData; } - inline bool operator != (const wxImage& image) + bool operator != (const wxImage& image) { return m_refData != image.m_refData; } - static inline wxList& GetHandlers() { return sm_handlers; } + static wxList& GetHandlers() { return sm_handlers; } static void AddHandler( wxImageHandler *handler ); static void InsertHandler( wxImageHandler *handler ); static bool RemoveHandler( const wxString& name ); diff --git a/src/common/image.cpp b/src/common/image.cpp index bb00088242..b5c526628e 100644 --- a/src/common/image.cpp +++ b/src/common/image.cpp @@ -150,7 +150,7 @@ void wxImage::Destroy() UnRef(); } -wxImage wxImage::Scale( int width, int height ) +wxImage wxImage::Scale( int width, int height ) const { wxImage image;