summaryrefslogtreecommitdiff
path: root/FL
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2024-11-20 08:01:40 +0100
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2024-11-20 08:01:40 +0100
commit1f05a0df443fd5e883d84f1322da6fcd7ad80f6d (patch)
tree049f103e187094940857910ef739ea0a9d8a3cad /FL
parent6df2219aa0e56d9632824c94a3b217ec015aa22f (diff)
Fix fl_draw_image sometimes crashes when window is scaled - cont'd (#1134)
Diffstat (limited to 'FL')
-rw-r--r--FL/Fl_Graphics_Driver.H6
-rw-r--r--FL/fl_draw.H8
2 files changed, 10 insertions, 4 deletions
diff --git a/FL/Fl_Graphics_Driver.H b/FL/Fl_Graphics_Driver.H
index c91489d61..0adf8ca87 100644
--- a/FL/Fl_Graphics_Driver.H
+++ b/FL/Fl_Graphics_Driver.H
@@ -79,8 +79,8 @@ class FL_EXPORT Fl_Graphics_Driver {
friend class Fl_Bitmap;
friend class Fl_RGB_Image;
friend class Fl_SVG_Image;
- friend FL_EXPORT void fl_draw_image(const uchar* buf, int X,int Y,int W,int H, int D, int L);
- friend FL_EXPORT void fl_draw_image_mono(const uchar* buf, int X,int Y,int W,int H, int D, int L);
+ friend void fl_draw_image(const uchar* buf, int X,int Y,int W,int H, int D, int L);
+ friend void fl_draw_image_mono(const uchar* buf, int X,int Y,int W,int H, int D, int L);
friend void fl_draw_image_mono(Fl_Draw_Image_Cb cb, void* data, int X,int Y,int W,int H, int D);
friend void fl_draw_image(Fl_Draw_Image_Cb cb, void* data, int X,int Y,int W,int H, int D);
friend void fl_copy_offscreen(int x, int y, int w, int h, Fl_Offscreen pixmap, int srcx, int srcy);
@@ -137,6 +137,8 @@ private:
virtual void make_unused_color_(unsigned char &r, unsigned char &g, unsigned char &b, int color_count, void **data);
// some platforms may need to reimplement this
virtual void set_current_();
+ void draw_image_general_(const uchar *buf, int X, int Y, int W, int H, int D, int L);
+ void draw_image_mono_general_(const uchar *buf, int X, int Y, int W, int H, int D, int L);
float scale_; // scale between FLTK and drawing coordinates: drawing = FLTK * scale_
public:
/** Creates the graphics driver that is used for core operations. */
diff --git a/FL/fl_draw.H b/FL/fl_draw.H
index 3ecd02f30..22a4374c1 100644
--- a/FL/fl_draw.H
+++ b/FL/fl_draw.H
@@ -1078,13 +1078,17 @@ FL_EXPORT void fl_draw_radio(int x, int y, int d, Fl_Color color);
any visual of 8 bits or less, and all common TrueColor visuals up
to 32 bits.
*/
-FL_EXPORT void fl_draw_image(const uchar *buf, int X, int Y, int W, int H, int D = 3, int L = 0);
+inline void fl_draw_image(const uchar *buf, int X, int Y, int W, int H, int D = 3, int L = 0) {
+ fl_graphics_driver->draw_image_general_(buf, X, Y, W, H, D, L);
+}
/**
Draw a gray-scale (1 channel) image.
\see fl_draw_image(const uchar* buf, int X,int Y,int W,int H, int D, int L)
*/
-FL_EXPORT void fl_draw_image_mono(const uchar *buf, int X, int Y, int W, int H, int D = 1, int L = 0);
+inline void fl_draw_image_mono(const uchar *buf, int X, int Y, int W, int H, int D = 1, int L = 0) {
+ fl_graphics_driver->draw_image_mono_general_(buf, X, Y, W, H, D, L);
+}
/**
Draw an image using a callback function to generate image data.