diff options
Diffstat (limited to 'capplets/background/gnome-wp-utils.c')
-rw-r--r-- | capplets/background/gnome-wp-utils.c | 198 |
1 files changed, 0 insertions, 198 deletions
diff --git a/capplets/background/gnome-wp-utils.c b/capplets/background/gnome-wp-utils.c deleted file mode 100644 index 08e765a18..000000000 --- a/capplets/background/gnome-wp-utils.c +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Authors: Rodney Dawes <dobey@ximian.com> - * - * Copyright 2003-2005 Novell, Inc. (www.novell.com) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of version 2 of the GNU General Public License - * as published by the Free Software Foundation - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA. - * - */ - -#include "gnome-wp-utils.h" -#include <string.h> - -GdkPixbuf * gnome_wp_pixbuf_new_gradient (GtkOrientation orientation, - GdkColor * c1, - GdkColor * c2, - gint width, gint height) { - GdkPixbuf * pixbuf; - gint i, j; - gint dr, dg, db; - gint gs1; - gint vc = ((orientation == GTK_ORIENTATION_HORIZONTAL) || (c1 == c2)); - guchar * b, * row, * d; - int rowstride; - - pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, width, height); - d = gdk_pixbuf_get_pixels (pixbuf); - rowstride = gdk_pixbuf_get_rowstride (pixbuf); - - dr = c2->red - c1->red; - dg = c2->green - c1->green; - db = c2->blue - c1->blue; - - gs1 = (orientation == GTK_ORIENTATION_VERTICAL) ? height - 1 : width - 1; - - row = g_new (unsigned char, rowstride); - - if (vc) { - b = row; - for (j = 0; j < width; j++) { - *b++ = (c1->red + (j * dr) / gs1) >> 8; - *b++ = (c1->green + (j * dg) / gs1) >> 8; - *b++ = (c1->blue + (j * db) / gs1) >> 8; - } - } - - for (i = 0; i < height; i++) { - if (!vc) { - unsigned char cr, cg, cb; - cr = (c1->red + (i * dr) / gs1) >> 8; - cg = (c1->green + (i * dg) / gs1) >> 8; - cb = (c1->blue + (i * db) / gs1) >> 8; - b = row; - for (j = 0; j < width; j++) { - *b++ = cr; - *b++ = cg; - *b++ = cb; - } - } - memcpy (d, row, width * 3); - d += rowstride; - } - g_free (row); - - return pixbuf; -} - -GdkPixbuf * gnome_wp_pixbuf_new_solid (GdkColor * color, - gint width, gint height) { - GdkPixbuf * pixbuf; - gint j, rowstride; - guchar * b, * d, * row; - - pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, width, height); - d = gdk_pixbuf_get_pixels (pixbuf); - rowstride = gdk_pixbuf_get_rowstride (pixbuf); - - row = g_new (unsigned char, rowstride); - - b = row; - for (j = 0; j < width; j++) { - *b++ = color->red >> 8; - *b++ = color->green >> 8; - *b++ = color->blue >> 8; - } - - for (j = 0; j < height; j++) { - memcpy (d, row, width * 3); - d += rowstride; - } - - g_free (row); - - return pixbuf; -} - -GdkPixbuf * gnome_wp_pixbuf_tile (GdkPixbuf * src_pixbuf, - GdkPixbuf * dest_pixbuf, - gint scaled_width, - gint scaled_height) { - GdkPixbuf * tmpbuf; - gdouble cx, cy; - gint dwidth, dheight; - gint swidth, sheight; - guint alpha = 255; - - if (dest_pixbuf == NULL) { - return gdk_pixbuf_copy (src_pixbuf); - } - - tmpbuf = gdk_pixbuf_scale_simple (src_pixbuf, scaled_width, scaled_height, - GDK_INTERP_BILINEAR); - - swidth = gdk_pixbuf_get_width (tmpbuf); - sheight = gdk_pixbuf_get_height (tmpbuf); - - dwidth = gdk_pixbuf_get_width (dest_pixbuf); - dheight = gdk_pixbuf_get_height (dest_pixbuf); - - for (cy = 0; cy < dheight; cy += sheight) { - for (cx = 0; cx < dwidth; cx += swidth) { - gdk_pixbuf_composite (tmpbuf, dest_pixbuf, cx, cy, - MIN (swidth, dwidth - cx), - MIN (sheight, dheight - cy), - cx, cy, 1.0, 1.0, - GDK_INTERP_BILINEAR, alpha); - } - } - g_object_unref (tmpbuf); - - return gdk_pixbuf_copy (dest_pixbuf); -} - -GdkPixbuf * gnome_wp_pixbuf_center (GdkPixbuf * src_pixbuf, - GdkPixbuf * dest_pixbuf, - gint scaled_width, - gint scaled_height) { - GdkPixbuf * tmpbuf; - gint ox, oy, cx, cy; - gint dwidth, dheight; - gint swidth, sheight; - gint cwidth, cheight; - guint alpha = 255; - - if (dest_pixbuf == NULL) { - return gdk_pixbuf_copy (src_pixbuf); - } - - ox = cx = oy = cy = 0; - - tmpbuf = gdk_pixbuf_scale_simple (src_pixbuf, scaled_width, scaled_height, - GDK_INTERP_BILINEAR); - - swidth = gdk_pixbuf_get_width (tmpbuf); - sheight = gdk_pixbuf_get_height (tmpbuf); - - dwidth = gdk_pixbuf_get_width (dest_pixbuf); - dheight = gdk_pixbuf_get_height (dest_pixbuf); - - if (dwidth > swidth) { - ox = (dwidth - swidth) / 2; - cx = 0; - cwidth = swidth; - } else { - cx = (swidth - dwidth) / 2; - oy = 0; - cwidth = dwidth; - } - - if (dheight > sheight) { - oy = ((dheight - sheight) / 2); - cy = 0; - cheight = sheight; - } else { - cy = (sheight - dheight) / 2; - oy = 0; - cheight = dheight; - } - - gdk_pixbuf_composite (tmpbuf, dest_pixbuf, ox, oy, - cwidth, cheight, - ox - cx, oy - cy, 1.0, 1.0, - GDK_INTERP_BILINEAR, alpha); - - g_object_unref (tmpbuf); - return gdk_pixbuf_copy (dest_pixbuf); -} - |