background space usage
Current solar background's consume 33Mb. This a bit on the heavy side,
especially on the Live CD which is over its image limit. Currently there are 4 different images (morning, noon, evening, night) sent out in 4 different sizes (4:3, 16:10, 5:4 and 8:3 for dual screen). What we could do is to send out just one 3200:1200 image and patch up gnome-desktop background handling to support cropping to the right aspect. So currently we have: <from> <size width="2048" height="1536">4-3.png</size> <size width="1920" height="1200">16-10.png</size> <size width="1600" height="1280">5-4.png</size> <size width="3200" height="1200">8-3.png</size> </from> And since we are interested in the stuff in the bottom right corner we add an X offset: <from> <size width="1600" height="1200" x="1600" y="0">8-3.png</size> <size width="1920" height="1200" x="1280" y="0">8-3.png</size> <size width="1500" height="1200" x="1700" y="0">8-3.png</size> <size width="3200" height="1200" >8-3.png</size> </from> This would allow us to ship just one 3200x1200 size of each time of day image. I do realise this is very late since the freeze is on Tuesday, so this can easily wait till F11. But if people think it may be possible to repackage gnome-desktop and the backgrounds in time then forward the attached patch to the gnome-desktop packagers and see if they agree. --- gnome-bg.c.old 2008-10-26 22:28:55.000000000 +0000 +++ gnome-bg.c 2008-10-26 22:40:40.000000000 +0000 @@ -72,6 +72,8 @@ { gint width; gint height; + gint offset_x; + gint offset_y; char *file; }; @@ -1747,16 +1749,15 @@ static GdkPixbuf * get_pixbuf (GnomeBG *bg) { - /* FIXME: this ref=TRUE/FALSE stuff is crazy */ - - gboolean ref = FALSE; if (!bg->pixbuf_cache && bg->filename) { - ref = TRUE; bg->file_mtime = get_mtime (bg->filename); bg->pixbuf_cache = get_as_pixbuf (bg, bg->filename); - if (!bg->pixbuf_cache) { + if (bg->pixbuf_cache) { + g_object_ref (bg->pixbuf_cache); + } + else { SlideShow *show = get_as_slideshow (bg, bg->filename); if (show) { @@ -1769,21 +1770,32 @@ if (slide->fixed) { FileSize *size; + GdkPixbuf *pixbuf; size = find_best_size (slide->file1, bg->last_pixmap_width, bg->last_pixmap_height); - bg->pixbuf_cache = get_as_pixbuf (bg, size->file); + pixbuf = get_as_pixbuf (bg, size->file); + if (pixbuf){ + bg->pixbuf_cache = gdk_pixbuf_new_subpixbuf(pixbuf, size->offset_x , size->offset_y, size->width, size->height); + } + + } else { - FileSize *size; + FileSize *size1, *size2; GdkPixbuf *p1, *p2; - size = find_best_size (slide->file1, bg->last_pixmap_width, bg->last_pixmap_height); - p1 = get_as_pixbuf (bg, size->file); - size = find_best_size (slide->file2, bg->last_pixmap_width, bg->last_pixmap_height); - p2 = get_as_pixbuf (bg, size->file); + size1 = find_best_size (slide->file1, bg->last_pixmap_width, bg->last_pixmap_height); + p1 = get_as_pixbuf (bg, size1->file); + size2 = find_best_size (slide->file2, bg->last_pixmap_width, bg->last_pixmap_height); + p2 = get_as_pixbuf (bg, size2->file); if (p1 && p2) { - bg->pixbuf_cache = blend (p1, p2, alpha); - ref = FALSE; + p1 = gdk_pixbuf_new_subpixbuf(p1, size1->offset_x , size1->offset_y, size1->width, size1->height); + p2 = gdk_pixbuf_new_subpixbuf(p2, size2->offset_x , size2->offset_y, size2->width, size2->height); + if (p1 && p2) { + bg->pixbuf_cache = blend (p1, p2, alpha); + } + if (p1) g_object_unref (p1); + if (p2) g_object_unref (p2); } } @@ -1794,9 +1806,6 @@ } } - if (bg->pixbuf_cache && ref) - g_object_ref (bg->pixbuf_cache); - return bg->pixbuf_cache; } @@ -2107,6 +2116,10 @@ size->width = atoi (attr_values[i]); else if (strcmp (attr_names[i], "height") == 0) size->height = atoi (attr_values[i]); + else if (strcmp (attr_names[i], "x") == 0) + size->offset_x = atoi (attr_values[i]); + else if (strcmp (attr_names[i], "y") == 0) + size->offset_y = atoi (attr_values[i]); } if (parser->stack->tail && (strcmp (parser->stack->tail->data, "file") == 0 || @@ -2222,6 +2235,8 @@ fs = g_new (FileSize, 1); fs->width = -1; fs->height = -1; + fs->offset_x = 0; + fs->offset_y = 0; fs->file = g_strdup (text); slide->file1 = g_slist_prepend (slide->file1, fs); if (slide->file1->next != NULL) @@ -2244,6 +2259,8 @@ fs = g_new (FileSize, 1); fs->width = -1; fs->height = -1; + fs->offset_x = 0; + fs->offset_y = 0; fs->file = g_strdup (text); slide->file2 = g_slist_prepend (slide->file2, fs); if (slide->file2->next != NULL) @@ -2318,14 +2335,14 @@ g_print ("File1: "); for (slist = slide->file1; slist != NULL; slist = slist->next) { FileSize *size = slist->data; - g_print (" %s (%dx%d) ", - size->file, size->width, size->height); + g_print (" %s (%dx%d+%d+%d) ", + size->file, size->width, size->height, size->offset_x, size->offset_y); } g_print ("File2: "); for (slist = slide->file2; slist != NULL; slist = slist->next) { FileSize *size = slist->data; - g_print (" %s (%dx%d) ", - size->file, size->width, size->height); + g_print (" %s (%dx%d+%d+%d) ", + size->file, size->width, size->height, size->offset_x, size->offset_y); } } #endif _______________________________________________ Fedora-art-list mailing list Fedora-art-list@redhat.com http://www.redhat.com/mailman/listinfo/fedora-art-list |
| All times are GMT. The time now is 03:13 AM. |
VBulletin, Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.