summaryrefslogtreecommitdiff
path: root/src/drivers/Quartz
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/Quartz')
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Copy_Surface_Driver.cxx2
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx14
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx2
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx15
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.H2
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx46
6 files changed, 44 insertions, 37 deletions
diff --git a/src/drivers/Quartz/Fl_Quartz_Copy_Surface_Driver.cxx b/src/drivers/Quartz/Fl_Quartz_Copy_Surface_Driver.cxx
index 3ededb5ab..77ecdaa0a 100644
--- a/src/drivers/Quartz/Fl_Quartz_Copy_Surface_Driver.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Copy_Surface_Driver.cxx
@@ -49,7 +49,7 @@ Fl_Quartz_Copy_Surface_Driver::Fl_Quartz_Copy_Surface_Driver(int w, int h) : Fl_
void Fl_Quartz_Copy_Surface_Driver::set_current() {
driver()->gc(gc);
- fl_window = (Window)1;
+ fl_window = (FLWindow*)1;
Fl_Surface_Device::set_current();
}
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx
index b50309438..552da03f9 100644
--- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx
@@ -84,6 +84,10 @@ void Fl_Quartz_Graphics_Driver::global_gc()
fl_gc = (CGContextRef)gc();
}
+
+CGContextRef fl_mac_gc() { return fl_gc; }
+
+
void Fl_Quartz_Graphics_Driver::copy_offscreen(int x, int y, int w, int h, Fl_Offscreen osrc, int srcx, int srcy) {
// draw portion srcx,srcy,w,h of osrc to position x,y (top-left) of the graphics driver's surface
CGContextRef src = (CGContextRef)osrc;
@@ -127,7 +131,8 @@ CGRect Fl_Quartz_Graphics_Driver::fl_cgrectmake_cocoa(int x, int y, int w, int h
return CGRectMake(x - 0.5, y - 0.5, w, h);
}
-void Fl_Quartz_Graphics_Driver::add_rectangle_to_region(Fl_Region r, int X, int Y, int W, int H) {
+void Fl_Quartz_Graphics_Driver::add_rectangle_to_region(Fl_Region r_, int X, int Y, int W, int H) {
+ struct flCocoaRegion *r = (struct flCocoaRegion*)r_;
CGRect arg = Fl_Quartz_Graphics_Driver::fl_cgrectmake_cocoa(X, Y, W, H);
int j; // don't add a rectangle totally inside the Fl_Region
for(j = 0; j < r->count; j++) {
@@ -140,15 +145,16 @@ void Fl_Quartz_Graphics_Driver::add_rectangle_to_region(Fl_Region r, int X, int
}
Fl_Region Fl_Quartz_Graphics_Driver::XRectangleRegion(int x, int y, int w, int h) {
- Fl_Region R = (Fl_Region)malloc(sizeof(*R));
+ struct flCocoaRegion* R = (struct flCocoaRegion*)malloc(sizeof(struct flCocoaRegion));
R->count = 1;
R->rects = (CGRect *)malloc(sizeof(CGRect));
*(R->rects) = Fl_Quartz_Graphics_Driver::fl_cgrectmake_cocoa(x, y, w, h);
return R;
}
-void Fl_Quartz_Graphics_Driver::XDestroyRegion(Fl_Region r) {
- if(r) {
+void Fl_Quartz_Graphics_Driver::XDestroyRegion(Fl_Region r_) {
+ if (r_) {
+ struct flCocoaRegion *r = (struct flCocoaRegion*)r_;
free(r->rects);
free(r);
}
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx
index 558dc47c1..b97cfbba7 100644
--- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx
@@ -250,7 +250,7 @@ void Fl_Quartz_Graphics_Driver::cache(Fl_Pixmap *img) {
Fl_Surface_Device::push_current(surf);
fl_draw_pixmap(img->data(), 0, 0, FL_BLACK);
Fl_Surface_Device::pop_current();
- CGContextRef src = Fl_Graphics_Driver::get_offscreen_and_delete_image_surface(surf);
+ CGContextRef src = (CGContextRef)Fl_Graphics_Driver::get_offscreen_and_delete_image_surface(surf);
void *cgdata = CGBitmapContextGetData(src);
int sw = CGBitmapContextGetWidth(src);
int sh = CGBitmapContextGetHeight(src);
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx
index 52b8c7f65..71daf0e10 100644
--- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx
@@ -218,11 +218,12 @@ 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)
+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::default_driver().XRectangleRegion(x,y,w,h);
+ if (current_ == NULL) return Fl_Graphics_Driver::default_driver().XRectangleRegion(x,y,w,h);
+ struct flCocoaRegion* current = (struct flCocoaRegion*)current_;
CGRect r = Fl_Quartz_Graphics_Driver::fl_cgrectmake_cocoa(x, y, w, h);
- Fl_Region outr = (Fl_Region)malloc(sizeof(*outr));
+ struct flCocoaRegion* outr = (struct flCocoaRegion*)malloc(sizeof(struct flCocoaRegion));
outr->count = current->count;
outr->rects =(CGRect*)malloc(outr->count * sizeof(CGRect));
int j = 0;
@@ -236,7 +237,7 @@ static Fl_Region intersect_region_and_rect(Fl_Region current, int x,int y,int w,
}
else {
Fl_Graphics_Driver::default_driver().XDestroyRegion(outr);
- outr = Fl_Graphics_Driver::default_driver().XRectangleRegion(0,0,0,0);
+ outr = (struct flCocoaRegion*)Fl_Graphics_Driver::default_driver().XRectangleRegion(0,0,0,0);
}
return outr;
}
@@ -261,7 +262,7 @@ void Fl_Quartz_Graphics_Driver::push_clip(int x, int y, int w, int h) {
int Fl_Quartz_Graphics_Driver::clip_box(int x, int y, int w, int h, int& X, int& Y, int& W, int& H){
X = x; Y = y; W = w; H = h;
- Fl_Region r = rstack[rstackptr];
+ struct flCocoaRegion* r = (struct flCocoaRegion*)rstack[rstackptr];
if (!r) return 0;
CGRect arg = fl_cgrectmake_cocoa(x, y, w, h);
CGRect u = CGRectMake(0,0,0,0);
@@ -283,7 +284,7 @@ int Fl_Quartz_Graphics_Driver::clip_box(int x, int y, int w, int h, int& X, int&
int Fl_Quartz_Graphics_Driver::not_clipped(int x, int y, int w, int h) {
if (x+w <= 0 || y+h <= 0) return 0;
- Fl_Region r = rstack[rstackptr];
+ struct flCocoaRegion* r = (struct flCocoaRegion*)rstack[rstackptr];
if (!r) return 1;
CGRect arg = fl_cgrectmake_cocoa(x, y, w, h);
for (int i = 0; i < r->count; i++) {
@@ -295,7 +296,7 @@ int Fl_Quartz_Graphics_Driver::not_clipped(int x, int y, int w, int h) {
void Fl_Quartz_Graphics_Driver::restore_clip() {
fl_clip_state_number++;
- Fl_Region r = rstack[rstackptr];
+ struct flCocoaRegion* r = (struct flCocoaRegion*)rstack[rstackptr];
if ( fl_window || gc_ ) { // clipping for a true window or an offscreen buffer
if (gc_) {
CGContextRestoreGState(gc_);
diff --git a/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.H b/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.H
index 4e6f8c79d..f70a43ed6 100644
--- a/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.H
+++ b/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.H
@@ -23,7 +23,7 @@
class Fl_Quartz_Image_Surface_Driver : public Fl_Image_Surface_Driver {
virtual void end_current();
public:
- Window pre_window;
+ FLWindow *pre_window;
Fl_Quartz_Image_Surface_Driver(int w, int h, int high_res, Fl_Offscreen off);
~Fl_Quartz_Image_Surface_Driver();
void set_current();
diff --git a/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx b/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx
index c638bfb79..2f1acc5d9 100644
--- a/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx
@@ -32,25 +32,25 @@ Fl_Quartz_Image_Surface_Driver::Fl_Quartz_Image_Surface_Driver(int w, int h, int
W *= s; H *= s;
}
CGColorSpaceRef lut = CGColorSpaceCreateDeviceRGB();
- offscreen = off ? off : CGBitmapContextCreate(calloc(W*H,4), W, H, 8, W*4, lut, kCGImageAlphaPremultipliedLast);
+ offscreen = off ? off : (Fl_Offscreen)CGBitmapContextCreate(calloc(W*H,4), W, H, 8, W*4, lut, kCGImageAlphaPremultipliedLast);
CGColorSpaceRelease(lut);
driver(new Fl_Quartz_Graphics_Driver);
- CGContextTranslateCTM(offscreen, 0.5*s, -0.5*s); // as when drawing to a window
+ CGContextTranslateCTM((CGContextRef)offscreen, 0.5*s, -0.5*s); // as when drawing to a window
if (high_res) {
- CGContextScaleCTM(offscreen, s, s);
+ CGContextScaleCTM((CGContextRef)offscreen, s, s);
driver()->scale(s);
}
- CGContextSetShouldAntialias(offscreen, false);
- CGContextTranslateCTM(offscreen, 0, height);
- CGContextScaleCTM(offscreen, 1.0f, -1.0f);
- CGContextSaveGState(offscreen);
- CGContextSetRGBFillColor(offscreen, 1, 1, 1, 0);
- CGContextFillRect(offscreen, CGRectMake(0,0,w,h));
+ CGContextSetShouldAntialias((CGContextRef)offscreen, false);
+ CGContextTranslateCTM((CGContextRef)offscreen, 0, height);
+ CGContextScaleCTM((CGContextRef)offscreen, 1.0f, -1.0f);
+ CGContextSaveGState((CGContextRef)offscreen);
+ CGContextSetRGBFillColor((CGContextRef)offscreen, 1, 1, 1, 0);
+ CGContextFillRect((CGContextRef)offscreen, CGRectMake(0,0,w,h));
}
Fl_Quartz_Image_Surface_Driver::~Fl_Quartz_Image_Surface_Driver() {
if (offscreen && !external_offscreen) {
- void *data = CGBitmapContextGetData(offscreen);
+ void *data = CGBitmapContextGetData((CGContextRef)offscreen);
free(data);
CGContextRelease((CGContextRef)offscreen);
}
@@ -60,30 +60,30 @@ Fl_Quartz_Image_Surface_Driver::~Fl_Quartz_Image_Surface_Driver() {
void Fl_Quartz_Image_Surface_Driver::set_current() {
Fl_Surface_Device::set_current();
pre_window = fl_window;
- driver()->gc(offscreen);
+ driver()->gc((CGContextRef)offscreen);
fl_window = 0;
- ((Fl_Quartz_Graphics_Driver*)driver())->high_resolution( CGBitmapContextGetWidth(offscreen) > (size_t)width );
+ ((Fl_Quartz_Graphics_Driver*)driver())->high_resolution( CGBitmapContextGetWidth((CGContextRef)offscreen) > (size_t)width );
}
void Fl_Quartz_Image_Surface_Driver::translate(int x, int y) {
- CGContextRestoreGState(offscreen);
- CGContextSaveGState(offscreen);
- CGContextTranslateCTM(offscreen, x, y);
- CGContextSaveGState(offscreen);
+ CGContextRestoreGState((CGContextRef)offscreen);
+ CGContextSaveGState((CGContextRef)offscreen);
+ CGContextTranslateCTM((CGContextRef)offscreen, x, y);
+ CGContextSaveGState((CGContextRef)offscreen);
}
void Fl_Quartz_Image_Surface_Driver::untranslate() {
- CGContextRestoreGState(offscreen);
+ CGContextRestoreGState((CGContextRef)offscreen);
}
Fl_RGB_Image* Fl_Quartz_Image_Surface_Driver::image()
{
- CGContextFlush(offscreen);
- int W = CGBitmapContextGetWidth(offscreen);
- int H = CGBitmapContextGetHeight(offscreen);
- int bpr = CGBitmapContextGetBytesPerRow(offscreen);
- int bpp = CGBitmapContextGetBitsPerPixel(offscreen)/8;
- uchar *base = (uchar*)CGBitmapContextGetData(offscreen);
+ CGContextFlush((CGContextRef)offscreen);
+ int W = CGBitmapContextGetWidth((CGContextRef)offscreen);
+ int H = CGBitmapContextGetHeight((CGContextRef)offscreen);
+ int bpr = CGBitmapContextGetBytesPerRow((CGContextRef)offscreen);
+ int bpp = CGBitmapContextGetBitsPerPixel((CGContextRef)offscreen)/8;
+ uchar *base = (uchar*)CGBitmapContextGetData((CGContextRef)offscreen);
int idx, idy;
uchar *pdst, *psrc;
unsigned char *data = new uchar[W * H * 3];