mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 10:50:10 +00:00
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()
This commit is contained in:
parent
5c7cba1803
commit
bfd04045e5
15
ChangeLog
15
ChangeLog
@ -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>
|
2005-08-09 Mark McLoughlin <mark@skynet.ie>
|
||||||
|
|
||||||
Fixes "notification area leaks space" (bug #312687)
|
Fixes "notification area leaks space" (bug #312687)
|
||||||
|
@ -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>
|
2005-08-09 Mark McLoughlin <mark@skynet.ie>
|
||||||
|
|
||||||
Fixes "notification area leaks space" (bug #312687)
|
Fixes "notification area leaks space" (bug #312687)
|
||||||
|
@ -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>
|
2005-08-09 Mark McLoughlin <mark@skynet.ie>
|
||||||
|
|
||||||
Fixes "notification area leaks space" (bug #312687)
|
Fixes "notification area leaks space" (bug #312687)
|
||||||
|
477
configure.in
477
configure.in
@ -1020,177 +1020,73 @@ AC_SUBST(GDK_PIXBUF_DEP_CFLAGS)
|
|||||||
# Windowing system checks
|
# Windowing system checks
|
||||||
########################################
|
########################################
|
||||||
|
|
||||||
GDK_EXTRA_LIBS=$GDK_WLIBS
|
GDK_PIXBUF_XLIB_PACKAGES=
|
||||||
GDK_EXTRA_CFLAGS=
|
GDK_PIXBUF_XLIB_EXTRA_CFLAGS=
|
||||||
|
GDK_PIXBUF_XLIB_EXTRA_LIBS=
|
||||||
|
|
||||||
|
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=
|
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
|
|
||||||
|
|
||||||
CPPFLAGS="$gtk_save_cppflags"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
AC_SUBST(FREETYPE_LIBS)
|
|
||||||
AC_SUBST(FREETYPE_CFLAGS)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$gdktarget" = "xx11"; then
|
if test "x$gdktarget" = "xx11"; then
|
||||||
# We start off with the libraries from Pango
|
#
|
||||||
|
# Check for basic X packages; we use pkg-config if available
|
||||||
## be sure we also have Pango built with Xft2 support
|
#
|
||||||
if $PKG_CONFIG --exists 'pangoxft >= 1.2.0' ; then
|
if $PKG_CONFIG --exists x11 xext; then
|
||||||
if $have_freetype ; then
|
have_base_x_pc=true
|
||||||
:
|
X_PACKAGES="x11 xext"
|
||||||
else
|
x_libs="`pkg-config --libs x11 xext`"
|
||||||
AC_MSG_ERROR([Xft Pango backend found but did not find freetype libraries])
|
|
||||||
fi
|
# 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
|
else
|
||||||
AC_MSG_ERROR([Xft Pango backend is required for x11 target])
|
have_base_x_pc=false
|
||||||
fi
|
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"
|
||||||
|
|
||||||
if $PKG_CONFIG --exists xft ; then : ; else
|
GDK_PIXBUF_XLIB_EXTRA_CFLAGS="$x_cflags"
|
||||||
AC_MSG_ERROR([Xft version 2 is required for x11 target])
|
GDK_PIXBUF_XLIB_EXTRA_LIBS="$X_LIBS -lX11 $X_EXTRA_LIBS"
|
||||||
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.
|
|
||||||
#
|
|
||||||
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"
|
|
||||||
|
|
||||||
# GTK+ uses some X calls, so needs to link against X directly
|
|
||||||
if test $enable_explicit_deps != yes ; then
|
|
||||||
GTK_DEP_LIBS_FOR_X="$X_LIBS -lX11 $X_EXTRA_LIBS"
|
GTK_DEP_LIBS_FOR_X="$X_LIBS -lX11 $X_EXTRA_LIBS"
|
||||||
fi
|
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="$gtk_save_cppflags"
|
|
||||||
|
|
||||||
# Check for xReply
|
|
||||||
|
|
||||||
gtk_save_cppflags="$CPPFLAGS"
|
gtk_save_cppflags="$CPPFLAGS"
|
||||||
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
|
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
AC_MSG_CHECKING([if <X11/extensions/XIproto.h> is needed for xReply])
|
AC_MSG_CHECKING([if <X11/extensions/XIproto.h> is needed for xReply])
|
||||||
AC_TRY_COMPILE([#include <X11/Xlibint.h>],
|
AC_TRY_COMPILE([#include <X11/Xlibint.h>],
|
||||||
[xReply *rep;],
|
[xReply *rep;],
|
||||||
@ -1204,40 +1100,18 @@ if test "x$gdktarget" = "xx11"; then
|
|||||||
[AC_MSG_RESULT([unknown])
|
[AC_MSG_RESULT([unknown])
|
||||||
AC_MSG_ERROR([xReply type unavailable. X11 is too old])])])
|
AC_MSG_ERROR([xReply type unavailable. X11 is too old])])])
|
||||||
|
|
||||||
CPPFLAGS="$gtk_save_cppflags"
|
# Check for XConvertCase, XInternAtoms (X11R6 specific)
|
||||||
|
|
||||||
# Check for shaped window extension
|
AC_CHECK_FUNCS(XConvertCase XInternAtoms)
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
# Generic X11R6 check needed for XIM support; we could
|
# Generic X11R6 check needed for XIM support; we could
|
||||||
# probably use this to replace the above, but we'll
|
# probably use this to replace the above, but we'll
|
||||||
# leave the separate checks for XConvertCase and XInternAtoms
|
# leave the separate checks for XConvertCase and XInternAtoms
|
||||||
# for clarity
|
# for clarity
|
||||||
|
|
||||||
have_x11r6=false
|
have_x11r6=false
|
||||||
AC_CHECK_LIB(X11, XAddConnectionWatch,
|
AC_CHECK_FUNC(XAddConnectionWatch,
|
||||||
have_x11r6=true,
|
have_x11r6=true)
|
||||||
,
|
|
||||||
$x_libs_for_checks)
|
|
||||||
|
|
||||||
if $have_x11r6; then
|
if $have_x11r6; then
|
||||||
AC_DEFINE(HAVE_X11R6,1,[Define if we have X11R6])
|
AC_DEFINE(HAVE_X11R6,1,[Define if we have X11R6])
|
||||||
@ -1250,71 +1124,35 @@ if test "x$gdktarget" = "xx11"; then
|
|||||||
AC_MSG_WARN(XKB support explicitly enabled)
|
AC_MSG_WARN(XKB support explicitly enabled)
|
||||||
AC_DEFINE(HAVE_XKB)
|
AC_DEFINE(HAVE_XKB)
|
||||||
elif test "x$enable_xkb" = "xmaybe"; then
|
elif test "x$enable_xkb" = "xmaybe"; then
|
||||||
AC_CHECK_LIB(X11, XkbQueryExtension,
|
AC_CHECK_FUNC(XkbQueryExtension,
|
||||||
AC_DEFINE(HAVE_XKB),
|
AC_DEFINE(HAVE_XKB))
|
||||||
,
|
|
||||||
$x_libs_for_checks)
|
|
||||||
else
|
else
|
||||||
AC_MSG_WARN(XKB support explicitly disabled)
|
AC_MSG_WARN(XKB support explicitly disabled)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
x_cflags="$X_CFLAGS"
|
# Check for shaped window extension
|
||||||
x_ldflags="$X_LDFLAGS"
|
|
||||||
|
|
||||||
# set up things for XInput
|
AC_CHECK_FUNC(XShapeCombineMask,
|
||||||
|
AC_DEFINE(HAVE_SHAPE_EXT))
|
||||||
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)
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# X SYNC check
|
# 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
|
AC_CHECK_FUNC(XSyncQueryExtension,
|
||||||
PKG_CHECK_MODULES(XFIXES, xfixes, have_xfixes=true, :)
|
[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
|
# 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
|
if test "x$enable_shm" = "xyes"; then
|
||||||
# Check for shared memory
|
# Check for shared memory
|
||||||
AC_CHECK_HEADER(sys/ipc.h, AC_DEFINE(HAVE_IPC_H), no_sys_ipc=yes)
|
AC_CHECK_HEADER(sys/ipc.h, AC_DEFINE(HAVE_IPC_H), no_sys_ipc=yes)
|
||||||
@ -1345,12 +1183,117 @@ if test "x$gdktarget" = "xx11"; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test $pango_omitted_x_deps = yes ; then
|
# Check for Xinerama extension (Solaris impl or Xfree impl)
|
||||||
GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs $x_libs $GDK_EXTRA_LIBS"
|
|
||||||
|
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
|
else
|
||||||
GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs $GDK_EXTRA_LIBS"
|
AC_DEFINE(XINPUT_NONE)
|
||||||
fi
|
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)
|
AM_CONDITIONAL(USE_X11, true)
|
||||||
else
|
else
|
||||||
AM_CONDITIONAL(XINPUT_XFREE, false)
|
AM_CONDITIONAL(XINPUT_XFREE, false)
|
||||||
@ -1372,7 +1315,6 @@ else
|
|||||||
AM_CONDITIONAL(USE_WIN32, false)
|
AM_CONDITIONAL(USE_WIN32, false)
|
||||||
fi
|
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_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"
|
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)
|
AC_SUBST(GDK_PIXBUF_XLIB_DEP_CFLAGS)
|
||||||
|
|
||||||
if test "x$gdktarget" = "xlinux-fb"; then
|
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
|
if test x$enable_shadowfb = xyes ; then
|
||||||
AC_DEFINE(ENABLE_SHADOW_FB)
|
AC_DEFINE(ENABLE_SHADOW_FB)
|
||||||
fi
|
fi
|
||||||
@ -1408,38 +1336,16 @@ if test "x$gdktarget" = "xlinux-fb"; then
|
|||||||
AM_CONDITIONAL(ENABLE_FB_MANAGER, false)
|
AM_CONDITIONAL(ENABLE_FB_MANAGER, false)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test $pango_omitted_ft2_deps = yes ; then
|
|
||||||
GDK_EXTRA_LIBS="$FREETYPE_LIBS $GDK_EXTRA_LIBS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
AM_CONDITIONAL(USE_LINUX_FB, true)
|
AM_CONDITIONAL(USE_LINUX_FB, true)
|
||||||
else
|
else
|
||||||
AM_CONDITIONAL(USE_LINUX_FB, false)
|
AM_CONDITIONAL(USE_LINUX_FB, false)
|
||||||
AM_CONDITIONAL(ENABLE_FB_MANAGER, false)
|
AM_CONDITIONAL(ENABLE_FB_MANAGER, false)
|
||||||
fi
|
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
|
# Check for Pango flags
|
||||||
|
|
||||||
|
PANGO_PACKAGES="pango pangocairo"
|
||||||
|
|
||||||
AC_MSG_CHECKING(Pango flags)
|
AC_MSG_CHECKING(Pango flags)
|
||||||
if $PKG_CONFIG --exists $PANGO_PACKAGES ; then
|
if $PKG_CONFIG --exists $PANGO_PACKAGES ; then
|
||||||
PANGO_CFLAGS=`$PKG_CONFIG --cflags $PANGO_PACKAGES`
|
PANGO_CFLAGS=`$PKG_CONFIG --cflags $PANGO_PACKAGES`
|
||||||
@ -1469,15 +1375,16 @@ fi
|
|||||||
CFLAGS="$saved_cflags"
|
CFLAGS="$saved_cflags"
|
||||||
LDFLAGS="$saved_ldflags"
|
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_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
|
# If we aren't writing explicit dependencies, then don't put the extra libraries we need
|
||||||
# into the pkg-config files
|
# into the pkg-config files
|
||||||
#
|
#
|
||||||
if test $enable_explicit_deps != yes ; then
|
if test $enable_explicit_deps != yes ; then
|
||||||
|
GDK_PACKAGES="$PANGO_PACKAGES"
|
||||||
GDK_EXTRA_LIBS=
|
GDK_EXTRA_LIBS=
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -1520,7 +1427,7 @@ fi
|
|||||||
GTK_PACKAGES="atk cairo"
|
GTK_PACKAGES="atk cairo"
|
||||||
GTK_EXTRA_LIBS=
|
GTK_EXTRA_LIBS=
|
||||||
GTK_EXTRA_CFLAGS=
|
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"
|
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
|
if test x"$os_win32" = xyes; then
|
||||||
|
@ -152,12 +152,6 @@ static void gdk_shadow_fb_draw_text_wc (GdkDrawable *drawable
|
|||||||
gint y,
|
gint y,
|
||||||
const GdkWChar *text,
|
const GdkWChar *text,
|
||||||
gint text_length);
|
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,
|
static void gdk_shadow_fb_draw_drawable (GdkDrawable *drawable,
|
||||||
GdkGC *gc,
|
GdkGC *gc,
|
||||||
GdkPixmap *src,
|
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_points = gdk_shadow_fb_draw_points;
|
||||||
drawable_class->draw_segments = gdk_shadow_fb_draw_segments;
|
drawable_class->draw_segments = gdk_shadow_fb_draw_segments;
|
||||||
drawable_class->draw_lines = gdk_shadow_fb_draw_lines;
|
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;
|
drawable_class->draw_image = gdk_shadow_fb_draw_image;
|
||||||
#else
|
#else
|
||||||
drawable_class->draw_rectangle = gdk_fb_draw_rectangle;
|
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_points = gdk_fb_draw_points;
|
||||||
drawable_class->draw_segments = gdk_fb_draw_segments;
|
drawable_class->draw_segments = gdk_fb_draw_segments;
|
||||||
drawable_class->draw_lines = gdk_fb_draw_lines;
|
drawable_class->draw_lines = gdk_fb_draw_lines;
|
||||||
drawable_class->draw_glyphs = gdk_fb_draw_glyphs;
|
|
||||||
drawable_class->draw_image = gdk_fb_draw_image;
|
drawable_class->draw_image = gdk_fb_draw_image;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -853,6 +845,7 @@ gdk_fb_draw_text(GdkDrawable *drawable,
|
|||||||
gint text_length)
|
gint text_length)
|
||||||
{
|
{
|
||||||
GdkFontPrivateFB *private;
|
GdkFontPrivateFB *private;
|
||||||
|
GdkDrawableFBData *drawable_private;
|
||||||
guchar *utf8, *utf8_end;
|
guchar *utf8, *utf8_end;
|
||||||
PangoGlyphString *glyphs = pango_glyph_string_new ();
|
PangoGlyphString *glyphs = pango_glyph_string_new ();
|
||||||
PangoEngineShape *shaper, *last_shaper;
|
PangoEngineShape *shaper, *last_shaper;
|
||||||
@ -865,6 +858,7 @@ gdk_fb_draw_text(GdkDrawable *drawable,
|
|||||||
g_return_if_fail (text != NULL);
|
g_return_if_fail (text != NULL);
|
||||||
|
|
||||||
private = (GdkFontPrivateFB*) font;
|
private = (GdkFontPrivateFB*) font;
|
||||||
|
drawable_private = GDK_DRAWABLE_FBDATA (drawable);
|
||||||
|
|
||||||
utf8 = alloca (text_length*2);
|
utf8 = alloca (text_length*2);
|
||||||
|
|
||||||
@ -906,9 +900,10 @@ gdk_fb_draw_text(GdkDrawable *drawable,
|
|||||||
|
|
||||||
pango_shape (start, p - start, &analysis, glyphs);
|
pango_shape (start, p - start, &analysis, glyphs);
|
||||||
|
|
||||||
gdk_fb_draw_glyphs (drawable, gc, private->pango_font,
|
gdk_draw_glyphs (drawable_private->wrapper,
|
||||||
x + PANGO_PIXELS (x_offset), y,
|
gc, private->pango_font,
|
||||||
glyphs);
|
x + PANGO_PIXELS (x_offset), y,
|
||||||
|
glyphs);
|
||||||
|
|
||||||
for (i = 0; i < glyphs->num_glyphs; i++)
|
for (i = 0; i < glyphs->num_glyphs; i++)
|
||||||
x_offset += glyphs->glyphs[i].geometry.width;
|
x_offset += glyphs->glyphs[i].geometry.width;
|
||||||
@ -928,9 +923,10 @@ gdk_fb_draw_text(GdkDrawable *drawable,
|
|||||||
|
|
||||||
pango_shape (start, p - start, &analysis, glyphs);
|
pango_shape (start, p - start, &analysis, glyphs);
|
||||||
|
|
||||||
gdk_fb_draw_glyphs (drawable, gc, private->pango_font,
|
gdk_draw_glyphs (drawable_private->wrapper,
|
||||||
x + PANGO_PIXELS (x_offset), y,
|
gc, private->pango_font,
|
||||||
glyphs);
|
x + PANGO_PIXELS (x_offset), y,
|
||||||
|
glyphs);
|
||||||
}
|
}
|
||||||
|
|
||||||
pango_glyph_string_free (glyphs);
|
pango_glyph_string_free (glyphs);
|
||||||
@ -1204,93 +1200,6 @@ gdk_fb_drawable_clear (GdkDrawable *d)
|
|||||||
_gdk_windowing_window_clear_area (d, 0, 0, GDK_DRAWABLE_IMPL_FBDATA (d)->width, GDK_DRAWABLE_IMPL_FBDATA (d)->height);
|
_gdk_windowing_window_clear_area (d, 0, 0, GDK_DRAWABLE_IMPL_FBDATA (d)->width, GDK_DRAWABLE_IMPL_FBDATA (d)->height);
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
static void
|
||||||
gdk_fb_draw_image (GdkDrawable *drawable,
|
gdk_fb_draw_image (GdkDrawable *drawable,
|
||||||
GdkGC *gc,
|
GdkGC *gc,
|
||||||
@ -1491,25 +1400,6 @@ gdk_shadow_fb_draw_text_wc (GdkDrawable *drawable,
|
|||||||
gdk_fb_draw_text_wc (drawable, font, gc, x, y, text, text_length);
|
gdk_fb_draw_text_wc (drawable, font, gc, x, y, text, text_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
static void
|
||||||
gdk_shadow_fb_draw_drawable (GdkDrawable *drawable,
|
gdk_shadow_fb_draw_drawable (GdkDrawable *drawable,
|
||||||
GdkGC *gc,
|
GdkGC *gc,
|
||||||
|
@ -30,8 +30,6 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#include <pango/pangowin32.h>
|
|
||||||
|
|
||||||
#include "gdkfont.h"
|
#include "gdkfont.h"
|
||||||
#include "gdkpango.h" /* gdk_pango_context_get() */
|
#include "gdkpango.h" /* gdk_pango_context_get() */
|
||||||
#include "gdkdisplay.h"
|
#include "gdkdisplay.h"
|
||||||
@ -1239,27 +1237,31 @@ GdkFont*
|
|||||||
gdk_font_from_description_for_display (GdkDisplay *display,
|
gdk_font_from_description_for_display (GdkDisplay *display,
|
||||||
PangoFontDescription *font_desc)
|
PangoFontDescription *font_desc)
|
||||||
{
|
{
|
||||||
PangoFontMap *font_map;
|
|
||||||
PangoFont *font;
|
|
||||||
GdkFont *result = NULL;
|
GdkFont *result = NULL;
|
||||||
|
LOGFONT logfont;
|
||||||
|
int size;
|
||||||
|
|
||||||
g_return_val_if_fail (font_desc != NULL, NULL);
|
g_return_val_if_fail (font_desc != NULL, NULL);
|
||||||
g_return_val_if_fail (display == gdk_display_get_default (), NULL);
|
g_return_val_if_fail (display == gdk_display_get_default (), NULL);
|
||||||
|
|
||||||
font_map = pango_win32_font_map_for_display ();
|
size = PANGO_PIXELS (pango_font_description_get_size (font_desc));
|
||||||
font = pango_font_map_load_font (font_map, gdk_pango_context_get (), font_desc);
|
|
||||||
|
|
||||||
if (font)
|
logfont.lfHeight = - MulDiv (PointSize, GetDeviceCaps (hDC, LOGPIXELSY), 72);
|
||||||
{
|
logfont.lfWidth = 0;
|
||||||
LOGFONT *lfp =
|
logfont.lfEscapement = 0;
|
||||||
pango_win32_font_logfont (font);
|
logfont.lfOrientation = 0;
|
||||||
result = gdk_font_from_one_singlefont (gdk_font_load_logfont (lfp));
|
logfont.lfWeight = FW_DONTCARE;
|
||||||
g_free (lfp);
|
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");
|
||||||
|
|
||||||
g_object_unref (font);
|
return gdk_font_from_one_singlefont (gdk_font_load_logfont (&logfont));
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GdkFont*
|
GdkFont*
|
||||||
|
Loading…
Reference in New Issue
Block a user