+wxImage wxImage::Size( const wxSize& size, const wxPoint& pos,
+ int r_, int g_, int b_ ) const
+{
+ wxImage image;
+
+ wxCHECK_MSG( Ok(), image, wxT("invalid image") );
+ wxCHECK_MSG( (size.GetWidth() > 0) && (size.GetHeight() > 0), image, wxT("invalid size") );
+
+ int width = GetWidth(), height = GetHeight();
+ image.Create(size.GetWidth(), size.GetHeight(), false);
+
+ unsigned char r = (unsigned char)r_;
+ unsigned char g = (unsigned char)g_;
+ unsigned char b = (unsigned char)b_;
+ if ((r_ == -1) && (g_ == -1) && (b_ == -1))
+ {
+ GetOrFindMaskColour( &r, &g, &b );
+ image.SetMaskColour(r, g, b);
+ }
+
+ image.SetRGB(wxRect(), r, g, b);
+
+ wxRect subRect(pos.x, pos.y, width, height);
+ wxRect finalRect(0, 0, size.GetWidth(), size.GetHeight());
+
+ subRect.Intersect(finalRect);
+
+ if (!subRect.IsEmpty())
+ {
+ if ((subRect.GetWidth() == width) && (subRect.GetHeight() == height))
+ image.Paste(*this, pos.x, pos.y);
+ else
+ image.Paste(GetSubImage(subRect), pos.x, pos.y);
+ }
+
+ return image;
+}
+