summaryrefslogtreecommitdiff
path: root/src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2021-02-16 11:58:07 +0100
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2021-02-16 11:58:15 +0100
commitd51481f95e6a6ee2b2482705e8930aac3e15d7b6 (patch)
tree675d53525b18f4ac9486ac724cf1c918e643bb8b /src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx
parent5f3d8bc6348c25734b4e7fb54f31596e0206828f (diff)
Remove FL_CFG_SYS_WIN32 preprocessor variable from fl_draw_pixmap.cxx
Diffstat (limited to 'src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx')
-rw-r--r--src/drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx32
1 files changed, 32 insertions, 0 deletions
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; i++ )
+ if ( used_colors[i].r == r &&
+ used_colors[i].g == g &&
+ used_colors[i].b == b )
+ break;
+ if (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());