Remove FL_CFG_SYS_WIN32 preprocessor variable from fl_draw_pixmap.cxx
This commit is contained in:
parent
5f3d8bc634
commit
d51481f95e
@ -141,7 +141,7 @@ private:
|
||||
virtual void draw_fixed(Fl_Bitmap *bm,int XP, int YP, int WP, int HP, int cx, int cy);
|
||||
virtual void draw_fixed(Fl_RGB_Image *rgb,int XP, int YP, int WP, int HP, int cx, int cy);
|
||||
// the default implementation of make_unused_color_() is most probably enough
|
||||
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);
|
||||
// some platforms may need to reimplement this
|
||||
virtual void set_current_();
|
||||
float scale_; // scale between FLTK and drawing coordinates: drawing = FLTK * scale_
|
||||
|
@ -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) { }
|
||||
|
@ -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);
|
||||
|
@ -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());
|
||||
|
@ -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 <FL/Fl.H>
|
||||
#include "Fl_System_Driver.H"
|
||||
#if defined(FL_CFG_SYS_WIN32)
|
||||
#include "drivers/GDI/Fl_GDI_Graphics_Driver.H"
|
||||
#endif
|
||||
#include <FL/platform.H>
|
||||
#include <FL/fl_draw.H>
|
||||
#include <stdio.h>
|
||||
@ -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; 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); 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user