summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSND\edgbla_cp <SND\edgbla_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-02-26 20:12:57 +0000
committerSND\edgbla_cp <SND\edgbla_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-02-26 20:12:57 +0000
commitb96e8eb13a9eb9331b5ffb0f5653ad0215a6736c (patch)
treed11da1a07e6aab84faa5e64c19e2324ab580a5b2
parent274576f0015b79aaeb9ebf41d9bf3ce91be62d82 (diff)
downloadpcsxr-b96e8eb13a9eb9331b5ffb0f5653ad0215a6736c.tar.gz
rm gdk-compat.h;
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@83177 e17a0e51-4ae3-4d35-97c3-1a29b211df97
-rwxr-xr-xgui/DebugMemory.c6
-rwxr-xr-xgui/MemcardDlg.c198
-rwxr-xr-xgui/gdk-compat.h155
3 files changed, 72 insertions, 287 deletions
diff --git a/gui/DebugMemory.c b/gui/DebugMemory.c
index 61739978..9aac8a98 100755
--- a/gui/DebugMemory.c
+++ b/gui/DebugMemory.c
@@ -310,11 +310,9 @@ void RunDebugMemoryDialog() {
pfd = pango_font_description_from_string("Bitstream Vera Sans Mono, "
"DejaVu Sans Mono, Liberation Mono, FreeMono, Sans Mono 9");
-#if GTK_CHECK_VERSION(3, 0, 0)
+
gtk_widget_override_font(widget, pfd);
-#else
- gtk_widget_modify_font(widget, pfd);
-#endif
+
pango_font_description_free(pfd);
UpdateMemViewDlg();
diff --git a/gui/MemcardDlg.c b/gui/MemcardDlg.c
index b7a2b533..90725d9d 100755
--- a/gui/MemcardDlg.c
+++ b/gui/MemcardDlg.c
@@ -28,10 +28,6 @@
#include "Linux.h"
#include "../libpcsxcore/sio.h"
-#if GTK_CHECK_VERSION(2, 20, 0) && !GTK_CHECK_VERSION(3, 0, 0)
-#include "gdk-compat.h"
-#endif
-
#define MAX_MEMCARD_BLOCKS 15
static gboolean quit;
@@ -86,79 +82,26 @@ static void AddColumns(GtkTreeView *treeview) {
gtk_tree_view_append_column(treeview, column);
}
-#if GTK_CHECK_VERSION(2, 20, 0)
-static GdkPixbuf *SetIcon(GtkWidget *dialog, short *icon, int scale) {
- GdkPixbuf *pixbuf;
- cairo_surface_t *s;
- cairo_t *cr;
- int x, y, c, i, r, g, b;
- int size = 16 * scale;
- s = cairo_image_surface_create(CAIRO_FORMAT_RGB24, size, size);
- cr = cairo_create(s);
- cairo_scale(cr, scale, scale);
- for (i=0; i< 256; i++) {
- x = (i % 16);
- y = (i / 16);
- c = icon[i];
- r = (c & 0x001f) << 3;
- g = ((c & 0x03e0) >> 5) << 3;
- b = ((c & 0x7c00) >> 10) << 3;
- cairo_rectangle(cr, x, y, 1, 1);
- cairo_set_source_rgb(cr, r/255.0, g/255.0, b/255.0);
- cairo_fill(cr);
- }
- cairo_destroy(cr);
-#if GTK_CHECK_VERSION(3, 0, 0)
- pixbuf = gdk_pixbuf_get_from_surface(s, 0, 0, size, size);
-#else
- pixbuf = compat_gdk_pixbuf_get_from_surface(s, 0, 0, size, size);
-#endif
- cairo_surface_destroy(s);
- return pixbuf;
-}
-
-#else
static GdkPixbuf *SetIcon(GtkWidget *dialog, short *icon, int i) {
- GdkPixmap *pixmap;
- GdkImage *image;
- GdkVisual *visual;
- GdkPixbuf *pixbuf;
- GdkGC *gc;
- int x, y, c;
-
- visual = gdk_window_get_visual(gtk_widget_get_window(dialog));
-
- if (visual->depth == 8) return NULL;
-
- image = gdk_image_new(GDK_IMAGE_NORMAL, visual, 32, 32);
-
+ GdkPixbuf *result;
+ guchar *dest_pixels;
+ u32 x, y, c;
+
+ result = gdk_pixbuf_new(GDK_COLORSPACE_RGB, 0, 8, 32, 32);
+ dest_pixels = gdk_pixbuf_get_pixels(result);
+
for (y = 0; y < 32; y++) {
for (x = 0; x < 32; x++) {
- c = icon[(y>>1) * 16 + (x>>1)];
- c = ((c & 0x001f) << 10) | ((c & 0x7c00) >> 10) | (c & 0x03e0);
- if (visual->depth == 16)
- c = (c & 0x001f) | ((c & 0x7c00) << 1) | ((c & 0x03e0) << 1);
- else if (visual->depth == 24 || visual->depth == 32)
- c = ((c & 0x001f) << 3) | ((c & 0x03e0) << 6) | ((c & 0x7c00) << 9);
-
- gdk_image_put_pixel(image, x, y, c);
+ c = icon[(y >> 1) * 16 + (x >> 1)];
+ dest_pixels[0] = (c & 0x001f) << 3;
+ dest_pixels[1] = (c & 0x03e0) >> 2;
+ dest_pixels[2] = (c & 0x7c00) >> 7;
+ dest_pixels += 3;
}
}
-
- pixmap = gdk_pixmap_new(gtk_widget_get_window(dialog), 32, 32, visual->depth);
-
- gc = gdk_gc_new(pixmap);
- gdk_draw_image(pixmap, gc, image, 0, 0, 0, 0, 32, 32);
- gdk_gc_destroy(gc);
- gdk_image_destroy(image);
-
- pixbuf = gdk_pixbuf_get_from_drawable(NULL, GDK_PIXMAP (pixmap), NULL,
- 0, 0, 0, 0, -1, -1);
- g_object_unref(pixmap);
- return pixbuf;
+ return result;
}
-#endif
static gchar* MCDStatusToChar(McdBlock *Info) {
gchar *state;
@@ -191,10 +134,10 @@ static void LoadListItems(int mcd, GtkWidget *widget) {
store = gtk_list_store_new(NUM_CL, GDK_TYPE_PIXBUF, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
- dialog = GTK_WIDGET(gtk_builder_get_object(builder, "McdsDlg"));
+ dialog = gtk_builder_get_object(builder, "McdsDlg");
- if (mcd == 1) List = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList1"));
- else List = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList2"));
+ if (mcd == 1) List = gtk_builder_get_object(builder, "GtkCList_McdList1");
+ else List = gtk_builder_get_object(builder, "GtkCList_McdList2");
for (i = 0; i < MAX_MEMCARD_BLOCKS; i++) {
McdBlock *Info;
@@ -236,14 +179,14 @@ static void UpdateFilenameButtons(GtkWidget *widget) {
const char *filename;
gchar *p;
- dialog = GTK_WIDGET(gtk_builder_get_object(builder, "McdsDlg"));
+ dialog = gtk_builder_get_object(builder, "McdsDlg");
for (i = 0; i < 2; i++) {
if (i == 0) {
- widget = GTK_WIDGET(gtk_builder_get_object(builder, "Mcd1Label"));
+ widget = gtk_builder_get_object(builder, "Mcd1Label");
filename = Config.Mcd1;
} else {
- widget = GTK_WIDGET(gtk_builder_get_object(builder, "Mcd2Label"));
+ widget = gtk_builder_get_object(builder, "Mcd2Label");
filename = Config.Mcd2;
}
@@ -279,10 +222,10 @@ static void UpdateListItems(int mcd, GtkWidget *widget) {
int i;
gchar *title;
- dialog = GTK_WIDGET(gtk_builder_get_object(builder, "McdsDlg"));
+ dialog = gtk_builder_get_object(builder, "McdsDlg");
- if (mcd == 1) List = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList1"));
- else List = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList2"));
+ if (mcd == 1) List = gtk_builder_get_object(builder, "GtkCList_McdList1");
+ else List = gtk_builder_get_object(builder, "GtkCList_McdList2");
store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(List)));
gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter);
@@ -322,7 +265,7 @@ static void UpdateListItems(int mcd, GtkWidget *widget) {
gtk_widget_show(List);
- OnTreeSelectionChanged(gtk_tree_view_get_selection(GTK_TREE_VIEW(List)), GINT_TO_POINTER(mcd));
+ OnTreeSelectionChanged(gtk_tree_view_get_selection(GTK_TREE_VIEW(List)), (gpointer)mcd);
}
static void UpdateMcdDlg(GtkWidget *widget) {
@@ -346,7 +289,7 @@ static void OnMcd_Close(GtkDialog *dialog, gint arg1, gpointer user_data) {
}
static void OnMcd_FileChange(GtkWidget *widget, gpointer user_data) {
- gint memcard = GPOINTER_TO_INT(user_data);
+ gint memcard = (int)user_data;
gchar *filename;
GtkWidget *chooser;
@@ -387,7 +330,7 @@ static void OnMcd_Format(GtkWidget *widget, gpointer user_data) {
gint result;
char *str;
- gint memcard = GPOINTER_TO_INT(user_data);
+ gint memcard = (int)user_data;
message_dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL,
GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE,
@@ -416,7 +359,6 @@ static void OnMcd_Format(GtkWidget *widget, gpointer user_data) {
static void OnMcd_New(GtkWidget *widget, gpointer user_data) {
GtkWidget *chooser;
gchar *path;
- gint memcard = GPOINTER_TO_INT(user_data);
// Ask for name of new memory card
chooser = gtk_file_chooser_dialog_new(_("Create a new Memory Card"),
@@ -439,10 +381,10 @@ static void OnMcd_New(GtkWidget *widget, gpointer user_data) {
CreateMcd(name);
- if (memcard == 1) strncpy(Config.Mcd1, name, MAXPATHLEN);
+ if ((int)user_data == 1) strncpy(Config.Mcd1, name, MAXPATHLEN);
else strncpy(Config.Mcd2, name, MAXPATHLEN);
- LoadMcd(memcard, name);
+ LoadMcd((int)user_data, name);
LoadMcdDlg(widget);
g_free(name);
@@ -523,7 +465,7 @@ gint GetMcdBlockCount(gint mcd, gint startblock) {
}
static void OnMcd_CopyTo(GtkWidget *widget, gpointer user_data) {
- gint dstmcd = GPOINTER_TO_INT(user_data);
+ gint dstmcd = (gint)user_data;
gint srcmcd;
GtkTreeIter iter;
@@ -575,7 +517,7 @@ static void OnMcd_CopyTo(GtkWidget *widget, gpointer user_data) {
for (j=0; j < count; j++) {
CopyMemcardData(source, destination, (srci+j), (first_free_slot+j), str);
- //printf("count = %i, firstfree=%i, i=%i\n", count, first_free_slot, j);
+ printf("count = %i, firstfree=%i, i=%i\n", count, first_free_slot, j);
}
UpdateMcdDlg(widget);
@@ -593,16 +535,16 @@ static void OnMemcardDelete(GtkWidget *widget, gpointer user_data) {
GtkWidget *tree;
GtkTreeSelection *sel;
- gint memcard = GPOINTER_TO_INT(user_data);
+ gint memcard = (int)user_data;
if (memcard == 1) {
- tree = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList1"));
+ tree = gtk_builder_get_object(builder, "GtkCList_McdList1");
sel = gtk_tree_view_get_selection(GTK_TREE_VIEW (tree));
selected = gtk_tree_selection_get_selected (sel, &model, &iter);
data = Mcd1Data;
filename = Config.Mcd1;
} else {
- tree = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList2"));
+ tree = gtk_builder_get_object(builder, "GtkCList_McdList2");
sel = gtk_tree_view_get_selection(GTK_TREE_VIEW (tree));
selected = gtk_tree_selection_get_selected(sel, &model, &iter);
data = Mcd2Data;
@@ -643,7 +585,7 @@ static void OnTreeSelectionChanged(GtkTreeSelection *selection, gpointer user_da
int i;
McdBlock b;
- gint memcard = GPOINTER_TO_INT(user_data);
+ gint memcard = (int)user_data;
selected = gtk_tree_selection_get_selected(selection, &model, &iter);
@@ -658,38 +600,38 @@ static void OnTreeSelectionChanged(GtkTreeSelection *selection, gpointer user_da
GetMcdBlockInfo(1, i + 1, &b);
if ((b.Flags >= 0xA1 && b.Flags <= 0xA3) || ((b.Flags & 0xF0) == 0x50)) {
- gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete1")), TRUE);
+ gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_Delete1"), TRUE);
} else {
- gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete1")), FALSE);
+ gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_Delete1"), FALSE);
}
if ((b.Flags & 0xF3) == 0x51) {
- gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo2")), TRUE);
+ gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_CopyTo2"), TRUE);
} else {
- gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo2")), FALSE);
+ gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_CopyTo2"), FALSE);
}
} else {
GetMcdBlockInfo(2, i + 1, &b);
if ((b.Flags >= 0xA1 && b.Flags <= 0xA3) || ((b.Flags & 0xF0) == 0x50)) {
- gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete2")), TRUE);
+ gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_Delete2"), TRUE);
} else {
- gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete2")), FALSE);
+ gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_Delete2"), FALSE);
}
if ((b.Flags & 0xF3) == 0x51) {
- gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo1")), TRUE);
+ gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_CopyTo1"), TRUE);
} else {
- gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo1")), FALSE);
+ gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_CopyTo1"), FALSE);
}
}
} else {
if (memcard == 1) {
- gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo2")), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete1")), FALSE);
+ gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_CopyTo2"), FALSE);
+ gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_Delete1"), FALSE);
} else {
- gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo1")), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete2")), FALSE);
+ gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_CopyTo1"), FALSE);
+ gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_Delete2"), FALSE);
}
}
}
@@ -716,7 +658,7 @@ void OnConf_Mcds() {
return;
}
- dialog = GTK_WIDGET(gtk_builder_get_object(builder, "McdsDlg"));
+ dialog = gtk_builder_get_object(builder, "McdsDlg");
gtk_window_set_title(GTK_WINDOW(dialog), _("Memory Card Manager"));
gtk_widget_show (dialog);
@@ -734,22 +676,22 @@ void OnConf_Mcds() {
g_free(str);
}
- GtkCList_McdList1 = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList1"));
+ GtkCList_McdList1 = gtk_builder_get_object(builder, "GtkCList_McdList1");
AddColumns(GTK_TREE_VIEW(GtkCList_McdList1));
- GtkCList_McdList2 = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList2"));
+ GtkCList_McdList2 = gtk_builder_get_object(builder, "GtkCList_McdList2");
AddColumns(GTK_TREE_VIEW(GtkCList_McdList2));
treesel1 = gtk_tree_view_get_selection(GTK_TREE_VIEW (GtkCList_McdList1));
gtk_tree_selection_set_mode(treesel1, GTK_SELECTION_SINGLE);
g_signal_connect_data(G_OBJECT(treesel1), "changed",
G_CALLBACK(OnTreeSelectionChanged),
- GINT_TO_POINTER(1), NULL, G_CONNECT_AFTER);
+ (gpointer)1, NULL, G_CONNECT_AFTER);
treesel2 = gtk_tree_view_get_selection(GTK_TREE_VIEW (GtkCList_McdList2));
gtk_tree_selection_set_mode(treesel2, GTK_SELECTION_SINGLE);
g_signal_connect_data(G_OBJECT(treesel2), "changed",
G_CALLBACK(OnTreeSelectionChanged),
- GINT_TO_POINTER(2), NULL, G_CONNECT_AFTER);
+ (gpointer)2, NULL, G_CONNECT_AFTER);
LoadMcdDlg(dialog);
@@ -757,48 +699,48 @@ void OnConf_Mcds() {
g_signal_connect_data(G_OBJECT(dialog), "response",
G_CALLBACK(OnMcd_Close), builder, (GClosureNotify)g_object_unref, G_CONNECT_AFTER);
- widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Format1"));
+ widget = gtk_builder_get_object(builder, "GtkButton_Format1");
g_signal_connect_data(G_OBJECT(widget), "clicked",
- G_CALLBACK(OnMcd_Format), GINT_TO_POINTER(1), NULL, G_CONNECT_AFTER);
+ G_CALLBACK(OnMcd_Format), (gpointer)1, NULL, G_CONNECT_AFTER);
- widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Format2"));
+ widget = gtk_builder_get_object(builder, "GtkButton_Format2");
g_signal_connect_data(G_OBJECT(widget), "clicked",
- G_CALLBACK(OnMcd_Format), GINT_TO_POINTER(2), NULL, G_CONNECT_AFTER);
+ G_CALLBACK(OnMcd_Format), (gpointer)2, NULL, G_CONNECT_AFTER);
- widget = GTK_WIDGET(gtk_builder_get_object(builder, "Mcd1Button"));
+ widget = gtk_builder_get_object(builder, "Mcd1Button");
g_signal_connect_data(G_OBJECT(widget), "clicked",
- G_CALLBACK(OnMcd_FileChange), GINT_TO_POINTER(1), NULL, G_CONNECT_AFTER);
+ G_CALLBACK(OnMcd_FileChange), (gpointer)1, NULL, G_CONNECT_AFTER);
- widget = GTK_WIDGET(gtk_builder_get_object(builder, "Mcd2Button"));
+ widget = gtk_builder_get_object(builder, "Mcd2Button");
g_signal_connect_data(G_OBJECT(widget), "clicked",
- G_CALLBACK(OnMcd_FileChange), GINT_TO_POINTER(2), NULL, G_CONNECT_AFTER);
+ G_CALLBACK(OnMcd_FileChange), (gpointer)2, NULL, G_CONNECT_AFTER);
- widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_New1"));
+ widget = gtk_builder_get_object(builder, "GtkButton_New1");
g_signal_connect_data(G_OBJECT(widget), "clicked",
- G_CALLBACK(OnMcd_New), GINT_TO_POINTER(1), NULL, G_CONNECT_AFTER);
+ G_CALLBACK(OnMcd_New), (gpointer)1, NULL, G_CONNECT_AFTER);
- widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_New2"));
+ widget = gtk_builder_get_object(builder, "GtkButton_New2");
g_signal_connect_data(G_OBJECT(widget), "clicked",
- G_CALLBACK(OnMcd_New), GINT_TO_POINTER(2), NULL, G_CONNECT_AFTER);
+ G_CALLBACK(OnMcd_New), (gpointer)2, NULL, G_CONNECT_AFTER);
- widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo1"));
+ widget = gtk_builder_get_object(builder, "GtkButton_CopyTo1");
g_signal_connect_data(G_OBJECT(widget), "clicked",
- G_CALLBACK(OnMcd_CopyTo), GINT_TO_POINTER(1), NULL, G_CONNECT_AFTER);
+ G_CALLBACK(OnMcd_CopyTo), (gpointer)1, NULL, G_CONNECT_AFTER);
gtk_widget_set_sensitive(GTK_WIDGET(widget), FALSE);
- widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo2"));
+ widget = gtk_builder_get_object(builder, "GtkButton_CopyTo2");
g_signal_connect_data(G_OBJECT(widget), "clicked",
- G_CALLBACK(OnMcd_CopyTo), GINT_TO_POINTER(2), NULL, G_CONNECT_AFTER);
+ G_CALLBACK(OnMcd_CopyTo), (gpointer)2, NULL, G_CONNECT_AFTER);
gtk_widget_set_sensitive(GTK_WIDGET(widget), FALSE);
- widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete1"));
+ widget = gtk_builder_get_object(builder, "GtkButton_Delete1");
g_signal_connect_data (G_OBJECT (widget), "clicked",
- G_CALLBACK(OnMemcardDelete), GINT_TO_POINTER(1), NULL, G_CONNECT_AFTER);
+ G_CALLBACK(OnMemcardDelete), (gpointer)1, NULL, G_CONNECT_AFTER);
gtk_widget_set_sensitive(GTK_WIDGET(widget), FALSE);
- widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete2"));
+ widget = gtk_builder_get_object(builder, "GtkButton_Delete2");
g_signal_connect_data (G_OBJECT (widget), "clicked",
- G_CALLBACK(OnMemcardDelete), GINT_TO_POINTER(2), NULL, G_CONNECT_AFTER);
+ G_CALLBACK(OnMemcardDelete), (gpointer)2, NULL, G_CONNECT_AFTER);
gtk_widget_set_sensitive(GTK_WIDGET(widget), FALSE);
quit = FALSE;
diff --git a/gui/gdk-compat.h b/gui/gdk-compat.h
deleted file mode 100755
index d19b311c..00000000
--- a/gui/gdk-compat.h
+++ /dev/null
@@ -1,155 +0,0 @@
-static cairo_format_t
-compat_gdk_cairo_format_for_content (cairo_content_t content)
-{
- switch (content)
- {
- case CAIRO_CONTENT_COLOR:
- return CAIRO_FORMAT_RGB24;
- case CAIRO_CONTENT_ALPHA:
- return CAIRO_FORMAT_A8;
- case CAIRO_CONTENT_COLOR_ALPHA:
- default:
- return CAIRO_FORMAT_ARGB32;
- }
-}
-
-static cairo_surface_t *
-compat_gdk_cairo_surface_coerce_to_image (cairo_surface_t *surface,
- cairo_content_t content,
- int src_x,
- int src_y,
- int width,
- int height)
-{
- cairo_surface_t *copy;
- cairo_t *cr;
-
- copy = cairo_image_surface_create (compat_gdk_cairo_format_for_content (content),
- width,
- height);
-
- cr = cairo_create (copy);
- cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
- cairo_set_source_surface (cr, surface, -src_x, -src_y);
- cairo_paint (cr);
- cairo_destroy (cr);
-
- return copy;
-}
-
-static void
-compat_convert_alpha (guchar *dest_data,
- int dest_stride,
- guchar *src_data,
- int src_stride,
- int src_x,
- int src_y,
- int width,
- int height)
-{
- int x, y;
-
- src_data += src_stride * src_y + src_x * 4;
-
- for (y = 0; y < height; y++) {
- guint32 *src = (guint32 *) src_data;
-
- for (x = 0; x < width; x++) {
- guint alpha = src[x] >> 24;
-
- if (alpha == 0)
- {
- dest_data[x * 4 + 0] = 0;
- dest_data[x * 4 + 1] = 0;
- dest_data[x * 4 + 2] = 0;
- }
- else
- {
- dest_data[x * 4 + 0] = (((src[x] & 0xff0000) >> 16) * 255 + alpha / 2) / alpha;
- dest_data[x * 4 + 1] = (((src[x] & 0x00ff00) >> 8) * 255 + alpha / 2) / alpha;
- dest_data[x * 4 + 2] = (((src[x] & 0x0000ff) >> 0) * 255 + alpha / 2) / alpha;
- }
- dest_data[x * 4 + 3] = alpha;
- }
-
- src_data += src_stride;
- dest_data += dest_stride;
- }
-}
-
-static void
-compat_convert_no_alpha (guchar *dest_data,
- int dest_stride,
- guchar *src_data,
- int src_stride,
- int src_x,
- int src_y,
- int width,
- int height)
-{
- int x, y;
-
- src_data += src_stride * src_y + src_x * 4;
-
- for (y = 0; y < height; y++) {
- guint32 *src = (guint32 *) src_data;
-
- for (x = 0; x < width; x++) {
- dest_data[x * 3 + 0] = src[x] >> 16;
- dest_data[x * 3 + 1] = src[x] >> 8;
- dest_data[x * 3 + 2] = src[x];
- }
-
- src_data += src_stride;
- dest_data += dest_stride;
- }
-}
-
-GdkPixbuf *
-compat_gdk_pixbuf_get_from_surface (cairo_surface_t *surface,
- gint src_x,
- gint src_y,
- gint width,
- gint height)
-{
- cairo_content_t content;
- GdkPixbuf *dest;
-
- /* General sanity checks */
- g_return_val_if_fail (surface != NULL, NULL);
- g_return_val_if_fail (width > 0 && height > 0, NULL);
-
- content = cairo_surface_get_content (surface) | CAIRO_CONTENT_COLOR;
- dest = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
- !!(content & CAIRO_CONTENT_ALPHA),
- 8,
- width, height);
-
- surface = compat_gdk_cairo_surface_coerce_to_image (surface, content,
- src_x, src_y,
- width, height);
- cairo_surface_flush (surface);
- if (cairo_surface_status (surface) || dest == NULL)
- {
- cairo_surface_destroy (surface);
- return NULL;
- }
-
- if (gdk_pixbuf_get_has_alpha (dest))
- compat_convert_alpha (gdk_pixbuf_get_pixels (dest),
- gdk_pixbuf_get_rowstride (dest),
- cairo_image_surface_get_data (surface),
- cairo_image_surface_get_stride (surface),
- 0, 0,
- width, height);
- else
- compat_convert_no_alpha (gdk_pixbuf_get_pixels (dest),
- gdk_pixbuf_get_rowstride (dest),
- cairo_image_surface_get_data (surface),
- cairo_image_surface_get_stride (surface),
- 0, 0,
- width, height);
-
- cairo_surface_destroy (surface);
- return dest;
-}