diff --git a/FL/Fl_Image.H b/FL/Fl_Image.H index 31b005dc4..49b277740 100644 --- a/FL/Fl_Image.H +++ b/FL/Fl_Image.H @@ -234,7 +234,7 @@ public: Fl_Image(int W, int H, int D); virtual ~Fl_Image(); - virtual Fl_Image *copy(int W, int H); + virtual Fl_Image *copy(int W, int H) const; /** Creates a copy of the specified image. The image should be released when you are done with it. @@ -247,7 +247,7 @@ public: \see Fl_Image::release() \see Fl_Image::copy(int w, int h) */ - Fl_Image *copy() { return copy(w(), h()); } + Fl_Image *copy() const { return copy(w(), h()); } virtual void color_average(Fl_Color c, float i); /** The inactive() method calls @@ -340,8 +340,8 @@ public: Fl_RGB_Image(const uchar *bits, int W, int H, int D=3, int LD=0); Fl_RGB_Image(const Fl_Pixmap *pxm, Fl_Color bg=FL_GRAY); virtual ~Fl_RGB_Image(); - virtual Fl_Image *copy(int W, int H); - Fl_Image *copy() { return Fl_Image::copy(); } + virtual Fl_Image *copy(int W, int H) const; + Fl_Image *copy() const { return Fl_Image::copy(); } virtual void color_average(Fl_Color c, float i); virtual void desaturate(); virtual void draw(int X, int Y, int W, int H, int cx=0, int cy=0); diff --git a/FL/Fl_SVG_Image.H b/FL/Fl_SVG_Image.H index 2f98a2a46..d09f3882b 100644 --- a/FL/Fl_SVG_Image.H +++ b/FL/Fl_SVG_Image.H @@ -147,16 +147,18 @@ private: float svg_scaling_(int W, int H); void rasterize_(int W, int H); virtual void cache_size_(int &width, int &height); - void init_(const char *filename, const char *filedata, Fl_SVG_Image *copy_source); - Fl_SVG_Image(Fl_SVG_Image *source); + void init_(const char *filename, const char *filedata, const Fl_SVG_Image *copy_source); + Fl_SVG_Image(const Fl_SVG_Image *source); public: /** Set this to \c false to allow image re-scaling that alters the image aspect ratio. Upon object creation, proportional is set to \c true, and the aspect ratio is kept constant.*/ bool proportional; Fl_SVG_Image(const char *filename, const char *svg_data = NULL); virtual ~Fl_SVG_Image(); - virtual Fl_Image *copy(int W, int H); - Fl_Image *copy() { return Fl_Image::copy(); } + virtual Fl_Image *copy(int W, int H) const; + Fl_Image *copy() const { + return Fl_Image::copy(); + } void resize(int width, int height); virtual void desaturate(); virtual void color_average(Fl_Color c, float i); diff --git a/FL/Fl_Shared_Image.H b/FL/Fl_Shared_Image.H index d109014e5..88a3050be 100644 --- a/FL/Fl_Shared_Image.H +++ b/FL/Fl_Shared_Image.H @@ -145,8 +145,10 @@ public: return this; } - virtual Fl_Image *copy(int W, int H); - Fl_Image *copy() { return Fl_Image::copy(); } + virtual Fl_Image *copy(int W, int H) const; + Fl_Image *copy() const { + return Fl_Image::copy(); + } virtual void color_average(Fl_Color c, float i); virtual void desaturate(); virtual void draw(int X, int Y, int W, int H, int cx = 0, int cy = 0); diff --git a/FL/Fl_Tiled_Image.H b/FL/Fl_Tiled_Image.H index 66814a8fd..599de4b4e 100644 --- a/FL/Fl_Tiled_Image.H +++ b/FL/Fl_Tiled_Image.H @@ -40,8 +40,10 @@ class FL_EXPORT Fl_Tiled_Image : public Fl_Image { Fl_Tiled_Image(Fl_Image *i, int W = 0, int H = 0); virtual ~Fl_Tiled_Image(); - virtual Fl_Image *copy(int W, int H); - Fl_Image *copy() { return Fl_Image::copy(); } + virtual Fl_Image *copy(int W, int H) const; + Fl_Image *copy() const { + return Fl_Image::copy(); + } virtual void color_average(Fl_Color c, float i); virtual void desaturate(); virtual void draw(int X, int Y, int W, int H, int cx = 0, int cy = 0); diff --git a/documentation/src/migration_1_4.dox b/documentation/src/migration_1_4.dox index 37420eab3..350453611 100644 --- a/documentation/src/migration_1_4.dox +++ b/documentation/src/migration_1_4.dox @@ -73,6 +73,26 @@ file from its old location to the new location as documented in Fl_Preferences::Fl_Preferences(Root, const char*, const char*) . +\section migration_1_4_copy_image Fl_Image::copy() 'const' + +Since FLTK 1.4.0 the virtual method Fl_Image::copy() has been declared +'const' so read-only ('const') images can be copied w/o casts. + +This will very likely not affect user code. However, if you derived your +own class from any of the Fl_*_Image variants \b and you overrode +'Your'_Image::copy() then you must declare this 'const' as well, i.e. +you must add the keyword 'const' to your declaration of copy() in your +header file and the implementation. + +Code example in header file: +\code + class Your_Image { + // ... + copy() const; + copy(int w, int h) const; + }; + + \htmlonly