summaryrefslogtreecommitdiff
path: root/src/drivers/Quartz
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-09-15 15:01:12 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-09-15 15:01:12 +0200
commit699cca8ff4367c15ea0cda1b5750c68eac174816 (patch)
tree9bba71685e9b649c80c5e1acff32597a05008a22 /src/drivers/Quartz
parent700fb1aadd86f6fc81f4acccfe44dd539f487c57 (diff)
Make Fl::set_color(r,g,b,a) effective under Wayland and macOS.
Diffstat (limited to 'src/drivers/Quartz')
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver_color.cxx9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_color.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_color.cxx
index a4cb37d73..9d31f8573 100644
--- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_color.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_color.cxx
@@ -34,6 +34,7 @@ extern unsigned fl_cmap[256]; // defined in fl_color.cxx
void Fl_Quartz_Graphics_Driver::color(Fl_Color i) {
Fl_Graphics_Driver::color(i);
uchar r, g, b;
+ float fa = 1.0f;
if (i & 0xFFFFFF00) {
// translate rgb colors into color index
r = i>>24;
@@ -42,16 +43,20 @@ void Fl_Quartz_Graphics_Driver::color(Fl_Color i) {
} else {
// translate index into rgb:
unsigned c = fl_cmap[i];
+ c = c ^ 0x000000ff; // trick to restore the color's correct alpha value
r = c>>24;
g = c>>16;
b = c>> 8;
+ uchar a = c & 0xff;
+ //printf("i=%d rgb=%u,%u,%u a=%u\n",i,r,g,b,a);
+ fa = a/255.0f;
}
if (!gc_) return; // no context yet? We will assign the color later.
float fr = r/255.0f;
float fg = g/255.0f;
float fb = b/255.0f;
- CGContextSetRGBFillColor(gc_, fr, fg, fb, 1.0f);
- CGContextSetRGBStrokeColor(gc_, fr, fg, fb, 1.0f);
+ CGContextSetRGBFillColor(gc_, fr, fg, fb, fa);
+ CGContextSetRGBStrokeColor(gc_, fr, fg, fb, fa);
}
void Fl_Quartz_Graphics_Driver::color(uchar r, uchar g, uchar b) {