From d51481f95e6a6ee2b2482705e8930aac3e15d7b6 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Tue, 16 Feb 2021 11:58:07 +0100 Subject: Remove FL_CFG_SYS_WIN32 preprocessor variable from fl_draw_pixmap.cxx --- src/Fl_Graphics_Driver.cxx | 2 +- src/drivers/GDI/Fl_GDI_Graphics_Driver.H | 2 +- src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx | 32 ++++++++++++++++++ src/fl_draw_pixmap.cxx | 43 ++---------------------- 4 files changed, 36 insertions(+), 43 deletions(-) (limited to 'src') diff --git a/src/Fl_Graphics_Driver.cxx b/src/Fl_Graphics_Driver.cxx index d33e5e50f..ec3cc8d78 100644 --- a/src/Fl_Graphics_Driver.cxx +++ b/src/Fl_Graphics_Driver.cxx @@ -413,7 +413,7 @@ void Fl_Graphics_Driver::draw_fixed(Fl_Bitmap *bm,int XP, int YP, int WP, int HP void Fl_Graphics_Driver::draw_fixed(Fl_RGB_Image *rgb,int XP, int YP, int WP, int HP, int cx, int cy) {} -void Fl_Graphics_Driver::make_unused_color_(unsigned char &r, unsigned char &g, unsigned char &b) {} +void Fl_Graphics_Driver::make_unused_color_(unsigned char &r, unsigned char &g, unsigned char &b, int color_count, void **data) {} /** Support function for Fl_Pixmap drawing */ void Fl_Graphics_Driver::cache(Fl_Pixmap *img) { } diff --git a/src/drivers/GDI/Fl_GDI_Graphics_Driver.H b/src/drivers/GDI/Fl_GDI_Graphics_Driver.H index 01014f49b..e2a29da4c 100644 --- a/src/drivers/GDI/Fl_GDI_Graphics_Driver.H +++ b/src/drivers/GDI/Fl_GDI_Graphics_Driver.H @@ -40,7 +40,7 @@ private: void set_current_(); void draw_fixed(Fl_Pixmap *pxm, int XP, int YP, int WP, int HP, int cx, int cy); void draw_fixed(Fl_Bitmap *pxm, int XP, int YP, int WP, int HP, int cx, int cy); - virtual void make_unused_color_(unsigned char &r, unsigned char &g, unsigned char &b); + virtual void make_unused_color_(unsigned char &r, unsigned char &g, unsigned char &b, int color_count, void **data); protected: void draw_fixed(Fl_RGB_Image *rgb, int XP, int YP, int WP, int HP, int cx, int cy); void cache(Fl_RGB_Image *rgb); diff --git a/src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx b/src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx index cf476f7c4..5bb515771 100644 --- a/src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx +++ b/src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx @@ -700,6 +700,38 @@ void Fl_GDI_Printer_Graphics_Driver::draw_pixmap(Fl_Pixmap *pxm, int XP, int YP, } } +// Makes an RGB triplet different from all the colors used in the pixmap +// and computes Fl_Graphics_Driver::need_pixmap_bg_color from this triplet +void Fl_GDI_Graphics_Driver::make_unused_color_(uchar &r, uchar &g, uchar &b, int color_count, void **data) { + typedef struct { uchar r; uchar g; uchar b; } UsedColor; + UsedColor *used_colors = *(UsedColor**)data; + int i; + r = 2; g = 3; b = 4; + while (1) { + for ( i=0; i= color_count) { + free((void*)used_colors); + *(UsedColor**)data = NULL; + need_pixmap_bg_color = RGB(r, g, b); + return; + } + if (r < 255) { + r++; + } else { + r = 0; + if (g < 255) { + g++; + } else { + g = 0; + b++; + } + } + } +} void Fl_GDI_Graphics_Driver::cache(Fl_Pixmap *img) { Fl_Image_Surface *surf = new Fl_Image_Surface(img->data_w(), img->data_h()); diff --git a/src/fl_draw_pixmap.cxx b/src/fl_draw_pixmap.cxx index f515b868b..3384f2561 100644 --- a/src/fl_draw_pixmap.cxx +++ b/src/fl_draw_pixmap.cxx @@ -30,12 +30,8 @@ // The above comments were checked in as r2, and much has changed since then; // transparency added, color cube not required, etc. -erco Oct 20 2013 -#include "config_lib.h" #include #include "Fl_System_Driver.H" -#if defined(FL_CFG_SYS_WIN32) -#include "drivers/GDI/Fl_GDI_Graphics_Driver.H" -#endif #include #include #include @@ -72,41 +68,6 @@ int fl_measure_pixmap(const char * const *cdata, int &w, int &h) { return 1; } -#if defined(FL_CFG_SYS_WIN32) - - -// Makes an RGB triplet different from all the colors used in the pixmap -// and compute Fl_Graphics_Driver::need_pixmap_bg_color from this triplet -void Fl_GDI_Graphics_Driver::make_unused_color_(uchar &r, uchar &g, uchar &b) { - int i; - r = 2; g = 3; b = 4; - while (1) { - for ( i=0; i= color_count) { - free((void*)used_colors); used_colors = NULL; - need_pixmap_bg_color = RGB(r, g, b); - return; - } - if (r < 255) { - r++; - } else { - r = 0; - if (g < 255) { - g++; - } else { - g = 0; - b++; - } - } - } -} -#endif // FL_CFG_SYS_WIN32 - - int fl_convert_pixmap(const char*const* cdata, uchar* out, Fl_Color bg) { int w, h; const uchar*const* data = (const uchar*const*)(cdata+1); @@ -194,10 +155,10 @@ int fl_convert_pixmap(const char*const* cdata, uchar* out, Fl_Color bg) { } // if ncolors if (Fl_Graphics_Driver::need_pixmap_bg_color) { if (transparent_c) { - fl_graphics_driver->make_unused_color_(transparent_c[0], transparent_c[1], transparent_c[2]); + fl_graphics_driver->make_unused_color_(transparent_c[0], transparent_c[1], transparent_c[2], color_count, (void**)&used_colors); } else { uchar r, g, b; - fl_graphics_driver->make_unused_color_(r, g, b); + fl_graphics_driver->make_unused_color_(r, g, b, color_count, (void**)&used_colors); } } -- cgit v1.2.3