removed conversion to TempBuf. Instead implement
2004-09-27 Sven Neumann <sven@gimp.org> * app/core/gimpimagefile.c: removed conversion to TempBuf. Instead implement GimpViewable::get_new_pixbuf by compositing the thumbnail on a checkerboard. * app/widgets/gimpviewrenderer.[ch]: renamed the no_view_pixbuf struct member to pixbuf. (gimp_view_renderer_real_render): try gimp_viewable_get_pixbuf() and render the pixbuf before falling back to the TempBuf preview. (gimp_view_renderer_render_pixbuf): new function that sets a pixbuf for the renderer and flushes the render_buffer. * app/widgets/gimpviewrendererimagefile.c (gimp_view_renderer_imagefile_render): render the pixbuf. * app/dialogs/dialogs-constructors.c: create the document history dockable with a zero borderwidth.
This commit is contained in:
committed by
Sven Neumann
parent
75a59c682d
commit
ab269fc645
@ -163,7 +163,7 @@ gimp_view_renderer_init (GimpViewRenderer *renderer)
|
||||
renderer->rowstride = 0;
|
||||
renderer->bytes = 3;
|
||||
|
||||
renderer->no_view_pixbuf = NULL;
|
||||
renderer->pixbuf = NULL;
|
||||
renderer->bg_stock_id = NULL;
|
||||
|
||||
renderer->size = -1;
|
||||
@ -195,10 +195,10 @@ gimp_view_renderer_finalize (GObject *object)
|
||||
renderer->buffer = NULL;
|
||||
}
|
||||
|
||||
if (renderer->no_view_pixbuf)
|
||||
if (renderer->pixbuf)
|
||||
{
|
||||
g_object_unref (renderer->no_view_pixbuf);
|
||||
renderer->no_view_pixbuf = NULL;
|
||||
g_object_unref (renderer->pixbuf);
|
||||
renderer->pixbuf = NULL;
|
||||
}
|
||||
|
||||
if (renderer->bg_stock_id)
|
||||
@ -301,10 +301,10 @@ gimp_view_renderer_set_viewable (GimpViewRenderer *renderer,
|
||||
renderer->buffer = NULL;
|
||||
}
|
||||
|
||||
if (renderer->no_view_pixbuf)
|
||||
if (renderer->pixbuf)
|
||||
{
|
||||
g_object_unref (renderer->no_view_pixbuf);
|
||||
renderer->no_view_pixbuf = NULL;
|
||||
g_object_unref (renderer->pixbuf);
|
||||
renderer->pixbuf = NULL;
|
||||
}
|
||||
|
||||
if (renderer->viewable)
|
||||
@ -663,7 +663,7 @@ gimp_view_renderer_real_draw (GimpViewRenderer *renderer,
|
||||
if (renderer->needs_render)
|
||||
GIMP_VIEW_RENDERER_GET_CLASS (renderer)->render (renderer, widget);
|
||||
|
||||
if (renderer->no_view_pixbuf)
|
||||
if (renderer->pixbuf)
|
||||
{
|
||||
if (renderer->bg_stock_id)
|
||||
{
|
||||
@ -682,8 +682,8 @@ gimp_view_renderer_real_draw (GimpViewRenderer *renderer,
|
||||
}
|
||||
}
|
||||
|
||||
rect.width = gdk_pixbuf_get_width (renderer->no_view_pixbuf);
|
||||
rect.height = gdk_pixbuf_get_height (renderer->no_view_pixbuf);
|
||||
rect.width = gdk_pixbuf_get_width (renderer->pixbuf);
|
||||
rect.height = gdk_pixbuf_get_height (renderer->pixbuf);
|
||||
rect.x = draw_area->x + (draw_area->width - rect.width) / 2;
|
||||
rect.y = draw_area->y + (draw_area->height - rect.height) / 2;
|
||||
|
||||
@ -692,7 +692,7 @@ gimp_view_renderer_real_draw (GimpViewRenderer *renderer,
|
||||
{
|
||||
gdk_draw_pixbuf (GDK_DRAWABLE (window),
|
||||
widget->style->bg_gc[widget->state],
|
||||
renderer->no_view_pixbuf,
|
||||
renderer->pixbuf,
|
||||
render_rect.x - rect.x,
|
||||
render_rect.y - rect.y,
|
||||
render_rect.x,
|
||||
@ -738,24 +738,30 @@ static void
|
||||
gimp_view_renderer_real_render (GimpViewRenderer *renderer,
|
||||
GtkWidget *widget)
|
||||
{
|
||||
TempBuf *temp_buf;
|
||||
GdkPixbuf *pixbuf;
|
||||
TempBuf *temp_buf;
|
||||
const gchar *stock_id;
|
||||
|
||||
pixbuf = gimp_viewable_get_pixbuf (renderer->viewable,
|
||||
renderer->width,
|
||||
renderer->height);
|
||||
if (pixbuf)
|
||||
{
|
||||
gimp_view_renderer_render_pixbuf (renderer, pixbuf);
|
||||
return;
|
||||
}
|
||||
|
||||
temp_buf = gimp_viewable_get_preview (renderer->viewable,
|
||||
renderer->width,
|
||||
renderer->height);
|
||||
|
||||
if (temp_buf)
|
||||
{
|
||||
gimp_view_renderer_default_render_buffer (renderer, widget, temp_buf);
|
||||
return;
|
||||
}
|
||||
else /* no preview available */
|
||||
{
|
||||
const gchar *stock_id;
|
||||
|
||||
stock_id = gimp_viewable_get_stock_id (renderer->viewable);
|
||||
|
||||
gimp_view_renderer_default_render_stock (renderer, widget, stock_id);
|
||||
}
|
||||
stock_id = gimp_viewable_get_stock_id (renderer->viewable);
|
||||
gimp_view_renderer_default_render_stock (renderer, widget, stock_id);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -804,10 +810,10 @@ gimp_view_renderer_default_render_stock (GimpViewRenderer *renderer,
|
||||
g_return_if_fail (GTK_IS_WIDGET (widget));
|
||||
g_return_if_fail (stock_id != NULL);
|
||||
|
||||
if (renderer->no_view_pixbuf)
|
||||
if (renderer->pixbuf)
|
||||
{
|
||||
g_object_unref (renderer->no_view_pixbuf);
|
||||
renderer->no_view_pixbuf = NULL;
|
||||
g_object_unref (renderer->pixbuf);
|
||||
renderer->pixbuf = NULL;
|
||||
}
|
||||
|
||||
if (renderer->buffer)
|
||||
@ -845,7 +851,7 @@ gimp_view_renderer_default_render_stock (GimpViewRenderer *renderer,
|
||||
pixbuf = scaled_pixbuf;
|
||||
}
|
||||
|
||||
renderer->no_view_pixbuf = pixbuf;
|
||||
renderer->pixbuf = pixbuf;
|
||||
}
|
||||
|
||||
renderer->needs_render = FALSE;
|
||||
@ -858,15 +864,15 @@ gimp_view_renderer_render_buffer (GimpViewRenderer *renderer,
|
||||
GimpViewBG inside_bg,
|
||||
GimpViewBG outside_bg)
|
||||
{
|
||||
if (renderer->pixbuf)
|
||||
{
|
||||
g_object_unref (renderer->pixbuf);
|
||||
renderer->pixbuf = NULL;
|
||||
}
|
||||
|
||||
if (! renderer->buffer)
|
||||
renderer->buffer = g_new0 (guchar, renderer->height * renderer->rowstride);
|
||||
|
||||
if (renderer->no_view_pixbuf)
|
||||
{
|
||||
g_object_unref (renderer->no_view_pixbuf);
|
||||
renderer->no_view_pixbuf = NULL;
|
||||
}
|
||||
|
||||
gimp_view_render_to_buffer (temp_buf,
|
||||
channel,
|
||||
inside_bg,
|
||||
@ -1059,6 +1065,26 @@ gimp_view_render_to_buffer (TempBuf *temp_buf,
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
gimp_view_renderer_render_pixbuf (GimpViewRenderer *renderer,
|
||||
GdkPixbuf *pixbuf)
|
||||
{
|
||||
if (renderer->buffer)
|
||||
{
|
||||
g_free (renderer->buffer);
|
||||
renderer->buffer = NULL;
|
||||
}
|
||||
|
||||
g_object_ref (pixbuf);
|
||||
|
||||
if (renderer->pixbuf)
|
||||
g_object_unref (renderer->pixbuf);
|
||||
|
||||
renderer->pixbuf = pixbuf;
|
||||
|
||||
renderer->needs_render = FALSE;
|
||||
}
|
||||
|
||||
static GdkGC *
|
||||
gimp_view_renderer_create_gc (GimpViewRenderer *renderer,
|
||||
GdkWindow *window,
|
||||
|
||||
Reference in New Issue
Block a user