diff options
| -rw-r--r-- | FL/Fl_Cairo.H | 5 | ||||
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | cairo/Fl_Cairo.cxx (renamed from src/Fl_Cairo.cxx) | 17 | ||||
| -rw-r--r-- | cairo/Makefile | 173 | ||||
| -rw-r--r-- | configh.in | 9 | ||||
| -rw-r--r-- | configure.in | 55 | ||||
| -rwxr-xr-x | fltk-config.in | 20 | ||||
| -rw-r--r-- | makeinclude.in | 9 | ||||
| -rw-r--r-- | src/Fl.cxx | 2 | ||||
| -rw-r--r-- | src/Fl_Double_Window.cxx | 2 | ||||
| -rw-r--r-- | src/Fl_Menu_Window.cxx | 4 | ||||
| -rw-r--r-- | src/Fl_Overlay_Window.cxx | 2 | ||||
| -rw-r--r-- | src/Fl_Window.cxx | 2 | ||||
| -rw-r--r-- | src/Fl_mac.cxx | 8 | ||||
| -rw-r--r-- | src/Makefile | 10 | ||||
| -rw-r--r-- | test/Makefile | 3 | ||||
| -rw-r--r-- | test/cairo_test.cxx | 2 | ||||
| -rw-r--r-- | vc2005/fltk.lib.vcproj | 4 | ||||
| -rw-r--r-- | vc2005/fltkdll.vcproj | 38 |
19 files changed, 337 insertions, 30 deletions
diff --git a/FL/Fl_Cairo.H b/FL/Fl_Cairo.H index c827216b3..e21373c03 100644 --- a/FL/Fl_Cairo.H +++ b/FL/Fl_Cairo.H @@ -44,6 +44,7 @@ # include <cairo-win32.h> # elif defined(__APPLE_QUARTZ__) # include <cairo-quartz.h> +# else # error Cairo is not supported on that platform. # endif @@ -65,7 +66,7 @@ public: // access attributes cairo_t* cc() const {return cc_;} ///< Gets the current cairo context - bool autolink() const {return autolink_;} ///< Sets the autolink option. See Fl::cairo_autolink_context(bool) + bool autolink() const {return autolink_;} ///< Gets the autolink option. See Fl::cairo_autolink_context(bool) /** Sets the current cairo context, \a own indicates cc deletion is handle externally by user */ void cc(cairo_t* c, bool own=true) { if (cc_ && own_cc_) cairo_destroy(cc_); @@ -73,7 +74,7 @@ public: if (!cc_) window_=0; own_cc_=own; } - void autolink(bool b) {autolink_ = b;} ///< Gets the autolink option + void autolink(bool b); ///< Sets the autolink option, only available with --enable-cairoext void window(void* w) {window_=w;} ///< Sets the window \a w to keep track on void* window() const {return window_;} ///< Gets the last window attached to a cc void gc(void* c) {gc_=c;} ///< Sets the gc \a c to keep track on @@ -27,7 +27,7 @@ include makeinclude -DIRS = $(IMAGEDIRS) src fluid test documentation +DIRS = $(IMAGEDIRS) $(CAIRODIR) src fluid test documentation all: makeinclude fltk-config for dir in $(DIRS); do\ diff --git a/src/Fl_Cairo.cxx b/cairo/Fl_Cairo.cxx index eb79c37de..4fd456cce 100644 --- a/src/Fl_Cairo.cxx +++ b/cairo/Fl_Cairo.cxx @@ -34,8 +34,21 @@ // static Fl module initialization : Fl_Cairo_State Fl::cairo_state_; ///< contains all necesary info for current cairo context mapping + + // Fl cairo features implementation +// Fl_Cairo_State class impl + +void Fl_Cairo_State::autolink(bool b) { +#ifdef USE_CAIRO + autolink_ = b; +#else + Fl::fatal("In Fl::autolink(bool) : Cairo autolink() feature is only " + "available with the enable-cairoext configure option, now quitting."); +#endif +} + /** Provides a corresponding cairo context for window \a wi. This is needed in a draw() override if Fl::cairo_autolink_context() @@ -142,6 +155,10 @@ cairo_t * Fl::cairo_make_current(void *gc, int W, int H) { Fl::cairo_cc(c); return c; } +#else +// just don't leave the libfltk_cairo lib empty to avoid warnings +#include <FL/Fl_Export.H> +FL_EXPORT int fltk_cairo_dummy() { return 1;} #endif // HAVE_CAIRO // diff --git a/cairo/Makefile b/cairo/Makefile new file mode 100644 index 000000000..8381369de --- /dev/null +++ b/cairo/Makefile @@ -0,0 +1,173 @@ +# +# "$Id: Makefile 5667 2007-02-07 02:35:44Z mike $" +# +# PNG library makefile for the Fast Light Toolkit (FLTK). +# +# Copyright 1997-2007 by Easy Software Products. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Library General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. +# +# Please report all bugs and problems to "fltk-bugs@fltk.org". +# + +include ../makeinclude + +# +# Object files... +# + +CAIROOBJECTS = Fl_Cairo.o + +$(CAIROLIBNAME): $(CAIROOBJECTS) + echo $(LIBCOMMAND) $@ ... + $(RM) $@ + $(LIBCOMMAND) $@ $(CAIROOBJECTS) + $(RANLIB) $@ + +libfltk_cairo.so.1.3: $(CAIROOBJECTS) libfltk.so.1.3 + echo $(DSOCOMMAND) $@ ... + $(DSOCOMMAND) $@ $(CAIROOBJECTS) -L. $(IMAGELIBS) -lfltk + $(RM) libfltk_cairo.so + $(LN) libfltk_cairo.so.1.3 libfltk_cairo.so + +libfltk_cairo.sl.1.3: $(CAIROOBJECTS) libfltk.sl.1.3 + echo $(DSOCOMMAND) $@ ... + $(DSOCOMMAND) $@ $(CAIROOBJECTS) -L. $(IMAGELIBS) -lfltk + $(RM) libfltk_cairo.sl + $(LN) libfltk_cairo.sl.1.3 libfltk_cairo.sl + +libfltk_cairo.1.3.dylib: $(CAIROOBJECTS) libfltk.1.3.dylib + echo $(DSOCOMMAND) $@ ... + $(DSOCOMMAND) $@ \ + -install_name $(libdir)/$@ \ + -current_version 1.3.0 \ + -compatibility_version 1.3.0 \ + $(CAIROOBJECTS) -L. $(LDLIBS) $(IMAGELIBS) -lfltk + $(RM) libfltk_cairo.dylib + $(LN) libfltk_cairo.1.3.dylib libfltk_cairo.dylib + +libfltk_cairo_s.a: $(CAIROOBJECTS) + echo $(DSOCOMMAND) libfltk_cairo_s.o ... + $(DSOCOMMAND) libfltk_cairo_s.o $(CAIROOBJECTS) + echo $(LIBCOMMAND) libfltk_cairo_s.a libfltk_cairo_s.o + $(RM) $@ + $(LIBCOMMAND) libfltk_cairo_s.a libfltk_cairo_s.o + $(CHMOD) +x libfltk_cairo_s.a + + +cygfltknox_cairo-1.3.dll: $(CAIROLIBNAME) cygfltknox-1.3.dll + echo $(DSOCOMMAND) $(CAIROLIBNAME) ... + $(DSOCOMMAND) $(CAIROLIBNAME) -Wl,--no-whole-archive \ + -Wl,--out-implib=libfltk_cairo.dll.a \ + -L. -lfltk $(CAIROLIBS) $(LDLIBS) + +mgwfltknox_cairo-1.3.dll: $(CAIROLIBNAME) mgwfltknox-1.3.dll + echo $(DSOCOMMAND) $(CAIROLIBNAME) ... + $(DSOCOMMAND) $(CAIROLIBNAME) -Wl,--no-whole-archive \ + -Wl,--out-implib=libfltk_cairo.dll.a \ + -L. -lfltk $(CAIROLIBS) $(LDLIBS) + +# +# Make all of the targets... +# + +all: $(CAIROLIBNAME) $(CAIRODSONAME) + + +# +# Clean all of the targets and object files... +# + +clean: + -$(RM) *.o *.dll.a core.* *~ *.bak *.bck + -$(RM) $(CAIROOBJECTS) $(CAIROLIBNAME) $(CAIRODSONAME) \ + libfltk_cairo.so libfltk_cairo.sl libfltk_cairo.dylib + +# +# Install everything... +# + +install: $(CAIROLIBNAME) $(CAIRODSONAME) + echo "Installing libfltk_cairo$(LIBEXT) in $(libdir)..." + -$(INSTALL_DIR) $(DESTDIR)$(libdir) + $(INSTALL_LIB) $(CAIROLIBNAME) $(DESTDIR)$(libdir) + + if test x$(CAIRODSONAME) = xlibfltk_cairo.so.1.3; then\ + $(RM) $(DESTDIR)$(libdir)/libfltk_cairo.so*;\ + $(INSTALL_LIB) libfltk_cairo.so.1.3 $(DESTDIR)$(libdir); \ + $(LN) libfltk_cairo.so.1.3 $(DESTDIR)$(libdir)/libfltk_cairo.so;\ + fi + if test x$(CAIRODSONAME) = xlibfltk_cairo.sl.1.3; then\ + $(RM) $(DESTDIR)$(libdir)/libfltk_cairo.sl*;\ + $(INSTALL_LIB) libfltk_cairo.sl.1.3 $(DESTDIR)$(libdir); \ + $(LN) libfltk_cairo.sl.1.3 $(DESTDIR)$(libdir)/libfltk_cairo.sl;\ + fi + if test x$(CAIRODSONAME) = xlibfltk_cairo.1.3.dylib; then\ + $(RM) $(DESTDIR)$(libdir)/libfltk_cairo.*dylib;\ + $(INSTALL_LIB) libfltk_cairo.1.3.dylib $(DESTDIR)$(libdir); \ + $(LN) libfltk_cairo.1.3.dylib $(DESTDIR)$(libdir)/libfltk_cairo.dylib;\ + fi + if test x$(CAIRODSONAME) = xlibfltk_cairo_s.a; then\ + $(RM) $(DESTDIR)$(libdir)/libfltk_cairo_s.a;\ + $(INSTALL_LIB) libfltk_cairo_s.a $(DESTDIR)$(libdir); \ + fi + if test x$(CAIRODSONAME) = xcygfltknox_cairo-1.3.dll; then\ + $(RM) $(DESTDIR)$(bindir)/$(CAIRODSONAME); \ + $(INSTALL_LIB) $(CAIRODSONAME) $(DESTDIR)$(bindir); \ + $(RM) $(DESTDIR)$(libdir)/libfltk_cairo.dll.a;\ + $(INSTALL_LIB) libfltk_cairo.dll.a $(DESTDIR)$(libdir); \ + fi + if test x$(CAIRODSONAME) = xmgwfltknox_cairo-1.3.dll; then\ + $(RM) $(DESTDIR)$(bindir)/$(CAIRODSONAME); \ + $(INSTALL_LIB) $(CAIRODSONAME) $(DESTDIR)$(bindir); \ + $(RM) $(DESTDIR)$(libdir)/libfltk_cairo.dll.a;\ + $(INSTALL_LIB) libfltk_cairo.dll.a $(DESTDIR)$(libdir); \ + fi +# +# Uninstall everything... +# + +uninstall: + echo "Uninstalling libfltk_cairo$(LIBEXT) in $(libdir)..." + if test x$(CAIROLIBNAME) != x; then\ + $(RM) $(DESTDIR)$(libdir)/$(CAIROLIBNAME);\ + fi + if test x$(CAIRODSONAME) = xlibfltk_cairo.so.1.3; then\ + $(RM) $(DESTDIR)$(libdir)/libfltk_cairo.so*;\ + fi + if test x$(CAIRODSONAME) = xlibfltk_cairo.sl.1.3; then\ + $(RM) $(DESTDIR)$(libdir)/libfltk_cairo.sl*;\ + fi + if test x$(CAIRODSONAME) = xlibfltk_cairo.1.3.dylib; then\ + $(RM) $(DESTDIR)$(libdir)/libfltk_cairo.*dylib;\ + fi + if test x$(CAIRODSONAME) = xlibfltk_cairo_s.a; then\ + $(RM) $(DESTDIR)$(libdir)/libfltk_cairo_s.a;\ + fi + if test x$(CAIRODSONAME) = xcygfltknox_cairo-1.3.dll; then\ + $(RM) $(DESTDIR)$(bindir)/$(CAIRODSONAME); \ + $(RM) $(DESTDIR)$(libdir)/libfltk_cairo.dll.a;\ + fi + if test x$(CAIRODSONAME) = xmgwfltknox_cairo-1.3.dll; then\ + $(RM) $(DESTDIR)$(bindir)/$(CAIRODSONAME); \ + $(RM) $(DESTDIR)$(libdir)/libfltk_cairo.dll.a;\ + fi + +$(CAIROOBJECTS): ../makeinclude + +# +# End of "$Id: Makefile 5667 2007-02-07 02:35:44Z mike $". +# diff --git a/configh.in b/configh.in index d99e95aa8..a2de8d568 100644 --- a/configh.in +++ b/configh.in @@ -247,6 +247,15 @@ #undef HAVE_LIBJPEG /* + * USE_CAIRO + * + * Do we have the cairo library available and want extended cairo use in fltk ? + * will implies to link cairo.lib in all fltk based apps. + */ + +#undef USE_CAIRO + +/* * HAVE_CAIRO * * Do we have the cairo library available? diff --git a/configure.in b/configure.in index a46625ae1..d6acd8a7d 100644 --- a/configure.in +++ b/configure.in @@ -97,11 +97,13 @@ LIBNAME="../lib/libfltk.a" FLLIBNAME="../lib/libfltk_forms.a" GLLIBNAME="../lib/libfltk_gl.a" IMGLIBNAME="../lib/libfltk_images.a" +CAIROLIBNAME="../lib/libfltk_cairo.a" AC_SUBST(FLLIBNAME) AC_SUBST(GLDEMOS) AC_SUBST(GLLIBNAME) AC_SUBST(IMGLIBNAME) +AC_SUBST(CAIROLIBNAME) AC_SUBST(LIBEXT) AC_SUBST(LIBNAME) AC_SUBST(LINKFLTK) @@ -131,6 +133,7 @@ if test x$enable_shared = xyes; then FLDSONAME="libfltk_forms.$FL_API_VERSION.dylib" GLDSONAME="libfltk_gl.$FL_API_VERSION.dylib" IMGDSONAME="libfltk_images.$FL_API_VERSION.dylib" + CAIRODSONAME="libfltk_cairo.$FL_API_VERSION.dylib" DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -dynamiclib -lc -o" ;; @@ -139,6 +142,7 @@ if test x$enable_shared = xyes; then FLDSONAME="libfltk_forms.so.$FL_API_VERSION" GLDSONAME="libfltk_gl.so.$FL_API_VERSION" IMGDSONAME="libfltk_images.so.$FL_API_VERSION" + CAIRODSONAME="libfltk_cairo.so.$FL_API_VERSION" DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -h \$@ \$(LDLIBS) -G $DEBUGFLAG -o" if test "x$libdir" != "x/usr/lib"; then DSOLINK="-R$libdir" @@ -149,6 +153,7 @@ if test x$enable_shared = xyes; then FLDSONAME="libfltk_forms.sl.$FL_API_VERSION" GLDSONAME="libfltk_gl.sl.$FL_API_VERSION" IMGDSONAME="libfltk_images.sl.$FL_API_VERSION" + CAIRODSONAME="libfltk_cairo.sl.$FL_API_VERSION" DSOCOMMAND="ld \$(DSOFLAGS) -b -z +h \$@ $DEBUGFLAG -o" if test "x$libdir" != "x/usr/lib"; then DSOLINK="-Wl,-rpath,$libdir" @@ -159,6 +164,7 @@ if test x$enable_shared = xyes; then FLDSONAME="libfltk_forms.so.$FL_API_VERSION" GLDSONAME="libfltk_gl.so.$FL_API_VERSION" IMGDSONAME="libfltk_images.so.$FL_API_VERSION" + CAIRODSONAME="libfltk_cairo.so.$FL_API_VERSION" DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@,-set_version,sgi1.1 \$(LDLIBS) -shared $DEBUGFLAG -o" if test "x$libdir" != "x/usr/lib" -a "x$libdir" != "x/usr/lib32" -a "x$libdir" != "x/usr/lib64"; then DSOLINK="-Wl,-rpath,$libdir" @@ -169,6 +175,7 @@ if test x$enable_shared = xyes; then FLDSONAME="libfltk_forms.so.$FL_API_VERSION" GLDSONAME="libfltk_gl.so.$FL_API_VERSION" IMGDSONAME="libfltk_images.so.$FL_API_VERSION" + CAIRODSONAME="libfltk_cairo.so.$FL_API_VERSION" DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ \$(LDLIBS) -shared $DEBUGFLAG -o" if test "x$libdir" != "x/usr/lib" -a "x$libdir" != "x/usr/lib32"; then DSOLINK="-Wl,-rpath,$libdir" @@ -179,6 +186,7 @@ if test x$enable_shared = xyes; then FLDSONAME="libfltk_forms.so.$FL_API_VERSION" GLDSONAME="libfltk_gl.so.$FL_API_VERSION" IMGDSONAME="libfltk_images.so.$FL_API_VERSION" + CAIRODSONAME="libfltk_cairo.so.$FL_API_VERSION" DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ \$(LDLIBS) -shared -fPIC $DEBUGFLAG -o" if test "x$libdir" != "x/usr/lib"; then DSOLINK="-Wl,-rpath,$libdir" @@ -189,6 +197,7 @@ if test x$enable_shared = xyes; then FLDSONAME="libfltk_forms_s.a" GLDSONAME="libfltk_gl_s.a" IMGDSONAME="libfltk_images_s.a" + CAIRODSONAME="libfltk_cairo_s.a" DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-bexpall,-bM:SRE,-bnoentry -o" SHAREDSUFFIX="_s" ;; @@ -199,11 +208,13 @@ if test x$enable_shared = xyes; then FLDSONAME="mgwfltknox_forms-$FL_API_VERSION.dll" GLDSONAME="mgwfltknox_gl-$FL_API_VERSION.dll" IMGDSONAME="mgwfltknox_images-$FL_API_VERSION.dll" + CAIRODSONAME="mgwfltknox_cairo-$FL_API_VERSION.dll" else DSONAME="cygfltknox-$FL_API_VERSION.dll" FLDSONAME="cygfltknox_forms-$FL_API_VERSION.dll" GLDSONAME="cygfltknox_gl-$FL_API_VERSION.dll" IMGDSONAME="cygfltknox_images-$FL_API_VERSION.dll" + CAIRODSONAME="cygfltknox_cairo-$FL_API_VERSION.dll" fi #----------------------------------------------------------- # -Wl,--enable-runtime-pseudo-reloc: See str 1585 @@ -221,11 +232,12 @@ if test x$enable_shared = xyes; then FLDSONAME="libfltk_forms.so.$FL_API_VERSION" GLDSONAME="libfltk_gl.so.$FL_API_VERSION" IMGDSONAME="libfltk_images.so.$FL_API_VERSION" + CAIRODSONAME="libfltk_cairo.so.$FL_API_VERSION" DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ \$(LDLIBS) -shared $DEBUGFLAG -o" ;; esac - LINKSHARED="-L../src -lfltk_images$SHAREDSUFFIX -lfltk_forms$SHAREDSUFFIX -lfltk$SHAREDSUFFIX" + LINKSHARED="-L../src -lfltk_cairo$SHAREDSUFFIX -lfltk_images$SHAREDSUFFIX -lfltk_forms$SHAREDSUFFIX -lfltk$SHAREDSUFFIX" else DSOCOMMAND="echo" DSOLINK="" @@ -233,10 +245,11 @@ else FLDSONAME="" GLDSONAME="" IMGDSONAME="" + CAIRODSONAME="" PICFLAG=0 SHAREDSUFFIX="" FLUID="fluid" - LINKSHARED="../lib/libfltk_images.a ../lib/libfltk_forms.a ../lib/libfltk.a" + LINKSHARED="../lib/libfltk_cairo.a ../lib/libfltk_images.a ../lib/libfltk_forms.a ../lib/libfltk.a" fi AC_SUBST(DSOCOMMAND) @@ -246,6 +259,7 @@ AC_SUBST(DSONAME) AC_SUBST(FLDSONAME) AC_SUBST(GLDSONAME) AC_SUBST(IMGDSONAME) +AC_SUBST(CAIRODSONAME) AC_SUBST(SHAREDSUFFIX) AC_SUBST(LINKSHARED) AC_SUBST(FLUID) @@ -558,15 +572,41 @@ dnl See if we need a .exe extension on executables... AC_EXEEXT dnl Check for Cairo library unless disabled... -AC_ARG_ENABLE(cairo,[ --enable-cairo use Cairo graphics (default=no)]) +CAIRODIR="" +CAIROFLAGS="" +LINKFLTKCAIRO="" +CAIROLIBS="" + +AC_ARG_ENABLE(cairo,[ --enable-cairoext use fltk code instrumentation for cairo extended use (default=no)]) +if test x$enable_cairoext = xyes; then + AC_DEFINE(USE_CAIRO) + AC_DEFINE(HAVE_CAIRO) + dnl FIXME This part should be fixed so configure do not depend on + dnl we do not rely on pkg-config . + CAIRODIR="cairo" + CAIROFLAGS="`pkg-config --cflags cairo`" + CAIROLIBS="-lcairo -lpixman-1" + CXXFLAGS="$CAIROFLAGS $CXXFLAGS" + LINKFLTKCAIRO="../lib/libfltk_cairo.a" + LIBS="$CAIROLIBS $LINKFLTKCAIRO $LIBS" +fi + +dnl Check for Cairo library unless disabled... +AC_ARG_ENABLE(cairo,[ --enable-cairo use lib Cairo (default=no)]) if test x$enable_cairo = xyes; then AC_DEFINE(HAVE_CAIRO) dnl FIXME This part should be fixed so configure do not depend on dnl we do not rely on pkg-config . - CXXFLAGS="`pkg-config --cflags cairo` $CXXFLAGS" + CAIRODIR="cairo" + CAIROFLAGS="`pkg-config --cflags cairo`" CAIROLIBS="-lcairo -lpixman-1" - LIBS="-lcairo -lpixman-1 $LIBS" + CXXFLAGS="$CAIROFLAGS $CXXFLAGS" + LINKFLTKCAIRO="../lib/libfltk_cairo.a" fi +AC_SUBST(CAIRODIR) +AC_SUBST(CAIROFLAGS) +AC_SUBST(CAIROLIBS) +AC_SUBST(LINKFLTKCAIRO) dnl Check for pthreads for multi-threaded apps... have_pthread=no @@ -1130,7 +1170,10 @@ else echo " ZLIB=Builtin" fi if test x$enable_cairo = xyes; then - echo " CAIRO=System" + echo " CAIRO=lib" +fi +if test x$enable_cairoext = xyes; then + echo " CAIRO=internal_use" fi diff --git a/fltk-config.in b/fltk-config.in index 24a379d74..5fd102155 100755 --- a/fltk-config.in +++ b/fltk-config.in @@ -56,6 +56,7 @@ CXXFLAGS="@CXXFLAGS@ @LARGEFILE@ @PTHREAD_FLAGS@" LDFLAGS="@LDFLAGS@" LDLIBS="@LIBS@" OPTIM="@OPTIM@" +CAIROFLAGS="@CAIROFLAGS@" # Check for local invocation, and update paths accordingly... if test -f "$selfdir/FL/Fl_Window.H"; then @@ -84,11 +85,17 @@ if test -d $includedir/FL/images; then CXXFLAGS="-I$includedir/FL/images $CXXFLAGS" fi +if test -f "$libdir/libfltk_cairo.a"; then + CFLAGS="$CAIROFLAGS $CFLAGS" + CXXFLAGS="$CAIROFLAGS $CXXFLAGS" +fi + # libraries to link with: LIBNAME="@LIBNAME@" DSONAME="@DSONAME@" DSOLINK="@DSOLINK@" IMAGELIBS="@IMAGELIBS@" +CAIROLIBS="@CAIROLIBS@" SHAREDSUFFIX="@SHAREDSUFFIX@" usage () @@ -103,6 +110,7 @@ Options telling what we are doing: [--use-images] use extra image formats (PNG, JPEG) [--use-glut] use glut compatibility layer [--use-forms] use forms compatibility layer + [--use-cairo] use cairo graphics lib Options telling what information we request: [--cc] return C compiler used to compile FLTK @@ -170,6 +178,9 @@ do --use-images) use_images=yes ;; + --use-cairo) + use_cairo=yes + ;; --cflags) echo_cflags=yes ;; @@ -235,6 +246,11 @@ if test x$use_images = xyes; then LDSTATIC="$libdir/libfltk_images.a $IMAGELIBS $LDSTATIC" fi +if test x$use_cairo = xyes; then + LDLIBS="-lfltk_cairo$SHAREDSUFFIX $CAIROLIBS $LDLIBS" + LDSTATIC="$libdir/libfltk_cairo.a $CAIROLIBS $LDSTATIC" +fi + LDLIBS="$DSOLINK $LDFLAGS $libs $LDLIBS" LDSTATIC="$LDFLAGS $LDSTATIC" @@ -351,6 +367,10 @@ if test "$echo_libs" = "yes"; then echo $libdir/libfltk_gl.a fi + if test x$use_cairo = xyes; then + echo $libdir/libfltk_cairo.a + fi + if test x$use_images = xyes; then echo $libdir/libfltk_images.a diff --git a/makeinclude.in b/makeinclude.in index 500f3dbbe..88bcad9d8 100644 --- a/makeinclude.in +++ b/makeinclude.in @@ -64,6 +64,7 @@ LIBNAME = @LIBNAME@ FLLIBNAME = @FLLIBNAME@ GLLIBNAME = @GLLIBNAME@ IMGLIBNAME = @IMGLIBNAME@ +CAIROLIBNAME = @CAIROLIBNAME@ LIBCOMMAND = @LIBCOMMAND@ LIBEXT = @LIBEXT@ RANLIB = @RANLIB@ @@ -71,10 +72,13 @@ DSONAME = @DSONAME@ FLDSONAME = @FLDSONAME@ GLDSONAME = @GLDSONAME@ IMGDSONAME = @IMGDSONAME@ +CAIRODSONAME = @IMGDSONAME@ DSOCOMMAND = @DSOCOMMAND@ # libraries to link with: AUDIOLIBS = @AUDIOLIBS@ +CAIROLIBS = @CAIROLIBS@ +CAIROFLAGS = @CAIROFLAGS@ DSOFLAGS = -L. @DSOFLAGS@ LDFLAGS = $(OPTIM) @LDFLAGS@ LDLIBS = @LIBS@ @@ -83,12 +87,13 @@ LINKFLTK = @LINKFLTK@ LINKFLTKGL = @LINKFLTKGL@ LINKFLTKFORMS = @LINKFLTKFORMS@ @LINKFLTK@ LINKFLTKIMG = @LINKFLTKIMG@ @LINKFLTK@ $(IMAGELIBS) -LINKSHARED = @DSOLINK@ @LINKSHARED@ $(IMAGELIBS) +LINKFLTKCAIRO = @LINKFLTKCAIRO@ $(CAIROLIBS) +LINKSHARED = @DSOLINK@ @LINKSHARED@ $(IMAGELIBS) $(CAIROLIBS) IMAGELIBS = -L../lib @IMAGELIBS@ # image libraries to build... IMAGEDIRS = @JPEG@ @ZLIB@ @PNG@ - +CAIRODIR = @CAIRODIR@ # The extension to use for executables... EXEEXT = @EXEEXT@ diff --git a/src/Fl.cxx b/src/Fl.cxx index 3c826e774..57d8cf778 100644 --- a/src/Fl.cxx +++ b/src/Fl.cxx @@ -1184,7 +1184,7 @@ void Fl_Window::hide() { fl_release_dc(fl_window, fl_gc); fl_window = (HWND)-1; fl_gc = 0; -# ifdef HAVE_CAIRO +# ifdef USE_CAIRO if (Fl::cairo_autolink_context()) Fl::cairo_make_current((Fl_Window*) 0); # endif } diff --git a/src/Fl_Double_Window.cxx b/src/Fl_Double_Window.cxx index ffaff2663..5dcd2dd5d 100644 --- a/src/Fl_Double_Window.cxx +++ b/src/Fl_Double_Window.cxx @@ -323,7 +323,7 @@ void Fl_Double_Window::flush(int eraseoverlay) { RestoreDC(fl_gc, save); DeleteDC(fl_gc); fl_gc = _sgc; - //# if defined(HAVE_CAIRO) + //# if defined(USE_CAIRO) //if Fl::cairo_autolink_context() Fl::cairo_make_current(this); // capture gc changes automatically to update the cairo context adequately //# endif #elif defined(__APPLE__) diff --git a/src/Fl_Menu_Window.cxx b/src/Fl_Menu_Window.cxx index a7f17c7d0..ba6cb7043 100644 --- a/src/Fl_Menu_Window.cxx +++ b/src/Fl_Menu_Window.cxx @@ -69,8 +69,8 @@ void Fl_Menu_Window::flush() { fl_window = myi->xid; if (!gc) { gc = XCreateGC(fl_display, myi->xid, 0, 0); -# if defined(HAVE_CAIRO) - Fl::cairo_make_current(gc); // capture gc changes automatically to update the cairo context adequately +# if defined(USE_CAIRO) + if(Fl::autolink_context()) Fl::cairo_make_current(gc); // capture gc changes automatically to update the cairo context adequately # endif } fl_gc = gc; diff --git a/src/Fl_Overlay_Window.cxx b/src/Fl_Overlay_Window.cxx index 4e76566c9..0d9551968 100644 --- a/src/Fl_Overlay_Window.cxx +++ b/src/Fl_Overlay_Window.cxx @@ -135,7 +135,7 @@ void _Fl_Overlay::flush() { gc = XCreateGC(fl_display, fl_xid(this), 0, 0); } fl_gc = gc; -#if defined(HAVE_CAIRO) +#if defined(USE_CAIRO) if (Fl::cairo_autolink_context()) Fl::cairo_make_current(this); // capture gc changes automatically to update the cairo context adequately #endif fl_overlay = 1; diff --git a/src/Fl_Window.cxx b/src/Fl_Window.cxx index 70b9c7f47..3c6b17e0e 100644 --- a/src/Fl_Window.cxx +++ b/src/Fl_Window.cxx @@ -133,7 +133,7 @@ void Fl_Window::draw() { y(savey); x(savex); -# if defined(HAVE_CAIRO) +# if defined(USE_CAIRO) Fl::cairo_make_current(this); // checkout if an update is necessary # endif } diff --git a/src/Fl_mac.cxx b/src/Fl_mac.cxx index e889db4d8..c7737213c 100644 --- a/src/Fl_mac.cxx +++ b/src/Fl_mac.cxx @@ -2351,7 +2351,7 @@ void Fl_Window::make_current() fl_gc = i->gc; CGContextSaveGState(fl_gc); Fl_X::q_fill_context(); -#if defined(HAVE_CAIRO) && defined (__APPLE_QUARTZ__) +#if defined(USE_CAIRO) && defined (__APPLE_QUARTZ__) if (Fl::cairo_autolink_context()) Fl::cairo_make_current(this); // capture gc changes automatically to update the cairo context adequately #endif @@ -2359,7 +2359,7 @@ void Fl_Window::make_current() fl_clip_region( 0 ); SetPortClipRegion( GetWindowPort(i->xid), fl_window_region ); -#if defined(__APPLE_QUARTZ__) && defined(HAVE_CAIRO) +#if defined(__APPLE_QUARTZ__) && defined(USE_CAIRO) // update the cairo_t context if (Fl::cairo_autolink_context()) Fl::cairo_make_current(this); #endif @@ -2410,8 +2410,8 @@ void Fl_X::q_release_context(Fl_X *x) { fprintf(stderr, "Error %d in QDEndCGContext\n", (int)err); } fl_gc = 0; -#if defined(HAVE_CAIRO) && defined (__APPLE_QUARTZ__) - Fl::cairo_make_current((Fl_Window*) 0); // capture gc changes automatically to update the cairo context adequately +#if defined(USE_CAIRO) && defined (__APPLE_QUARTZ__) + if (Fl::cairo_autolink_context()) Fl::cairo_make_current((Fl_Window*) 0); // capture gc changes automatically to update the cairo context adequately #endif } diff --git a/src/Makefile b/src/Makefile index f7d15b793..30a623d65 100644 --- a/src/Makefile +++ b/src/Makefile @@ -34,7 +34,6 @@ CPPFILES = \ Fl_Browser_load.cxx \ Fl_Box.cxx \ Fl_Button.cxx \ - Fl_Cairo.cxx \ Fl_Chart.cxx \ Fl_Check_Browser.cxx \ Fl_Check_Button.cxx \ @@ -188,6 +187,7 @@ IMGCPPFILES = \ Fl_PNG_Image.cxx \ Fl_PNM_Image.cxx + CFILES = fl_call_main.c flstring.c scandir.c numericsort.c vsnprintf.c fl_utf.c UTF8CFILES = \ @@ -211,7 +211,7 @@ IMGOBJECTS = $(IMGCPPFILES:.cxx=.o) all: $(LIBNAME) $(DSONAME) \ $(FLLIBNAME) $(FLDSONAME) \ $(GLLIBNAME) $(GLDSONAME) \ - $(IMGLIBNAME) $(IMGDSONAME) + $(IMGLIBNAME) $(IMGDSONAME) $(LIBNAME): $(OBJECTS) echo $(LIBCOMMAND) $@ ... @@ -418,7 +418,7 @@ mgwfltknox_images-1.3.dll: $(IMGLIBNAME) mgwfltknox-1.3.dll $(IMAGELIBS) $(LDLIBS) clean: - -$(RM) *.o *.dll.a core.* *~ *.bck *.bck + -$(RM) *.o *.dll.a core.* *~ *.bak *.bck -$(RM) $(DSONAME) $(FLDSONAME) $(GLDSONAME) $(IMGDSONAME) \ $(LIBNAME) $(FLLIBNAME) $(GLLIBNAME) \ $(IMGLIBNAME) \ @@ -500,7 +500,7 @@ gl_start.o: ../FL/mac.H ../FL/win32.H install: $(LIBNAME) $(DSONAME) \ $(FLLIBNAME) $(FLDSONAME) \ $(GLLIBNAME) $(GLDSONAME) \ - $(IMGLIBNAME) $(IMGDSONAME) + $(IMGLIBNAME) $(IMGDSONAME) echo "Installing libraries in $(DESTDIR)$(libdir)..." -$(INSTALL_DIR) $(DESTDIR)$(libdir) -$(INSTALL_DIR) $(DESTDIR)$(bindir) @@ -640,6 +640,7 @@ install: $(LIBNAME) $(DSONAME) \ $(INSTALL_LIB) libfltk_images.dll.a $(DESTDIR)$(libdir); \ fi + uninstall: echo "Uninstalling libraries..." $(RM) $(DESTDIR)$(libdir)/$(LIBNAME) @@ -731,7 +732,6 @@ uninstall: $(RM) $(DESTDIR)$(libdir)/libfltk_images.dll.a;\ fi - # # End of "$Id$". # diff --git a/test/Makefile b/test/Makefile index 7e46b93ba..5380661af 100644 --- a/test/Makefile +++ b/test/Makefile @@ -155,6 +155,7 @@ ALL = \ tile$(EXEEXT) \ tiled_image$(EXEEXT) \ valuators$(EXEEXT) \ + cairotest$(EXEEXT) \ utf8$(EXEEXT) @@ -464,6 +465,8 @@ shape$(EXEEXT): shape.o $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ shape.o $(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS) cairo_test$(EXEEXT): cairo_test.o + echo Linking $@... + $(CXX) $(ARCHFLAGS) $(CAIROFLAGS) $(LDFLAGS) -o $@ cairo_test.o $(LINKFLTK) $(LINKFLTKCAIRO) $(GLDLIBS) # # End of "$Id$". diff --git a/test/cairo_test.cxx b/test/cairo_test.cxx index 6492d4d40..bbde8ef93 100644 --- a/test/cairo_test.cxx +++ b/test/cairo_test.cxx @@ -158,7 +158,7 @@ int main(int argc, char** argv) { #include <FL/fl_ask.H> int main(int argc, char** argv) { - fl_message("please configure fltk with CAIRO enabled (--enable-cairo)"); + fl_message("please configure fltk with CAIRO enabled (--enable-cairo or --enable-cairoext)"); return 0; } #endif diff --git a/vc2005/fltk.lib.vcproj b/vc2005/fltk.lib.vcproj index 31fbaf2cc..26c2c1a18 100644 --- a/vc2005/fltk.lib.vcproj +++ b/vc2005/fltk.lib.vcproj @@ -258,7 +258,7 @@ FavorSizeOrSpeed="0"
AdditionalIncludeDirectories="..\vc2005;..\zlib;..\png;..\jpeg;.."
PreprocessorDefinitions="HAVE_CAIRO=1, _CRT_SECURE_NO_DEPRECATE;WIN32;NDEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN"
- RuntimeLibrary= "2"
+ RuntimeLibrary="2"
UsePrecompiledHeader="0"
PrecompiledHeaderFile=".\Release/fltk.lib.pch"
AssemblerListingLocation=".\Release/"
@@ -1772,7 +1772,7 @@ </FileConfiguration>
</File>
<File
- RelativePath="..\src\Fl_Cairo.cxx"
+ RelativePath="..\cairo\Fl_Cairo.cxx"
>
</File>
<File
diff --git a/vc2005/fltkdll.vcproj b/vc2005/fltkdll.vcproj index 9b61bff19..f90e119d0 100644 --- a/vc2005/fltkdll.vcproj +++ b/vc2005/fltkdll.vcproj @@ -1367,8 +1367,44 @@ </FileConfiguration>
</File>
<File
- RelativePath="..\src\Fl_Cairo.cxx"
+ RelativePath="..\cairo\Fl_Cairo.cxx"
>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)1.obj"
+ XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)1.obj"
+ XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug Cairo|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)1.obj"
+ XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release Cairo|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)1.obj"
+ XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath="..\src\Fl_Chart.cxx"
|
