mirror of
https://github.com/fltk/fltk.git
synced 2026-06-06 08:32:07 +08:00
Quartz implementation for FLTK 1.1:
- added very crude font support - added line drawing support - added line color support - added filled shapes support - added some arc and circle support (no ovals) - attempt at getting the clipping working, however the stack oriented design of Quartz is starting to become a real hassle git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@3784 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: mac.H,v 1.1.2.11 2004/04/11 04:38:55 easysw Exp $"
|
// "$Id: mac.H,v 1.1.2.12 2004/08/26 00:18:41 matthiaswm Exp $"
|
||||||
//
|
//
|
||||||
// Mac header file for the Fast Light Tool Kit (FLTK).
|
// Mac header file for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@@ -65,6 +65,7 @@ class Fl_X
|
|||||||
public:
|
public:
|
||||||
Window xid; // Mac WindowPtr
|
Window xid; // Mac WindowPtr
|
||||||
GWorldPtr other_xid; // pointer for offscreen bitmaps (doublebuffer)
|
GWorldPtr other_xid; // pointer for offscreen bitmaps (doublebuffer)
|
||||||
|
CGContextRef gc; // Quartz: graphics context (NULL when using QD)
|
||||||
Fl_Window *w; // FLTK window for
|
Fl_Window *w; // FLTK window for
|
||||||
Fl_Region region;
|
Fl_Region region;
|
||||||
Fl_Region subRegion; // region for this specific subwindow
|
Fl_Region subRegion; // region for this specific subwindow
|
||||||
@@ -93,6 +94,7 @@ extern struct Fl_XMap {
|
|||||||
|
|
||||||
extern FL_EXPORT void *fl_display;
|
extern FL_EXPORT void *fl_display;
|
||||||
extern FL_EXPORT Window fl_window;
|
extern FL_EXPORT Window fl_window;
|
||||||
|
extern FL_EXPORT CGContextRef fl_gc;
|
||||||
extern FL_EXPORT Handle fl_system_menu;
|
extern FL_EXPORT Handle fl_system_menu;
|
||||||
extern FL_EXPORT class Fl_Sys_Menu_Bar *fl_sys_menu_bar;
|
extern FL_EXPORT class Fl_Sys_Menu_Bar *fl_sys_menu_bar;
|
||||||
|
|
||||||
@@ -118,6 +120,6 @@ extern void fl_open_callback(void (*cb)(const char *));
|
|||||||
extern FL_EXPORT int fl_parse_color(const char* p, uchar& r, uchar& g, uchar& b);
|
extern FL_EXPORT int fl_parse_color(const char* p, uchar& r, uchar& g, uchar& b);
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: mac.H,v 1.1.2.11 2004/04/11 04:38:55 easysw Exp $".
|
// End of "$Id: mac.H,v 1.1.2.12 2004/08/26 00:18:41 matthiaswm Exp $".
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|||||||
+5
-3
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: Fl.cxx,v 1.24.2.41.2.63 2004/08/25 00:20:25 matthiaswm Exp $"
|
// "$Id: Fl.cxx,v 1.24.2.41.2.64 2004/08/26 00:18:42 matthiaswm Exp $"
|
||||||
//
|
//
|
||||||
// Main event handling code for the Fast Light Tool Kit (FLTK).
|
// Main event handling code for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@@ -378,12 +378,14 @@ void Fl::flush() {
|
|||||||
QDFlushPortBuffer( port, 0 );
|
QDFlushPortBuffer( port, 0 );
|
||||||
}
|
}
|
||||||
#elif defined (__APPLE_QUARTZ__)
|
#elif defined (__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
# warning quartz: remove this
|
||||||
GrafPtr port; GetPort( &port );
|
GrafPtr port; GetPort( &port );
|
||||||
if ( port )
|
if ( port )
|
||||||
{
|
{
|
||||||
QDFlushPortBuffer( port, 0 );
|
QDFlushPortBuffer( port, 0 );
|
||||||
}
|
}
|
||||||
|
// end remove
|
||||||
|
if (fl_gc) CGContextSynchronize(fl_gc);
|
||||||
#else
|
#else
|
||||||
if (fl_display) XFlush(fl_display);
|
if (fl_display) XFlush(fl_display);
|
||||||
#endif
|
#endif
|
||||||
@@ -1025,5 +1027,5 @@ void Fl_Window::flush() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: Fl.cxx,v 1.24.2.41.2.63 2004/08/25 00:20:25 matthiaswm Exp $".
|
// End of "$Id: Fl.cxx,v 1.24.2.41.2.64 2004/08/26 00:18:42 matthiaswm Exp $".
|
||||||
//
|
//
|
||||||
|
|||||||
+6
-7
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: Fl_Font.H,v 1.6.2.3.2.6 2004/08/25 00:20:25 matthiaswm Exp $"
|
// "$Id: Fl_Font.H,v 1.6.2.3.2.7 2004/08/26 00:18:42 matthiaswm Exp $"
|
||||||
//
|
//
|
||||||
// Font definitions for the Fast Light Tool Kit (FLTK).
|
// Font definitions for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@@ -57,12 +57,11 @@ public:
|
|||||||
short width[256];
|
short width[256];
|
||||||
bool knowMetrics;
|
bool knowMetrics;
|
||||||
# elif defined(__APPLE_QUARTZ__)
|
# elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
#warning : minimal quartz, use ATS instead!
|
||||||
FL_EXPORT Fl_FontSize(const char* fontname, int size);
|
FL_EXPORT Fl_FontSize(const char* fontname, int size);
|
||||||
short font, face, size;
|
char *q_name;
|
||||||
short ascent, descent;
|
int size;
|
||||||
short width[256];
|
short ascent, descent, q_width;
|
||||||
bool knowMetrics;
|
|
||||||
# elif USE_XFT
|
# elif USE_XFT
|
||||||
XftFont* font;
|
XftFont* font;
|
||||||
const char* encoding;
|
const char* encoding;
|
||||||
@@ -103,5 +102,5 @@ FL_EXPORT char *fl_find_fontsize(char *name);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: Fl_Font.H,v 1.6.2.3.2.6 2004/08/25 00:20:25 matthiaswm Exp $".
|
// End of "$Id: Fl_Font.H,v 1.6.2.3.2.7 2004/08/26 00:18:42 matthiaswm Exp $".
|
||||||
//
|
//
|
||||||
|
|||||||
+24
-3
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: Fl_mac.cxx,v 1.1.2.57 2004/08/25 00:20:26 matthiaswm Exp $"
|
// "$Id: Fl_mac.cxx,v 1.1.2.58 2004/08/26 00:18:42 matthiaswm Exp $"
|
||||||
//
|
//
|
||||||
// MacOS specific code for the Fast Light Tool Kit (FLTK).
|
// MacOS specific code for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@@ -83,6 +83,7 @@ static int FSSpec2UnixPath( FSSpec *fs, char *dst );
|
|||||||
|
|
||||||
// public variables
|
// public variables
|
||||||
int fl_screen;
|
int fl_screen;
|
||||||
|
CGContextRef fl_gc = 0;
|
||||||
Handle fl_system_menu;
|
Handle fl_system_menu;
|
||||||
Fl_Sys_Menu_Bar *fl_sys_menu_bar = 0;
|
Fl_Sys_Menu_Bar *fl_sys_menu_bar = 0;
|
||||||
CursHandle fl_default_cursor;
|
CursHandle fl_default_cursor;
|
||||||
@@ -1256,7 +1257,6 @@ void Fl_X::flush()
|
|||||||
{
|
{
|
||||||
w->flush();
|
w->flush();
|
||||||
SetOrigin( 0, 0 );
|
SetOrigin( 0, 0 );
|
||||||
//QDFlushPortBuffer( GetWindowPort(xid), 0 ); // \todo do we need this?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1517,6 +1517,7 @@ void Fl_X::make(Fl_Window* w)
|
|||||||
x->region = 0;
|
x->region = 0;
|
||||||
x->subRegion = 0;
|
x->subRegion = 0;
|
||||||
x->cursor = fl_default_cursor;
|
x->cursor = fl_default_cursor;
|
||||||
|
x->gc = 0; // stay 0 for Quickdraw; fill with CGContext for Quartz
|
||||||
Fl_Window *win = w->window();
|
Fl_Window *win = w->window();
|
||||||
Fl_X *xo = Fl_X::i(win);
|
Fl_X *xo = Fl_X::i(win);
|
||||||
w->set_visible();
|
w->set_visible();
|
||||||
@@ -1615,6 +1616,7 @@ void Fl_X::make(Fl_Window* w)
|
|||||||
x->cursor = fl_default_cursor;
|
x->cursor = fl_default_cursor;
|
||||||
x->xidChildren = 0;
|
x->xidChildren = 0;
|
||||||
x->xidNext = 0;
|
x->xidNext = 0;
|
||||||
|
x->gc = 0;
|
||||||
|
|
||||||
winattr &= GetAvailableWindowAttributes( winclass ); // make sure that the window will open
|
winattr &= GetAvailableWindowAttributes( winclass ); // make sure that the window will open
|
||||||
CreateNewWindow( winclass, winattr, &wRect, &(x->xid) );
|
CreateNewWindow( winclass, winattr, &wRect, &(x->xid) );
|
||||||
@@ -1852,6 +1854,25 @@ void Fl_Window::make_current()
|
|||||||
|
|
||||||
fl_clip_region( 0 );
|
fl_clip_region( 0 );
|
||||||
SetPortClipRegion( GetWindowPort(i->xid), fl_window_region );
|
SetPortClipRegion( GetWindowPort(i->xid), fl_window_region );
|
||||||
|
#ifdef __APPLE_QUARTZ__
|
||||||
|
#warning : bracket all the QD stuff above with ifdefs!
|
||||||
|
#warning : verbose copy of patch; please check code
|
||||||
|
Rect portRect;
|
||||||
|
GetPortBounds(GetWindowPort(i->xid), &portRect);
|
||||||
|
short port_height = portRect.bottom - portRect.top;
|
||||||
|
if (!i->gc) {
|
||||||
|
//CreateCGContextForPort(GetWindowPort(i->xid), &i->gc);
|
||||||
|
QDBeginCGContext(GetWindowPort(i->xid), &i->gc);
|
||||||
|
// set clipping region
|
||||||
|
//ClipCGContextToRegion (i->gc, &portRect, fl_window_region );
|
||||||
|
// translate coordinate system to coorespond with fltk's.
|
||||||
|
CGContextTranslateCTM(i->gc, -0.5f, port_height+0.5f);
|
||||||
|
CGContextScaleCTM(i->gc, 1.0f, -1.0f);
|
||||||
|
static CGAffineTransform font_mx = { 1, 0, 0, -1, 0, 0 };
|
||||||
|
CGContextSetTextMatrix(i->gc, font_mx);
|
||||||
|
}
|
||||||
|
fl_gc = i->gc;
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1927,6 +1948,6 @@ void Fl::paste(Fl_Widget &receiver, int clipboard) {
|
|||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: Fl_mac.cxx,v 1.1.2.57 2004/08/25 00:20:26 matthiaswm Exp $".
|
// End of "$Id: Fl_mac.cxx,v 1.1.2.58 2004/08/26 00:18:42 matthiaswm Exp $".
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|||||||
+8
-10
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: fl_arci.cxx,v 1.4.2.5.2.6 2004/08/25 00:20:26 matthiaswm Exp $"
|
// "$Id: fl_arci.cxx,v 1.4.2.5.2.7 2004/08/26 00:18:43 matthiaswm Exp $"
|
||||||
//
|
//
|
||||||
// Arc (integer) drawing functions for the Fast Light Tool Kit (FLTK).
|
// Arc (integer) drawing functions for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@@ -55,10 +55,11 @@ void fl_arc(int x,int y,int w,int h,double a1,double a2) {
|
|||||||
a1 = a2-a1; a2 = 450-a2;
|
a1 = a2-a1; a2 = 450-a2;
|
||||||
FrameArc(&r, (short int)a2, (short int)a1);
|
FrameArc(&r, (short int)a2, (short int)a1);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
# warning quartz
|
# warning : no support for ovals yet!
|
||||||
Rect r; r.left=x; r.right=x+w; r.top=y; r.bottom=y+h;
|
float cx = x + 0.5f*w, cy = y + 0.5f*h;
|
||||||
a1 = a2-a1; a2 = 450-a2;
|
float r = (w+h)*0.5f;
|
||||||
FrameArc(&r, (short int)a2, (short int)a1);
|
CGContextAddArc(fl_gc, cx, cy, r, a1/180.0f*M_PI, a2/180.0f*M_PI, 1);
|
||||||
|
CGContextStrokePath(fl_gc);
|
||||||
#else
|
#else
|
||||||
XDrawArc(fl_display, fl_window, fl_gc, x,y,w-1,h-1, int(a1*64),int((a2-a1)*64));
|
XDrawArc(fl_display, fl_window, fl_gc, x,y,w-1,h-1, int(a1*64),int((a2-a1)*64));
|
||||||
#endif
|
#endif
|
||||||
@@ -79,15 +80,12 @@ void fl_pie(int x,int y,int w,int h,double a1,double a2) {
|
|||||||
a1 = a2-a1; a2 = 450-a2;
|
a1 = a2-a1; a2 = 450-a2;
|
||||||
PaintArc(&r, (short int)a2, (short int)a1);
|
PaintArc(&r, (short int)a2, (short int)a1);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
# warning : not implemented yet
|
||||||
Rect r; r.left=x; r.right=x+w; r.top=y; r.bottom=y+h;
|
|
||||||
a1 = a2-a1; a2 = 450-a2;
|
|
||||||
PaintArc(&r, (short int)a2, (short int)a1);
|
|
||||||
#else
|
#else
|
||||||
XFillArc(fl_display, fl_window, fl_gc, x,y,w,h, int(a1*64),int((a2-a1)*64));
|
XFillArc(fl_display, fl_window, fl_gc, x,y,w,h, int(a1*64),int((a2-a1)*64));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: fl_arci.cxx,v 1.4.2.5.2.6 2004/08/25 00:20:26 matthiaswm Exp $".
|
// End of "$Id: fl_arci.cxx,v 1.4.2.5.2.7 2004/08/26 00:18:43 matthiaswm Exp $".
|
||||||
//
|
//
|
||||||
|
|||||||
+25
-8
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: fl_color_mac.cxx,v 1.1.2.7 2004/08/25 00:20:26 matthiaswm Exp $"
|
// "$Id: fl_color_mac.cxx,v 1.1.2.8 2004/08/26 00:18:43 matthiaswm Exp $"
|
||||||
//
|
//
|
||||||
// MacOS color functions for the Fast Light Tool Kit (FLTK).
|
// MacOS color functions for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@@ -28,17 +28,14 @@
|
|||||||
// changes can be made. Not to be confused with the X colormap, which
|
// changes can be made. Not to be confused with the X colormap, which
|
||||||
// I try to hide completely.
|
// I try to hide completely.
|
||||||
|
|
||||||
// MacOS - matt: the macintosh port does not support colormaps
|
// matt: Neither Quartz nor Quickdraw support colormaps in this implementation
|
||||||
|
// matt: Quartz support done
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <FL/Fl.H>
|
#include <FL/Fl.H>
|
||||||
#include <FL/x.H>
|
#include <FL/x.H>
|
||||||
#include <FL/fl_draw.H>
|
#include <FL/fl_draw.H>
|
||||||
|
|
||||||
#ifdef __APPLE_QUARTZ__
|
|
||||||
#warning quartz
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static unsigned fl_cmap[256] = {
|
static unsigned fl_cmap[256] = {
|
||||||
#include "fl_cmap.h" // this is a file produced by "cmap.cxx":
|
#include "fl_cmap.h" // this is a file produced by "cmap.cxx":
|
||||||
};
|
};
|
||||||
@@ -67,20 +64,40 @@ void fl_color(Fl_Color i) {
|
|||||||
g = c>>16;
|
g = c>>16;
|
||||||
b = c>> 8;
|
b = c>> 8;
|
||||||
}
|
}
|
||||||
|
#ifdef __APPLE_QD__
|
||||||
RGBColor rgb;
|
RGBColor rgb;
|
||||||
rgb.red = (r<<8)|r;
|
rgb.red = (r<<8)|r;
|
||||||
rgb.green = (g<<8)|g;
|
rgb.green = (g<<8)|g;
|
||||||
rgb.blue = (b<<8)|b;
|
rgb.blue = (b<<8)|b;
|
||||||
RGBForeColor(&rgb);
|
RGBForeColor(&rgb);
|
||||||
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
|
float fr = r/255.0f;
|
||||||
|
float fg = g/255.0f;
|
||||||
|
float fb = b/255.0f;
|
||||||
|
CGContextSetRGBFillColor(fl_gc, fr, fg, fb, 1.0f);
|
||||||
|
CGContextSetRGBStrokeColor(fl_gc, fr, fg, fb, 1.0f);
|
||||||
|
#else
|
||||||
|
# error : neither Quickdraw nor Quartz defined
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void fl_color(uchar r, uchar g, uchar b) {
|
void fl_color(uchar r, uchar g, uchar b) {
|
||||||
RGBColor rgb;
|
|
||||||
fl_color_ = fl_rgb_color(r, g, b);
|
fl_color_ = fl_rgb_color(r, g, b);
|
||||||
|
#ifdef __APPLE_QD__
|
||||||
|
RGBColor rgb;
|
||||||
rgb.red = (r<<8)|r;
|
rgb.red = (r<<8)|r;
|
||||||
rgb.green = (g<<8)|g;
|
rgb.green = (g<<8)|g;
|
||||||
rgb.blue = (b<<8)|b;
|
rgb.blue = (b<<8)|b;
|
||||||
RGBForeColor(&rgb);
|
RGBForeColor(&rgb);
|
||||||
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
|
float fr = r/255.0f;
|
||||||
|
float fg = g/255.0f;
|
||||||
|
float fb = b/255.0f;
|
||||||
|
CGContextSetRGBFillColor(fl_gc, fr, fg, fb, 1.0f);
|
||||||
|
CGContextSetRGBStrokeColor(fl_gc, fr, fg, fb, 1.0f);
|
||||||
|
#else
|
||||||
|
# error : neither Quickdraw nor Quartz defined
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Fl::set_color(Fl_Color i, unsigned c) {
|
void Fl::set_color(Fl_Color i, unsigned c) {
|
||||||
@@ -90,5 +107,5 @@ void Fl::set_color(Fl_Color i, unsigned c) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: fl_color_mac.cxx,v 1.1.2.7 2004/08/25 00:20:26 matthiaswm Exp $".
|
// End of "$Id: fl_color_mac.cxx,v 1.1.2.8 2004/08/26 00:18:43 matthiaswm Exp $".
|
||||||
//
|
//
|
||||||
|
|||||||
+26
-3
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: fl_font_mac.cxx,v 1.1.2.16 2004/08/25 00:20:27 matthiaswm Exp $"
|
// "$Id: fl_font_mac.cxx,v 1.1.2.17 2004/08/26 00:18:43 matthiaswm Exp $"
|
||||||
//
|
//
|
||||||
// MacOS font selection routines for the Fast Light Tool Kit (FLTK).
|
// MacOS font selection routines for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@@ -36,6 +36,7 @@
|
|||||||
//: SetFractEnable
|
//: SetFractEnable
|
||||||
|
|
||||||
Fl_FontSize::Fl_FontSize(const char* name, int Size) {
|
Fl_FontSize::Fl_FontSize(const char* name, int Size) {
|
||||||
|
#ifdef __APPLE_QD__
|
||||||
knowMetrics = 0;
|
knowMetrics = 0;
|
||||||
switch (*name++) {
|
switch (*name++) {
|
||||||
case 'I': face = italic; break;
|
case 'I': face = italic; break;
|
||||||
@@ -56,6 +57,14 @@ Fl_FontSize::Fl_FontSize(const char* name, int Size) {
|
|||||||
listbase = 0;
|
listbase = 0;
|
||||||
#endif
|
#endif
|
||||||
minsize = maxsize = size;
|
minsize = maxsize = size;
|
||||||
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
|
q_name = strdup(name+1);
|
||||||
|
size = Size;
|
||||||
|
ascent = Size*3/4;
|
||||||
|
descent = Size-ascent;
|
||||||
|
q_width = Size*2/3;
|
||||||
|
minsize = maxsize = Size;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Fl_FontSize* fl_fontsize = 0L;
|
Fl_FontSize* fl_fontsize = 0L;
|
||||||
@@ -76,6 +85,9 @@ Fl_FontSize::~Fl_FontSize() {
|
|||||||
#endif
|
#endif
|
||||||
*/
|
*/
|
||||||
if (this == fl_fontsize) fl_fontsize = 0;
|
if (this == fl_fontsize) fl_fontsize = 0;
|
||||||
|
#ifdef __APPLE_QUARTZ__
|
||||||
|
free(q_name);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
@@ -103,6 +115,7 @@ Fl_Fontdesc* fl_fonts = built_in_table;
|
|||||||
|
|
||||||
void fl_font(Fl_FontSize* s) {
|
void fl_font(Fl_FontSize* s) {
|
||||||
fl_fontsize = s;
|
fl_fontsize = s;
|
||||||
|
#ifdef __APPLE_QD__
|
||||||
if (fl_window) SetPort( GetWindowPort(fl_window) );
|
if (fl_window) SetPort( GetWindowPort(fl_window) );
|
||||||
TextFont(fl_fontsize->font); //: select font into current QuickDraw GC
|
TextFont(fl_fontsize->font); //: select font into current QuickDraw GC
|
||||||
TextFace(fl_fontsize->face);
|
TextFace(fl_fontsize->face);
|
||||||
@@ -116,6 +129,11 @@ void fl_font(Fl_FontSize* s) {
|
|||||||
for (int i=0; i<256; i++) fl_fontsize->width[i] = f[2*i];
|
for (int i=0; i<256; i++) fl_fontsize->width[i] = f[2*i];
|
||||||
fl_fontsize->knowMetrics = 1;
|
fl_fontsize->knowMetrics = 1;
|
||||||
}
|
}
|
||||||
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
|
CGContextSelectFont(fl_gc, s->q_name, (float)s->size, kCGEncodingMacRoman);
|
||||||
|
#else
|
||||||
|
# error : need to defined either Quartz or Quickdraw
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static Fl_FontSize* find(int fnum, int size) {
|
static Fl_FontSize* find(int fnum, int size) {
|
||||||
@@ -193,13 +211,18 @@ void fl_draw(const char* str, int n, int x, int y) {
|
|||||||
|
|
||||||
for (i = n, bufptr = buf; i > 0; i --)
|
for (i = n, bufptr = buf; i > 0; i --)
|
||||||
*bufptr++ = macroman_lut[*str++ & 255];
|
*bufptr++ = macroman_lut[*str++ & 255];
|
||||||
|
#ifdef __APPLE_QD__
|
||||||
// Then draw it...
|
// Then draw it...
|
||||||
MoveTo(x, y);
|
MoveTo(x, y);
|
||||||
DrawText((const char *)buf, 0, n);
|
DrawText((const char *)buf, 0, n);
|
||||||
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
|
CGContextShowTextAtPoint(fl_gc, (float)x, (float)y, (const char*)buf, n);
|
||||||
|
#else
|
||||||
|
# error : neither Quartz no Quickdraw chosen
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: fl_font_mac.cxx,v 1.1.2.16 2004/08/25 00:20:27 matthiaswm Exp $".
|
// End of "$Id: fl_font_mac.cxx,v 1.1.2.17 2004/08/26 00:18:43 matthiaswm Exp $".
|
||||||
//
|
//
|
||||||
|
|||||||
+74
-70
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: fl_rect.cxx,v 1.10.2.4.2.12 2004/08/25 00:20:27 matthiaswm Exp $"
|
// "$Id: fl_rect.cxx,v 1.10.2.4.2.13 2004/08/26 00:18:43 matthiaswm Exp $"
|
||||||
//
|
//
|
||||||
// Rectangle drawing routines for the Fast Light Tool Kit (FLTK).
|
// Rectangle drawing routines for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@@ -46,10 +46,8 @@ void fl_rect(int x, int y, int w, int h) {
|
|||||||
SetRect(&rect, x, y, x+w, y+h);
|
SetRect(&rect, x, y, x+w, y+h);
|
||||||
FrameRect(&rect);
|
FrameRect(&rect);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
CGRect rect = CGRectMake(x, y, w, h);
|
||||||
Rect rect;
|
CGContextStrokeRect(fl_gc, rect);
|
||||||
SetRect(&rect, x, y, x+w, y+h);
|
|
||||||
FrameRect(&rect);
|
|
||||||
#else
|
#else
|
||||||
XDrawRectangle(fl_display, fl_window, fl_gc, x, y, w-1, h-1);
|
XDrawRectangle(fl_display, fl_window, fl_gc, x, y, w-1, h-1);
|
||||||
#endif
|
#endif
|
||||||
@@ -67,10 +65,8 @@ void fl_rectf(int x, int y, int w, int h) {
|
|||||||
SetRect(&rect, x, y, x+w, y+h);
|
SetRect(&rect, x, y, x+w, y+h);
|
||||||
PaintRect(&rect);
|
PaintRect(&rect);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
CGRect rect = CGRectMake(x, y, w, h);
|
||||||
Rect rect;
|
CGContextFillRect(fl_gc, rect);
|
||||||
SetRect(&rect, x, y, x+w, y+h);
|
|
||||||
PaintRect(&rect);
|
|
||||||
#else
|
#else
|
||||||
if (w && h) XFillRectangle(fl_display, fl_window, fl_gc, x, y, w, h);
|
if (w && h) XFillRectangle(fl_display, fl_window, fl_gc, x, y, w, h);
|
||||||
#endif
|
#endif
|
||||||
@@ -82,8 +78,9 @@ void fl_xyline(int x, int y, int x1) {
|
|||||||
#elif defined(__APPLE_QD__)
|
#elif defined(__APPLE_QD__)
|
||||||
MoveTo(x, y); LineTo(x1, y);
|
MoveTo(x, y); LineTo(x1, y);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
CGContextMoveToPoint(fl_gc, x, y);
|
||||||
MoveTo(x, y); LineTo(x1, y);
|
CGContextAddLineToPoint(fl_gc, x1, y);
|
||||||
|
CGContextStrokePath(fl_gc);
|
||||||
#else
|
#else
|
||||||
XDrawLine(fl_display, fl_window, fl_gc, x, y, x1, y);
|
XDrawLine(fl_display, fl_window, fl_gc, x, y, x1, y);
|
||||||
#endif
|
#endif
|
||||||
@@ -101,10 +98,10 @@ void fl_xyline(int x, int y, int x1, int y2) {
|
|||||||
LineTo(x1, y);
|
LineTo(x1, y);
|
||||||
LineTo(x1, y2);
|
LineTo(x1, y2);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
CGContextMoveToPoint(fl_gc, x, y);
|
||||||
MoveTo(x, y);
|
CGContextAddLineToPoint(fl_gc, x1, y);
|
||||||
LineTo(x1, y);
|
CGContextAddLineToPoint(fl_gc, x1, y2);
|
||||||
LineTo(x1, y2);
|
CGContextStrokePath(fl_gc);
|
||||||
#else
|
#else
|
||||||
XPoint p[3];
|
XPoint p[3];
|
||||||
p[0].x = x; p[0].y = p[1].y = y;
|
p[0].x = x; p[0].y = p[1].y = y;
|
||||||
@@ -127,11 +124,11 @@ void fl_xyline(int x, int y, int x1, int y2, int x3) {
|
|||||||
LineTo(x1, y2);
|
LineTo(x1, y2);
|
||||||
LineTo(x3, y2);
|
LineTo(x3, y2);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
CGContextMoveToPoint(fl_gc, x, y);
|
||||||
MoveTo(x, y);
|
CGContextAddLineToPoint(fl_gc, x1, y);
|
||||||
LineTo(x1, y);
|
CGContextAddLineToPoint(fl_gc, x1, y2);
|
||||||
LineTo(x1, y2);
|
CGContextAddLineToPoint(fl_gc, x3, y2);
|
||||||
LineTo(x3, y2);
|
CGContextStrokePath(fl_gc);
|
||||||
#else
|
#else
|
||||||
XPoint p[4];
|
XPoint p[4];
|
||||||
p[0].x = x; p[0].y = p[1].y = y;
|
p[0].x = x; p[0].y = p[1].y = y;
|
||||||
@@ -149,8 +146,9 @@ void fl_yxline(int x, int y, int y1) {
|
|||||||
#elif defined(__APPLE_QD__)
|
#elif defined(__APPLE_QD__)
|
||||||
MoveTo(x, y); LineTo(x, y1);
|
MoveTo(x, y); LineTo(x, y1);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
CGContextMoveToPoint(fl_gc, x, y);
|
||||||
MoveTo(x, y); LineTo(x, y1);
|
CGContextAddLineToPoint(fl_gc, x, y1);
|
||||||
|
CGContextStrokePath(fl_gc);
|
||||||
#else
|
#else
|
||||||
XDrawLine(fl_display, fl_window, fl_gc, x, y, x, y1);
|
XDrawLine(fl_display, fl_window, fl_gc, x, y, x, y1);
|
||||||
#endif
|
#endif
|
||||||
@@ -168,10 +166,10 @@ void fl_yxline(int x, int y, int y1, int x2) {
|
|||||||
LineTo(x, y1);
|
LineTo(x, y1);
|
||||||
LineTo(x2, y1);
|
LineTo(x2, y1);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
CGContextMoveToPoint(fl_gc, x, y);
|
||||||
MoveTo(x, y);
|
CGContextAddLineToPoint(fl_gc, x, y1);
|
||||||
LineTo(x, y1);
|
CGContextAddLineToPoint(fl_gc, x2, y1);
|
||||||
LineTo(x2, y1);
|
CGContextStrokePath(fl_gc);
|
||||||
#else
|
#else
|
||||||
XPoint p[3];
|
XPoint p[3];
|
||||||
p[0].x = p[1].x = x; p[0].y = y;
|
p[0].x = p[1].x = x; p[0].y = y;
|
||||||
@@ -194,11 +192,11 @@ void fl_yxline(int x, int y, int y1, int x2, int y3) {
|
|||||||
LineTo(x2, y1);
|
LineTo(x2, y1);
|
||||||
LineTo(x2, y3);
|
LineTo(x2, y3);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
CGContextMoveToPoint(fl_gc, x, y);
|
||||||
MoveTo(x, y);
|
CGContextAddLineToPoint(fl_gc, x, y1);
|
||||||
LineTo(x, y1);
|
CGContextAddLineToPoint(fl_gc, x2, y1);
|
||||||
LineTo(x2, y1);
|
CGContextAddLineToPoint(fl_gc, x2, y3);
|
||||||
LineTo(x2, y3);
|
CGContextStrokePath(fl_gc);
|
||||||
#else
|
#else
|
||||||
XPoint p[4];
|
XPoint p[4];
|
||||||
p[0].x = p[1].x = x; p[0].y = y;
|
p[0].x = p[1].x = x; p[0].y = y;
|
||||||
@@ -219,9 +217,9 @@ void fl_line(int x, int y, int x1, int y1) {
|
|||||||
MoveTo(x, y);
|
MoveTo(x, y);
|
||||||
LineTo(x1, y1);
|
LineTo(x1, y1);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
CGContextMoveToPoint(fl_gc, x, y);
|
||||||
MoveTo(x, y);
|
CGContextAddLineToPoint(fl_gc, x1, y1);
|
||||||
LineTo(x1, y1);
|
CGContextStrokePath(fl_gc);
|
||||||
#else
|
#else
|
||||||
XDrawLine(fl_display, fl_window, fl_gc, x, y, x1, y1);
|
XDrawLine(fl_display, fl_window, fl_gc, x, y, x1, y1);
|
||||||
#endif
|
#endif
|
||||||
@@ -240,10 +238,10 @@ void fl_line(int x, int y, int x1, int y1, int x2, int y2) {
|
|||||||
LineTo(x1, y1);
|
LineTo(x1, y1);
|
||||||
LineTo(x2, y2);
|
LineTo(x2, y2);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
CGContextMoveToPoint(fl_gc, x, y);
|
||||||
MoveTo(x, y);
|
CGContextAddLineToPoint(fl_gc, x1, y1);
|
||||||
LineTo(x1, y1);
|
CGContextAddLineToPoint(fl_gc, x2, y2);
|
||||||
LineTo(x2, y2);
|
CGContextStrokePath(fl_gc);
|
||||||
#else
|
#else
|
||||||
XPoint p[3];
|
XPoint p[3];
|
||||||
p[0].x = x; p[0].y = y;
|
p[0].x = x; p[0].y = y;
|
||||||
@@ -265,11 +263,11 @@ void fl_loop(int x, int y, int x1, int y1, int x2, int y2) {
|
|||||||
LineTo(x2, y2);
|
LineTo(x2, y2);
|
||||||
LineTo(x, y);
|
LineTo(x, y);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
CGContextMoveToPoint(fl_gc, x, y);
|
||||||
MoveTo(x, y);
|
CGContextAddLineToPoint(fl_gc, x1, y1);
|
||||||
LineTo(x1, y1);
|
CGContextAddLineToPoint(fl_gc, x2, y2);
|
||||||
LineTo(x2, y2);
|
CGContextClosePath(fl_gc);
|
||||||
LineTo(x, y);
|
CGContextStrokePath(fl_gc);
|
||||||
#else
|
#else
|
||||||
XPoint p[4];
|
XPoint p[4];
|
||||||
p[0].x = x; p[0].y = y;
|
p[0].x = x; p[0].y = y;
|
||||||
@@ -294,12 +292,12 @@ void fl_loop(int x, int y, int x1, int y1, int x2, int y2, int x3, int y3) {
|
|||||||
LineTo(x3, y3);
|
LineTo(x3, y3);
|
||||||
LineTo(x, y);
|
LineTo(x, y);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
CGContextMoveToPoint(fl_gc, x, y);
|
||||||
MoveTo(x, y);
|
CGContextAddLineToPoint(fl_gc, x1, y1);
|
||||||
LineTo(x1, y1);
|
CGContextAddLineToPoint(fl_gc, x2, y2);
|
||||||
LineTo(x2, y2);
|
CGContextAddLineToPoint(fl_gc, x3, y3);
|
||||||
LineTo(x3, y3);
|
CGContextClosePath(fl_gc);
|
||||||
LineTo(x, y);
|
CGContextStrokePath(fl_gc);
|
||||||
#else
|
#else
|
||||||
XPoint p[5];
|
XPoint p[5];
|
||||||
p[0].x = x; p[0].y = y;
|
p[0].x = x; p[0].y = y;
|
||||||
@@ -328,14 +326,11 @@ void fl_polygon(int x, int y, int x1, int y1, int x2, int y2) {
|
|||||||
PaintPoly(poly);
|
PaintPoly(poly);
|
||||||
KillPoly(poly);
|
KillPoly(poly);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
CGContextMoveToPoint(fl_gc, x, y);
|
||||||
PolyHandle poly = OpenPoly();
|
CGContextAddLineToPoint(fl_gc, x1, y1);
|
||||||
MoveTo(x, y);
|
CGContextAddLineToPoint(fl_gc, x2, y2);
|
||||||
LineTo(x1, y1);
|
CGContextClosePath(fl_gc);
|
||||||
LineTo(x2, y2);
|
CGContextFillPath(fl_gc);
|
||||||
ClosePoly();
|
|
||||||
PaintPoly(poly);
|
|
||||||
KillPoly(poly);
|
|
||||||
#else
|
#else
|
||||||
p[3].x = x; p[3].y = y;
|
p[3].x = x; p[3].y = y;
|
||||||
XFillPolygon(fl_display, fl_window, fl_gc, p, 3, Convex, 0);
|
XFillPolygon(fl_display, fl_window, fl_gc, p, 3, Convex, 0);
|
||||||
@@ -362,15 +357,12 @@ void fl_polygon(int x, int y, int x1, int y1, int x2, int y2, int x3, int y3) {
|
|||||||
PaintPoly(poly);
|
PaintPoly(poly);
|
||||||
KillPoly(poly);
|
KillPoly(poly);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
CGContextMoveToPoint(fl_gc, x, y);
|
||||||
PolyHandle poly = OpenPoly();
|
CGContextAddLineToPoint(fl_gc, x1, y1);
|
||||||
MoveTo(x, y);
|
CGContextAddLineToPoint(fl_gc, x2, y2);
|
||||||
LineTo(x1, y1);
|
CGContextAddLineToPoint(fl_gc, x3, y3);
|
||||||
LineTo(x2, y2);
|
CGContextClosePath(fl_gc);
|
||||||
LineTo(x3, y3);
|
CGContextFillPath(fl_gc);
|
||||||
ClosePoly();
|
|
||||||
PaintPoly(poly);
|
|
||||||
KillPoly(poly);
|
|
||||||
#else
|
#else
|
||||||
p[4].x = x; p[4].y = y;
|
p[4].x = x; p[4].y = y;
|
||||||
XFillPolygon(fl_display, fl_window, fl_gc, p, 4, Convex, 0);
|
XFillPolygon(fl_display, fl_window, fl_gc, p, 4, Convex, 0);
|
||||||
@@ -384,8 +376,9 @@ void fl_point(int x, int y) {
|
|||||||
#elif defined(__APPLE_QD__)
|
#elif defined(__APPLE_QD__)
|
||||||
MoveTo(x, y); Line(0, 0);
|
MoveTo(x, y); Line(0, 0);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
CGContextMoveToPoint(fl_gc, x, y);
|
||||||
MoveTo(x, y); Line(0, 0);
|
CGContextAddLineToPoint(fl_gc, x, y);
|
||||||
|
CGContextStrokePath(fl_gc);
|
||||||
#else
|
#else
|
||||||
XDrawPoint(fl_display, fl_window, fl_gc, x, y);
|
XDrawPoint(fl_display, fl_window, fl_gc, x, y);
|
||||||
#endif
|
#endif
|
||||||
@@ -455,7 +448,18 @@ void fl_restore_clip() {
|
|||||||
CopyRgn( fl_window_region, portClip ); // changed
|
CopyRgn( fl_window_region, portClip ); // changed
|
||||||
if ( r )
|
if ( r )
|
||||||
SectRgn( portClip, r, portClip );
|
SectRgn( portClip, r, portClip );
|
||||||
SetPortClipRegion( port, portClip );
|
//SetPortClipRegion( port, portClip );
|
||||||
|
// the following code is inefficient and should be replaced with
|
||||||
|
// Carbon clipping - which unfortunatly has some problems on its own...
|
||||||
|
Rect portRect; GetPortBounds(port, &portRect);
|
||||||
|
CGContextSaveGState(fl_gc);
|
||||||
|
CGAffineTransform tf = CGContextGetCTM(fl_gc);
|
||||||
|
tf.d = -1.0f; tf.tx = -tf.tx; tf.ty = tf.ty;
|
||||||
|
//CGContextConcatCTM(fl_gc, tf);
|
||||||
|
tf = CGContextGetCTM(fl_gc);
|
||||||
|
tf.a = 1;
|
||||||
|
ClipCGContextToRegion(fl_gc, &portRect, portClip ); // this call uses transformed coords!
|
||||||
|
CGContextRestoreGState(fl_gc); // DOH! Restores the clipping region!
|
||||||
DisposeRgn( portClip );
|
DisposeRgn( portClip );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -635,5 +639,5 @@ int fl_clip_box(int x, int y, int w, int h, int& X, int& Y, int& W, int& H){
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: fl_rect.cxx,v 1.10.2.4.2.12 2004/08/25 00:20:27 matthiaswm Exp $".
|
// End of "$Id: fl_rect.cxx,v 1.10.2.4.2.13 2004/08/26 00:18:43 matthiaswm Exp $".
|
||||||
//
|
//
|
||||||
|
|||||||
+40
-26
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: fl_vertex.cxx,v 1.5.2.3.2.9 2004/08/25 00:20:27 matthiaswm Exp $"
|
// "$Id: fl_vertex.cxx,v 1.5.2.3.2.10 2004/08/26 00:18:43 matthiaswm Exp $"
|
||||||
//
|
//
|
||||||
// Portable drawing routines for the Fast Light Tool Kit (FLTK).
|
// Portable drawing routines for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@@ -26,6 +26,9 @@
|
|||||||
// Portable drawing code for drawing arbitrary shapes with
|
// Portable drawing code for drawing arbitrary shapes with
|
||||||
// simple 2D transformations. See also fl_arc.cxx
|
// simple 2D transformations. See also fl_arc.cxx
|
||||||
|
|
||||||
|
// matt: the Quartz implementation purposly doesn't use the Quartz matrix
|
||||||
|
// operations for reasons of compatibility and maintainability
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <FL/fl_draw.H>
|
#include <FL/fl_draw.H>
|
||||||
#include <FL/x.H>
|
#include <FL/x.H>
|
||||||
@@ -72,14 +75,21 @@ void fl_rotate(double d) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static XPoint *p = (XPoint *)0;
|
|
||||||
// typedef what the x,y fields in a point are:
|
// typedef what the x,y fields in a point are:
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
typedef int COORD_T;
|
typedef int COORD_T;
|
||||||
|
#define XPOINT XPoint
|
||||||
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
|
typedef float COORD_T;
|
||||||
|
typedef struct { float x; float y; } QPoint;
|
||||||
|
#define XPOINT QPoint
|
||||||
#else
|
#else
|
||||||
typedef short COORD_T;
|
typedef short COORD_T;
|
||||||
|
#define XPOINT XPoint;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static XPOINT *p = (XPOINT *)0;
|
||||||
|
|
||||||
static int p_size;
|
static int p_size;
|
||||||
static int n;
|
static int n;
|
||||||
static int what;
|
static int what;
|
||||||
@@ -105,7 +115,7 @@ static void fl_transformed_vertex(COORD_T x, COORD_T y) {
|
|||||||
if (!n || x != p[n-1].x || y != p[n-1].y) {
|
if (!n || x != p[n-1].x || y != p[n-1].y) {
|
||||||
if (n >= p_size) {
|
if (n >= p_size) {
|
||||||
p_size = p ? 2*p_size : 16;
|
p_size = p ? 2*p_size : 16;
|
||||||
p = (XPoint *)realloc((void*)p, p_size*sizeof(*p));
|
p = (XPOINT*)realloc((void*)p, p_size*sizeof(*p));
|
||||||
}
|
}
|
||||||
p[n].x = x;
|
p[n].x = x;
|
||||||
p[n].y = y;
|
p[n].y = y;
|
||||||
@@ -114,7 +124,11 @@ static void fl_transformed_vertex(COORD_T x, COORD_T y) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void fl_transformed_vertex(double xf, double yf) {
|
void fl_transformed_vertex(double xf, double yf) {
|
||||||
|
#ifdef __APPLE_QUARTZ__
|
||||||
|
fl_transformed_vertex(COORD_T(xf), COORD_T(yf));
|
||||||
|
#else
|
||||||
fl_transformed_vertex(COORD_T(rint(xf)), COORD_T(rint(yf)));
|
fl_transformed_vertex(COORD_T(rint(xf)), COORD_T(rint(yf)));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void fl_vertex(double x,double y) {
|
void fl_vertex(double x,double y) {
|
||||||
@@ -127,8 +141,11 @@ void fl_end_points() {
|
|||||||
#elif defined(__APPLE_QD__)
|
#elif defined(__APPLE_QD__)
|
||||||
for (int i=0; i<n; i++) { MoveTo(p[i].x, p[i].y); Line(0, 0); }
|
for (int i=0; i<n; i++) { MoveTo(p[i].x, p[i].y); Line(0, 0); }
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
for (int i=0; i<n; i++) {
|
||||||
for (int i=0; i<n; i++) { MoveTo(p[i].x, p[i].y); Line(0, 0); }
|
CGContextMoveToPoint(fl_gc, p[i].x, p[i].y);
|
||||||
|
CGContextAddLineToPoint(fl_gc, p[i].x, p[i].y);
|
||||||
|
CGContextStrokePath(fl_gc);
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
if (n>1) XDrawPoints(fl_display, fl_window, fl_gc, p, n, 0);
|
if (n>1) XDrawPoints(fl_display, fl_window, fl_gc, p, n, 0);
|
||||||
#endif
|
#endif
|
||||||
@@ -146,10 +163,11 @@ void fl_end_line() {
|
|||||||
MoveTo(p[0].x, p[0].y);
|
MoveTo(p[0].x, p[0].y);
|
||||||
for (int i=1; i<n; i++) LineTo(p[i].x, p[i].y);
|
for (int i=1; i<n; i++) LineTo(p[i].x, p[i].y);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning
|
|
||||||
if (n<=1) return;
|
if (n<=1) return;
|
||||||
MoveTo(p[0].x, p[0].y);
|
CGContextMoveToPoint(fl_gc, p[0].x, p[0].y);
|
||||||
for (int i=1; i<n; i++) LineTo(p[i].x, p[i].y);
|
for (int i=1; i<n; i++)
|
||||||
|
CGContextAddLineToPoint(fl_gc, p[i].x, p[i].y);
|
||||||
|
CGContextStrokePath(fl_gc);
|
||||||
#else
|
#else
|
||||||
if (n>1) XDrawLines(fl_display, fl_window, fl_gc, p, n, 0);
|
if (n>1) XDrawLines(fl_display, fl_window, fl_gc, p, n, 0);
|
||||||
#endif
|
#endif
|
||||||
@@ -185,14 +203,12 @@ void fl_end_polygon() {
|
|||||||
PaintPoly(ph);
|
PaintPoly(ph);
|
||||||
KillPoly(ph);
|
KillPoly(ph);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
|
||||||
if (n<=1) return;
|
if (n<=1) return;
|
||||||
PolyHandle ph = OpenPoly();
|
CGContextMoveToPoint(fl_gc, p[0].x, p[0].y);
|
||||||
MoveTo(p[0].x, p[0].y);
|
for (int i=1; i<n; i++)
|
||||||
for (int i=1; i<n; i++) LineTo(p[i].x, p[i].y);
|
CGContextAddLineToPoint(fl_gc, p[i].x, p[i].y);
|
||||||
ClosePoly();
|
CGContextClosePath(fl_gc);
|
||||||
PaintPoly(ph);
|
CGContextFillPath(fl_gc);
|
||||||
KillPoly(ph);
|
|
||||||
#else
|
#else
|
||||||
if (n>2) XFillPolygon(fl_display, fl_window, fl_gc, p, n, Convex, 0);
|
if (n>2) XFillPolygon(fl_display, fl_window, fl_gc, p, n, Convex, 0);
|
||||||
#endif
|
#endif
|
||||||
@@ -245,14 +261,12 @@ void fl_end_complex_polygon() {
|
|||||||
PaintPoly(ph);
|
PaintPoly(ph);
|
||||||
KillPoly(ph);
|
KillPoly(ph);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
|
||||||
if (n<=1) return;
|
if (n<=1) return;
|
||||||
PolyHandle ph = OpenPoly();
|
CGContextMoveToPoint(fl_gc, p[0].x, p[0].y);
|
||||||
MoveTo(p[0].x, p[0].y);
|
for (int i=1; i<n; i++)
|
||||||
for (int i=1; i<n; i++) LineTo(p[i].x, p[i].y);
|
CGContextAddLineToPoint(fl_gc, p[i].x, p[i].y);
|
||||||
ClosePoly();
|
CGContextClosePath(fl_gc);
|
||||||
PaintPoly(ph);
|
CGContextFillPath(fl_gc);
|
||||||
KillPoly(ph);
|
|
||||||
#else
|
#else
|
||||||
if (n>2) XFillPolygon(fl_display, fl_window, fl_gc, p, n, 0, 0);
|
if (n>2) XFillPolygon(fl_display, fl_window, fl_gc, p, n, 0, 0);
|
||||||
#endif
|
#endif
|
||||||
@@ -281,9 +295,9 @@ void fl_circle(double x, double y,double r) {
|
|||||||
Rect rt; rt.left=llx; rt.right=llx+w; rt.top=lly; rt.bottom=lly+h;
|
Rect rt; rt.left=llx; rt.right=llx+w; rt.top=lly; rt.bottom=lly+h;
|
||||||
(what == POLYGON ? PaintOval : FrameOval)(&rt);
|
(what == POLYGON ? PaintOval : FrameOval)(&rt);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning
|
# warning quartz : cicle won_t scale to current matrix!
|
||||||
Rect rt; rt.left=llx; rt.right=llx+w; rt.top=lly; rt.bottom=lly+h;
|
CGContextAddArc(fl_gc, xt, yt, (w+h)*0.25f, 0, 2.0f*M_PI, 1);
|
||||||
(what == POLYGON ? PaintOval : FrameOval)(&rt);
|
(what == POLYGON ? CGContextFillPath : CGContextStrokePath)(fl_gc);
|
||||||
#else
|
#else
|
||||||
(what == POLYGON ? XFillArc : XDrawArc)
|
(what == POLYGON ? XFillArc : XDrawArc)
|
||||||
(fl_display, fl_window, fl_gc, llx, lly, w, h, 0, 360*64);
|
(fl_display, fl_window, fl_gc, llx, lly, w, h, 0, 360*64);
|
||||||
@@ -291,5 +305,5 @@ void fl_circle(double x, double y,double r) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: fl_vertex.cxx,v 1.5.2.3.2.9 2004/08/25 00:20:27 matthiaswm Exp $".
|
// End of "$Id: fl_vertex.cxx,v 1.5.2.3.2.10 2004/08/26 00:18:43 matthiaswm Exp $".
|
||||||
//
|
//
|
||||||
|
|||||||
+2
-6
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: gl_draw.cxx,v 1.7.2.5.2.14 2004/08/25 00:20:27 matthiaswm Exp $"
|
// "$Id: gl_draw.cxx,v 1.7.2.5.2.15 2004/08/26 00:18:43 matthiaswm Exp $"
|
||||||
//
|
//
|
||||||
// OpenGL drawing support routines for the Fast Light Tool Kit (FLTK).
|
// OpenGL drawing support routines for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@@ -63,10 +63,6 @@ void gl_font(int fontid, int size) {
|
|||||||
fl_fontsize->size, 0, 256, fl_fontsize->listbase);
|
fl_fontsize->size, 0, 256, fl_fontsize->listbase);
|
||||||
#elif defined(__APPLE_QUARTZ__)
|
#elif defined(__APPLE_QUARTZ__)
|
||||||
#warning quartz
|
#warning quartz
|
||||||
// undefined characters automatically receive an empty GL list in aglUseFont
|
|
||||||
fl_fontsize->listbase = glGenLists(256);
|
|
||||||
aglUseFont(aglGetCurrentContext(), fl_fontsize->font, fl_fontsize->face,
|
|
||||||
fl_fontsize->size, 0, 256, fl_fontsize->listbase);
|
|
||||||
#else
|
#else
|
||||||
# if USE_XFT
|
# if USE_XFT
|
||||||
fl_xfont = fl_xxfont();
|
fl_xfont = fl_xxfont();
|
||||||
@@ -213,5 +209,5 @@ void gl_draw_image(const uchar* b, int x, int y, int w, int h, int d, int ld) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: gl_draw.cxx,v 1.7.2.5.2.14 2004/08/25 00:20:27 matthiaswm Exp $".
|
// End of "$Id: gl_draw.cxx,v 1.7.2.5.2.15 2004/08/26 00:18:43 matthiaswm Exp $".
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user