diff options
author | Owen Taylor <otaylor@redhat.com> | 2005-08-10 02:31:51 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2005-08-10 02:31:51 +0000 |
commit | bfd04045e5047cbe118b17b1aeb7572abded7643 (patch) | |
tree | 3413215e8646d3d9fb3e3efc1280b76f28e67547 | |
parent | 5c7cba18032c78e24eb7c09179c67280ca0ccaa6 (diff) | |
download | gdk-pixbuf-bfd04045e5047cbe118b17b1aeb7572abded7643.tar.gz |
Strip out all Xft, FreeType, and pangoxft checking. Rewrite X checks to
2005-08-09 Owen Taylor <otaylor@redhat.com>
* configure.in: Strip out all Xft, FreeType, and pangoxft checking.
Rewrite X checks to use pkg-config as much as possible.
* gdk/win32/gdkfont-win32.c (gdk_font_from_description_for_display): Make
this return Arial always to avoid using PangoWin32FontMap. (X11 backend
has always been returned "fixed" for a long time)
* gdk/linux-fb/gdkdrawable-fb2.c: Remove draw_glyphs() implementations,
fall through to the default implementation in terms of Cairo.
* gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_draw_text): Use gdk_draw_glyphs()
on the wrapper rather than gdk_fb_draw_glyphs()
-rw-r--r-- | ChangeLog | 15 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 15 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 15 | ||||
-rw-r--r-- | configure.in | 471 | ||||
-rw-r--r-- | gdk/linux-fb/gdkdrawable-fb2.c | 130 | ||||
-rw-r--r-- | gdk/win32/gdkfont-win32.c | 38 |
6 files changed, 264 insertions, 420 deletions
@@ -1,3 +1,18 @@ +2005-08-09 Owen Taylor <otaylor@redhat.com> + + * configure.in: Strip out all Xft, FreeType, and pangoxft checking. + Rewrite X checks to use pkg-config as much as possible. + + * gdk/win32/gdkfont-win32.c (gdk_font_from_description_for_display): Make + this return Arial always to avoid using PangoWin32FontMap. (X11 backend + has always been returned "fixed" for a long time) + + * gdk/linux-fb/gdkdrawable-fb2.c: Remove draw_glyphs() implementations, + fall through to the default implementation in terms of Cairo. + + * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_draw_text): Use gdk_draw_glyphs() + on the wrapper rather than gdk_fb_draw_glyphs(). + 2005-08-09 Mark McLoughlin <mark@skynet.ie> Fixes "notification area leaks space" (bug #312687) diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 71e335f83..fcd076355 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,18 @@ +2005-08-09 Owen Taylor <otaylor@redhat.com> + + * configure.in: Strip out all Xft, FreeType, and pangoxft checking. + Rewrite X checks to use pkg-config as much as possible. + + * gdk/win32/gdkfont-win32.c (gdk_font_from_description_for_display): Make + this return Arial always to avoid using PangoWin32FontMap. (X11 backend + has always been returned "fixed" for a long time) + + * gdk/linux-fb/gdkdrawable-fb2.c: Remove draw_glyphs() implementations, + fall through to the default implementation in terms of Cairo. + + * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_draw_text): Use gdk_draw_glyphs() + on the wrapper rather than gdk_fb_draw_glyphs(). + 2005-08-09 Mark McLoughlin <mark@skynet.ie> Fixes "notification area leaks space" (bug #312687) diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 71e335f83..fcd076355 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,18 @@ +2005-08-09 Owen Taylor <otaylor@redhat.com> + + * configure.in: Strip out all Xft, FreeType, and pangoxft checking. + Rewrite X checks to use pkg-config as much as possible. + + * gdk/win32/gdkfont-win32.c (gdk_font_from_description_for_display): Make + this return Arial always to avoid using PangoWin32FontMap. (X11 backend + has always been returned "fixed" for a long time) + + * gdk/linux-fb/gdkdrawable-fb2.c: Remove draw_glyphs() implementations, + fall through to the default implementation in terms of Cairo. + + * gdk/linux-fb/gdkdrawable-fb2.c (gdk_fb_draw_text): Use gdk_draw_glyphs() + on the wrapper rather than gdk_fb_draw_glyphs(). + 2005-08-09 Mark McLoughlin <mark@skynet.ie> Fixes "notification area leaks space" (bug #312687) diff --git a/configure.in b/configure.in index f85348c09..46a8c2739 100644 --- a/configure.in +++ b/configure.in @@ -1020,177 +1020,73 @@ AC_SUBST(GDK_PIXBUF_DEP_CFLAGS) # Windowing system checks ######################################## -GDK_EXTRA_LIBS=$GDK_WLIBS -GDK_EXTRA_CFLAGS= -GTK_DEP_LIBS_FOR_X= - -FREETYPE_LIBS= -FREETYPE_CFLAGS= -if test "x$gdktarget" = "xlinux-fb" || test "x$gdktarget" = "xx11" ; then - # - # Checks for FreeType - # - have_freetype=false - AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no) - if test "x$FREETYPE_CONFIG" != "xno" ; then - FREETYPE_CFLAGS=`$FREETYPE_CONFIG --cflags` - FREETYPE_LIBS=`$FREETYPE_CONFIG --libs` - - gtk_save_LIBS="$LIBS" - LIBS="$FREETYPE_LIBS $LIBS" - AC_TRY_LINK_FUNC(FT_New_Face, have_freetype=true,:) - LIBS="$gtk_save_LIBS" - - if $have_freetype ; then - gtk_save_cppflags="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $FREETYPE_CFLAGS" - - AC_MSG_CHECKING([For sufficiently new FreeType (at least 2.0.1)]) - AC_TRY_COMPILE([ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_ERRORS_H - ], - [(void)1;],:,have_freetype=false) - if $have_freetype ; then - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - fi +GDK_PIXBUF_XLIB_PACKAGES= +GDK_PIXBUF_XLIB_EXTRA_CFLAGS= +GDK_PIXBUF_XLIB_EXTRA_LIBS= - CPPFLAGS="$gtk_save_cppflags" - fi - fi - AC_SUBST(FREETYPE_LIBS) - AC_SUBST(FREETYPE_CFLAGS) -fi +X_PACKAGES= +GDK_EXTRA_LIBS="$GDK_WLIBS" +GDK_EXTRA_CFLAGS= + +# GTK+ uses some X calls, so needs to link against X directly +GTK_DEP_PACKAGES_FOR_X= +GTK_DEP_LIBS_FOR_X= if test "x$gdktarget" = "xx11"; then - # We start off with the libraries from Pango - - ## be sure we also have Pango built with Xft2 support - if $PKG_CONFIG --exists 'pangoxft >= 1.2.0' ; then - if $have_freetype ; then - : - else - AC_MSG_ERROR([Xft Pango backend found but did not find freetype libraries]) - fi - else - AC_MSG_ERROR([Xft Pango backend is required for x11 target]) - fi - - if $PKG_CONFIG --exists xft ; then : ; else - AC_MSG_ERROR([Xft version 2 is required for x11 target]) - fi - # - # If Pango included the shared library dependencies from X11 in - # the pkg-config output, then we use that (to avoid duplicates). - # but if they were omitted to avoid binary compatibility problems, - # then we need to repeat the checks. + # Check for basic X packages; we use pkg-config if available # - x_libs="`$PKG_CONFIG --libs pangoxft`" - case "$x_libs" in - *-lX11*) pango_omitted_x_deps=no ;; - *) pango_omitted_x_deps=yes ;; - esac - - x_cflags="`$PKG_CONFIG --cflags pangoxft`" - x_extra_libs= - - AC_PATH_XTRA - if test x$no_x = xyes ; then - AC_MSG_ERROR([X development libraries not found]) - fi - - if test $pango_omitted_x_deps = yes ; then - # Old versions of Xft didn't necessarily include -lX11 in the output - x_libs="`$PKG_CONFIG --libs xft` -lX11 $X_EXTRA_LIBS" - fi - - ## Strip the .la files - - x_libs_for_checks="" - for I in $x_libs ; do - case $I in - *.la) ;; - *) x_libs_for_checks="$x_libs_for_checks $I" ;; - esac - done - - # Sanity check for the X11 library - AC_CHECK_LIB(X11, XOpenDisplay, :, - AC_MSG_ERROR([*** libX11 not found. Check 'config.log' for more details.]), - $x_libs_for_checks) - - if test "x$enable_shm" = "xyes"; then - # Check for the Xext library (needed for XShm extention) - AC_CHECK_LIB(Xext, XShmAttach, - [GTK_ADD_LIB(x_extra_libs,Xext)], - # On AIX, it is in XextSam instead, but we still need -lXext - [AC_CHECK_LIB(XextSam, XShmAttach, - [GTK_ADD_LIB(x_extra_libs,Xext) - GTK_ADD_LIB(x_extra_libs,XextSam) - ], , -lXext $x_libs_for_checks)], - $x_libs_for_checks) - fi - - GDK_PIXBUF_XLIB_EXTRA_CFLAGS="$x_cflags" - # Don't ever pull in the pangoxft libraries for gdk-pixbuf-x11 - GDK_PIXBUF_XLIB_EXTRA_LIBS="$X_LIBS -lX11 $x_extra_libs $X_EXTRA_LIBS" + if $PKG_CONFIG --exists x11 xext; then + have_base_x_pc=true + X_PACKAGES="x11 xext" + x_libs="`pkg-config --libs x11 xext`" + + # Strip out any .la files that pkg-config might give us (this happens + # with -uninstalled.pc files) + x_libs_for_checks= + for I in $x_libs ; do + case $I in + *.la) ;; + *) x_libs_for_checks="$x_libs_for_checks $I" ;; + esac + done + + GDK_PIXBUF_XLIB_PACKAGES="x11" + GTK_PACKAGES_FOR_X="x11" + else + have_base_x_pc=false + AC_PATH_XTRA + if test x$no_x = xyes ; then + AC_MSG_ERROR([X development libraries not found]) + fi + + x_cflags="$X_CFLAGS" + x_libs_for_checks="$X_LIBS -lXext -lX11 $X_EXTRA_LIBS" - # GTK+ uses some X calls, so needs to link against X directly - if test $enable_explicit_deps != yes ; then + GDK_PIXBUF_XLIB_EXTRA_CFLAGS="$x_cflags" + GDK_PIXBUF_XLIB_EXTRA_LIBS="$X_LIBS -lX11 $X_EXTRA_LIBS" GTK_DEP_LIBS_FOR_X="$X_LIBS -lX11 $X_EXTRA_LIBS" fi - # Check for Xinerama extension (Solaris impl or Xfree impl) + # Extra libraries found during checks (-lXinerama, etc), not from pkg-config. + x_extra_libs= gtk_save_cppflags="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $x_cflags" - - case "$host" in - *-*-solaris*) - # Check for solaris - use_solaris_xinerama=yes - AC_CHECK_LIB(Xext, XineramaGetInfo, - use_solaris_xinerama=yes, - use_solaris_xinerama=no, - -lXext $x_libs_for_checks) - if test "x$use_solaris_xinerama" = "xyes"; then - AC_CHECK_HEADER(X11/extensions/xinerama.h, - [GTK_ADD_LIB(x_extra_libs,Xext) - AC_DEFINE(HAVE_SOLARIS_XINERAMA) - AC_DEFINE(HAVE_XINERAMA)], - use_solaris_xinerama=no,[#include <X11/Xlib.h>]) - fi - AC_MSG_CHECKING(for Xinerama support on Solaris) - AC_MSG_RESULT($use_solaris_xinerama); - ;; - *) - # Check for XFree - use_xfree_xinerama=yes - AC_CHECK_LIB(Xinerama, XineramaQueryExtension, - [AC_CHECK_HEADER(X11/extensions/Xinerama.h, - [GTK_ADD_LIB(x_extra_libs,Xext) - GTK_ADD_LIB(x_extra_libs,Xinerama) - AC_DEFINE(HAVE_XFREE_XINERAMA) - AC_DEFINE(HAVE_XINERAMA)], - use_xfree_xinerama=no, - [#include <X11/Xlib.h>])], - use_xfree_xinerama=no, -lXext $x_libs_for_checks) - AC_MSG_CHECKING(for Xinerama support on XFree86) - AC_MSG_RESULT($use_xfree_xinerama); - ;; - esac + CPPFLAGS="$CPPFLAGS $X_CFLAGS" - CPPFLAGS="$gtk_save_cppflags" + gtk_save_LIBS=$LIBS + LIBS="$x_libs_for_checks $LIBS" + + # Sanity check for the X11 and Xext libraries. While everything we need from + # Xext is optional, the chances a system has *none* of these things is so + # small that we just unconditionally require it. + AC_CHECK_FUNC(XOpenDisplay, :, + AC_MSG_ERROR([*** libX11 not found. Check 'config.log' for more details.])) + AC_CHECK_FUNC(XextFindDisplay, :, + AC_MSG_ERROR([*** libXext not found. Check 'config.log' for more details.])) # Check for xReply - gtk_save_cppflags="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $X_CFLAGS" - AC_MSG_CHECKING([if <X11/extensions/XIproto.h> is needed for xReply]) AC_TRY_COMPILE([#include <X11/Xlibint.h>], [xReply *rep;], @@ -1204,40 +1100,18 @@ if test "x$gdktarget" = "xx11"; then [AC_MSG_RESULT([unknown]) AC_MSG_ERROR([xReply type unavailable. X11 is too old])])]) - CPPFLAGS="$gtk_save_cppflags" - - # Check for shaped window extension - - AC_CHECK_LIB(Xext, XShapeCombineMask, - [GTK_ADD_LIB(x_extra_libs,Xext) - AC_DEFINE(HAVE_SHAPE_EXT)], - , - $x_libs_for_checks) - - # Check for XConvertCase (X11R6 specific) + # Check for XConvertCase, XInternAtoms (X11R6 specific) - AC_CHECK_LIB(X11, XConvertCase, - AC_DEFINE(HAVE_XCONVERTCASE), - , - $x_libs_for_checks) - - # Check for XInternAtoms (X11R6 specific) - - AC_CHECK_LIB(X11, XInternAtoms, - AC_DEFINE([HAVE_XINTERNATOMS], 1, - [Define to 1 if you have the `XInternAtoms' function.]), - , - $x_libs_for_checks) + AC_CHECK_FUNCS(XConvertCase XInternAtoms) # Generic X11R6 check needed for XIM support; we could # probably use this to replace the above, but we'll # leave the separate checks for XConvertCase and XInternAtoms # for clarity + have_x11r6=false - AC_CHECK_LIB(X11, XAddConnectionWatch, - have_x11r6=true, - , - $x_libs_for_checks) + AC_CHECK_FUNC(XAddConnectionWatch, + have_x11r6=true) if $have_x11r6; then AC_DEFINE(HAVE_X11R6,1,[Define if we have X11R6]) @@ -1250,72 +1124,36 @@ if test "x$gdktarget" = "xx11"; then AC_MSG_WARN(XKB support explicitly enabled) AC_DEFINE(HAVE_XKB) elif test "x$enable_xkb" = "xmaybe"; then - AC_CHECK_LIB(X11, XkbQueryExtension, - AC_DEFINE(HAVE_XKB), - , - $x_libs_for_checks) + AC_CHECK_FUNC(XkbQueryExtension, + AC_DEFINE(HAVE_XKB)) else AC_MSG_WARN(XKB support explicitly disabled) fi - x_cflags="$X_CFLAGS" - x_ldflags="$X_LDFLAGS" - - # set up things for XInput - - if test "x$with_xinput" = "xxfree" || test "x$with_xinput" = "xyes"; then - AC_DEFINE(XINPUT_XFREE) - GTK_ADD_LIB(x_extra_libs, Xi) - else - AC_DEFINE(XINPUT_NONE) - fi - - AM_CONDITIONAL(XINPUT_XFREE, test x$with_xinput = xxfree || test x$with_xinput = xyes) - - # Check for the RANDR extension - - AC_CHECK_LIB(Xrandr, XRRUpdateConfiguration, - [AC_CHECK_HEADER(X11/extensions/Xrandr.h, - # RANDR requires RENDER - [GTK_ADD_LIB(x_extra_libs, Xrender) - GTK_ADD_LIB(x_extra_libs, Xrandr) - AC_DEFINE(HAVE_RANDR, 1, Have the Xrandr extension library)], - :, [#include <X11/Xlib.h>])], : , - $X_LIBS -lXrandr -lXrender -lX11 $X_EXTRA_LIBS) + # Check for shaped window extension - # Checks for Xcursor library - - have_xcursor=false - PKG_CHECK_MODULES(XCURSOR, xcursor, have_xcursor=true, :) - - if $have_xcursor ; then - AC_DEFINE(HAVE_XCURSOR, 1, Have the Xcursor library) - GDK_EXTRA_CFLAGS="`$PKG_CONFIG --cflags xcursor` $GDK_EXTRA_CFLAGS" - GDK_EXTRA_LIBS="`$PKG_CONFIG --libs xcursor` $GDK_EXTRA_LIBS" - fi + AC_CHECK_FUNC(XShapeCombineMask, + AC_DEFINE(HAVE_SHAPE_EXT)) # X SYNC check - AC_CHECK_LIB(Xext, XSyncQueryExtension, - [AC_CHECK_HEADER(X11/extensions/sync.h, - [GTK_ADD_LIB(x_extra_libs, Xext) - AC_DEFINE(HAVE_XSYNC, 1, Have the SYNC extension library)], - :, [#include <X11/Xlib.h>])], : , - $X_LIBS -lXext -lX11 $X_EXTRA_LIBS) - - # Checks for XFixes extension - have_xfixes=false - PKG_CHECK_MODULES(XFIXES, xfixes, have_xfixes=true, :) + AC_CHECK_FUNC(XSyncQueryExtension, + [AC_CHECK_HEADER(X11/extensions/sync.h, + AC_DEFINE(HAVE_XSYNC, 1, Have the SYNC extension library), + :, [#include <X11/Xlib.h>])]) - if $have_xfixes ; then - AC_DEFINE(HAVE_XFIXES, 1, Have the XFIXES X extension) - GDK_EXTRA_CFLAGS="`$PKG_CONFIG --cflags xfixes` $GDK_EXTRA_CFLAGS" - GDK_EXTRA_LIBS="`$PKG_CONFIG --libs xfixes` $GDK_EXTRA_LIBS" - fi - # Xshm checks if test "x$enable_shm" = "xyes"; then + # Check for the XShm extension, normally in Xext + AC_CHECK_FUNC(XShmAttach, + :, + # On AIX, it is in XextSam instead + [AC_CHECK_LIB(XextSam, XShmAttach, + [GTK_ADD_LIB(x_extra_libs,XextSam)])]) + fi + + if test "x$enable_shm" = "xyes"; then # Check for shared memory AC_CHECK_HEADER(sys/ipc.h, AC_DEFINE(HAVE_IPC_H), no_sys_ipc=yes) AC_CHECK_HEADER(sys/shm.h, AC_DEFINE(HAVE_SHM_H), no_sys_shm=yes) @@ -1345,12 +1183,117 @@ if test "x$gdktarget" = "xx11"; then fi fi - if test $pango_omitted_x_deps = yes ; then - GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs $x_libs $GDK_EXTRA_LIBS" + # Check for Xinerama extension (Solaris impl or Xfree impl) + + gtk_save_cppflags="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $x_cflags" + + case "$host" in + *-*-solaris*) + # Check for solaris + AC_MSG_CHECKING(for Xinerama support on Solaris) + + have_solaris_xinerama=false + AC_CHECK_FUNC(XineramaGetInfo, + [AC_CHECK_HEADER(X11/extensions/xinerama.h, + [have_solaris_xinerama=true], :, + [#include <X11/Xlib.h>])]) + + if $have_solaris_xinerama ; then + AC_DEFINE(HAVE_SOLARIS_XINERAMA) + AC_DEFINE(HAVE_XINERAMA) + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + fi + ;; + *) + # Check for XFree + AC_MSG_CHECKING(for Xinerama support on XFree86) + + have_xfree_xinerama=false + if $PKG_CONFIG --exists xinerama ; then + have_xfree_xinerama=true + X_PACKAGES="$X_PACKAGES xinerama" + else + AC_CHECK_LIB(Xinerama, XineramaQueryExtension, + [AC_CHECK_HEADER(X11/extensions/Xinerama.h, + [GTK_ADD_LIB(x_extra_libs,Xinerama) + have_xfree_xinerama=true], : + [#include <X11/Xlib.h>])]) + fi + + if $have_xfree_xinerama ; then + AC_DEFINE(HAVE_XFREE_XINERAMA) + AC_DEFINE(HAVE_XINERAMA) + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + fi + ;; + esac + + # set up things for XInput + + if test "x$with_xinput" = "xxfree" || test "x$with_xinput" = "xyes"; then + AC_DEFINE(XINPUT_XFREE) + + if $PKG_CONFIG --exists xi ; then + X_PACKAGES="$X_PACKAGES xi" + else + GTK_ADD_LIB(x_extra_libs, Xi) + fi else - GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs $GDK_EXTRA_LIBS" + AC_DEFINE(XINPUT_NONE) fi + AM_CONDITIONAL(XINPUT_XFREE, test x$with_xinput = xxfree || test x$with_xinput = xyes) + + # Check for the RANDR extension + + have_randr=false + if $PKG_CONFIG --exists xrandr ; then + have_randr=true + X_PACKAGES="$X_PACKAGES xrandr" + else + AC_CHECK_LIB(Xrandr, XRRUpdateConfiguration, + [AC_CHECK_HEADER(X11/extensions/Xrandr.h, + # RANDR requires RENDER + [have_randr=true + GTK_ADD_LIB(x_extra_libs, Xrender) + GTK_ADD_LIB(x_extra_libs, Xrandr)], + :, [#include <X11/Xlib.h>])]) + fi + + if $have_randr ; then + AC_DEFINE(HAVE_RANDR, 1, Have the Xrandr extension library) + fi + + # Checks for Xcursor library + + if $PKG_CONFIG --exists xcursor ; then + AC_DEFINE(HAVE_XCURSOR, 1, Have the Xcursor library) + + X_PACKAGES="$X_PACKAGES xcursor" + fi + + # Checks for XFixes extension + + if $PKG_CONFIG --exists xfixes ; then + AC_DEFINE(HAVE_XFIXES, 1, Have the XFIXES X extension) + + X_PACKAGES="$X_PACKAGES xfixes" + fi + + if $have_base_pc ; then + GDK_EXTRA_LIBS="$x_extra_libs" + else + GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs -lX11 $GDK_EXTRA_LIBS" + fi + + CPPFLAGS="$gtk_save_cppflags" + LIBS="$gtk_save_libs" + AM_CONDITIONAL(USE_X11, true) else AM_CONDITIONAL(XINPUT_XFREE, false) @@ -1372,7 +1315,6 @@ else AM_CONDITIONAL(USE_WIN32, false) fi -GDK_PIXBUF_XLIB_PACKAGES= GDK_PIXBUF_XLIB_DEP_LIBS="`$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PIXBUF_XLIB_PACKAGES` $GDK_PIXBUF_XLIB_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS" GDK_PIXBUF_XLIB_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PIXBUF_XLIB_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_PIXBUF_XLIB_EXTRA_CFLAGS" @@ -1383,20 +1325,6 @@ AC_SUBST(GDK_PIXBUF_XLIB_DEP_LIBS) AC_SUBST(GDK_PIXBUF_XLIB_DEP_CFLAGS) if test "x$gdktarget" = "xlinux-fb"; then - if $have_freetype ; then - : - else - AC_MSG_ERROR([Using linux-fb backend but freetype was not found]) - fi - - ft2_libs="`$PKG_CONFIG --libs pangoft2`" - case "$ft2_libs" in - *-lfreetype*) pango_omitted_ft2_deps=no ;; - *) pango_omitted_ft2_deps=yes ;; - esac - - CFLAGS="$CFLAGS $FREETYPE_CFLAGS" - if test x$enable_shadowfb = xyes ; then AC_DEFINE(ENABLE_SHADOW_FB) fi @@ -1408,38 +1336,16 @@ if test "x$gdktarget" = "xlinux-fb"; then AM_CONDITIONAL(ENABLE_FB_MANAGER, false) fi - if test $pango_omitted_ft2_deps = yes ; then - GDK_EXTRA_LIBS="$FREETYPE_LIBS $GDK_EXTRA_LIBS" - fi - AM_CONDITIONAL(USE_LINUX_FB, true) else AM_CONDITIONAL(USE_LINUX_FB, false) AM_CONDITIONAL(ENABLE_FB_MANAGER, false) fi -# -# Pick correct Pango packages to use -# - -if test "x$gdktarget" = "xx11"; then - PANGO_PACKAGES="pangoxft pangocairo" - - # We no longer use pangox, but if we find it, we link to it - # for binary compatibility. - if $PKG_CONFIG --exists pangox ; then - PANGO_PACKAGES="$PANGO_PACKAGES pangox" - fi -elif test "x$gdktarget" = "xwin32"; then - PANGO_PACKAGES="pangowin32 pangocairo" -elif test "x$gdktarget" = "xlinux-fb"; then - PANGO_PACKAGES="pangoft2 pangocairo" -else - PANGO_PACKAGES="pango pangocairo" -fi - # Check for Pango flags +PANGO_PACKAGES="pango pangocairo" + AC_MSG_CHECKING(Pango flags) if $PKG_CONFIG --exists $PANGO_PACKAGES ; then PANGO_CFLAGS=`$PKG_CONFIG --cflags $PANGO_PACKAGES` @@ -1469,15 +1375,16 @@ fi CFLAGS="$saved_cflags" LDFLAGS="$saved_ldflags" -GDK_PACKAGES="$PANGO_PACKAGES" +GDK_PACKAGES="$PANGO_PACKAGES $X_PACKAGES" GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PACKAGES` $GDK_PIXBUF_EXTRA_LIBS" -GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS" +GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES` $X_PACKAGES $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS" # # If we aren't writing explicit dependencies, then don't put the extra libraries we need # into the pkg-config files # if test $enable_explicit_deps != yes ; then + GDK_PACKAGES="$PANGO_PACKAGES" GDK_EXTRA_LIBS= fi @@ -1520,7 +1427,7 @@ fi GTK_PACKAGES="atk cairo" GTK_EXTRA_LIBS= GTK_EXTRA_CFLAGS= -GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GTK_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS" +GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $PANGO_PACKAGES $GTK_PACKAGES_FOR_X $GTK_PACKAGES` $GTK_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS" GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS" if test x"$os_win32" = xyes; then diff --git a/gdk/linux-fb/gdkdrawable-fb2.c b/gdk/linux-fb/gdkdrawable-fb2.c index 1274f0f21..a868a6ec8 100644 --- a/gdk/linux-fb/gdkdrawable-fb2.c +++ b/gdk/linux-fb/gdkdrawable-fb2.c @@ -152,12 +152,6 @@ static void gdk_shadow_fb_draw_text_wc (GdkDrawable *drawable gint y, const GdkWChar *text, gint text_length); -static void gdk_shadow_fb_draw_glyphs (GdkDrawable *drawable, - GdkGC *gc, - PangoFont *font, - gint x, - gint y, - PangoGlyphString *glyphs); static void gdk_shadow_fb_draw_drawable (GdkDrawable *drawable, GdkGC *gc, GdkPixmap *src, @@ -224,7 +218,6 @@ gdk_drawable_impl_fb_class_init (GdkDrawableFBClass *klass) drawable_class->draw_points = gdk_shadow_fb_draw_points; drawable_class->draw_segments = gdk_shadow_fb_draw_segments; drawable_class->draw_lines = gdk_shadow_fb_draw_lines; - drawable_class->draw_glyphs = gdk_shadow_fb_draw_glyphs; drawable_class->draw_image = gdk_shadow_fb_draw_image; #else drawable_class->draw_rectangle = gdk_fb_draw_rectangle; @@ -236,7 +229,6 @@ gdk_drawable_impl_fb_class_init (GdkDrawableFBClass *klass) drawable_class->draw_points = gdk_fb_draw_points; drawable_class->draw_segments = gdk_fb_draw_segments; drawable_class->draw_lines = gdk_fb_draw_lines; - drawable_class->draw_glyphs = gdk_fb_draw_glyphs; drawable_class->draw_image = gdk_fb_draw_image; #endif @@ -853,6 +845,7 @@ gdk_fb_draw_text(GdkDrawable *drawable, gint text_length) { GdkFontPrivateFB *private; + GdkDrawableFBData *drawable_private; guchar *utf8, *utf8_end; PangoGlyphString *glyphs = pango_glyph_string_new (); PangoEngineShape *shaper, *last_shaper; @@ -865,6 +858,7 @@ gdk_fb_draw_text(GdkDrawable *drawable, g_return_if_fail (text != NULL); private = (GdkFontPrivateFB*) font; + drawable_private = GDK_DRAWABLE_FBDATA (drawable); utf8 = alloca (text_length*2); @@ -906,9 +900,10 @@ gdk_fb_draw_text(GdkDrawable *drawable, pango_shape (start, p - start, &analysis, glyphs); - gdk_fb_draw_glyphs (drawable, gc, private->pango_font, - x + PANGO_PIXELS (x_offset), y, - glyphs); + gdk_draw_glyphs (drawable_private->wrapper, + gc, private->pango_font, + x + PANGO_PIXELS (x_offset), y, + glyphs); for (i = 0; i < glyphs->num_glyphs; i++) x_offset += glyphs->glyphs[i].geometry.width; @@ -928,9 +923,10 @@ gdk_fb_draw_text(GdkDrawable *drawable, pango_shape (start, p - start, &analysis, glyphs); - gdk_fb_draw_glyphs (drawable, gc, private->pango_font, - x + PANGO_PIXELS (x_offset), y, - glyphs); + gdk_draw_glyphs (drawable_private->wrapper, + gc, private->pango_font, + x + PANGO_PIXELS (x_offset), y, + glyphs); } pango_glyph_string_free (glyphs); @@ -1205,93 +1201,6 @@ gdk_fb_drawable_clear (GdkDrawable *d) } static void -_gdk_fb_draw_glyphs (GdkDrawable *drawable, - GdkGC *gc, - PangoFont *font, - gint x, - gint y, - PangoGlyphString *glyphs, - GdkRectangle *bbox) -{ - GdkFBDrawingContext fbdc; - GdkPixmapFBData pixmap; - PangoGlyphInfo *gi; - FT_Face face; - FT_UInt glyph_index; - int i, xpos; - int maxy, miny; - int topy; - - g_return_if_fail (font); - - gdk_fb_drawing_context_init (&fbdc, drawable, gc, FALSE, TRUE); - - /* Fake its existence as a pixmap */ - - ((GTypeInstance *)&pixmap)->g_class = g_type_class_peek (_gdk_pixmap_impl_get_type ()); - pixmap.drawable_data.abs_x = 0; - pixmap.drawable_data.abs_y = 0; - pixmap.drawable_data.depth = 78; - - maxy = miny = 0; - - gi = glyphs->glyphs; - for (i = 0, xpos = 0; i < glyphs->num_glyphs; i++, gi++) - { - if (gi->glyph) - { - glyph_index = gi->glyph; - face = pango_ft2_font_get_face (font); - - if (face) - { - /* Draw glyph */ - FT_Load_Glyph (face, glyph_index, FT_LOAD_DEFAULT); - if (face->glyph->format != ft_glyph_format_bitmap) - FT_Render_Glyph (face->glyph, ft_render_mode_normal); - - pixmap.drawable_data.mem = face->glyph->bitmap.buffer; - pixmap.drawable_data.rowstride = face->glyph->bitmap.pitch; - pixmap.drawable_data.width = face->glyph->bitmap.width; - pixmap.drawable_data.height = face->glyph->bitmap.rows; - - topy = y - face->glyph->bitmap_top + 1; - miny = MIN (miny, topy); - maxy = MAX (maxy, topy + face->glyph->bitmap.rows); - gdk_fb_draw_drawable_3 (drawable, gc, (GdkPixmap *)&pixmap, - &fbdc, - 0, 0, - x + PANGO_PIXELS (xpos) + face->glyph->bitmap_left, - topy, - face->glyph->bitmap.width, face->glyph->bitmap.rows); - } - } - xpos += glyphs->glyphs[i].geometry.width; - } - - gdk_fb_drawing_context_finalize (&fbdc); - - if (bbox) - { - bbox->x = x; - bbox->y = miny; - bbox->width = xpos; - bbox->height = maxy - miny; - } -} - -static void -gdk_fb_draw_glyphs (GdkDrawable *drawable, - GdkGC *gc, - PangoFont *font, - gint x, - gint y, - PangoGlyphString *glyphs) -{ - _gdk_fb_draw_glyphs (drawable, gc, font, x, y, glyphs, NULL); -} - -static void gdk_fb_draw_image (GdkDrawable *drawable, GdkGC *gc, GdkImage *image, @@ -1492,25 +1401,6 @@ gdk_shadow_fb_draw_text_wc (GdkDrawable *drawable, } static void -gdk_shadow_fb_draw_glyphs (GdkDrawable *drawable, - GdkGC *gc, - PangoFont *font, - gint x, - gint y, - PangoGlyphString *glyphs) -{ - GdkDrawableFBData *private; - GdkRectangle bbox; - - _gdk_fb_draw_glyphs (drawable, gc, font, x, y, glyphs, &bbox); - - private = GDK_DRAWABLE_FBDATA (drawable); - if (GDK_IS_WINDOW (private->wrapper)) - gdk_shadow_fb_update (bbox.x + private->abs_x, bbox.y + private->abs_y, - bbox.x + private->abs_x + bbox.width, bbox.y + private->abs_y + bbox.height); -} - -static void gdk_shadow_fb_draw_drawable (GdkDrawable *drawable, GdkGC *gc, GdkPixmap *src, diff --git a/gdk/win32/gdkfont-win32.c b/gdk/win32/gdkfont-win32.c index 62c4d1021..3b3934f13 100644 --- a/gdk/win32/gdkfont-win32.c +++ b/gdk/win32/gdkfont-win32.c @@ -30,8 +30,6 @@ #include <stdlib.h> #include <ctype.h> -#include <pango/pangowin32.h> - #include "gdkfont.h" #include "gdkpango.h" /* gdk_pango_context_get() */ #include "gdkdisplay.h" @@ -1239,27 +1237,31 @@ GdkFont* gdk_font_from_description_for_display (GdkDisplay *display, PangoFontDescription *font_desc) { - PangoFontMap *font_map; - PangoFont *font; GdkFont *result = NULL; + LOGFONT logfont; + int size; g_return_val_if_fail (font_desc != NULL, NULL); g_return_val_if_fail (display == gdk_display_get_default (), NULL); - font_map = pango_win32_font_map_for_display (); - font = pango_font_map_load_font (font_map, gdk_pango_context_get (), font_desc); - - if (font) - { - LOGFONT *lfp = - pango_win32_font_logfont (font); - result = gdk_font_from_one_singlefont (gdk_font_load_logfont (lfp)); - g_free (lfp); - - g_object_unref (font); - } - - return result; + size = PANGO_PIXELS (pango_font_description_get_size (font_desc)); + + logfont.lfHeight = - MulDiv (PointSize, GetDeviceCaps (hDC, LOGPIXELSY), 72); + logfont.lfWidth = 0; + logfont.lfEscapement = 0; + logfont.lfOrientation = 0; + logfont.lfWeight = FW_DONTCARE; + logfont.lfItalic = FALSE; + logfont.lfUnderline = FALSE; + logfont.lfStrikeOut = FALSE; + logfont.lfCharSet = ANSI_CHARSET; + logfont.lfOutPrecision = OUT_TT_ONLY_PRECIS; + logfont.lfClipPrecision = CLIP_DEFAULT_PRECIS; + logfont.lfQuality = PROOF_QUALITY; + logfont.lfPitchAndFamily = DEFAULT_PITCH; + strcpy (logfont.lfFaceName, "Arial"); + + return gdk_font_from_one_singlefont (gdk_font_load_logfont (&logfont)); } GdkFont* |