Change the meaning of brightness to mean opacity (tile_composite):
2000-12-18 Bradford Hovinen <hovinen@helixcode.com> * capplets/new-background-properties/applier.c (renderer_render_wallpaper): Change the meaning of brightness to mean opacity (tile_composite): Implement (render_gradient_p): Return TRUE if the opacity should be adjusted * capplets/new-background-properties/prefs-widget.c: Change instances of brightness to refer to opacity * capplets/new-background-properties/preferences.c: Ditto
This commit is contained in:
parent
73ae1407b3
commit
749b0a33a3
7 changed files with 136 additions and 77 deletions
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
|||
2000-12-18 Bradford Hovinen <hovinen@helixcode.com>
|
||||
|
||||
* capplets/new-background-properties/applier.c
|
||||
(renderer_render_wallpaper): Change the meaning of brightness to
|
||||
mean opacity
|
||||
(tile_composite): Implement
|
||||
(render_gradient_p): Return TRUE if the opacity should be adjusted
|
||||
|
||||
* capplets/new-background-properties/prefs-widget.c: Change
|
||||
instances of brightness to refer to opacity
|
||||
|
||||
* capplets/new-background-properties/preferences.c: Ditto
|
||||
|
||||
2000-12-17 Bradford Hovinen <hovinen@helixcode.com>
|
||||
|
||||
* capplets/new-background-properties/applier.c
|
||||
|
|
|
@ -144,6 +144,12 @@ static void render_tiled_image (Pixmap pixmap, GC xgc,
|
|||
GdkPixbuf *pixbuf,
|
||||
gint x, gint y,
|
||||
gint dwidth, gint dheight);
|
||||
static void tile_composite (GdkPixbuf *dest, GdkPixbuf *src,
|
||||
gdouble sx, gdouble sy,
|
||||
gdouble swidth, gdouble sheight,
|
||||
gdouble dwidth, gdouble dheight,
|
||||
gdouble scalex, gdouble scaley,
|
||||
gint alpha_value);
|
||||
|
||||
static gboolean render_gradient_p (Renderer *renderer,
|
||||
Preferences *prefs);
|
||||
|
@ -537,8 +543,8 @@ run_render_pipeline (Renderer *renderer,
|
|||
old_prefs->orientation != new_prefs->orientation ||
|
||||
!gdk_color_equal (old_prefs->color1, new_prefs->color1) ||
|
||||
!gdk_color_equal (old_prefs->color2, new_prefs->color2) ||
|
||||
old_prefs->adjust_brightness != new_prefs->adjust_brightness ||
|
||||
old_prefs->brightness_value != new_prefs->brightness_value ||
|
||||
old_prefs->adjust_opacity != new_prefs->adjust_opacity ||
|
||||
old_prefs->opacity != new_prefs->opacity ||
|
||||
((wallpaper_pixbuf != NULL ||
|
||||
old_prefs->wallpaper_type != new_prefs->wallpaper_type) &&
|
||||
render_gradient_p (renderer, new_prefs)))
|
||||
|
@ -725,15 +731,13 @@ renderer_render_wallpaper (Renderer *renderer)
|
|||
&renderer->wwidth, &renderer->wheight,
|
||||
&renderer->srcx, &renderer->srcy);
|
||||
|
||||
if (renderer->prefs->adjust_brightness) {
|
||||
if (renderer->prefs->adjust_opacity) {
|
||||
guint alpha_value;
|
||||
guint32 color;
|
||||
guint32 colorv;
|
||||
|
||||
alpha_value = ABS (renderer->prefs->brightness_value);
|
||||
alpha_value = 256 - alpha_value * alpha_value / 256;
|
||||
alpha_value = renderer->prefs->opacity;
|
||||
alpha_value = alpha_value * alpha_value / 256;
|
||||
alpha_value = CLAMP (alpha_value, 0, 255);
|
||||
color = (renderer->prefs->brightness_value < 0) ?
|
||||
0 : (guint32) -1;
|
||||
|
||||
if (render_gradient_p (renderer, renderer->prefs)) {
|
||||
scalex = (gdouble) renderer->wwidth /
|
||||
|
@ -741,17 +745,37 @@ renderer_render_wallpaper (Renderer *renderer)
|
|||
scaley = (gdouble) renderer->wheight /
|
||||
(gdouble) renderer->pheight;
|
||||
|
||||
gdk_pixbuf_composite_color
|
||||
if (renderer->prefs->wallpaper_type !=
|
||||
WPTYPE_TILED)
|
||||
gdk_pixbuf_composite
|
||||
(renderer->wallpaper_pixbuf,
|
||||
renderer->pixbuf,
|
||||
renderer->wx, renderer->wy,
|
||||
renderer->wwidth, renderer->wheight,
|
||||
renderer->wwidth,
|
||||
renderer->wheight,
|
||||
renderer->wx, renderer->wy,
|
||||
scalex, scaley,
|
||||
GDK_INTERP_BILINEAR,
|
||||
alpha_value, 0, 0, 65536,
|
||||
color, color);
|
||||
alpha_value);
|
||||
else
|
||||
tile_composite
|
||||
(renderer->wallpaper_pixbuf,
|
||||
renderer->pixbuf,
|
||||
renderer->wx, renderer->wy,
|
||||
renderer->wwidth,
|
||||
renderer->wheight,
|
||||
renderer->width,
|
||||
renderer->height,
|
||||
scalex, scaley,
|
||||
alpha_value);
|
||||
} else {
|
||||
GdkColor *color;
|
||||
|
||||
color = renderer->prefs->color1;
|
||||
colorv = ((color->red & 0xff00) << 8) |
|
||||
(color->green & 0xff00) |
|
||||
((color->blue & 0xff00) >> 8);
|
||||
|
||||
if (renderer->pixbuf != NULL)
|
||||
gdk_pixbuf_unref (renderer->pixbuf);
|
||||
|
||||
|
@ -761,7 +785,7 @@ renderer_render_wallpaper (Renderer *renderer)
|
|||
renderer->wwidth, renderer->wheight,
|
||||
GDK_INTERP_BILINEAR,
|
||||
alpha_value, 65536,
|
||||
color, color);
|
||||
colorv, colorv);
|
||||
}
|
||||
}
|
||||
else if (renderer->wwidth != renderer->pwidth ||
|
||||
|
@ -1084,6 +1108,27 @@ get_geometry (wallpaper_type_t wallpaper_type, GdkPixbuf *pixbuf,
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
tile_composite (GdkPixbuf *dest, GdkPixbuf *src,
|
||||
gdouble sx, gdouble sy,
|
||||
gdouble swidth, gdouble sheight,
|
||||
gdouble dwidth, gdouble dheight,
|
||||
gdouble scalex, gdouble scaley,
|
||||
gint alpha_value)
|
||||
{
|
||||
gdouble cx, cy;
|
||||
|
||||
for (cy = sy; cy < dheight; cy += sheight)
|
||||
for (cx = sx; cx < dwidth; cx += swidth)
|
||||
gdk_pixbuf_composite
|
||||
(dest, src, cx, cy,
|
||||
MIN (swidth, dwidth - cx),
|
||||
MIN (sheight, dheight - cy),
|
||||
cx, cy, scalex, scaley,
|
||||
GDK_INTERP_BILINEAR,
|
||||
alpha_value);
|
||||
}
|
||||
|
||||
static void
|
||||
render_tiled_image (Pixmap pixmap, GC xgc, GdkPixbuf *pixbuf,
|
||||
gint x, gint y, gint dwidth, gint dheight)
|
||||
|
@ -1111,6 +1156,7 @@ render_gradient_p (Renderer *renderer, Preferences *prefs)
|
|||
{
|
||||
return prefs->gradient_enabled &&
|
||||
!(prefs->wallpaper_enabled &&
|
||||
!prefs->adjust_opacity &&
|
||||
((prefs->wallpaper_type == WPTYPE_TILED ||
|
||||
prefs->wallpaper_type == WPTYPE_SCALED) ||
|
||||
(renderer->pwidth == renderer->width &&
|
||||
|
|
|
@ -576,14 +576,14 @@
|
|||
|
||||
<widget>
|
||||
<class>GtkCheckButton</class>
|
||||
<name>adjust_brightness_toggle</name>
|
||||
<name>adjust_opacity_toggle</name>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>toggled</name>
|
||||
<handler>adjust_brightness_toggled_cb</handler>
|
||||
<last_modification_time>Sun, 17 Dec 2000 23:15:19 GMT</last_modification_time>
|
||||
</signal>
|
||||
<label>Adjust background's brightness</label>
|
||||
<label>Adjust wallpaper's opacity</label>
|
||||
<active>False</active>
|
||||
<draw_indicator>True</draw_indicator>
|
||||
<child>
|
||||
|
@ -604,8 +604,8 @@
|
|||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>brightness_low_label</name>
|
||||
<label>Dimmer</label>
|
||||
<name>opacity_low_label</name>
|
||||
<label>More Transparent</label>
|
||||
<justify>GTK_JUSTIFY_RIGHT</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
|
@ -630,8 +630,8 @@
|
|||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>brightness_high_label</name>
|
||||
<label>Brighter</label>
|
||||
<name>opacity_high_label</name>
|
||||
<label>More Solid</label>
|
||||
<justify>GTK_JUSTIFY_LEFT</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0</xalign>
|
||||
|
@ -656,14 +656,14 @@
|
|||
|
||||
<widget>
|
||||
<class>GtkHScale</class>
|
||||
<name>brightness_adjust</name>
|
||||
<name>opacity_adjust</name>
|
||||
<can_focus>True</can_focus>
|
||||
<draw_value>False</draw_value>
|
||||
<value_pos>GTK_POS_TOP</value_pos>
|
||||
<digits>1</digits>
|
||||
<policy>GTK_UPDATE_CONTINUOUS</policy>
|
||||
<value>0</value>
|
||||
<lower>-255</lower>
|
||||
<lower>0</lower>
|
||||
<upper>255</upper>
|
||||
<step>0</step>
|
||||
<page>0</page>
|
||||
|
@ -675,7 +675,7 @@
|
|||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
|
|
|
@ -21,6 +21,6 @@ gchar *s = N_("Scaled (keep aspect)");
|
|||
gchar *s = N_("Scaled");
|
||||
gchar *s = N_("Disable background selection");
|
||||
gchar *s = N_("Apply changes automatically");
|
||||
gchar *s = N_("Adjust background's brightness");
|
||||
gchar *s = N_("Dimmer");
|
||||
gchar *s = N_("Brighter");
|
||||
gchar *s = N_("Adjust wallpaper's opacity");
|
||||
gchar *s = N_("More Transparent");
|
||||
gchar *s = N_("More Solid");
|
||||
|
|
|
@ -141,8 +141,8 @@ preferences_clone (Preferences *prefs)
|
|||
g_strdup (prefs->wallpaper_sel_path);;
|
||||
|
||||
new_prefs->auto_apply = prefs->auto_apply;
|
||||
new_prefs->adjust_brightness = prefs->adjust_brightness;
|
||||
new_prefs->brightness_value = prefs->brightness_value;
|
||||
new_prefs->adjust_opacity = prefs->adjust_opacity;
|
||||
new_prefs->opacity = prefs->opacity;
|
||||
|
||||
return object;
|
||||
}
|
||||
|
@ -237,15 +237,15 @@ preferences_load (Preferences *prefs)
|
|||
}
|
||||
|
||||
string = gnome_config_get_string
|
||||
("/Background/Default/adjustBrightness=true");
|
||||
("/Background/Default/adjustOpacity=true");
|
||||
if (!g_strcasecmp (string, "true"))
|
||||
prefs->adjust_brightness = TRUE;
|
||||
prefs->adjust_opacity = TRUE;
|
||||
else if (g_strcasecmp (string, "false"))
|
||||
prefs->adjust_brightness = FALSE;
|
||||
prefs->adjust_opacity = FALSE;
|
||||
g_free (string);
|
||||
|
||||
prefs->brightness_value =
|
||||
gnome_config_get_int ("/Background/Default/brightnessValue=0");
|
||||
prefs->opacity =
|
||||
gnome_config_get_int ("/Background/Default/opacity=255");
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -286,10 +286,10 @@ preferences_save (Preferences *prefs)
|
|||
gnome_config_set_string ("/Background/Default/autoApply",
|
||||
prefs->auto_apply ? "True" : "False");
|
||||
|
||||
gnome_config_set_string ("/Background/Default/adjustBrightness",
|
||||
prefs->adjust_brightness ? "True" : "False");
|
||||
gnome_config_set_int ("/Background/Default/brightnessValue",
|
||||
prefs->brightness_value);
|
||||
gnome_config_set_string ("/Background/Default/adjustOpacity",
|
||||
prefs->adjust_opacity ? "True" : "False");
|
||||
gnome_config_set_int ("/Background/Default/opacity",
|
||||
prefs->opacity);
|
||||
|
||||
gnome_config_sync ();
|
||||
}
|
||||
|
@ -404,10 +404,10 @@ preferences_read_xml (xmlDocPtr xml_doc)
|
|||
g_strdup (xmlNodeGetContent (node));
|
||||
else if (!strcmp (node->name, "auto-apply"))
|
||||
prefs->auto_apply = TRUE;
|
||||
else if (!strcmp (node->name, "adjust-brightness"))
|
||||
else if (!strcmp (node->name, "adjust-opacity"))
|
||||
prefs->auto_apply = TRUE;
|
||||
else if (!strcmp (node->name, "brightness-value"))
|
||||
prefs->brightness_value = xml_read_int (node, NULL);
|
||||
else if (!strcmp (node->name, "opacity"))
|
||||
prefs->opacity = xml_read_int (node, NULL);
|
||||
}
|
||||
|
||||
return prefs;
|
||||
|
@ -460,10 +460,10 @@ preferences_write_xml (Preferences *prefs)
|
|||
if (prefs->auto_apply)
|
||||
xmlNewChild (node, NULL, "auto-apply", NULL);
|
||||
|
||||
if (prefs->adjust_brightness)
|
||||
xmlNewChild (node, NULL, "adjust-brightness", NULL);
|
||||
xmlAddChild (node, xml_write_int ("brightness-value", NULL,
|
||||
prefs->brightness_value));
|
||||
if (prefs->adjust_opacity)
|
||||
xmlNewChild (node, NULL, "adjust-opacity", NULL);
|
||||
xmlAddChild (node, xml_write_int ("opacity", NULL,
|
||||
prefs->opacity));
|
||||
|
||||
xmlDocSetRootElement (doc, node);
|
||||
|
||||
|
|
|
@ -64,8 +64,8 @@ struct _Preferences
|
|||
gchar *wallpaper_filename;
|
||||
gchar *wallpaper_sel_path;
|
||||
|
||||
gboolean adjust_brightness;
|
||||
gint brightness_value;
|
||||
gboolean adjust_opacity;
|
||||
gint opacity;
|
||||
};
|
||||
|
||||
struct _PreferencesClass
|
||||
|
|
|
@ -88,9 +88,9 @@ static void disable_toggled_cb (GtkToggleButton *tb,
|
|||
PrefsWidget *prefs_widget);
|
||||
static void auto_apply_toggled_cb (GtkToggleButton *tb,
|
||||
PrefsWidget *prefs_widget);
|
||||
static void adjust_brightness_toggled_cb (GtkToggleButton *tb,
|
||||
static void adjust_opacity_toggled_cb (GtkToggleButton *tb,
|
||||
PrefsWidget *prefs_widget);
|
||||
static void brightness_adjust_changed_cb (GtkAdjustment *adjustment,
|
||||
static void opacity_adjust_changed_cb (GtkAdjustment *adjustment,
|
||||
PrefsWidget *prefs_widget);
|
||||
|
||||
static void set_gradient_controls_sensitive (PrefsWidget *prefs_widget,
|
||||
|
@ -99,7 +99,7 @@ static void set_wallpaper_controls_sensitive (PrefsWidget *prefs_widget,
|
|||
gboolean s);
|
||||
static void set_background_controls_sensitive (PrefsWidget *prefs_widget,
|
||||
gboolean s);
|
||||
static void set_brightness_controls_sensitive (PrefsWidget *prefs_widget,
|
||||
static void set_opacity_controls_sensitive (PrefsWidget *prefs_widget,
|
||||
gboolean s);
|
||||
|
||||
guint
|
||||
|
@ -198,14 +198,14 @@ prefs_widget_init (PrefsWidget *prefs_widget)
|
|||
auto_apply_toggled_cb,
|
||||
prefs_widget);
|
||||
glade_xml_signal_connect_data (prefs_widget->dialog_data,
|
||||
"adjust_brightness_toggled_cb",
|
||||
adjust_brightness_toggled_cb,
|
||||
"adjust_opacity_toggled_cb",
|
||||
adjust_opacity_toggled_cb,
|
||||
prefs_widget);
|
||||
|
||||
adjustment = gtk_range_get_adjustment
|
||||
(GTK_RANGE (WID ("brightness_adjust")));
|
||||
(GTK_RANGE (WID ("opacity_adjust")));
|
||||
gtk_signal_connect (GTK_OBJECT (adjustment), "value-changed",
|
||||
GTK_SIGNAL_FUNC (brightness_adjust_changed_cb),
|
||||
GTK_SIGNAL_FUNC (opacity_adjust_changed_cb),
|
||||
prefs_widget);
|
||||
|
||||
gnome_entry_load_history
|
||||
|
@ -430,7 +430,7 @@ read_preferences (PrefsWidget *prefs_widget, Preferences *prefs)
|
|||
(WID ("auto_apply")),
|
||||
FALSE);
|
||||
|
||||
if (prefs->adjust_brightness)
|
||||
if (prefs->adjust_opacity)
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
|
||||
(WID ("auto_apply")),
|
||||
TRUE);
|
||||
|
@ -439,21 +439,21 @@ read_preferences (PrefsWidget *prefs_widget, Preferences *prefs)
|
|||
(WID ("auto_apply")),
|
||||
FALSE);
|
||||
|
||||
if (prefs->adjust_brightness) {
|
||||
if (prefs->adjust_opacity) {
|
||||
gtk_toggle_button_set_active
|
||||
(GTK_TOGGLE_BUTTON (WID ("adjust_brightness_toggle")),
|
||||
(GTK_TOGGLE_BUTTON (WID ("adjust_opacity_toggle")),
|
||||
TRUE);
|
||||
set_brightness_controls_sensitive (prefs_widget, TRUE);
|
||||
set_opacity_controls_sensitive (prefs_widget, TRUE);
|
||||
} else {
|
||||
gtk_toggle_button_set_active
|
||||
(GTK_TOGGLE_BUTTON (WID ("adjust_brightness_toggle")),
|
||||
(GTK_TOGGLE_BUTTON (WID ("adjust_opacity_toggle")),
|
||||
FALSE);
|
||||
set_brightness_controls_sensitive (prefs_widget, FALSE);
|
||||
set_opacity_controls_sensitive (prefs_widget, FALSE);
|
||||
}
|
||||
|
||||
adjustment = gtk_range_get_adjustment
|
||||
(GTK_RANGE (WID ("brightness_adjust")));
|
||||
gtk_adjustment_set_value (adjustment, prefs->brightness_value);
|
||||
(GTK_RANGE (WID ("opacity_adjust")));
|
||||
gtk_adjustment_set_value (adjustment, prefs->opacity);
|
||||
|
||||
preferences_apply_preview (prefs);
|
||||
}
|
||||
|
@ -709,7 +709,7 @@ auto_apply_toggled_cb (GtkToggleButton *tb, PrefsWidget *prefs_widget)
|
|||
}
|
||||
|
||||
static void
|
||||
adjust_brightness_toggled_cb (GtkToggleButton *tb, PrefsWidget *prefs_widget)
|
||||
adjust_opacity_toggled_cb (GtkToggleButton *tb, PrefsWidget *prefs_widget)
|
||||
{
|
||||
g_return_if_fail (prefs_widget != NULL);
|
||||
g_return_if_fail (IS_PREFS_WIDGET (prefs_widget));
|
||||
|
@ -717,11 +717,11 @@ adjust_brightness_toggled_cb (GtkToggleButton *tb, PrefsWidget *prefs_widget)
|
|||
g_return_if_fail (IS_PREFERENCES (prefs_widget->prefs));
|
||||
|
||||
if (gtk_toggle_button_get_active (tb)) {
|
||||
prefs_widget->prefs->adjust_brightness = TRUE;
|
||||
set_brightness_controls_sensitive (prefs_widget, TRUE);
|
||||
prefs_widget->prefs->adjust_opacity = TRUE;
|
||||
set_opacity_controls_sensitive (prefs_widget, TRUE);
|
||||
} else {
|
||||
prefs_widget->prefs->adjust_brightness = FALSE;
|
||||
set_brightness_controls_sensitive (prefs_widget, FALSE);
|
||||
prefs_widget->prefs->adjust_opacity = FALSE;
|
||||
set_opacity_controls_sensitive (prefs_widget, FALSE);
|
||||
}
|
||||
|
||||
preferences_changed (prefs_widget->prefs);
|
||||
|
@ -729,7 +729,7 @@ adjust_brightness_toggled_cb (GtkToggleButton *tb, PrefsWidget *prefs_widget)
|
|||
}
|
||||
|
||||
static void
|
||||
brightness_adjust_changed_cb (GtkAdjustment *adjustment,
|
||||
opacity_adjust_changed_cb (GtkAdjustment *adjustment,
|
||||
PrefsWidget *prefs_widget)
|
||||
{
|
||||
g_return_if_fail (prefs_widget != NULL);
|
||||
|
@ -737,7 +737,7 @@ brightness_adjust_changed_cb (GtkAdjustment *adjustment,
|
|||
g_return_if_fail (prefs_widget->prefs != NULL);
|
||||
g_return_if_fail (IS_PREFERENCES (prefs_widget->prefs));
|
||||
|
||||
prefs_widget->prefs->brightness_value = adjustment->value;
|
||||
prefs_widget->prefs->opacity = adjustment->value;
|
||||
|
||||
preferences_changed (prefs_widget->prefs);
|
||||
capplet_widget_state_changed (CAPPLET_WIDGET (prefs_widget), TRUE);
|
||||
|
@ -769,10 +769,10 @@ set_background_controls_sensitive (PrefsWidget *prefs_widget, gboolean s)
|
|||
}
|
||||
|
||||
static void
|
||||
set_brightness_controls_sensitive (PrefsWidget *prefs_widget, gboolean s)
|
||||
set_opacity_controls_sensitive (PrefsWidget *prefs_widget, gboolean s)
|
||||
{
|
||||
gtk_widget_set_sensitive (WID ("brightness_low_label"), s);
|
||||
gtk_widget_set_sensitive (WID ("brightness_adjust"), s);
|
||||
gtk_widget_set_sensitive (WID ("brightness_high_label"), s);
|
||||
gtk_widget_set_sensitive (WID ("opacity_low_label"), s);
|
||||
gtk_widget_set_sensitive (WID ("opacity_adjust"), s);
|
||||
gtk_widget_set_sensitive (WID ("opacity_high_label"), s);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue