summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FL/Fl_Image.H8
-rw-r--r--FL/Fl_SVG_Image.H10
-rw-r--r--FL/Fl_Shared_Image.H6
-rw-r--r--FL/Fl_Tiled_Image.H6
-rw-r--r--documentation/src/migration_1_4.dox20
-rw-r--r--src/Fl_Image.cxx4
-rw-r--r--src/Fl_SVG_Image.cxx6
-rw-r--r--src/Fl_Shared_Image.cxx2
-rw-r--r--src/Fl_Tiled_Image.cxx8
9 files changed, 48 insertions, 22 deletions
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
<hr>
<table summary="navigation bar" width="100%" border="0">
diff --git a/src/Fl_Image.cxx b/src/Fl_Image.cxx
index eba5b2001..3ff657b92 100644
--- a/src/Fl_Image.cxx
+++ b/src/Fl_Image.cxx
@@ -88,7 +88,7 @@ void Fl_Image::draw_empty(int X, int Y) {
\param[in] W,H Requested width and height of the copied image
*/
-Fl_Image *Fl_Image::copy(int W, int H) {
+Fl_Image *Fl_Image::copy(int W, int H) const {
return new Fl_Image(W, H, d());
}
@@ -401,7 +401,7 @@ void Fl_RGB_Image::uncache() {
Fl_Graphics_Driver::default_driver().uncache(this, id_, mask_);
}
-Fl_Image *Fl_RGB_Image::copy(int W, int H) {
+Fl_Image *Fl_RGB_Image::copy(int W, int H) const {
Fl_RGB_Image *new_image; // New RGB image
uchar *new_array; // New array for image data
diff --git a/src/Fl_SVG_Image.cxx b/src/Fl_SVG_Image.cxx
index 5af4723b3..58dd48b34 100644
--- a/src/Fl_SVG_Image.cxx
+++ b/src/Fl_SVG_Image.cxx
@@ -64,7 +64,7 @@ Fl_SVG_Image::Fl_SVG_Image(const char *filename, const char *svg_data) : Fl_RGB_
// private constructor
-Fl_SVG_Image::Fl_SVG_Image(Fl_SVG_Image *source) : Fl_RGB_Image(NULL, 0, 0, 4) {
+Fl_SVG_Image::Fl_SVG_Image(const Fl_SVG_Image *source) : Fl_RGB_Image(NULL, 0, 0, 4) {
init_(NULL, NULL, source);
}
@@ -124,7 +124,7 @@ static char *svg_inflate(const char *fname) {
}
#endif
-void Fl_SVG_Image::init_(const char *filename, const char *in_filedata, Fl_SVG_Image *copy_source) {
+void Fl_SVG_Image::init_(const char *filename, const char *in_filedata, const Fl_SVG_Image *copy_source) {
if (copy_source) {
filename = in_filedata = NULL;
counted_svg_image_ = copy_source->counted_svg_image_;
@@ -206,7 +206,7 @@ void Fl_SVG_Image::rasterize_(int W, int H) {
}
-Fl_Image *Fl_SVG_Image::copy(int W, int H) {
+Fl_Image *Fl_SVG_Image::copy(int W, int H) const {
Fl_SVG_Image *svg2 = new Fl_SVG_Image(this);
svg2->to_desaturate_ = to_desaturate_;
svg2->average_weight_ = average_weight_;
diff --git a/src/Fl_Shared_Image.cxx b/src/Fl_Shared_Image.cxx
index 8b3a34ded..91e093b6f 100644
--- a/src/Fl_Shared_Image.cxx
+++ b/src/Fl_Shared_Image.cxx
@@ -300,7 +300,7 @@ void Fl_Shared_Image::reload() {
// For doxygen docs see Fl_Image::copy().
Fl_Image *
-Fl_Shared_Image::copy(int W, int H) {
+Fl_Shared_Image::copy(int W, int H) const {
Fl_Image *temp_image; // New image file
Fl_Shared_Image *temp_shared; // New shared image
diff --git a/src/Fl_Tiled_Image.cxx b/src/Fl_Tiled_Image.cxx
index a97081e6a..da1ed5531 100644
--- a/src/Fl_Tiled_Image.cxx
+++ b/src/Fl_Tiled_Image.cxx
@@ -1,7 +1,7 @@
//
// Tiled image code for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2020 by Bill Spitzak and others.
+// Copyright 1998-2022 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
@@ -77,9 +77,9 @@ Fl_Tiled_Image::Fl_Tiled_Image(Fl_Image *i, // I - Image to tile
// 'Fl_Tiled_Image::copy()' - Copy and resize a tiled image...
//
-Fl_Image * // O - New image
-Fl_Tiled_Image::copy(int W, // I - New width
- int H) { // I - New height
+Fl_Image * // O - New image
+Fl_Tiled_Image::copy(int W, // I - New width
+ int H) const { // I - New height
return new Fl_Tiled_Image(image_, W, H);
}