summaryrefslogtreecommitdiff
path: root/src/Fl_Graphics_Driver.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Fl_Graphics_Driver.cxx')
-rw-r--r--src/Fl_Graphics_Driver.cxx17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/Fl_Graphics_Driver.cxx b/src/Fl_Graphics_Driver.cxx
index e156ae2c4..5b33f7b2f 100644
--- a/src/Fl_Graphics_Driver.cxx
+++ b/src/Fl_Graphics_Driver.cxx
@@ -203,14 +203,15 @@ unsigned Fl_Graphics_Driver::font_desc_size() {
scale() and in slightly modifying that to help support tiled images. */
void Fl_Graphics_Driver::cache_size(Fl_Image *img, int &width, int &height)
{
- if ( int(scale()) == scale() ) {
- width = width * scale();
- height = height * scale();
- } else {
- width = (width+1) * scale();
- height = (height+1) * scale();
- }
- img->cache_size_(width, height);
+ // Image tiling may require to convert the floating value of width * scale() or
+ // height * scale() to a larger integer value to avoid undrawn space between adjacent images.
+ float s = scale(), fs = width * s;
+ width = (fs - int(fs) < 0.001 ? int(fs) :
+ int((width+1) * s));
+ fs = height * s;
+ height = (fs - int(fs) < 0.001 ? int(fs) :
+ int((height+1) * s));
+ if (img) img->cache_size_(width, height);
}
/** Draws an Fl_Pixmap object using this graphics driver.