[librsvg] Fix an ABI compat problem
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg] Fix an ABI compat problem
- Date: Thu, 12 Jan 2012 23:18:31 +0000 (UTC)
commit ebd0d1a02aeeb57c64d8e0daf5f37ff4a35f116b
Author: Christian Persch <chpe gnome org>
Date: Fri Jan 13 00:17:12 2012 +0100
Fix an ABI compat problem
rsvg_cairo_to_pixbuf was removed in commit 95c359713a51b02a5e6693fd741dff20d08be7ae,
but it was exported. So let's add it back, to maintain ABI compatibility.
https://bugzilla.gnome.org/show_bug.cgi?id=666868
rsvg-cairo-draw.c | 31 +++++++++++++++++++++++++++++++
1 files changed, 31 insertions(+), 0 deletions(-)
---
diff --git a/rsvg-cairo-draw.c b/rsvg-cairo-draw.c
index 0029a03..e435479 100644
--- a/rsvg-cairo-draw.c
+++ b/rsvg-cairo-draw.c
@@ -1113,3 +1113,34 @@ rsvg_cairo_surface_to_pixbuf (cairo_surface_t *surface)
return dest;
}
+
+/* This is unused but still exists for ABI compat. See bug #666868. */
+void rsvg_cairo_to_pixbuf (guint8 * pixels, int rowstride, int height);
+
+void
+rsvg_cairo_to_pixbuf (guint8 * pixels, int rowstride, int height)
+{
+ int row;
+ /* un-premultiply data */
+ for (row = 0; row < height; row++) {
+ guint8 *row_data = (pixels + (row * rowstride));
+ int i;
+
+ for (i = 0; i < rowstride; i += 4) {
+ guint8 *b = &row_data[i];
+ guint32 pixel;
+ guint8 alpha;
+
+ memcpy (&pixel, b, sizeof (guint32));
+ alpha = (pixel & 0xff000000) >> 24;
+ if (alpha == 0) {
+ b[0] = b[1] = b[2] = b[3] = 0;
+ } else {
+ b[0] = (((pixel & 0xff0000) >> 16) * 255 + alpha / 2) / alpha;
+ b[1] = (((pixel & 0x00ff00) >> 8) * 255 + alpha / 2) / alpha;
+ b[2] = (((pixel & 0x0000ff) >> 0) * 255 + alpha / 2) / alpha;
+ b[3] = alpha;
+ }
+ }
+ }
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]