remove deprecated GDK usage except for in libsexy

svn path=/trunk/netsurf/; revision=12803
This commit is contained in:
Vincent Sanders 2011-09-17 14:58:42 +00:00
parent 19daa23f94
commit e82c5be653
8 changed files with 43 additions and 115 deletions

View File

@ -29,11 +29,13 @@ $(eval $(call feature_enabled,WEBP,-DWITH_WEBP,-lwebp,WebP (libwebp)))
GTKDEPFLAGS := -DG_DISABLE_SINGLE_INCLUDES \
-DG_DISABLE_DEPRECATED \
-DGTK_DISABLE_SINGLE_INCLUDES \
-DPANGO_DISABLE_DEPRECATED \
-DGDK_PIXBUF_DISABLE_DEPRECATED \
-DGDK_DISABLE_DEPRECATED \
-DGTK_DISABLE_DEPRECATED \
-DGTK_MULTIHEAD_SAFE
-DGTK_MULTIHEAD_SAFE \
-DPANGO_DISABLE_DEPRECATED \
-DGDK_PIXBUF_DISABLE_DEPRECATED
# libsexy currently means we cannot enable this
# -DGDK_DISABLE_DEPRECATED
GTKCFLAGS := -std=c99 -Dgtk -Dnsgtk \
$(GTKDEPFLAGS) \

View File

