36
36
#include <config.h>
39
41
static int px,py,pw,ph;
45
static uchar *bgN = 0L, *bgS = 0L, *bgE = 0L, *bgW = 0L;
46
static int bgx, bgy, bgw, bgh;
41
49
static void draw_current_rect() {
43
52
int old = SetROP2(fl_gc, R2_NOT);
44
53
fl_rect(px, py, pw, ph);
45
54
SetROP2(fl_gc, old);
46
#elif defined(__APPLE_QD__)
55
# elif defined(__APPLE_QD__)
48
57
fl_rect(px, py, pw, ph);
49
58
PenMode( patCopy );
50
#elif defined(__APPLE_QUARTZ__)
59
# elif defined(__APPLE_QUARTZ__)
51
60
// warning: Quartz does not support xor drawing
52
61
// Use the Fl_Overlay_Window instead.
53
63
fl_rect(px, py, pw, ph);
55
65
XSetFunction(fl_display, fl_gc, GXxor);
56
66
XSetForeground(fl_display, fl_gc, 0xffffffff);
57
67
XDrawRectangle(fl_display, fl_window, fl_gc, px, py, pw, ph);
58
68
XSetFunction(fl_display, fl_gc, GXcopy);
71
if (bgN) { free(bgN); bgN = 0L; }
72
if (bgS) { free(bgS); bgS = 0L; }
73
if (bgE) { free(bgE); bgE = 0L; }
74
if (bgW) { free(bgW); bgW = 0L; }
76
bgE = fl_read_image(0L, px+pw-1, py, 1, ph);
77
bgW = fl_read_image(0L, px, py, 1, ph);
78
bgS = fl_read_image(0L, px, py+ph-1, pw, 1);
79
bgN = fl_read_image(0L, px, py, pw, 1);
84
fl_line_style(FL_SOLID);
85
fl_rect(px, py, pw, ph);
87
fl_line_style(FL_DOT);
88
fl_rect(px, py, pw, ph);
89
fl_line_style(FL_SOLID);
93
static void erase_current_rect() {
95
# ifdef __APPLE_QUARTZ__
96
fl_rect(px, py, pw, ph);
101
if (bgN) fl_draw_image(bgN, bgx, bgy, bgw, 1);
102
if (bgS) fl_draw_image(bgS, bgx, bgy+bgh-1, bgw, 1);
103
if (bgW) fl_draw_image(bgW, bgx, bgy, 1, bgh);
104
if (bgE) fl_draw_image(bgE, bgx+bgw-1, bgy, 1, bgh);
62
108
void fl_overlay_clear() {
63
if (pw > 0) {draw_current_rect(); pw = 0;}
109
if (pw > 0) {erase_current_rect(); pw = 0;}
66
112
void fl_overlay_rect(int x, int y, int w, int h) {