Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff -ur /tmp/xfdesktop-4.4.2.old/po/en_GB.po /tmp/xfdesktop-4.4.2/po/en_GB.po
- --- /tmp/xfdesktop-4.4.2.old/po/en_GB.po 2007-11-17 20:31:46.000000000 +0100
- +++ /tmp/xfdesktop-4.4.2/po/en_GB.po 2007-12-17 16:05:02.000000000 +0100
- @@ -633,9 +633,22 @@
- msgid "Scaled"
- msgstr "Scaled"
- -#: ../settings/appearance-settings.c:796
- -msgid "A_djust Brightness:"
- -msgstr "A_djust Brightness:"
- +#: ../settings/appearance-settings.c:741
- +msgid "Maxpect"
- +msgstr "Maxpect"
- +
- +
- +#: ../settings/appearance-settings.c:845
- +msgid "Adjust _Brightness:"
- +msgstr "Adjust _Brightness:"
- +
- +#: ../settings/appearance-settings.c:873
- +msgid "Adjust _Saturation:"
- +msgstr "Adjust _Saturation:"
- +
- +#: ../settings/appearance-settings.c:901
- +msgid "Adjust _Hue:"
- +msgstr "Adjust _Hue:"
- #: ../settings/appearance-settings.c:854
- #, c-format
- diff -ur /tmp/xfdesktop-4.4.2.old/settings/appearance-settings.c /tmp/xfdesktop-4.4.2/settings/appearance-settings.c
- --- /tmp/xfdesktop-4.4.2.old/settings/appearance-settings.c 2007-11-17 20:31:41.000000000 +0100
- +++ /tmp/xfdesktop-4.4.2/settings/appearance-settings.c 2007-12-17 16:05:02.000000000 +0100
- @@ -235,6 +235,30 @@
- BACKDROP_CHANNEL, bp->brightness);
- }
- + /* saturation */
- + g_snprintf(setting_name, 128, "saturation_%d_%d", i, j);
- + setting = mcs_manager_setting_lookup(mcs_plugin->manager, setting_name,
- + BACKDROP_CHANNEL);
- + if(setting)
- + bp->saturation = setting->data.v_int;
- + else {
- + bp->saturation = 0;
- + mcs_manager_set_int(mcs_plugin->manager, setting_name,
- + BACKDROP_CHANNEL, bp->saturation);
- + }
- +
- + /* hue */
- + g_snprintf(setting_name, 128, "hue_%d_%d", i, j);
- + setting = mcs_manager_setting_lookup(mcs_plugin->manager, setting_name,
- + BACKDROP_CHANNEL);
- + if(setting)
- + bp->hue = setting->data.v_int;
- + else {
- + bp->hue = 0;
- + mcs_manager_set_int(mcs_plugin->manager, setting_name,
- + BACKDROP_CHANNEL, bp->hue);
- + }
- +
- /* color 1 */
- g_snprintf(setting_name, 128, "color1_%d_%d", i, j);
- setting = mcs_manager_setting_lookup(mcs_plugin->manager, setting_name,
- @@ -738,6 +762,7 @@
- gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("Tiled"));
- gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("Stretched"));
- gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("Scaled"));
- + gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("Maxpect"));
- gtk_combo_box_set_active(GTK_COMBO_BOX(combo), bp->style);
- gtk_label_set_mnemonic_widget(GTK_LABEL(label), combo);
- gtk_widget_show(combo);
- @@ -768,7 +793,7 @@
- update_brightness(GtkRange *w, BackdropPanel *bp)
- {
- gchar setting_name[128];
- -
- +
- bp->brightness = gtk_range_get_value(w);
- g_snprintf(setting_name, 128, "brightness_%d_%d", bp->xscreen, bp->monitor);
- mcs_manager_set_int(bp->bd->plugin->manager, setting_name, BACKDROP_CHANNEL,
- @@ -776,6 +801,30 @@
- mcs_manager_notify(bp->bd->plugin->manager, BACKDROP_CHANNEL);
- }
- +static void
- +update_saturation(GtkRange *w, BackdropPanel *bp)
- +{
- + gchar setting_name[128];
- +
- + bp->saturation = gtk_range_get_value(w);
- + g_snprintf(setting_name, 128, "saturation_%d_%d", bp->xscreen, bp->monitor);
- + mcs_manager_set_int(bp->bd->plugin->manager, setting_name, BACKDROP_CHANNEL,
- + bp->saturation);
- + mcs_manager_notify(bp->bd->plugin->manager, BACKDROP_CHANNEL);
- +}
- +
- +static void
- +update_hue(GtkRange *w, BackdropPanel *bp)
- +{
- + gchar setting_name[128];
- +
- + bp->hue = gtk_range_get_value(w);
- + g_snprintf(setting_name, 128, "hue_%d_%d", bp->xscreen, bp->monitor);
- + mcs_manager_set_int(bp->bd->plugin->manager, setting_name, BACKDROP_CHANNEL,
- + bp->hue);
- + mcs_manager_notify(bp->bd->plugin->manager, BACKDROP_CHANNEL);
- +}
- +
- /* this is a workaround for a gtk bug. it seems that if you move the slider
- * around a bit, and try to go back to zero, you often get "-0" displayed */
- static gchar *
- @@ -793,7 +842,7 @@
- gtk_widget_show(hbox);
- gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- - label = gtk_label_new_with_mnemonic(_("A_djust Brightness:"));
- + label = gtk_label_new_with_mnemonic(_("Adjust _Brightness:"));
- gtk_widget_show(label);
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 4);
- @@ -812,6 +861,62 @@
- G_CALLBACK(hscale_format), NULL);
- }
- +static void
- +add_saturation_slider(GtkWidget *vbox, BackdropPanel *bp)
- +{
- + GtkWidget *label, *hbox, *hscale;
- +
- + hbox = gtk_hbox_new(FALSE, BORDER);
- + gtk_widget_show(hbox);
- + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- +
- + label = gtk_label_new_with_mnemonic(_("Adjust _Saturation:"));
- + gtk_widget_show(label);
- + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 4);
- +
- + hscale = gtk_hscale_new_with_range(-128, 127, 1);
- + gtk_label_set_mnemonic_widget(GTK_LABEL(label), hscale);
- + gtk_scale_set_draw_value(GTK_SCALE(hscale), TRUE);
- + gtk_scale_set_value_pos(GTK_SCALE(hscale), GTK_POS_RIGHT);
- + gtk_range_set_increments(GTK_RANGE(hscale), 1, 5);
- + gtk_range_set_value(GTK_RANGE(hscale), bp->saturation);
- + gtk_range_set_update_policy(GTK_RANGE(hscale), GTK_UPDATE_DISCONTINUOUS);
- + gtk_widget_show(hscale);
- + gtk_box_pack_start(GTK_BOX(hbox), hscale, TRUE, TRUE, 4);
- + g_signal_connect(G_OBJECT(hscale), "value-changed",
- + G_CALLBACK(update_saturation), bp);
- + g_signal_connect(G_OBJECT(hscale), "format-value",
- + G_CALLBACK(hscale_format), NULL);
- +}
- +
- +static void
- +add_hue_slider(GtkWidget *vbox, BackdropPanel *bp)
- +{
- + GtkWidget *label, *hbox, *hscale;
- +
- + hbox = gtk_hbox_new(FALSE, BORDER);
- + gtk_widget_show(hbox);
- + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- +
- + label = gtk_label_new_with_mnemonic(_("Adjust _Hue:"));
- + gtk_widget_show(label);
- + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 4);
- +
- + hscale = gtk_hscale_new_with_range(0, 359, 1);
- + gtk_label_set_mnemonic_widget(GTK_LABEL(label), hscale);
- + gtk_scale_set_draw_value(GTK_SCALE(hscale), TRUE);
- + gtk_scale_set_value_pos(GTK_SCALE(hscale), GTK_POS_RIGHT);
- + gtk_range_set_increments(GTK_RANGE(hscale), 1, 5);
- + gtk_range_set_value(GTK_RANGE(hscale), bp->hue);
- + gtk_range_set_update_policy(GTK_RANGE(hscale), GTK_UPDATE_DISCONTINUOUS);
- + gtk_widget_show(hscale);
- + gtk_box_pack_start(GTK_BOX(hbox), hscale, TRUE, TRUE, 4);
- + g_signal_connect(G_OBJECT(hscale), "value-changed",
- + G_CALLBACK(update_hue), bp);
- + g_signal_connect(G_OBJECT(hscale), "format-value",
- + G_CALLBACK(hscale_format), NULL);
- +}
- +
- #if 0
- void
- toggle_set_background(GtkToggleButton *tb, BackdropPanel *bp)
- @@ -1218,6 +1323,12 @@
- /* image brightness */
- add_brightness_slider(page, bp);
- +
- + /* image saturation */
- + add_saturation_slider(page, bp);
- +
- + /* image hue */
- + add_hue_slider(page, bp);
- add_spacer(GTK_BOX(page));
- diff -ur /tmp/xfdesktop-4.4.2.old/settings/settings-common.h /tmp/xfdesktop-4.4.2/settings/settings-common.h
- --- /tmp/xfdesktop-4.4.2.old/settings/settings-common.h 2007-11-17 20:31:41.000000000 +0100
- +++ /tmp/xfdesktop-4.4.2/settings/settings-common.h 2007-12-17 16:05:02.000000000 +0100
- @@ -61,6 +61,8 @@
- gchar *image_path;
- XfceBackdropImageStyle style;
- gint brightness;
- + gint saturation;
- + gint hue;
- /* the notebook page */
- GtkWidget *page;
- diff -ur /tmp/xfdesktop-4.4.2.old/src/xfce-backdrop.c /tmp/xfdesktop-4.4.2/src/xfce-backdrop.c
- --- /tmp/xfdesktop-4.4.2.old/src/xfce-backdrop.c 2007-11-17 20:31:41.000000000 +0100
- +++ /tmp/xfdesktop-4.4.2/src/xfce-backdrop.c 2007-12-17 16:45:36.000000000 +0100
- @@ -45,16 +45,18 @@
- {
- gint width, height;
- gint bpp;
- -
- +
- XfceBackdropColorStyle color_style;
- GdkColor color1;
- GdkColor color2;
- -
- +
- gboolean show_image;
- XfceBackdropImageStyle image_style;
- gchar *image_path;
- -
- +
- gint brightness;
- + gint saturation;
- + gint hue;
- };
- enum {
- @@ -74,24 +76,24 @@
- gboolean has_alpha = FALSE;
- gint i, len;
- GError *err = NULL;
- -
- +
- g_return_val_if_fail(src != NULL, NULL);
- if(amount == 0)
- return src;
- -
- +
- gdk_pixdata_from_pixbuf(&pdata, src, FALSE);
- has_alpha = (pdata.pixdata_type & GDK_PIXDATA_COLOR_TYPE_RGBA);
- if(pdata.length < 1)
- len = pdata.width * pdata.height * (has_alpha?4:3);
- else
- len = pdata.length - GDK_PIXDATA_HEADER_LENGTH;
- -
- +
- for(i = 0; i < len; i++) {
- gshort scaled;
- -
- +
- if(has_alpha && (i+1)%4)
- continue;
- -
- +
- scaled = pdata.pixel_data[i] + amount;
- if(scaled > 255)
- scaled = 255;
- @@ -99,7 +101,7 @@
- scaled = 0;
- pdata.pixel_data[i] = scaled;
- }
- -
- +
- newpix = gdk_pixbuf_from_pixdata(&pdata, TRUE, &err);
- if(!newpix) {
- g_warning("%s: Unable to modify image brightness: %s", PACKAGE,
- @@ -108,7 +110,136 @@
- return src;
- }
- g_object_unref(G_OBJECT(src));
- -
- +
- + return newpix;
- +}
- +
- +static GdkPixbuf *
- +adjust_saturation(GdkPixbuf *src, gint amount)
- +{
- + g_return_val_if_fail(src != NULL, NULL);
- + if(amount == 0)
- + return src;
- + GdkPixbuf *newpix = gdk_pixbuf_copy(src);
- + gdk_pixbuf_saturate_and_pixelate(src, newpix, ((gdouble)(amount+128))/127.5f, FALSE);
- + g_object_unref(G_OBJECT(src));
- + return newpix;
- +}
- +
- +static GdkPixbuf *
- +adjust_hue(GdkPixbuf *src, gint amount)
- +{
- + g_return_val_if_fail(src != NULL, NULL);
- + if(amount == 0)
- + return src;
- + GdkPixbuf *newpix;
- + GdkPixdata pdata;
- + gboolean has_alpha = FALSE;
- + gint i, len;
- + GError *err = NULL;
- +
- + g_return_val_if_fail(src != NULL, NULL);
- + if(amount == 0)
- + return src;
- +
- + gdk_pixdata_from_pixbuf(&pdata, src, FALSE);
- + has_alpha = (pdata.pixdata_type & GDK_PIXDATA_COLOR_TYPE_RGBA);
- + if(pdata.length < 1)
- + len = pdata.width * pdata.height * (has_alpha?4:3);
- + else
- + len = pdata.length - GDK_PIXDATA_HEADER_LENGTH;
- +
- + gint iInc=(has_alpha?4:3);
- + for(i = 0; i < len; i+=iInc) {
- + /* Get RGB pixel */
- + gint r,g,b;
- + r = pdata.pixel_data[i+0];
- + g = pdata.pixel_data[i+1];
- + b = pdata.pixel_data[i+2];
- +
- + /* Convert into HSV colorspace */
- + gint min, max;
- + min = MIN( r, MIN(g, b));
- + max = MAX( r, MAX(g, b));
- +
- + gdouble h,s,v;
- + if(min == max)
- + h = 0; else
- + if(max == r && g >= b )
- + h = 60.0f * ((gdouble)(g - b))/((gdouble)(max - min)) + 0.0f; else
- + if(max == r && g < b )
- + h = 60.0f * ((gdouble)(g - b))/((gdouble)(max - min)) + 360.0f; else
- + if(max == g)
- + h = 60.0f * ((gdouble)(b - r))/((gdouble)(max - min)) + 120.0f; else
- + if(max == b)
- + h = 60.0f * ((gdouble)(r - g))/((gdouble)(max - min)) + 240.0f;
- +
- + s = max == 0 ? 0.0f : 1.0f - (((gdouble)min)/((gdouble)max));
- + v = ((gdouble)max)/255.0f;
- +
- + /* Shift h by amount */
- + h += amount;
- + while(h>=360.0f) h -= 360.0f;
- +
- + /* convert HSV back to RGB */
- + gdouble f, p, q, t;
- + gint hi;
- + hi = ((int)(h/60.0f))%6;
- + f = (h/60.0f) - ((gdouble)hi);
- + p = v * (1.0f - s);
- + q = v * (1.0f - (f * s));
- + t = v * (1.0f - ((1.0f - f) * s));
- +
- + switch( hi ) {
- + case 0:
- + r = v * 255.0f;
- + g = t * 255.0f;
- + b = p * 255.0f;
- + break;
- + case 1:
- + r = q * 255.0f;
- + g = v * 255.0f;
- + b = p * 255.0f;
- + break;
- + case 2:
- + r = p * 255.0f;
- + g = v * 255.0f;
- + b = t * 255.0f;
- + break;
- + case 3:
- + r = p * 255.0f;
- + g = q * 255.0f;
- + b = v * 255.0f;
- + break;
- + case 4:
- + r = t * 255.0f;
- + g = p * 255.0f;
- + b = v * 255.0f;
- + break;
- + case 5:
- + r = v * 255.0f;
- + g = p * 255.0f;
- + b = q * 255.0f;
- + break;
- + default:
- + g_return_val_if_fail( (hi >= 0) && (hi < 6), NULL);
- + }
- +
- + /* update pixel data */
- + pdata.pixel_data[i + 0] = r;
- + pdata.pixel_data[i + 1] = g;
- + pdata.pixel_data[i + 2] = b;
- + }
- +
- + newpix = gdk_pixbuf_from_pixdata(&pdata, TRUE, &err);
- + if(!newpix) {
- + g_warning("%s: Unable to modify image brightness: %s", PACKAGE,
- + err->message);
- + g_error_free(err);
- + return src;
- + }
- + g_object_unref(G_OBJECT(src));
- +
- return newpix;
- }
- @@ -117,14 +248,14 @@
- {
- GdkPixbuf *pix;
- guint32 rgba;
- -
- +
- pix = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, width, height);
- -
- +
- rgba = (((color->red & 0xff00) << 8) | ((color->green & 0xff00))
- | ((color->blue & 0xff00) >> 8)) << 8;
- -
- +
- gdk_pixbuf_fill(pix, rgba);
- -
- +
- return pix;
- }
- @@ -137,12 +268,12 @@
- GdkPixdata pixdata;
- guint8 rgb[3];
- GError *err = NULL;
- -
- +
- g_return_val_if_fail(color1 != NULL && color2 != NULL, NULL);
- g_return_val_if_fail(width > 0 && height > 0, NULL);
- g_return_val_if_fail(style == XFCE_BACKDROP_COLOR_HORIZ_GRADIENT
- || style == XFCE_BACKDROP_COLOR_VERT_GRADIENT, NULL);
- -
- +
- pixdata.magic = GDK_PIXBUF_MAGIC_NUMBER;
- pixdata.length = GDK_PIXDATA_HEADER_LENGTH + (width * height * 3);
- pixdata.pixdata_type = GDK_PIXDATA_COLOR_TYPE_RGB
- @@ -159,7 +290,7 @@
- rgb[2] = (color1->blue + (i * (color2->blue - color1->blue) / width)) >> 8;
- memcpy(pixdata.pixel_data+(i*3), rgb, 3);
- }
- -
- +
- for(i = 1; i < height; i++) {
- memcpy(pixdata.pixel_data+(i*pixdata.rowstride),
- pixdata.pixel_data, pixdata.rowstride);
- @@ -173,16 +304,16 @@
- memcpy(pixdata.pixel_data+(i*pixdata.rowstride)+(j*3), rgb, 3);
- }
- }
- -
- +
- pix = gdk_pixbuf_from_pixdata(&pixdata, TRUE, &err);
- if(!pix) {
- g_warning("%s: Unable to create color gradient: %s\n", PACKAGE,
- err->message);
- g_error_free(err);
- }
- -
- +
- g_free(pixdata.pixel_data);
- -
- +
- return pix;
- }
- @@ -196,11 +327,11 @@
- xfce_backdrop_class_init(XfceBackdropClass *klass)
- {
- GObjectClass *gobject_class = (GObjectClass *)klass;
- -
- +
- g_type_class_add_private(klass, sizeof(XfceBackdropPriv));
- -
- +
- gobject_class->finalize = xfce_backdrop_finalize;
- -
- +
- backdrop_signals[BACKDROP_CHANGED] = g_signal_new("changed",
- G_OBJECT_CLASS_TYPE(gobject_class), G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET(XfceBackdropClass, changed), NULL, NULL,
- @@ -219,12 +350,12 @@
- xfce_backdrop_finalize(GObject *object)
- {
- XfceBackdrop *backdrop = XFCE_BACKDROP(object);
- -
- +
- g_return_if_fail(backdrop != NULL);
- -
- +
- if(backdrop->priv->image_path)
- g_free(backdrop->priv->image_path);
- -
- +
- G_OBJECT_CLASS(xfce_backdrop_parent_class)->finalize(object);
- }
- @@ -244,12 +375,12 @@
- xfce_backdrop_new(GdkVisual *visual)
- {
- XfceBackdrop *backdrop;
- -
- +
- g_return_val_if_fail(GDK_IS_VISUAL(visual), NULL);
- -
- +
- backdrop = g_object_new(XFCE_TYPE_BACKDROP, NULL);
- backdrop->priv->bpp = visual->depth;
- -
- +
- return backdrop;
- }
- @@ -266,15 +397,15 @@
- xfce_backdrop_new_with_size(GdkVisual *visual, gint width, gint height)
- {
- XfceBackdrop *backdrop;
- -
- +
- g_return_val_if_fail(GDK_IS_VISUAL(visual), NULL);
- -
- +
- backdrop = g_object_new(XFCE_TYPE_BACKDROP, NULL);
- -
- +
- backdrop->priv->bpp = visual->depth;
- backdrop->priv->width = width;
- backdrop->priv->height = height;
- -
- +
- return backdrop;
- }
- @@ -292,7 +423,7 @@
- xfce_backdrop_set_size(XfceBackdrop *backdrop, gint width, gint height)
- {
- g_return_if_fail(XFCE_IS_BACKDROP(backdrop));
- -
- +
- backdrop->priv->width = width;
- backdrop->priv->height = height;
- }
- @@ -309,7 +440,7 @@
- XfceBackdropColorStyle style)
- {
- g_return_if_fail(XFCE_IS_BACKDROP(backdrop));
- -
- +
- if(style != backdrop->priv->color_style) {
- backdrop->priv->color_style = style;
- g_signal_emit(G_OBJECT(backdrop), backdrop_signals[BACKDROP_CHANGED], 0);
- @@ -340,7 +471,7 @@
- const GdkColor *color)
- {
- g_return_if_fail(XFCE_IS_BACKDROP(backdrop) && color != NULL);
- -
- +
- if(color->red != backdrop->priv->color1.red
- || color->green != backdrop->priv->color1.green
- || color->blue != backdrop->priv->color1.blue)
- @@ -357,7 +488,7 @@
- GdkColor *color)
- {
- g_return_if_fail(XFCE_IS_BACKDROP(backdrop) && color);
- -
- +
- memcpy(color, &backdrop->priv->color1, sizeof(GdkColor));
- }
- @@ -376,7 +507,7 @@
- const GdkColor *color)
- {
- g_return_if_fail(XFCE_IS_BACKDROP(backdrop) && color != NULL);
- -
- +
- if(color->red != backdrop->priv->color2.red
- || color->green != backdrop->priv->color2.green
- || color->blue != backdrop->priv->color2.blue)
- @@ -394,7 +525,7 @@
- GdkColor *color)
- {
- g_return_if_fail(XFCE_IS_BACKDROP(backdrop) && color);
- -
- +
- memcpy(color, &backdrop->priv->color2, sizeof(GdkColor));
- }
- @@ -410,7 +541,7 @@
- xfce_backdrop_set_show_image(XfceBackdrop *backdrop, gboolean show_image)
- {
- g_return_if_fail(XFCE_IS_BACKDROP(backdrop));
- -
- +
- if(backdrop->priv->show_image != show_image) {
- backdrop->priv->show_image = show_image;
- g_signal_emit(G_OBJECT(backdrop), backdrop_signals[BACKDROP_CHANGED], 0);
- @@ -440,7 +571,7 @@
- XfceBackdropImageStyle style)
- {
- g_return_if_fail(XFCE_IS_BACKDROP(backdrop));
- -
- +
- if(style != backdrop->priv->image_style) {
- backdrop->priv->image_style = style;
- g_signal_emit(G_OBJECT(backdrop), backdrop_signals[BACKDROP_CHANGED], 0);
- @@ -468,12 +599,12 @@
- xfce_backdrop_set_image_filename(XfceBackdrop *backdrop, const gchar *filename)
- {
- g_return_if_fail(XFCE_IS_BACKDROP(backdrop));
- -
- +
- if(backdrop->priv->image_path)
- g_free(backdrop->priv->image_path);
- -
- +
- backdrop->priv->image_path = g_strdup(filename);
- -
- +
- g_signal_emit(G_OBJECT(backdrop), backdrop_signals[BACKDROP_CHANGED], 0);
- }
- @@ -497,7 +628,7 @@
- xfce_backdrop_set_brightness(XfceBackdrop *backdrop, gint brightness)
- {
- g_return_if_fail(XFCE_IS_BACKDROP(backdrop));
- -
- +
- if(brightness != backdrop->priv->brightness) {
- backdrop->priv->brightness = brightness;
- g_signal_emit(G_OBJECT(backdrop), backdrop_signals[BACKDROP_CHANGED], 0);
- @@ -512,6 +643,53 @@
- }
- /**
- + * xfce_backdrop_set_saturation:
- + * @backdrop: An #XfceBackdrop.
- + * @saturation: A saturation value.
- + *
- + * Modifies the saturation of the backdrop using a value between -128 and 127.
- + * A value of 0 indicates that the saturation should not be changed. This value
- + * is applied to the entire image, after compositing.
- + **/
- +void
- +xfce_backdrop_set_saturation(XfceBackdrop *backdrop, gint saturation)
- +{
- + g_return_if_fail(XFCE_IS_BACKDROP(backdrop));
- +
- + if(saturation != backdrop->priv->saturation) {
- + backdrop->priv->saturation = saturation;
- + g_signal_emit(G_OBJECT(backdrop), backdrop_signals[BACKDROP_CHANGED], 0);
- + }
- +}
- +
- +/**
- + * xfce_backdrop_set_hue:
- + * @backdrop: An #XfceBackdrop.
- + * @hue: A hue value.
- + *
- + * Shifts the hue of the backdrop using a value between 0 and 359 degrees.
- + * A value of 0 indicates that the hue should not be changed. This value
- + * is applied to the entire image, after compositing.
- + **/
- +void
- +xfce_backdrop_set_hue(XfceBackdrop *backdrop, gint hue)
- +{
- + g_return_if_fail(XFCE_IS_BACKDROP(backdrop));
- +
- + if(hue != backdrop->priv->hue) {
- + backdrop->priv->hue = hue;
- + g_signal_emit(G_OBJECT(backdrop), backdrop_signals[BACKDROP_CHANGED], 0);
- + }
- +}
- +
- +gint
- +xfce_backdrop_get_hue(XfceBackdrop *backdrop)
- +{
- + g_return_val_if_fail(XFCE_IS_BACKDROP(backdrop), 0);
- + return backdrop->priv->hue;
- +}
- +
- +/**
- * xfce_backdrop_get_pixbuf:
- * @backdrop: An #XfceBackdrop.
- *
- @@ -530,9 +708,9 @@
- gint dx, dy, xo, yo;
- gdouble xscale, yscale;
- GdkInterpType interp;
- -
- +
- g_return_val_if_fail(XFCE_IS_BACKDROP(backdrop), NULL);
- -
- +
- if(backdrop->priv->show_image && backdrop->priv->image_path) {
- image = gdk_pixbuf_new_from_file(backdrop->priv->image_path, NULL);
- if(image) {
- @@ -540,7 +718,7 @@
- ih = gdk_pixbuf_get_height(image);
- }
- }
- -
- +
- if(backdrop->priv->width == 0 || backdrop->priv->height == 0) {
- if(!image)
- return NULL;
- @@ -550,7 +728,7 @@
- w = backdrop->priv->width;
- h = backdrop->priv->height;
- }
- -
- +
- if(backdrop->priv->color_style == XFCE_BACKDROP_COLOR_SOLID)
- final_image = create_solid(&backdrop->priv->color1, w, h);
- else {
- @@ -559,27 +737,31 @@
- if(!final_image)
- final_image = create_solid(&backdrop->priv->color1, w, h);
- }
- -
- +
- if(!image) {
- if(backdrop->priv->brightness != 0)
- final_image = adjust_brightness(final_image, backdrop->priv->brightness);
- -
- + if(backdrop->priv->saturation != 0)
- + final_image = adjust_saturation(final_image, backdrop->priv->saturation);
- + if(backdrop->priv->hue != 0)
- + final_image = adjust_hue(final_image, backdrop->priv->hue);
- +
- return final_image;
- }
- -
- +
- if(backdrop->priv->image_style == XFCE_BACKDROP_IMAGE_AUTO) {
- if(ih <= h / 2 && iw <= w / 2)
- istyle = XFCE_BACKDROP_IMAGE_TILED;
- else
- - istyle = XFCE_BACKDROP_IMAGE_SCALED;
- + istyle = XFCE_BACKDROP_IMAGE_MAXPECT;
- } else
- istyle = backdrop->priv->image_style;
- -
- +
- /* if the image is the same as the screen size, there's no reason to do
- * any scaling at all */
- if(w == iw && h == ih)
- istyle = XFCE_BACKDROP_IMAGE_CENTERED;
- -
- +
- /* if we don't need to do any scaling, don't do any interpolation. this
- * fixes a problem where hyper/bilinear filtering causes blurriness in
- * some images. http://bugzilla.xfce.org/show_bug.cgi?id=2939 */
- @@ -595,7 +777,7 @@
- else
- interp = GDK_INTERP_BILINEAR;
- }
- -
- +
- switch(istyle) {
- case XFCE_BACKDROP_IMAGE_CENTERED:
- dx = MAX((w - iw) / 2, 0);
- @@ -606,36 +788,52 @@
- MIN(w, iw), MIN(h, ih), xo, yo, 1.0, 1.0,
- interp, 255);
- break;
- -
- +
- case XFCE_BACKDROP_IMAGE_TILED:
- tmp = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, w, h);
- for(i = 0; (i * iw) < w; i++) {
- for(j = 0; (j * ih) < h; j++) {
- gint newx = iw * i, newy = ih * j;
- gint neww = iw, newh = ih;
- -
- +
- if((newx + neww) > w)
- neww = w - newx;
- if((newy + newh) > h)
- newh = h - newy;
- -
- +
- gdk_pixbuf_copy_area(image, 0, 0,
- neww, newh, tmp, newx, newy);
- }
- }
- -
- +
- gdk_pixbuf_composite(tmp, final_image, 0, 0, w, h,
- 0, 0, 1.0, 1.0, interp, 255);
- g_object_unref(G_OBJECT(tmp));
- break;
- -
- +
- case XFCE_BACKDROP_IMAGE_STRETCHED:
- xscale = (gdouble)w / iw;
- yscale = (gdouble)h / ih;
- gdk_pixbuf_composite(image, final_image, 0, 0, w, h,
- 0, 0, xscale, yscale, interp, 255);
- break;
- -
- +
- + case XFCE_BACKDROP_IMAGE_MAXPECT:
- + xscale = (gdouble)w / iw;
- + yscale = (gdouble)h / ih;
- + if( xscale < yscale ) {
- + xscale = yscale;
- + dx = (w - (iw * yscale)) / 2;
- + dy = 0;
- + } else {
- + yscale = xscale;
- + dy = (h - (ih * xscale)) / 2;
- + dx = 0;
- + }
- + gdk_pixbuf_composite( image, final_image, 0, 0,
- + w, h, dx, dy,
- + xscale, yscale, interp, 255);
- + break;
- case XFCE_BACKDROP_IMAGE_SCALED:
- xscale = (gdouble)w / iw;
- yscale = (gdouble)h / ih;
- @@ -650,21 +848,24 @@
- }
- dx = xo;
- dy = yo;
- -
- +
- gdk_pixbuf_composite(image, final_image, dx, dy,
- iw * xscale, ih * yscale, xo, yo, xscale, yscale,
- interp, 255);
- break;
- -
- default:
- g_critical("Invalid image style: %d\n", (gint)istyle);
- }
- -
- +
- if(image)
- g_object_unref(G_OBJECT(image));
- -
- +
- if(backdrop->priv->brightness != 0)
- final_image = adjust_brightness(final_image, backdrop->priv->brightness);
- -
- + if(backdrop->priv->saturation != 0)
- + final_image = adjust_saturation(final_image, backdrop->priv->saturation);
- + if(backdrop->priv->hue != 0)
- + final_image = adjust_hue(final_image, backdrop->priv->hue);
- +
- return final_image;
- }
- Only in /tmp/xfdesktop-4.4.2/src: xfce-backdrop.c~
- diff -ur /tmp/xfdesktop-4.4.2.old/src/xfce-backdrop.h /tmp/xfdesktop-4.4.2/src/xfce-backdrop.h
- --- /tmp/xfdesktop-4.4.2.old/src/xfce-backdrop.h 2007-11-17 20:31:41.000000000 +0100
- +++ /tmp/xfdesktop-4.4.2/src/xfce-backdrop.h 2007-12-17 16:05:02.000000000 +0100
- @@ -48,7 +48,8 @@
- XFCE_BACKDROP_IMAGE_CENTERED,
- XFCE_BACKDROP_IMAGE_TILED,
- XFCE_BACKDROP_IMAGE_STRETCHED,
- - XFCE_BACKDROP_IMAGE_SCALED
- + XFCE_BACKDROP_IMAGE_SCALED,
- + XFCE_BACKDROP_IMAGE_MAXPECT
- } XfceBackdropImageStyle;
- typedef enum
- @@ -119,6 +120,10 @@
- gint brightness);
- gint xfce_backdrop_get_brightness (XfceBackdrop *backdrop);
- +void xfce_backdrop_set_saturation (XfceBackdrop *backdrop,
- + gint saturation);
- +gint xfce_backdrop_get_saturation (XfceBackdrop *backdrop);
- +
- GdkPixbuf *xfce_backdrop_get_pixbuf (XfceBackdrop *backdrop);
- G_END_DECLS
- diff -ur /tmp/xfdesktop-4.4.2.old/src/xfce-desktop-settings.c /tmp/xfdesktop-4.4.2/src/xfce-desktop-settings.c
- --- /tmp/xfdesktop-4.4.2.old/src/xfce-desktop-settings.c 2007-11-17 20:31:41.000000000 +0100
- +++ /tmp/xfdesktop-4.4.2/src/xfce-desktop-settings.c 2007-12-17 16:05:02.000000000 +0100
- @@ -364,6 +364,24 @@
- setting = NULL;
- } else
- xfce_backdrop_set_brightness(backdrop, 0);
- + g_snprintf(setting_name, 64, "saturation_%d_%d", screen, i);
- + if(MCS_SUCCESS == mcs_client_get_setting(mcs_client, setting_name,
- + BACKDROP_CHANNEL, &setting))
- + {
- + xfce_backdrop_set_saturation(backdrop, setting->data.v_int);
- + mcs_setting_free(setting);
- + setting = NULL;
- + } else
- + xfce_backdrop_set_saturation(backdrop, 0);
- + g_snprintf(setting_name, 64, "hue_%d_%d", screen, i);
- + if(MCS_SUCCESS == mcs_client_get_setting(mcs_client, setting_name,
- + BACKDROP_CHANNEL, &setting))
- + {
- + xfce_backdrop_set_hue(backdrop, setting->data.v_int);
- + mcs_setting_free(setting);
- + setting = NULL;
- + } else
- + xfce_backdrop_set_hue(backdrop, 0);
- }
- xfce_desktop_thaw_updates(desktop);
- @@ -481,6 +499,12 @@
- } else if(strstr(setting->name, "brightness") == setting->name) {
- xfce_backdrop_set_brightness(backdrop, setting->data.v_int);
- handled = TRUE;
- + } else if(strstr(setting->name, "saturation") == setting->name) {
- + xfce_backdrop_set_saturation(backdrop, setting->data.v_int);
- + handled = TRUE;
- + } else if(strstr(setting->name, "hue") == setting->name) {
- + xfce_backdrop_set_hue(backdrop, setting->data.v_int);
- + handled = TRUE;
- }
- break;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement