summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog16
-rw-r--r--libnautilus-extensions/nautilus-background-canvas-group.c11
-rw-r--r--libnautilus-extensions/nautilus-background.c6
-rw-r--r--libnautilus-extensions/nautilus-background.h4
-rw-r--r--libnautilus-extensions/nautilus-gnome-extensions.c14
-rw-r--r--libnautilus-extensions/nautilus-gnome-extensions.h1
-rw-r--r--libnautilus-private/nautilus-background-canvas-group.c11
-rw-r--r--libnautilus-private/nautilus-background.c6
-rw-r--r--libnautilus-private/nautilus-background.h4
-rw-r--r--libnautilus-private/nautilus-gnome-extensions.c14
-rw-r--r--libnautilus-private/nautilus-gnome-extensions.h1
11 files changed, 68 insertions, 20 deletions
diff --git a/ChangeLog b/ChangeLog
index 3b9f5efda..27a30ee99 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2000-06-07 Andy Hertzfeld <andy@eazel.com>
+
+ more work on gradient backgrounds in anti-aliased mode; vertical ones are
+ working now but horizontals still aren't
+
+ * libnautilus-extensions/nautilus-background-canvas-group.c:
+ (nautilus_background_canvas_group_render):
+ get the width and height of entire area from get_scroll_area
+ * libnautilus-extensions/nautilus-background.c,h:
+ (nautilus_background_draw_aa):
+ added parameters for entire area to use for color determination
+ * libnautilus-extensions/nautilus-gnome-extensions.c,h:
+ (nautilus_gnome_canvas_fill_with_gradient):
+ added entire width and height parameters, and use them to
+ compute the color
+
Wed Jun 7 01:20:22 2000 Raph Levien <raph@acm.org>
* librsvg/art_render.h: Workaround to compile with older
diff --git a/libnautilus-extensions/nautilus-background-canvas-group.c b/libnautilus-extensions/nautilus-background-canvas-group.c
index 93547f10f..a047d5987 100644
--- a/libnautilus-extensions/nautilus-background-canvas-group.c
+++ b/libnautilus-extensions/nautilus-background-canvas-group.c
@@ -129,12 +129,17 @@ nautilus_background_canvas_group_draw (GnomeCanvasItem *item, GdkDrawable *drawa
static void
nautilus_background_canvas_group_render (GnomeCanvasItem *item, GnomeCanvasBuf *buffer)
{
+ gint entire_width, entire_height;
+ double left, top, bottom, right;
NautilusBackground *background;
background = nautilus_get_widget_background(GTK_WIDGET (item->canvas));
- if (background != NULL)
- nautilus_background_draw_aa(background, buffer);
- else
+ if (background != NULL) {
+ gnome_canvas_get_scroll_region (GNOME_CANVAS(item->canvas), &left, &top, &right, &bottom);
+ entire_width = right - left;
+ entire_height = bottom - top;
+ nautilus_background_draw_aa(background, buffer, entire_width, entire_height);
+ } else
gnome_canvas_buf_ensure_buf (buffer);
buffer->is_bg = FALSE;
diff --git a/libnautilus-extensions/nautilus-background.c b/libnautilus-extensions/nautilus-background.c
index b79eeb30b..76b8f9ca1 100644
--- a/libnautilus-extensions/nautilus-background.c
+++ b/libnautilus-extensions/nautilus-background.c
@@ -247,7 +247,9 @@ draw_pixbuf_tiled_aa(GdkPixbuf *pixbuf, GnomeCanvasBuf *buffer)
/* draw the background on the anti-aliased canvas */
void nautilus_background_draw_aa (NautilusBackground *background,
- GnomeCanvasBuf *buffer)
+ GnomeCanvasBuf *buffer,
+ int entire_width,
+ int entire_height)
{
char *start_color_spec, *end_color_spec;
guint32 start_rgb, end_rgb;
@@ -268,7 +270,7 @@ void nautilus_background_draw_aa (NautilusBackground *background,
g_free (end_color_spec);
if (start_rgb != end_rgb) {
- nautilus_gnome_canvas_fill_with_gradient(buffer, start_rgb, end_rgb,
+ nautilus_gnome_canvas_fill_with_gradient(buffer, entire_width, entire_height, start_rgb, end_rgb,
horizontal_gradient);
} else
gnome_canvas_buf_ensure_buf(buffer);
diff --git a/libnautilus-extensions/nautilus-background.h b/libnautilus-extensions/nautilus-background.h
index 236728d06..fc5b5315d 100644
--- a/libnautilus-extensions/nautilus-background.h
+++ b/libnautilus-extensions/nautilus-background.h
@@ -82,7 +82,9 @@ void nautilus_background_draw (NautilusBackgroun
/* Explicitly fills a rectangle with a background on the anti-aliased canvas. */
void nautilus_background_draw_aa (NautilusBackground *background,
- GnomeCanvasBuf *buffer);
+ GnomeCanvasBuf *buffer,
+ int entire_width,
+ int entire_height);
/* Handles a dragged color being dropped on a widget to change the background color. */
void nautilus_background_receive_dropped_color (NautilusBackground *background,
diff --git a/libnautilus-extensions/nautilus-gnome-extensions.c b/libnautilus-extensions/nautilus-gnome-extensions.c
index deea2a82a..eb2fa3d65 100644
--- a/libnautilus-extensions/nautilus-gnome-extensions.c
+++ b/libnautilus-extensions/nautilus-gnome-extensions.c
@@ -212,9 +212,10 @@ nautilus_gnome_canvas_item_get_world_bounds (GnomeCanvasItem *item,
void
nautilus_gnome_canvas_fill_with_gradient (GnomeCanvasBuf *buffer,
+ int entire_width, int entire_height,
guint32 start_rgb,
- guint32 end_rgb,
- gboolean horizontal)
+ guint32 end_rgb,
+ gboolean horizontal)
{
GdkRectangle band_box;
guchar *bufptr;
@@ -234,7 +235,7 @@ nautilus_gnome_canvas_fill_with_gradient (GnomeCanvasBuf *buffer,
band_box.y = buffer->rect.y0;
band_box.width = buffer->rect.x1 - buffer->rect.x0;
band_box.height = buffer->rect.y1 - buffer->rect.y0;
-
+
position = horizontal ? &band_box.x : &band_box.y;
size = horizontal ? &band_box.width : &band_box.height;
@@ -248,7 +249,12 @@ nautilus_gnome_canvas_fill_with_gradient (GnomeCanvasBuf *buffer,
/* Fill each band with a separate nautilus_draw_rectangle call. */
for (band = 0; band < num_bands; band++) {
/* Compute a new color value for each band. */
- fraction = (double) *position / 2000; /* this is a temporary fudge */
+
+ if (horizontal)
+ fraction = (double) *position / (double) entire_width;
+ else
+ fraction = (double) *position / (double) entire_height;
+
band_rgb = nautilus_interpolate_color (fraction, start_rgb, end_rgb);
red_value = band_rgb >> 16;
green_value = (band_rgb >> 8) & 0xff;
diff --git a/libnautilus-extensions/nautilus-gnome-extensions.h b/libnautilus-extensions/nautilus-gnome-extensions.h
index d15cae6c6..e29498ee4 100644
--- a/libnautilus-extensions/nautilus-gnome-extensions.h
+++ b/libnautilus-extensions/nautilus-gnome-extensions.h
@@ -67,6 +67,7 @@ void nautilus_gnome_canvas_item_request_redraw (GnomeCanvasItem
/* fill a canvas buffer with a gradient background */
void nautilus_gnome_canvas_fill_with_gradient (GnomeCanvasBuf *buffer,
+ int entire_width, int entire_height,
guint32 start_rgb,
guint32 end_rgb,
gboolean horizontal);
diff --git a/libnautilus-private/nautilus-background-canvas-group.c b/libnautilus-private/nautilus-background-canvas-group.c
index 93547f10f..a047d5987 100644
--- a/libnautilus-private/nautilus-background-canvas-group.c
+++ b/libnautilus-private/nautilus-background-canvas-group.c
@@ -129,12 +129,17 @@ nautilus_background_canvas_group_draw (GnomeCanvasItem *item, GdkDrawable *drawa
static void
nautilus_background_canvas_group_render (GnomeCanvasItem *item, GnomeCanvasBuf *buffer)
{
+ gint entire_width, entire_height;
+ double left, top, bottom, right;
NautilusBackground *background;
background = nautilus_get_widget_background(GTK_WIDGET (item->canvas));
- if (background != NULL)
- nautilus_background_draw_aa(background, buffer);
- else
+ if (background != NULL) {
+ gnome_canvas_get_scroll_region (GNOME_CANVAS(item->canvas), &left, &top, &right, &bottom);
+ entire_width = right - left;
+ entire_height = bottom - top;
+ nautilus_background_draw_aa(background, buffer, entire_width, entire_height);
+ } else
gnome_canvas_buf_ensure_buf (buffer);
buffer->is_bg = FALSE;
diff --git a/libnautilus-private/nautilus-background.c b/libnautilus-private/nautilus-background.c
index b79eeb30b..76b8f9ca1 100644
--- a/libnautilus-private/nautilus-background.c
+++ b/libnautilus-private/nautilus-background.c
@@ -247,7 +247,9 @@ draw_pixbuf_tiled_aa(GdkPixbuf *pixbuf, GnomeCanvasBuf *buffer)
/* draw the background on the anti-aliased canvas */
void nautilus_background_draw_aa (NautilusBackground *background,
- GnomeCanvasBuf *buffer)
+ GnomeCanvasBuf *buffer,
+ int entire_width,
+ int entire_height)
{
char *start_color_spec, *end_color_spec;
guint32 start_rgb, end_rgb;
@@ -268,7 +270,7 @@ void nautilus_background_draw_aa (NautilusBackground *background,
g_free (end_color_spec);
if (start_rgb != end_rgb) {
- nautilus_gnome_canvas_fill_with_gradient(buffer, start_rgb, end_rgb,
+ nautilus_gnome_canvas_fill_with_gradient(buffer, entire_width, entire_height, start_rgb, end_rgb,
horizontal_gradient);
} else
gnome_canvas_buf_ensure_buf(buffer);
diff --git a/libnautilus-private/nautilus-background.h b/libnautilus-private/nautilus-background.h
index 236728d06..fc5b5315d 100644
--- a/libnautilus-private/nautilus-background.h
+++ b/libnautilus-private/nautilus-background.h
@@ -82,7 +82,9 @@ void nautilus_background_draw (NautilusBackgroun
/* Explicitly fills a rectangle with a background on the anti-aliased canvas. */
void nautilus_background_draw_aa (NautilusBackground *background,
- GnomeCanvasBuf *buffer);
+ GnomeCanvasBuf *buffer,
+ int entire_width,
+ int entire_height);
/* Handles a dragged color being dropped on a widget to change the background color. */
void nautilus_background_receive_dropped_color (NautilusBackground *background,
diff --git a/libnautilus-private/nautilus-gnome-extensions.c b/libnautilus-private/nautilus-gnome-extensions.c
index deea2a82a..eb2fa3d65 100644
--- a/libnautilus-private/nautilus-gnome-extensions.c
+++ b/libnautilus-private/nautilus-gnome-extensions.c
@@ -212,9 +212,10 @@ nautilus_gnome_canvas_item_get_world_bounds (GnomeCanvasItem *item,
void
nautilus_gnome_canvas_fill_with_gradient (GnomeCanvasBuf *buffer,
+ int entire_width, int entire_height,
guint32 start_rgb,
- guint32 end_rgb,
- gboolean horizontal)
+ guint32 end_rgb,
+ gboolean horizontal)
{
GdkRectangle band_box;
guchar *bufptr;
@@ -234,7 +235,7 @@ nautilus_gnome_canvas_fill_with_gradient (GnomeCanvasBuf *buffer,
band_box.y = buffer->rect.y0;
band_box.width = buffer->rect.x1 - buffer->rect.x0;
band_box.height = buffer->rect.y1 - buffer->rect.y0;
-
+
position = horizontal ? &band_box.x : &band_box.y;
size = horizontal ? &band_box.width : &band_box.height;
@@ -248,7 +249,12 @@ nautilus_gnome_canvas_fill_with_gradient (GnomeCanvasBuf *buffer,
/* Fill each band with a separate nautilus_draw_rectangle call. */
for (band = 0; band < num_bands; band++) {
/* Compute a new color value for each band. */
- fraction = (double) *position / 2000; /* this is a temporary fudge */
+
+ if (horizontal)
+ fraction = (double) *position / (double) entire_width;
+ else
+ fraction = (double) *position / (double) entire_height;
+
band_rgb = nautilus_interpolate_color (fraction, start_rgb, end_rgb);
red_value = band_rgb >> 16;
green_value = (band_rgb >> 8) & 0xff;
diff --git a/libnautilus-private/nautilus-gnome-extensions.h b/libnautilus-private/nautilus-gnome-extensions.h
index d15cae6c6..e29498ee4 100644
--- a/libnautilus-private/nautilus-gnome-extensions.h
+++ b/libnautilus-private/nautilus-gnome-extensions.h
@@ -67,6 +67,7 @@ void nautilus_gnome_canvas_item_request_redraw (GnomeCanvasItem
/* fill a canvas buffer with a gradient background */
void nautilus_gnome_canvas_fill_with_gradient (GnomeCanvasBuf *buffer,
+ int entire_width, int entire_height,
guint32 start_rgb,
guint32 end_rgb,
gboolean horizontal);