@ -36,9 +36,6 @@
#include "utils/log.h"
#include "desktop/options.h"
/* Until we can consider the descenders etc, we need to not render using cairo */
#undef CAIRO_VERSION
static bool nsfont_width(const plot_font_style_t *fstyle,
const char *string, size_t length,
int *width);
@ -241,18 +238,6 @@ bool nsfont_paint(int x, int y, const char *string, size_t length,
PangoLayout *layout;
PangoLayoutLine *line;
gint size;
#ifdef CAIRO_VERSION
int width, height;
#else
PangoContext *context;
GdkColor colour = { 0,
((fstyle->foreground & 0xff) << 8) |
(fstyle->foreground & 0xff),
(fstyle->foreground & 0xff00) |
(fstyle->foreground & 0xff00 >> 8),
((fstyle->foreground & 0xff0000) >> 8) |
(fstyle->foreground & 0xff0000 >> 16) };
#endif
if (length == 0)
return true;
@ -264,27 +249,16 @@ bool nsfont_paint(int x, int y, const char *string, size_t length,
else
pango_font_description_set_size(desc, size);
#ifdef CAIRO_VERSION
layout = pango_cairo_create_layout(current_cr);
#else
nsfont_pango_check();
context = nsfont_pango_context;
layout = nsfont_pango_layout;
#endif
pango_layout_set_font_description(layout, desc);
pango_layout_set_text(layout, string, length);
line = pango_layout_get_line(layout, 0);
#ifdef CAIRO_VERSION
cairo_move_to(current_cr, x, y);
nsgtk_set_colour(c);
pango_cairo_show_layout_line(current_cr, layout, line);
#else
gdk_draw_layout_line_with_colors(current_drawable, current_gc,
x, y, line, &colour, 0);
cairo_move_to(current_cr, x, y + 0.5);
nsgtk_set_colour(fstyle->foreground);
pango_cairo_show_layout_line(current_cr, line);
#endif
pango_font_description_free(desc);
return true;

View File

@ -41,13 +41,8 @@
#include "gtk/options.h"
#include "gtk/bitmap.h"
#ifndef CAIRO_VERSION
#error "nsgtk requires cairo"
#endif
GtkWidget *current_widget;
GdkDrawable *current_drawable;
GdkGC *current_gc;
cairo_t *current_cr;
static GdkRectangle cliprect;
@ -57,44 +52,11 @@ struct plotter_table plot;
/** Set cairo context colour to nsgtk colour. */
void nsgtk_set_colour(colour c)
{
int r, g, b;
GdkColor colour;
r = c & 0xff;
g = (c & 0xff00) >> 8;
b = (c & 0xff0000) >> 16;
colour.red = r | (r << 8);
colour.green = g | (g << 8);
colour.blue = b | (b << 8);
colour.pixel = (r << 16) | (g << 8) | b;
gdk_colormap_alloc_color(gdk_colormap_get_system(), &colour, true, true);
gdk_gc_set_foreground(current_gc, &colour);
cairo_set_source_rgba(current_cr, r / 255.0,
g / 255.0, b / 255.0, 1.0);
}
/** Plot a caret.
*
* @note It is assumed that the plotters have been set up.
*/
void nsgtk_plot_caret(int x, int y, int h)
{
GdkColor colour;
colour.red = 0;
colour.green = 0;
colour.blue = 0;
colour.pixel = 0;
gdk_colormap_alloc_color(gdk_colormap_get_system(),
&colour, true, true);
gdk_gc_set_foreground(current_gc, &colour);
gdk_draw_line(current_drawable, current_gc,
x, y,
x, y + h - 1);
cairo_set_source_rgba(current_cr,
(c & 0xff) / 255.0,
((c & 0xff00) >> 8) / 255.0,
((c & 0xff0000) >> 16) / 255.0,
1.0);
}
/** Set cairo context to solid plot operation. */
@ -130,7 +92,6 @@ static bool nsgtk_plot_clip(const struct rect *clip)
cliprect.y = clip->y0;
cliprect.width = clip->x1 - clip->x0;
cliprect.height = clip->y1 - clip->y0;
gdk_gc_set_clip_rectangle(current_gc, &cliprect);
return true;
}
@ -192,9 +153,9 @@ static bool nsgtk_plot_disc(int x, int y, int radius, const plot_style_t *style)
return true;
}
static bool nsgtk_plot_line(int x0, int y0, int x1, int y1, const plot_style_t *style)
static bool
nsgtk_plot_line(int x0, int y0, int x1, int y1, const plot_style_t *style)
{
nsgtk_set_colour(style->stroke_colour);
switch (style->stroke_type) {
@ -232,6 +193,22 @@ static bool nsgtk_plot_line(int x0, int y0, int x1, int y1, const plot_style_t *
return true;
}
/** Plot a caret.
*
* @note It is assumed that the plotters have been set up.
*/
void nsgtk_plot_caret(int x, int y, int h)
{
nsgtk_set_solid(); /* solid line */
nsgtk_set_colour(0); /* black */
cairo_set_line_width(current_cr, 1); /* thin line */
/* core expects horizontal and vertical lines to be on pixels, not
* between pixels */
cairo_move_to(current_cr, x + 0.5, y);
cairo_line_to(current_cr, x + 0.5, y + h - 1);
cairo_stroke(current_cr);
}
static bool nsgtk_plot_rectangle(int x0, int y0, int x1, int y1, const plot_style_t *style)
{
@ -367,9 +344,9 @@ static bool nsgtk_plot_pixbuf(int x, int y, int width, int height,
gdk_pixbuf_get_height(pixbuf) == height) {
/* Bitmap is not scaled */
/* Plot the bitmap */
gdk_draw_pixbuf(current_drawable, current_gc, pixbuf,
dsrcx, dsrcy, x, y, dwidth, dheight,
GDK_RGB_DITHER_MAX, 0, 0);
gdk_cairo_set_source_pixbuf(current_cr, pixbuf, x - dsrcx, y -dsrcy);
cairo_rectangle(current_cr, x , y , dwidth, dheight);
cairo_fill(current_cr);
} else {
/* Bitmap is scaled */
@ -391,9 +368,9 @@ static bool nsgtk_plot_pixbuf(int x, int y, int width, int height,
return false;
/* Plot the scaled bitmap */
gdk_draw_pixbuf(current_drawable, current_gc, scaled,
0, 0, x, y, dwidth, dheight,
GDK_RGB_DITHER_MAX, 0, 0);
gdk_cairo_set_source_pixbuf(current_cr, scaled, x, y);
cairo_rectangle(current_cr, x , y , dwidth, dheight);
cairo_fill(current_cr);
g_object_unref(scaled);
}

View File

@ -32,10 +32,7 @@ extern const struct plotter_table nsgtk_plotters;
/* make sure this is NULL if no redraw is in progress */
extern GtkWidget *current_widget;
extern GdkDrawable *current_drawable;
extern GdkGC *current_gc;
#ifdef CAIRO_VERSION
extern cairo_t *current_cr;
#endif
void nsgtk_set_colour(colour c);
void nsgtk_plot_caret(int x, int y, int h);

View File

@ -1514,10 +1514,8 @@ static gboolean nsgtk_history_expose_event(GtkWidget *widget,
current_widget = widget;
current_drawable = widget->window;
current_gc = gdk_gc_new(current_drawable);
#ifdef CAIRO_VERSION
current_cr = gdk_cairo_create(current_drawable);
#endif
clip.x0 = event->area.x;
clip.y0 = event->area.y;
@ -1528,10 +1526,9 @@ static gboolean nsgtk_history_expose_event(GtkWidget *widget,
history_redraw(bw->history, &ctx);
current_widget = NULL;
g_object_unref(current_gc);
#ifdef CAIRO_VERSION
cairo_destroy(current_cr);
#endif
return FALSE;
}

View File

@ -102,10 +102,7 @@ bool thumbnail_create(hlcache_handle *content, struct bitmap *bitmap,
/* set to plot to pixmap */
current_drawable = pixmap;
current_gc = gdk_gc_new(current_drawable);
#ifdef CAIRO_VERSION
current_cr = gdk_cairo_create(current_drawable);
#endif
/* render the content */
thumbnail_redraw(content, cwidth, cheight, &ctx);
@ -129,10 +126,8 @@ bool thumbnail_create(hlcache_handle *content, struct bitmap *bitmap,
bitmap_modified(bitmap);
g_object_unref(current_gc);
#ifdef CAIRO_VERSION
cairo_destroy(current_cr);
#endif
g_object_unref(pixmap);
g_object_unref(big);

View File

@ -182,25 +182,17 @@ gboolean nsgtk_tree_window_expose_event(GtkWidget *widget,
current_widget = widget;
current_drawable = widget->window;
current_gc = gdk_gc_new(current_drawable);
#ifdef CAIRO_VERSION
current_cr = gdk_cairo_create(current_drawable);
#endif
current_widget = widget;
current_drawable = widget->window;
current_gc = gdk_gc_new(current_drawable);
#ifdef CAIRO_VERSION
current_cr = gdk_cairo_create(current_drawable);
#endif
tree_set_redraw(tree, true);
tree_draw(tree, 0, 0, x, y, width, height, &ctx);
current_widget = NULL;
g_object_unref(current_gc);
#ifdef CAIRO_VERSION
cairo_destroy(current_cr);
#endif
return FALSE;
}

View File

@ -159,10 +159,7 @@ static gboolean nsgtk_window_expose_event(GtkWidget *widget,
current_widget = (GtkWidget *)g->layout;
current_drawable = g->layout->bin_window;
current_gc = gdk_gc_new(current_drawable);
#ifdef CAIRO_VERSION
current_cr = gdk_cairo_create(current_drawable);
#endif
clip.x0 = event->area.x;
clip.y0 = event->area.y;
@ -175,10 +172,7 @@ static gboolean nsgtk_window_expose_event(GtkWidget *widget,
nsgtk_plot_caret(g->caretx, g->carety, g->careth);
current_widget = NULL;
g_object_unref(current_gc);
#ifdef CAIRO_VERSION
cairo_destroy(current_cr);
#endif
return FALSE;
}