Depend on GTK+ >= 2.24.3, cairo >= 1.20.1, gdk-pixbuf >= 2.22.1

and completely separate configure and sanity checks for gdk-pixbuf
from GTK+, because it's now distributed as a separate package. Remove
all sorts of conditional compiling based on GDK_CHECK_VERSION() and
CAIRO_VERSION.
This commit is contained in:
Michael Natterer
2011-04-06 19:58:24 +02:00
parent a83876040d
commit 24ee3370b8
17 changed files with 69 additions and 150 deletions

View File

@ -24,23 +24,6 @@
#include "display/display-enums.h"
#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 9, 15)
#define USE_CAIRO_REGION
#endif
#ifndef USE_CAIRO_REGION
#define cairo_region_t GdkRegion
#define cairo_rectangle_int_t GdkRectangle
#define cairo_region_destroy gdk_region_destroy
#define cairo_region_union gdk_region_union
#define cairo_region_create_rectangle gdk_region_rectangle
#define cairo_region_union_rectangle gdk_region_union_with_rect
#define cairo_region_get_extents gdk_region_get_clipbox
#define cairo_region_subtract gdk_region_subtract
#define cairo_region_xor gdk_region_xor
#endif
typedef struct _GimpCanvas GimpCanvas;
typedef struct _GimpCanvasItem GimpCanvasItem;
typedef struct _GimpCanvasGroup GimpCanvasGroup;

View File

@ -41,37 +41,30 @@ void
gimp_display_shell_expose_region (GimpDisplayShell *shell,
cairo_region_t *region)
{
GdkRegion *gdk_region = gdk_region_new ();
gint n_rectangles;
gint i;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
g_return_if_fail (region != NULL);
if (! gtk_widget_get_realized (shell->canvas))
return;
#ifdef USE_CAIRO_REGION
{
GdkRegion *gdk_region = gdk_region_new ();
gint n_rectangles;
gint i;
n_rectangles = cairo_region_num_rectangles (region);
n_rectangles = cairo_region_num_rectangles (region);
for (i = 0; i < n_rectangles; i++)
{
cairo_rectangle_int_t rectangle;
for (i = 0; i < n_rectangles; i++)
{
cairo_rectangle_int_t rectangle;
cairo_region_get_rectangle (region, i, &rectangle);
cairo_region_get_rectangle (region, i, &rectangle);
gdk_region_union_with_rect (gdk_region, (GdkRectangle *) &rectangle);
}
gdk_region_union_with_rect (gdk_region, (GdkRectangle *) &rectangle);
}
gdk_window_invalidate_region (gtk_widget_get_window (shell->canvas),
gdk_region, TRUE);
gdk_region_destroy (gdk_region);
}
#else
gdk_window_invalidate_region (gtk_widget_get_window (shell->canvas),
region, TRUE);
#endif
gdk_region, TRUE);
gdk_region_destroy (gdk_region);
}
void

View File

