summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2016-04-02 06:42:34 +0000
committerManolo Gouy <Manolo>2016-04-02 06:42:34 +0000
commit7b37960d9520861bb53fdfcaa310bb509d346368 (patch)
tree6ef12d46fed59d3b66b6a3a875b02c0c86598e45
parentd756822c2b4ae18fff37dc6f7d364b917694bfee (diff)
Move intersect_region_and_rect() to the Quartz driver code where it belongs.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11500 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--FL/mac.H1
-rw-r--r--src/Fl_cocoa.mm24
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx27
3 files changed, 26 insertions, 26 deletions
diff --git a/FL/mac.H b/FL/mac.H
index 667c14cfb..7cb4949c1 100644
--- a/FL/mac.H
+++ b/FL/mac.H
@@ -167,7 +167,6 @@ public:
int set_cursor(const Fl_RGB_Image*, int, int);
static CGImageRef CGImage_from_window_rect(Fl_Window *win, int x, int y, int w, int h);
static unsigned char *bitmap_from_window_rect(Fl_Window *win, int x, int y, int w, int h, int *bytesPerPixel);
- static Fl_Region intersect_region_and_rect(Fl_Region current, int x,int y,int w, int h);
static void *get_carbon_function(const char *name);
static void screen_work_area(int &X, int &Y, int &W, int &H, int n); // compute work area of a given screen
static int next_marked_length; // next length of marked text after current marked text will have been replaced
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm
index 4fa197e2f..baf4d9825 100644
--- a/src/Fl_cocoa.mm
+++ b/src/Fl_cocoa.mm
@@ -3549,30 +3549,6 @@ void Fl_Cocoa_Window_Driver::unmap() {
}
-// intersects current and x,y,w,h rectangle and returns result as a new Fl_Region
-Fl_Region Fl_X::intersect_region_and_rect(Fl_Region current, int x,int y,int w, int h)
-{
- if (current == NULL) return Fl_Graphics_Driver::XRectangleRegion(x,y,w,h);
- CGRect r = Fl_Quartz_Graphics_Driver::fl_cgrectmake_cocoa(x, y, w, h);
- Fl_Region outr = (Fl_Region)malloc(sizeof(*outr));
- outr->count = current->count;
- outr->rects =(CGRect*)malloc(outr->count * sizeof(CGRect));
- int j = 0;
- for(int i = 0; i < current->count; i++) {
- CGRect test = CGRectIntersection(current->rects[i], r);
- if (!CGRectIsEmpty(test)) outr->rects[j++] = test;
- }
- if (j) {
- outr->count = j;
- outr->rects = (CGRect*)realloc(outr->rects, outr->count * sizeof(CGRect));
- }
- else {
- Fl_Graphics_Driver::XDestroyRegion(outr);
- outr = Fl_Graphics_Driver::XRectangleRegion(0,0,0,0);
- }
- return outr;
-}
-
void Fl_Cocoa_Window_Driver::iconize() {
[fl_xid(pWindow) miniaturize:nil];
}
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx
index 41c4c5cdd..be31149f9 100644
--- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx
@@ -199,6 +199,31 @@ void Fl_Quartz_Graphics_Driver::polygon(int x, int y, int x1, int y1, int x2, in
// --- clipping
+// intersects current and x,y,w,h rectangle and returns result as a new Fl_Region
+static Fl_Region intersect_region_and_rect(Fl_Region current, int x,int y,int w, int h)
+{
+ if (current == NULL) return Fl_Graphics_Driver::XRectangleRegion(x,y,w,h);
+ CGRect r = Fl_Quartz_Graphics_Driver::fl_cgrectmake_cocoa(x, y, w, h);
+ Fl_Region outr = (Fl_Region)malloc(sizeof(*outr));
+ outr->count = current->count;
+ outr->rects =(CGRect*)malloc(outr->count * sizeof(CGRect));
+ int j = 0;
+ for(int i = 0; i < current->count; i++) {
+ CGRect test = CGRectIntersection(current->rects[i], r);
+ if (!CGRectIsEmpty(test)) outr->rects[j++] = test;
+ }
+ if (j) {
+ outr->count = j;
+ outr->rects = (CGRect*)realloc(outr->rects, outr->count * sizeof(CGRect));
+ }
+ else {
+ Fl_Graphics_Driver::XDestroyRegion(outr);
+ outr = Fl_Graphics_Driver::XRectangleRegion(0,0,0,0);
+ }
+ return outr;
+}
+
+
void Fl_Quartz_Graphics_Driver::push_clip(int x, int y, int w, int h) {
Fl_Region r;
if (w > 0 && h > 0) {
@@ -206,7 +231,7 @@ void Fl_Quartz_Graphics_Driver::push_clip(int x, int y, int w, int h) {
Fl_Region current = rstack[rstackptr];
if (current) {
XDestroyRegion(r);
- r = Fl_X::intersect_region_and_rect(current, x,y,w,h);
+ r = intersect_region_and_rect(current, x,y,w,h);
}
} else { // make empty clip region:
r = XRectangleRegion(0,0,0,0);