Commit 2b7c95c7 authored by Dom Lachowicz's avatar Dom Lachowicz Committed by Dom Lachowicz

Update documentation. I'm pretty happy with how things look and are

2006-02-04 Dom Lachowicz <cinamod@hotmail.com>

	* doc/*: Update documentation. I'm pretty happy with how things look
	and are arranged now.

2006-02-04 Robert Staudinger <robert.staudinger@gmail.com>

	* rsvg-gobject.c: RsvgHandle now derives from GObject. This doesn't
	break API/ABI.
parent 844854dd
2006-02-04 Dom Lachowicz <cinamod@hotmail.com>
* doc/*: Update documentation. I'm pretty happy with how things look
and are arranged now.
2006-02-04 Robert Staudinger <robert.staudinger@gmail.com>
* rsvg-gobject.c: RsvgHandle now derives from GObject. This doesn't
break API/ABI.
2006-02-03 Caleb Moore <c.moore@student.unsw.edu.au>
* rsvg-cairo-draw.c: fixed a nasty pattern regression I made a month ago when I was cleaning up the code.
......
......@@ -69,6 +69,7 @@ librsvg_2_la_SOURCES = \
rsvg-cairo-clip.h \
rsvg-cairo-clip.c \
rsvg.c \
rsvg-gobject.c \
rsvg-file-util.c
librsvg_2_la_LDFLAGS = -version-info @VERSION_INFO@ -export-dynamic -no-undefined -export-symbols $(srcdir)/librsvg.def
......
......@@ -15,7 +15,7 @@ DOC_SOURCE_DIR=..
SCANGOBJ_OPTIONS=--type-init-func="g_type_init ()"
# Extra options to supply to gtkdoc-scan
SCAN_OPTIONS=
SCAN_OPTIONS=--deprecated-guards=RSVG_DISABLE_DEPRECATED
# Extra options to supply to gtkdoc-mkdb
MKDB_OPTIONS = --sgml-mode --output-format=xml --ignore-files=trio
......
......@@ -6,7 +6,7 @@
<!ENTITY % local.notation.class "| PNG">
<!ENTITY RSVG SYSTEM "xml/rsvg.xml">
<!ENTITY Cairo SYSTEM "xml/rsvg-cairo.xml">
<!ENTITY Utilities SYSTEM "xml/rsvg-file-util.xml">
<!ENTITY GdkPixbuf SYSTEM "xml/rsvg-file-util.xml">
<!ENTITY ObjectIndex SYSTEM "xml/object_index.sgml">
<!ENTITY TreeIndex SYSTEM "xml/tree_index.sgml">
]>
......@@ -80,9 +80,9 @@ Using RSVG with Cairo
<part>
<title>
Utility and Convenience Functions
Using RSVG with GdkPixbuf
</title>
&Utilities;
&GdkPixbuf;
</part>
<index>
......
......@@ -2,6 +2,7 @@
<FILE>rsvg</FILE>
<TITLE>Core API</TITLE>
RsvgError
RSVG_ERROR
rsvg_error_quark
rsvg_init
rsvg_term
......@@ -13,10 +14,11 @@ rsvg_handle_set_dpi
rsvg_handle_set_dpi_x_y
rsvg_handle_write
rsvg_handle_close
rsvg_handle_new_from_data
rsvg_handle_new_from_file
RsvgDimensionData
RsvgSizeFunc
rsvg_handle_set_size_callback
rsvg_handle_get_pixbuf
rsvg_handle_get_pixbuf_sub
rsvg_handle_get_base_uri
rsvg_handle_set_base_uri
rsvg_handle_get_title
......@@ -26,16 +28,16 @@ rsvg_handle_get_dimensions
<SECTION>
<FILE>rsvg-cairo</FILE>
<TITLE>Rendering SVG files with cairo</TITLE>
<TITLE>Cairo</TITLE>
rsvg_cairo_render
rsvg_cairo_render_sub
</SECTION>
<SECTION>
<FILE>rsvg-file-util</FILE>
<TITLE>Convenience Functions</TITLE>
rsvg_handle_new_from_data
rsvg_handle_new_from_file
<TITLE>GdkPixbuf</TITLE>
rsvg_handle_get_pixbuf
rsvg_handle_get_pixbuf_sub
rsvg_pixbuf_from_file
rsvg_pixbuf_from_file_at_zoom
rsvg_pixbuf_from_file_at_size
......
......@@ -2,11 +2,13 @@
Utility/Convenience Functions
<!-- ##### SECTION Short_Description ##### -->
<para>
How to render SVGs into GdkPixbufs, for easy use in GTK+ applications
</para>
<!-- ##### SECTION Long_Description ##### -->
<para>
GdkPixbuf is a library for image loading and manipulation. It is part of the cross-platform GTK+ widget toolkit.
</para>
<!-- ##### SECTION See_Also ##### -->
......@@ -17,24 +19,22 @@ Utility/Convenience Functions
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### FUNCTION rsvg_handle_new_from_data ##### -->
<!-- ##### FUNCTION rsvg_handle_get_pixbuf ##### -->
<para>
</para>
@data:
@data_len:
@error:
@handle:
@Returns:
<!-- ##### FUNCTION rsvg_handle_new_from_file ##### -->
<!-- ##### FUNCTION rsvg_handle_get_pixbuf_sub ##### -->
<para>
</para>
@file_name:
@error:
@handle:
@id:
@Returns:
......
......@@ -22,12 +22,6 @@
Creating a SVGZ reader
<!-- ##### MACRO RSVG_ERROR ##### -->
<para>
</para>
<!-- ##### FUNCTION rsvg_handle_new_gz ##### -->
<para>
......
......@@ -2,11 +2,16 @@
Core API
<!-- ##### SECTION Short_Description ##### -->
<para>
Create and manipulate SVG objects
</para>
<!-- ##### SECTION Long_Description ##### -->
<para>
librsvg is a component used within software applications to enable support for SVG-format scalable graphics. In contrast to raster formats, scalable vector graphics provide users and artists a way to create, view, and provide imagery that is not limited to the pixel or dot density that an output device is capable of.
</para>
<para>
Many software developers use the librsvg library to render SVG graphics. It is lightweight and portable.
</para>
<!-- ##### SECTION See_Also ##### -->
......@@ -24,6 +29,13 @@ Core API
@RSVG_ERROR_FAILED:
<!-- ##### MACRO RSVG_ERROR ##### -->
<para>
</para>
<!-- ##### FUNCTION rsvg_error_quark ##### -->
<para>
......@@ -52,9 +64,6 @@ Core API
</para>
@dpi:
<!-- # Unused Parameters # -->
@dpi_x:
@dpi_y:
<!-- ##### FUNCTION rsvg_set_default_dpi_x_y ##### -->
......@@ -89,9 +98,6 @@ Core API
@handle:
@dpi:
<!-- # Unused Parameters # -->
@dpi_x:
@dpi_y:
<!-- ##### FUNCTION rsvg_handle_set_dpi_x_y ##### -->
......@@ -126,44 +132,56 @@ Core API
@Returns:
<!-- ##### USER_FUNCTION RsvgSizeFunc ##### -->
<!-- ##### FUNCTION rsvg_handle_new_from_data ##### -->
<para>
</para>
@width:
@height:
@user_data:
@data:
@data_len:
@error:
@Returns:
<!-- ##### FUNCTION rsvg_handle_set_size_callback ##### -->
<!-- ##### FUNCTION rsvg_handle_new_from_file ##### -->
<para>
</para>
@handle:
@size_func:
@user_data:
@user_data_destroy:
@file_name:
@error:
@Returns:
<!-- ##### FUNCTION rsvg_handle_get_pixbuf ##### -->
<!-- ##### STRUCT RsvgDimensionData ##### -->
<para>
</para>
@handle:
@Returns:
@width:
@height:
@em:
@ex:
<!-- ##### USER_FUNCTION RsvgSizeFunc ##### -->
<para>
<!-- ##### FUNCTION rsvg_handle_get_pixbuf_sub ##### -->
</para>
@width:
@height:
@user_data:
<!-- ##### FUNCTION rsvg_handle_set_size_callback ##### -->
<para>
</para>
@handle:
@id:
@Returns:
@size_func:
@user_data:
@user_data_destroy:
<!-- ##### FUNCTION rsvg_handle_get_base_uri ##### -->
......
......@@ -28,6 +28,7 @@ EXPORTS
rsvg_pixbuf_from_file_at_zoom_with_max
rsvg_cairo_render
rsvg_cairo_render_sub
rsvg_handle_get_type
_rsvg_size_callback
_rsvg_acquire_xlink_href_resource
rsvg_pixbuf_from_data_with_size_data
......@@ -56,23 +56,8 @@
*/
#define RSVG_DEFAULT_DPI_X 90.0
#define RSVG_DEFAULT_DPI_Y 90.0
static double internal_dpi_x = RSVG_DEFAULT_DPI_X;
static double internal_dpi_y = RSVG_DEFAULT_DPI_Y;
static void
rsvg_ctx_free_helper (gpointer key, gpointer value, gpointer user_data)
{
xmlEntityPtr entval = (xmlEntityPtr)value;
/* key == entval->name, so it's implicitly freed below */
g_free ((char *) entval->name);
g_free ((char *) entval->ExternalID);
g_free ((char *) entval->SystemID);
xmlFree (entval->content);
xmlFree (entval->orig);
g_free (entval);
}
double rsvg_internal_dpi_x = RSVG_DEFAULT_DPI_X;
double rsvg_internal_dpi_y = RSVG_DEFAULT_DPI_Y;
typedef struct _RsvgSaxHandlerDefs {
RsvgSaxHandler super;
......@@ -698,7 +683,7 @@ rsvg_error_cb (void *data, const char *msg, ...)
static xmlSAXHandler rsvgSAXHandlerStruct;
static gboolean rsvgSAXHandlerStructInited = FALSE;
static void rsvg_SAX_handler_struct_init()
void rsvg_SAX_handler_struct_init (void)
{
if(!rsvgSAXHandlerStructInited)
{
......@@ -878,29 +863,6 @@ rsvg_drawing_ctx_free (RsvgDrawingCtx *handle)
g_free (handle);
}
static void
rsvg_handle_free_impl (RsvgHandle *handle)
{
g_hash_table_foreach (handle->entities, rsvg_ctx_free_helper, NULL);
g_hash_table_destroy (handle->entities);
rsvg_defs_free (handle->defs);
g_hash_table_destroy (handle->css_props);
if (handle->user_data_destroy)
(* handle->user_data_destroy) (handle->user_data);
if (handle->title)
g_string_free (handle->title, TRUE);
if (handle->desc)
g_string_free (handle->desc, TRUE);
if (handle->metadata)
g_string_free (handle->metadata, TRUE);
if (handle->base_uri)
g_free (handle->base_uri);
g_free (handle);
}
/**
* rsvg_handle_get_metadata:
* @handle: An #RsvgHandle
......@@ -964,43 +926,6 @@ G_CONST_RETURN char *rsvg_handle_get_desc (RsvgHandle *handle)
return NULL;
}
/**
* rsvg_handle_new:
*
* Returns a new rsvg handle. Must be freed with @rsvg_handle_free. This
* handle can be used for dynamically loading an image. You need to feed it
* data using @rsvg_handle_write, then call @rsvg_handle_close when done. No
* more than one image can be loaded with one handle.
*
* Returns: A new #RsvgHandle
**/
RsvgHandle *
rsvg_handle_new (void)
{
RsvgHandle *handle;
handle = g_new0 (RsvgHandle, 1);
handle->defs = rsvg_defs_new ();
handle->handler_nest = 0;
handle->entities = g_hash_table_new (g_str_hash, g_str_equal);
handle->dpi_x = internal_dpi_x;
handle->dpi_y = internal_dpi_y;
handle->css_props = g_hash_table_new_full (g_str_hash, g_str_equal,
g_free, g_free);
rsvg_SAX_handler_struct_init();
handle->ctxt = NULL;
handle->currentnode = NULL;
handle->treebase = NULL;
handle->finished = 0;
handle->first_write = TRUE;
return handle;
}
typedef struct {
RsvgRender super;
RsvgBbox bbox;
......@@ -1206,14 +1131,14 @@ void
rsvg_set_default_dpi_x_y (double dpi_x, double dpi_y)
{
if (dpi_x <= 0.)
internal_dpi_x = RSVG_DEFAULT_DPI_X;
rsvg_internal_dpi_x = RSVG_DEFAULT_DPI_X;
else
internal_dpi_x = dpi_x;
rsvg_internal_dpi_x = dpi_x;
if (dpi_y <= 0.)
internal_dpi_y = RSVG_DEFAULT_DPI_Y;
rsvg_internal_dpi_y = RSVG_DEFAULT_DPI_Y;
else
internal_dpi_y = dpi_y;
rsvg_internal_dpi_y = dpi_y;
}
/**
......@@ -1251,12 +1176,12 @@ rsvg_handle_set_dpi_x_y (RsvgHandle * handle, double dpi_x, double dpi_y)
g_return_if_fail (handle != NULL);
if (dpi_x <= 0.)
handle->dpi_x = internal_dpi_x;
handle->dpi_x = rsvg_internal_dpi_x;
else
handle->dpi_x = dpi_x;
if (dpi_y <= 0.)
handle->dpi_y = internal_dpi_y;
handle->dpi_y = rsvg_internal_dpi_y;
else
handle->dpi_y = dpi_y;
}
......@@ -1273,6 +1198,8 @@ rsvg_handle_set_dpi_x_y (RsvgHandle * handle, double dpi_x, double dpi_y)
* in to the function, which may then modify these values to set the real size
* of the generated pixbuf. If the image has no associated size, then the size
* arguments are set to -1.
*
* Deprecated: Set up a cairo matrix and use rsvg_cairo_render() instead.
**/
void
rsvg_handle_set_size_callback (RsvgHandle *handle,
......@@ -1407,18 +1334,14 @@ rsvg_handle_close (RsvgHandle *handle,
* @handle: An #RsvgHandle
*
* Frees #handle.
* Deprecated: Use g_object_unref() instead.
**/
void
rsvg_handle_free (RsvgHandle *handle)
{
g_return_if_fail(handle);
#if HAVE_SVGZ
if (handle->is_gzipped)
g_object_unref (G_OBJECT (handle->gzipped_data));
#endif
rsvg_handle_free_impl (handle);
g_object_unref (G_OBJECT (handle));
}
#ifdef HAVE_GNOME_VFS
......
......@@ -217,6 +217,7 @@ rsvg_pixbuf_from_file_with_size_data (const gchar * file_name,
* set and %NULL is returned.
*
* Return value: A newly allocated #GdkPixbuf, or %NULL
* Deprecated: Set up a cairo matrix and use rsvg_handle_new_from_file() + rsvg_cairo_render() instead.
**/
GdkPixbuf *
rsvg_pixbuf_from_file (const gchar *file_name,
......@@ -238,6 +239,7 @@ rsvg_pixbuf_from_file (const gchar *file_name,
* occurred, @error is set and %NULL is returned.
*
* Return value: A newly allocated #GdkPixbuf, or %NULL
* Deprecated: Set up a cairo matrix and use rsvg_handle_new_from_file() + rsvg_cairo_render() instead.
**/
GdkPixbuf *
rsvg_pixbuf_from_file_at_zoom (const gchar *file_name,
......@@ -274,6 +276,7 @@ rsvg_pixbuf_from_file_at_zoom (const gchar *file_name,
* returned pixbuf. If an error occurred, @error is set and %NULL is returned.
*
* Return value: A newly allocated #GdkPixbuf, or %NULL
* Deprecated: Set up a cairo matrix and use rsvg_handle_new_from_file() + rsvg_cairo_render() instead.
**/
GdkPixbuf *
rsvg_pixbuf_from_file_at_zoom_with_max (const gchar *file_name,
......@@ -312,6 +315,7 @@ rsvg_pixbuf_from_file_at_zoom_with_max (const gchar *file_name,
* error occurred, @error is set and %NULL is returned.
*
* Return value: A newly allocated #GdkPixbuf, or %NULL
* Deprecated: Set up a cairo matrix and use rsvg_handle_new_from_file() + rsvg_cairo_render() instead.
**/
GdkPixbuf *
rsvg_pixbuf_from_file_at_size (const gchar *file_name,
......@@ -342,6 +346,7 @@ rsvg_pixbuf_from_file_at_size (const gchar *file_name,
* @error is set and %NULL is returned.
*
* Return value: A newly allocated #GdkPixbuf, or %NULL
* Deprecated: Set up a cairo matrix and use rsvg_handle_new_from_file() + rsvg_cairo_render() instead.
**/
GdkPixbuf *
rsvg_pixbuf_from_file_at_max_size (const gchar *file_name,
......
/* vim: set sw=4: -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/*
rsvg-gobject.c: GObject support.
Copyright (C) 2006 Robert Staudinger <robert.staudinger@gmail.com>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this program; if not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include "rsvg-private.h"
#include "rsvg-defs.h"
enum {
PROP_0,
PROP_DPI_X,
PROP_DPI_Y,
PROP_BASE_URI,
PROP_TITLE,
PROP_DESC,
PROP_METADATA,
NUM_PROPS
};
extern double rsvg_internal_dpi_x;
extern double rsvg_internal_dpi_y;
static GObjectClass *rsvg_parent_class = NULL;
static void
instance_init (RsvgHandle *self)
{
self->defs = rsvg_defs_new ();
self->handler_nest = 0;
self->entities = g_hash_table_new (g_str_hash, g_str_equal);
self->dpi_x = rsvg_internal_dpi_x;
self->dpi_y = rsvg_internal_dpi_y;
self->css_props = g_hash_table_new_full (g_str_hash, g_str_equal,
g_free, g_free);
rsvg_SAX_handler_struct_init ();
self->ctxt = NULL;
self->currentnode = NULL;
self->treebase = NULL;
self->finished = 0;
self->first_write = TRUE;
self->is_disposed = FALSE;
}
static void
rsvg_ctx_free_helper (gpointer key, gpointer value, gpointer user_data)
{
xmlEntityPtr entval = (xmlEntityPtr)value;
/* key == entval->name, so it's implicitly freed below */
g_free ((char *) entval->name);
g_free ((char *) entval->ExternalID);
g_free ((char *) entval->SystemID);
xmlFree (entval->content);
xmlFree (entval->orig);
g_free (entval);
}
static void
instance_dispose (GObject *instance)
{
RsvgHandle *self = (RsvgHandle*) instance;
if (self->is_disposed)
return;
self->is_disposed = TRUE;
#if HAVE_SVGZ
if (self->is_gzipped)
g_object_unref (G_OBJECT (self->gzipped_data));
#endif
g_hash_table_foreach (self->entities, rsvg_ctx_free_helper, NULL);
g_hash_table_destroy (self->entities);
rsvg_defs_free (self->defs);
g_hash_table_destroy (self->css_props);
if (self->user_data_destroy)
(* self->user_data_destroy) (self->user_data);
if (self->title)
g_string_free (self->title, TRUE);
if (self->desc)
g_string_free (self->desc, TRUE);
if (self->metadata)
g_string_free (self->metadata, TRUE);
if (self->base_uri)
g_free (self->base_uri);
rsvg_parent_class->dispose (G_OBJECT (self));
}
static void
set_property (GObject *instance,
guint prop_id,
GValue const *value,
GParamSpec *pspec)
{
RsvgHandle *self = RSVG_HANDLE (instance);
switch (prop_id) {
case PROP_DPI_X:
rsvg_handle_set_dpi_x_y (self, g_value_get_double (value), self->dpi_y);
break;
case PROP_DPI_Y:
rsvg_handle_set_dpi_x_y (self, self->dpi_x, g_value_get_double (value));
break;
case PROP_BASE_URI:
rsvg_handle_set_base_uri (self, g_value_get_string (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (instance, prop_id, pspec);
}
}
static void
get_property (GObject *instance,
guint prop_id,
GValue *value,
GParamSpec *pspec)
{
RsvgHandle *self = RSVG_HANDLE (instance);
switch (prop_id) {
case PROP_DPI_X:
g_value_set_double (value, self->dpi_x);
break;
case PROP_DPI_Y:
g_value_set_double (value, self->dpi_y);
break;
case PROP_BASE_URI:
g_value_set_string (value, rsvg_handle_get_base_uri (self));
break;
case PROP_TITLE:
g_value_set_string (value, rsvg_handle_get_title (self));
break;
case PROP_DESC:
g_value_set_string (value, rsvg_handle_get_desc (self));
break;
case PROP_METADATA:
g_value_set_string (value, rsvg_handle_get_metadata (self));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (instance, prop_id, pspec);
}
}
static void
class_init (RsvgHandleClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
/* hook gobject vfuncs */
gobject_class->dispose = instance_dispose;
rsvg_parent_class = (GObjectClass*) g_type_class_peek_parent (klass);
gobject_class->set_property = set_property;
gobject_class->get_property = get_property;
/**
* dpi-x:
*/
g_object_class_install_property (gobject_class,
PROP_DPI_X,
g_param_spec_double ("dpi-x", _("Horizontal resolution"),
_("Horizontal resolution"), 0., G_MAXDOUBLE, rsvg_internal_dpi_x,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_CONSTRUCT)));
g_object_class_install_property (gobject_class,
PROP_DPI_Y,
g_param_spec_double ("dpi-y", _("Vertical resolution"),
_("Vertical resolution"), 0., G_MAXDOUBLE, rsvg_internal_dpi_y,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_CONSTRUCT)));
g_object_class_install_property (gobject_class,
PROP_BASE_URI,
g_param_spec_string ("base-uri", _("Base URI"),
_("Base URI"), NULL,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_CONSTRUCT)));
g_object_class_install_property (gobject_class,
PROP_TITLE,
g_param_spec_string ("title", _("Title"),
_("SVG file title"), NULL,
(GParamFlags)(G_PARAM_READABLE)));
g_object_class_install_property (gobject_class,
PROP_DESC,
g_param_spec_string ("desc", _("Description"),
_("SVG file description"), NULL,
(GParamFlags)(G_PARAM_READABLE)));
g_object_class_install_property (gobject_class,
PROP_METADATA,
g_param_spec_string ("metadata", _("Metadata"),
_("SVG file metadata"), NULL,
(GParamFlags)(G_PARAM_READABLE)));
}
GType
rsvg_handle_get_type (void)
{
static GType type = 0;
if (!type) {
static const GTypeInfo info = {
sizeof (RsvgHandleClass),
NULL, /* base_init */
NULL, /* base_finalize */
(GClassInitFunc) class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (RsvgHandle),
0, /* n_preallocs */
(GInstanceInitFunc) instance_init,
};
type = g_type_register_static (G_TYPE_OBJECT, "RsvgHandle", &info, (GTypeFlags)0);
}
return type;
}
/**
* rsvg_handle_new:
*
* Returns a new rsvg handle. Must be freed with @rsvg_handle_free. This
* handle can be used for dynamically loading an image. You need to feed it
* data using @rsvg_handle_write, then call @rsvg_handle_close when done. No
* more than one image can be loaded with one handle.
*
* Returns: A new #RsvgHandle
**/
RsvgHandle *
rsvg_handle_new (void)
{
return RSVG_HANDLE (g_object_new (RSVG_TYPE_HANDLE, NULL));
}
......@@ -33,6 +33,7 @@
#include <libxml/xmlmemory.h>
#include <pango/pango.h>
#include <glib/gslist.h>
#include <glib-object.h>
#include <math.h>
G_BEGIN_DECLS
......@@ -72,9 +73,16 @@ struct RsvgSaxHandler {
void (*characters) (RsvgSaxHandler *self, const xmlChar *ch, int len);
};
struct RsvgHandleClass {
GObjectClass parent;
};
/* Contextual information for the parsing phase*/
struct RsvgHandle {
GObject parent;