summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FL/Fl_Bitmap.H6
-rw-r--r--FL/Fl_Image.H6
-rw-r--r--FL/Fl_Pixmap.H3
-rw-r--r--FL/Fl_SVG_Image.H3
-rw-r--r--src/Fl_Bitmap.cxx2
-rw-r--r--src/Fl_Graphics_Driver.cxx2
-rw-r--r--src/Fl_Image.cxx13
-rw-r--r--src/Fl_Pixmap.cxx2
-rw-r--r--src/Fl_SVG_Image.cxx2
9 files changed, 22 insertions, 17 deletions
diff --git a/FL/Fl_Bitmap.H b/FL/Fl_Bitmap.H
index dd3fe392d..9bd648292 100644
--- a/FL/Fl_Bitmap.H
+++ b/FL/Fl_Bitmap.H
@@ -34,7 +34,6 @@ struct Fl_Menu_Item;
class FL_EXPORT Fl_Bitmap : public Fl_Image {
friend class Fl_Graphics_Driver;
public:
-
/** pointer to raw bitmap data */
const uchar *array;
/** Non-zero if array points to bitmap data allocated internally */
@@ -46,10 +45,11 @@ private:
/** for internal use */
fl_uintptr_t id_;
float cache_scale_; // graphics scaling value when id_ was computed
- virtual int draw_scaled_(int X, int Y, int W, int H);
+
+protected:
+ virtual int draw_scaled(int X, int Y, int W, int H);
public:
-
/** The constructors create a new bitmap from the specified bitmap data */
Fl_Bitmap(const uchar *bits, int W, int H) :
Fl_Image(W,H,0), array(bits), alloc_array(0), id_(0), cache_scale_(1) {data((const char **)&array, 1);}
diff --git a/FL/Fl_Image.H b/FL/Fl_Image.H
index ae626772c..f338500cd 100644
--- a/FL/Fl_Image.H
+++ b/FL/Fl_Image.H
@@ -69,7 +69,6 @@ private:
// Forbid use of copy constructor and assign operator
Fl_Image & operator=(const Fl_Image &);
Fl_Image(const Fl_Image &);
- virtual int draw_scaled_(int X, int Y, int W, int H);
protected:
@@ -105,6 +104,7 @@ protected:
static void labeltype(const Fl_Label *lo, int lx, int ly, int lw, int lh, Fl_Align la);
static void measure(const Fl_Label *lo, int &lw, int &lh);
+ virtual int draw_scaled(int X, int Y, int W, int H);
public:
@@ -225,7 +225,9 @@ private:
fl_uintptr_t id_;
fl_uintptr_t mask_;
float cache_scale_; // graphics scaling value when id_ was computed
- virtual int draw_scaled_(int X, int Y, int W, int H);
+
+protected:
+ virtual int draw_scaled(int X, int Y, int W, int H);
public:
diff --git a/FL/Fl_Pixmap.H b/FL/Fl_Pixmap.H
index a80b4d27a..d7104863c 100644
--- a/FL/Fl_Pixmap.H
+++ b/FL/Fl_Pixmap.H
@@ -42,11 +42,10 @@ class FL_EXPORT Fl_Pixmap : public Fl_Image {
void set_data(const char * const *p);
int prepare(int XP, int YP, int WP, int HP, int &cx, int &cy,
int &X, int &Y, int &W, int &H);
- virtual int draw_scaled_(int X, int Y, int W, int H);
protected:
-
void measure();
+ virtual int draw_scaled(int X, int Y, int W, int H);
public:
diff --git a/FL/Fl_SVG_Image.H b/FL/Fl_SVG_Image.H
index 6467f4d3f..0965b2639 100644
--- a/FL/Fl_SVG_Image.H
+++ b/FL/Fl_SVG_Image.H
@@ -59,8 +59,9 @@ private:
float svg_scaling_(int W, int H);
void rasterize_(int W, int H);
void init_(const char *filename, char *filedata, Fl_SVG_Image *copy_source);
- virtual int draw_scaled_(int X, int Y, int W, int H);
Fl_SVG_Image(Fl_SVG_Image *source);
+protected:
+ virtual int draw_scaled(int X, int Y, int W, int H);
public:
/** Set this to \c false to allow image re-scaling that alters the image aspect ratio.
Upon object creation, \c proportional is set to \c true, and the aspect ratio is kept constant.*/
diff --git a/src/Fl_Bitmap.cxx b/src/Fl_Bitmap.cxx
index 9baacf321..16e0ae5e8 100644
--- a/src/Fl_Bitmap.cxx
+++ b/src/Fl_Bitmap.cxx
@@ -232,7 +232,7 @@ Fl_Image *Fl_Bitmap::copy(int W, int H) {
}
-int Fl_Bitmap::draw_scaled_(int X, int Y, int W, int H) {
+int Fl_Bitmap::draw_scaled(int X, int Y, int W, int H) {
return (W <= w() && H <= h()) ? fl_graphics_driver->draw_scaled(this, X, Y, W, H) : 0;
}
diff --git a/src/Fl_Graphics_Driver.cxx b/src/Fl_Graphics_Driver.cxx
index e802952c9..0ede40ad5 100644
--- a/src/Fl_Graphics_Driver.cxx
+++ b/src/Fl_Graphics_Driver.cxx
@@ -196,7 +196,7 @@ void Fl_Graphics_Driver::draw(Fl_Shared_Image *shared, int X, int Y) {
shared->image_->draw(X, Y, shared->w(), shared->h(), 0, 0);
return;
}
- if ( shared->image_->draw_scaled_(X, Y, shared->w(), shared->h()) ) return;
+ if ( shared->image_->draw_scaled(X, Y, shared->w(), shared->h()) ) return;
if (shared->scaled_image_ && (shared->scaled_image_->w() != shared->w() || shared->scaled_image_->h() != shared->h())) {
delete shared->scaled_image_;
shared->scaled_image_ = NULL;
diff --git a/src/Fl_Image.cxx b/src/Fl_Image.cxx
index a622f7d9e..efe980cb8 100644
--- a/src/Fl_Image.cxx
+++ b/src/Fl_Image.cxx
@@ -578,14 +578,17 @@ void Fl_RGB_Image::label(Fl_Menu_Item* m) {
m->label(_FL_IMAGE_LABEL, (const char*)this);
}
-int Fl_RGB_Image::draw_scaled_(int X, int Y, int W, int H) {
+int Fl_RGB_Image::draw_scaled(int X, int Y, int W, int H) {
return fl_graphics_driver->draw_scaled(this, X, Y, W, H);
}
-// Draws the image scaled to W and H, and returns 1,
-// or returns 0 if scaled drawing is not implemented for this image.
-// Image classes can re-implement this function for specific image types.
-int Fl_Image::draw_scaled_(int X, int Y, int W, int H) {
+/** Attempts to draw the image to the current drawing surface rescaled to a given width and height.
+ This virtual member function is mostly intended for use by the FLTK library.
+ \param X,Y position of the image's top-left
+ \param W,H width and height for the drawn image
+ \return 0 if scaled drawing is not implemented for this image, non-zero if it is implemented.
+ */
+int Fl_Image::draw_scaled(int X, int Y, int W, int H) {
return 0;
}
diff --git a/src/Fl_Pixmap.cxx b/src/Fl_Pixmap.cxx
index 55658249a..cebbda901 100644
--- a/src/Fl_Pixmap.cxx
+++ b/src/Fl_Pixmap.cxx
@@ -394,7 +394,7 @@ void Fl_Pixmap::desaturate() {
}
}
-int Fl_Pixmap::draw_scaled_(int X, int Y, int W, int H) {
+int Fl_Pixmap::draw_scaled(int X, int Y, int W, int H) {
return (W <= w() && H <= h()) ? fl_graphics_driver->draw_scaled(this, X, Y, W, H) : 0;
}
diff --git a/src/Fl_SVG_Image.cxx b/src/Fl_SVG_Image.cxx
index 7723f56af..cd85aa146 100644
--- a/src/Fl_SVG_Image.cxx
+++ b/src/Fl_SVG_Image.cxx
@@ -205,7 +205,7 @@ void Fl_SVG_Image::color_average(Fl_Color c, float i) {
}
-int Fl_SVG_Image::draw_scaled_(int X, int Y, int W, int H) {
+int Fl_SVG_Image::draw_scaled(int X, int Y, int W, int H) {
w(W);
h(H);
draw(X, Y, W, H, 0, 0);