@ -251,8 +251,8 @@ static gchar *
gui_sanity_check (void)
{
#define GTK_REQUIRED_MAJOR 2
#define GTK_REQUIRED_MINOR 20
#define GTK_REQUIRED_MICRO 0
#define GTK_REQUIRED_MINOR 24
#define GTK_REQUIRED_MICRO 3
const gchar *mismatch = gtk_check_version (GTK_REQUIRED_MAJOR,
GTK_REQUIRED_MINOR,

View File

@ -21,6 +21,7 @@
#include <fontconfig/fontconfig.h>
#include <pango/pango.h>
#include <pango/pangoft2.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gegl.h>
#include "libgimpbase/gimpbase.h"
@ -36,6 +37,7 @@ static gchar * sanity_check_cairo (void);
static gchar * sanity_check_pango (void);
static gchar * sanity_check_fontconfig (void);
static gchar * sanity_check_freetype (void);
static gchar * sanity_check_gdk_pixbuf (void);
static gchar * sanity_check_babl (void);
static gchar * sanity_check_gegl (void);
static gchar * sanity_check_filename_encoding (void);
@ -63,6 +65,9 @@ sanity_check (void)
if (! abort_message)
abort_message = sanity_check_freetype ();
if (! abort_message)
abort_message = sanity_check_gdk_pixbuf ();
if (! abort_message)
abort_message = sanity_check_babl ();
@ -158,8 +163,8 @@ static gchar *
sanity_check_cairo (void)
{
#define CAIRO_REQUIRED_MAJOR 1
#define CAIRO_REQUIRED_MINOR 8
#define CAIRO_REQUIRED_MICRO 0
#define CAIRO_REQUIRED_MINOR 10
#define CAIRO_REQUIRED_MICRO 2
if (cairo_version () < CAIRO_VERSION_ENCODE (CAIRO_REQUIRED_MAJOR,
CAIRO_REQUIRED_MINOR,
@ -307,6 +312,36 @@ sanity_check_freetype (void)
return NULL;
}
static gchar *
sanity_check_gdk_pixbuf (void)
{
#define GDK_PIXBUF_REQUIRED_MAJOR 2
#define GDK_PIXBUF_REQUIRED_MINOR 22
#define GDK_PIXBUF_REQUIRED_MICRO 1
if (! sanity_check_version (gdk_pixbuf_major_version, GDK_PIXBUF_REQUIRED_MAJOR,
gdk_pixbuf_minor_version, GDK_PIXBUF_REQUIRED_MINOR,
gdk_pixbuf_micro_version, GDK_PIXBUF_REQUIRED_MICRO))
{
return g_strdup_printf
("GdkPixbuf version too old!\n\n"
"GIMP requires GdkPixbuf version %d.%d.%d or later.\n"
"Installed GdkPixbuf version is %d.%d.%d.\n\n"
"Somehow you or your software packager managed\n"
"to install GIMP with an older GdkPixbuf version.\n\n"
"Please upgrade to GdkPixbuf version %d.%d.%d or later.",
GDK_PIXBUF_REQUIRED_MAJOR, GDK_PIXBUF_REQUIRED_MINOR, GDK_PIXBUF_REQUIRED_MICRO,
gdk_pixbuf_major_version, gdk_pixbuf_minor_version, gdk_pixbuf_micro_version,
GDK_PIXBUF_REQUIRED_MAJOR, GDK_PIXBUF_REQUIRED_MINOR, GDK_PIXBUF_REQUIRED_MICRO);
}
#undef GDK_PIXBUF_REQUIRED_MAJOR
#undef GDK_PIXBUF_REQUIRED_MINOR
#undef GDK_PIXBUF_REQUIRED_MICRO
return NULL;
}
static gchar *
sanity_check_babl (void)
{

View File

@ -257,14 +257,8 @@ gimp_overlay_child_size_allocate (GimpOverlayBox *box,
gdk_window_get_position (child->window,
&old_allocation.x,
&old_allocation.y);
#if GTK_CHECK_VERSION (2, 24, 0)
old_allocation.width = gdk_window_get_width (child->window);
old_allocation.height = gdk_window_get_height (child->window);
#else
gdk_drawable_get_size (child->window,
&old_allocation.width,
&old_allocation.height);
#endif
gimp_overlay_child_transform_bounds (child, &old_allocation, &old_bounds);

View File

@ -235,12 +235,8 @@ gimp_spin_scale_expose (GtkWidget *widget,
gdk_cairo_region (cr, event->region);
cairo_clip (cr);
#if GTK_CHECK_VERSION (2, 24, 0)
w = gdk_window_get_width (event->window);
h = gdk_window_get_height (event->window);
#else
gdk_drawable_get_size (event->window, &w, &h);
#endif
cairo_set_line_width (cr, 1.0);
@ -334,11 +330,7 @@ gimp_spin_scale_change_value (GtkWidget *widget,
gint width;
gdouble value;
#if GTK_CHECK_VERSION (2, 24, 0)
width = gdk_window_get_width (text_window);
#else
gdk_drawable_get_size (text_window, &width, NULL);
#endif
if (private->relative_change)
{

View File

@ -1296,13 +1296,8 @@ gimp_tag_entry_expose (GtkWidget *widget,
pango_layout_set_attributes (layout, attr_list);
pango_attr_list_unref (attr_list);
#if GTK_CHECK_VERSION (2, 24, 0)
window_width = gdk_window_get_width (event->window);
window_height = gdk_window_get_height (event->window);
#else
gdk_drawable_get_size (GDK_DRAWABLE (event->window),
&window_width, &window_height);
#endif
pango_layout_get_size (layout,
&layout_width, &layout_height);
offset = (window_height - PANGO_PIXELS (layout_height)) / 2;

View File

@ -868,8 +868,6 @@ gimp_window_transient_realized (GtkWidget *window,
static GdkWindow *
gimp_get_foreign_window (guint32 window)
{
#if GTK_CHECK_VERSION (2, 24, 0)
#ifdef GDK_WINDOWING_X11
return gdk_x11_window_foreign_new_for_display (gdk_display_get_default (),
window);
@ -880,15 +878,6 @@ gimp_get_foreign_window (guint32 window)
window);
#endif
#else /* ! GTK_CHECK_VERSION (2, 24, 0) */
#ifndef GDK_NATIVE_WINDOW_POINTER
return gdk_window_foreign_new_for_display (gdk_display_get_default (),
window);
#endif
#endif /* GTK_CHECK_VERSION (2, 24, 0) */
return NULL;
}

View File

@ -43,10 +43,10 @@ m4_define([gimp_full_name], [GNU Image Manipulation Program])
m4_define([babl_required_version], [0.1.4])
m4_define([gegl_required_version], [0.1.6])
m4_define([glib_required_version], [2.28.1])
m4_define([gtk_required_version], [2.20.0])
m4_define([gdk_pixbuf_required_version], [gtk_required_version])
m4_define([cairo_required_version], [1.8.0])
m4_define([cairo_pdf_required_version], [1.8.0])
m4_define([gtk_required_version], [2.24.3])
m4_define([gdk_pixbuf_required_version], [2.22.1])
m4_define([cairo_required_version], [1.10.2])
m4_define([cairo_pdf_required_version], [1.10.2])
m4_define([pangocairo_required_version], [1.22.0])
m4_define([fontconfig_required_version], [2.2.0])
m4_define([gtkdoc_required_version], [1.0])
@ -520,6 +520,14 @@ if test "x$GDK_PIXBUF_CSOURCE" = xno; then
AC_MSG_ERROR(Could not find gdk-pixbuf-csource in your PATH)
fi
AC_MSG_CHECKING([if GdkPixbuf is version 2.26.0 or newer])
if $PKG_CONFIG --atleast-version=2.26.0 gdk-pixbuf-2.0; then
have_gdk_pixbuf_2_26=yes
else
have_gdk_pixbuf_2_26=no
fi
AC_MSG_RESULT($have_gdk_pixbuf_2_26)
PKG_CHECK_MODULES(CAIRO, cairo >= cairo_required_version)
PKG_CHECK_MODULES(PANGOCAIRO,
@ -1950,7 +1958,11 @@ if test "x$have_glib_2_32" != "xyes"; then
fi
if test "x$have_gtk_2_26" != "xyes"; then
CPPFLAGS="${CPPFLAGS} -DGDK_PIXBUF_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
CPPFLAGS="${CPPFLAGS} -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
fi
if test "x$have_gdk_pixbuf_2_26" != "xyes"; then
CPPFLAGS="${CPPFLAGS} -DGDK_PIXBUF_DISABLE_DEPRECATED"
fi
if test "x$have_pango_1_32" != "xyes"; then

View File

@ -149,8 +149,6 @@ gimp_ui_init (const gchar *prog_name,
static GdkWindow *
gimp_ui_get_foreign_window (guint32 window)
{
#if GTK_CHECK_VERSION (2, 24, 0)
#ifdef GDK_WINDOWING_X11
return gdk_x11_window_foreign_new_for_display (gdk_display_get_default (),
window);
@ -161,15 +159,6 @@ gimp_ui_get_foreign_window (guint32 window)
window);
#endif
#else /* ! GTK_CHECK_VERSION (2, 24, 0) */
#ifndef GDK_NATIVE_WINDOW_POINTER
return gdk_window_foreign_new_for_display (gdk_display_get_default (),
window);
#endif
#endif /* GTK_CHECK_VERSION (2, 24, 0) */
return NULL;
}

View File

@ -556,17 +556,10 @@ gimp_prop_boolean_combo_box_new (GObject *config,
property_name, &value,
NULL);
#if GTK_CHECK_VERSION (2, 24, 0)
combo_box = gtk_combo_box_text_new ();
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), true_text);
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), false_text);
#else
combo_box = gtk_combo_box_new_text ();
gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), true_text);
gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), false_text);
#endif
gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), value ? 0 : 1);

View File

@ -404,7 +404,6 @@ gtk_widget_get_translation_to_window (GtkWidget *widget,
widget_window = gtk_widget_get_window (widget);
#if GTK_CHECK_VERSION (2, 22, 0)
for (w = window;
w && w != widget_window;
w = gdk_window_get_effective_parent (w))
@ -416,15 +415,6 @@ gtk_widget_get_translation_to_window (GtkWidget *widget,
*x += px;
*y += py;
}
#else
for (w = window; w && w != widget_window; w = gdk_window_get_parent (w))
{
int wx, wy;
gdk_window_get_position (w, &wx, &wy);
*x += wx;
*y += wy;
}
#endif
if (w == NULL)
{

View File

@ -649,11 +649,7 @@ build_dialog (GimpImageBaseType basetype,
gtk_box_pack_end (GTK_BOX (hbox), progress, TRUE, TRUE, 0);
gtk_widget_show (progress);
#if GTK_CHECK_VERSION (2, 24, 0)
speedcombo = gtk_combo_box_text_new ();
#else
speedcombo = gtk_combo_box_new_text ();
#endif
gtk_box_pack_end (GTK_BOX (hbox), speedcombo, FALSE, FALSE, 0);
gtk_widget_show (speedcombo);
@ -663,11 +659,7 @@ build_dialog (GimpImageBaseType basetype,
/* list is given in "fps" - frames per second */
text = g_strdup_printf (_("%d fps"), get_fps (index));
#if GTK_CHECK_VERSION (2, 24, 0)
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (speedcombo), text);
#else
gtk_combo_box_append_text (GTK_COMBO_BOX (speedcombo), text);
#endif
g_free (text);
}
@ -679,11 +671,7 @@ build_dialog (GimpImageBaseType basetype,
gimp_help_set_help_data (speedcombo, _("Default framerate"), NULL);
#if GTK_CHECK_VERSION (2, 24, 0)
speedcombo = gtk_combo_box_text_new ();
#else
speedcombo = gtk_combo_box_new_text ();
#endif
gtk_box_pack_end (GTK_BOX (hbox), speedcombo, FALSE, FALSE, 0);
gtk_widget_show (speedcombo);
@ -692,11 +680,7 @@ build_dialog (GimpImageBaseType basetype,
gchar *text;
text = g_strdup_printf ("%g\303\227", (100 / get_duration_factor (index)) / 100);
#if GTK_CHECK_VERSION (2, 24, 0)
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (speedcombo), text);
#else
gtk_combo_box_append_text (GTK_COMBO_BOX (speedcombo), text);
#endif
g_free (text);
}

View File

@ -1060,20 +1060,11 @@ gih_save_dialog (gint32 image_ID)
cellw_adjust.rank0 = cellh_adjust.rank0 = NULL;
}
#if GTK_CHECK_VERSION (2, 24, 0)
cb = gtk_combo_box_text_new ();
#else
cb = gtk_combo_box_new_text ();
#endif
for (j = 0; j < G_N_ELEMENTS (selection_modes); j++)
#if GTK_CHECK_VERSION (2, 24, 0)
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb),
selection_modes[j]);
#else
gtk_combo_box_append_text (GTK_COMBO_BOX (cb), selection_modes[j]);
#endif
gtk_combo_box_set_active (GTK_COMBO_BOX (cb), 2); /* random */
if (gihparams.selection[i])

