[goffice] Cache GOImage pixbuf snapshot.
- From: Jean BrÃfort <jbrefort src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [goffice] Cache GOImage pixbuf snapshot.
- Date: Wed, 9 Nov 2011 13:41:38 +0000 (UTC)
commit 6ee8249f50a6ce89d86315f35b375e3fe74f3679
Author: Jean Brefort <jean brefort normalesup org>
Date: Wed Nov 9 14:39:44 2011 +0100
Cache GOImage pixbuf snapshot.
ChangeLog | 8 ++++++++
goffice/component/go-component.c | 7 +++++++
goffice/component/go-component.h | 2 ++
goffice/utils/go-image.c | 6 +++++-
goffice/utils/go-image.h | 1 +
5 files changed, 23 insertions(+), 1 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index d369325..3a09bce 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-11-09 Jean Brefort <jean brefort normalesup org>
+
+ * goffice/component/go-component.c (go_component_set_font): new function.
+ * goffice/component/go-component.h: ditto.
+ * goffice/utils/go-image.c (go_image_finalize),
+ (go_image_get_pixbuf): cache the pixbuf.
+ * goffice/utils/go-image.h: ditto.
+
2011-11-06 Jean Brefort <jean brefort normalesup org>
* configure.in: drop gconf support.
diff --git a/goffice/component/go-component.c b/goffice/component/go-component.c
index 57ded61..f28b21a 100644
--- a/goffice/component/go-component.c
+++ b/goffice/component/go-component.c
@@ -762,3 +762,10 @@ go_component_get_snapshot (GOComponent *component, GOSnapshotType *type, size_t
*length = component->snapshot_length;
return component->snapshot_data;
}
+
+void go_component_set_font (GOComponent *component, PangoFontDescription *desc)
+{
+ GOComponentClass *klass = GO_COMPONENT_GET_CLASS (component);
+ if (klass->set_font)
+ klass->set_font (component, desc);
+}
diff --git a/goffice/component/go-component.h b/goffice/component/go-component.h
index 7377f98..2990ec1 100644
--- a/goffice/component/go-component.h
+++ b/goffice/component/go-component.h
@@ -67,6 +67,7 @@ struct _GOComponentClass {
void (*set_size) (GOComponent *component);
void (*render) (GOComponent *component, cairo_t *cr,
double width, double height);
+ void (*set_font) (GOComponent *component, PangoFontDescription *desc);
void (*reserved1) (void);
void (*reserved2) (void);
void (*reserved3) (void);
@@ -107,6 +108,7 @@ void go_component_set_command_context (GOCmdContext *cc);
GOCmdContext *go_component_get_command_context (void);
void go_component_render (GOComponent *component, cairo_t *cr, double width, double height);
void go_component_get_size (GOComponent *component, double *width, double *height);
+void go_component_set_font (GOComponent *component, PangoFontDescription *desc);
void go_component_write_xml_sax (GOComponent *component, GsfXMLOut *output);
typedef void (*GOComponentSaxHandler)(GOComponent *component, gpointer user_data);
diff --git a/goffice/utils/go-image.c b/goffice/utils/go-image.c
index 5200fb2..0e9f912 100644
--- a/goffice/utils/go-image.c
+++ b/goffice/utils/go-image.c
@@ -346,6 +346,8 @@ go_image_finalize (GObject *obj)
g_free (image->data);
if (image->thumbnail)
g_object_unref (image->thumbnail);
+ if (image->pixbuf)
+ g_object_unref (image->pixbuf);
g_free (image->name);
(parent_klass->finalize) (obj);
}
@@ -391,7 +393,9 @@ go_image_get_thumbnail (GOImage *image)
GdkPixbuf *
go_image_get_pixbuf (GOImage *image)
{
- return ((GOImageClass *) G_OBJECT_GET_CLASS (image))->get_pixbuf (image);
+ if (image->pixbuf == NULL)
+ image->pixbuf = ((GOImageClass *) G_OBJECT_GET_CLASS (image))->get_pixbuf (image);
+ return g_object_ref (image->pixbuf);
}
GdkPixbuf *
diff --git a/goffice/utils/go-image.h b/goffice/utils/go-image.h
index 65019d6..16ad5b9 100644
--- a/goffice/utils/go-image.h
+++ b/goffice/utils/go-image.h
@@ -70,6 +70,7 @@ struct _GOImage {
guint8 *data;
double width, height;
GdkPixbuf *thumbnail;
+ GdkPixbuf *pixbuf;
char *name;
};
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]