View File

@ -3196,7 +3196,6 @@ load_dialog (const gchar *filename,
gimp_help_set_help_data (GTK_WIDGET (entry),
_("Pages to load (e.g.: 1-4 or 1,3,5-7)"), NULL);
#if GTK_CHECK_VERSION (2, 24, 0)
target = gtk_combo_box_text_new ();
gtk_combo_box_text_insert_text (GTK_COMBO_BOX_TEXT (target),
GIMP_PAGE_SELECTOR_TARGET_LAYERS,
@ -3204,13 +3203,6 @@ load_dialog (const gchar *filename,
gtk_combo_box_text_insert_text (GTK_COMBO_BOX_TEXT (target),
GIMP_PAGE_SELECTOR_TARGET_IMAGES,
_("Images"));
#else
target = gtk_combo_box_new_text ();
gtk_combo_box_insert_text (GTK_COMBO_BOX (target),
GIMP_PAGE_SELECTOR_TARGET_LAYERS, _("Layers"));
gtk_combo_box_insert_text (GTK_COMBO_BOX (target),
GIMP_PAGE_SELECTOR_TARGET_IMAGES, _("Images"));
#endif
gtk_combo_box_set_active (GTK_COMBO_BOX (target), (int) ps_pagemode);
gimp_table_attach_aligned (GTK_TABLE (table), 0, 4,
_("Open as"), 0.0, 0.5,

View File

@ -949,12 +949,8 @@ shoot (GdkScreen *screen)
return -1;
}
#if GTK_CHECK_VERSION (2, 24, 0)
rect.width = gdk_window_get_width (window);
rect.height = gdk_window_get_height (window);
#else
gdk_drawable_get_size (GDK_DRAWABLE (window), &rect.width, &rect.height);
#endif
gdk_window_get_origin (window, &x, &y);
rect.x = x;

View File

@ -503,22 +503,13 @@ script_fu_interface (SFScript *script,
break;
case SF_OPTION:
#if GTK_CHECK_VERSION (2, 24, 0)
widget = gtk_combo_box_text_new ();
#else
widget = gtk_combo_box_new_text ();
#endif
for (list = arg->default_value.sfa_option.list;
list;
list = g_slist_next (list))
{
#if GTK_CHECK_VERSION (2, 24, 0)
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget),
gettext (list->data));
#else
gtk_combo_box_append_text (GTK_COMBO_BOX (widget),
gettext (list->data));
#endif
}
gtk_combo_box_set_active (GTK_COMBO_BOX (widget),