summaryrefslogtreecommitdiff
authorBenjamin Otte <otte@redhat.com>2010-08-07 18:05:42 (GMT)
committer Benjamin Otte <otte@redhat.com>2010-08-07 18:19:27 (GMT)
commit661f4859cdbc0394ed0a9db34ced0f4e2bbe78ff (patch) (side-by-side diff)
tree1b5d218bc7ca1802540e1abcd606d6ccb4e802fd
parentfc4e8f036326da1839ec5320eba60823e7efc2db (diff)
downloadcairo-661f4859cdbc0394ed0a9db34ced0f4e2bbe78ff.zip
cairo-661f4859cdbc0394ed0a9db34ced0f4e2bbe78ff.tar.gz
Add cairo-gobject library
This library is supposed to contain GType declarations for Cairo types. It is also meant to support gobject-introspection binding creation.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--boilerplate/Makefile.win32.features12
-rw-r--r--build/Makefile.win32.features1
-rw-r--r--build/Makefile.win32.features-h3
-rw-r--r--configure.ac10
-rw-r--r--src/Makefile.win32.features16
-rw-r--r--util/Makefile.am4
-rw-r--r--util/cairo-gobject/Makefile.am15
-rw-r--r--util/cairo-gobject/cairo-gobject-enums.c519
-rw-r--r--util/cairo-gobject/cairo-gobject-structs.c87
-rw-r--r--util/cairo-gobject/cairo-gobject.h186
10 files changed, 853 insertions, 0 deletions
diff --git a/boilerplate/Makefile.win32.features b/boilerplate/Makefile.win32.features
index ee59071..a72d233 100644
--- a/boilerplate/Makefile.win32.features
+++ b/boilerplate/Makefile.win32.features
@@ -463,6 +463,18 @@ enabled_cairo_boilerplate_cxx_sources += $(cairo_boilerplate_pthread_cxx_sources
enabled_cairo_boilerplate_sources += $(cairo_boilerplate_pthread_sources)
endif
+supported_cairo_boilerplate_headers += $(cairo_boilerplate_gobject_headers)
+all_cairo_boilerplate_headers += $(cairo_boilerplate_gobject_headers)
+all_cairo_boilerplate_private += $(cairo_boilerplate_gobject_private)
+all_cairo_boilerplate_cxx_sources += $(cairo_boilerplate_gobject_cxx_sources)
+all_cairo_boilerplate_sources += $(cairo_boilerplate_gobject_sources)
+ifeq ($(CAIRO_HAS_GOBJECT_FUNCTIONS),1)
+enabled_cairo_boilerplate_headers += $(cairo_boilerplate_gobject_headers)
+enabled_cairo_boilerplate_private += $(cairo_boilerplate_gobject_private)
+enabled_cairo_boilerplate_cxx_sources += $(cairo_boilerplate_gobject_cxx_sources)
+enabled_cairo_boilerplate_sources += $(cairo_boilerplate_gobject_sources)
+endif
+
all_cairo_boilerplate_private += $(cairo_boilerplate_trace_private) $(cairo_boilerplate_trace_headers)
all_cairo_boilerplate_cxx_sources += $(cairo_boilerplate_trace_cxx_sources)
all_cairo_boilerplate_sources += $(cairo_boilerplate_trace_sources)
diff --git a/build/Makefile.win32.features b/build/Makefile.win32.features
index 7e60617..c8f4a7c 100644
--- a/build/Makefile.win32.features
+++ b/build/Makefile.win32.features
@@ -35,6 +35,7 @@ CAIRO_HAS_TEST_SURFACES=0
CAIRO_HAS_TEE_SURFACE=0
CAIRO_HAS_XML_SURFACE=0
CAIRO_HAS_PTHREAD=0
+CAIRO_HAS_GOBJECT_FUNCTIONS=1
CAIRO_HAS_TRACE=0
CAIRO_HAS_INTERPRETER=1
CAIRO_HAS_SYMBOL_LOOKUP=0
diff --git a/build/Makefile.win32.features-h b/build/Makefile.win32.features-h
index 2106f02..f5cbcf1 100644
--- a/build/Makefile.win32.features-h
+++ b/build/Makefile.win32.features-h
@@ -113,6 +113,9 @@ endif
ifeq ($(CAIRO_HAS_PTHREAD),1)
@echo "#define CAIRO_HAS_PTHREAD 1" >> src/cairo-features.h
endif
+ifeq ($(CAIRO_HAS_GOBJECT_FUNCTIONS),1)
+ @echo "#define CAIRO_HAS_GOBJECT_FUNCTIONS 1" >> src/cairo-features.h
+endif
ifeq ($(CAIRO_HAS_TRACE),1)
@echo "#define CAIRO_HAS_TRACE 1" >> src/cairo-features.h
endif
diff --git a/configure.ac b/configure.ac
index e75f0db..3c30841 100644
--- a/configure.ac
+++ b/configure.ac
@@ -652,6 +652,15 @@ AC_SUBST(real_pthread_LIBS)
dnl ===========================================================================
+dnl Build gobject integration library
+
+CAIRO_ENABLE_FUNCTIONS(gobject, gobject, yes, [
+ gobject_REQUIRES="gobject-2.0"
+ PKG_CHECK_MODULES(gobject, $gobject_REQUIRES, , [AC_MSG_RESULT(no)
+ use_gobject="no (requires $gobject_REQUIRES http://download.gnome.org/pub/GNOME/sources/glib/)"])
+])
+
+dnl ===========================================================================
dnl Default to quick testing during development, but force a full test before
dnl release
@@ -791,6 +800,7 @@ test/pdiff/Makefile
perf/Makefile
util/Makefile
util/cairo-fdr/Makefile
+util/cairo-gobject/Makefile
util/cairo-script/Makefile
util/cairo-script/examples/Makefile
util/cairo-sphinx/Makefile
diff --git a/src/Makefile.win32.features b/src/Makefile.win32.features
index 4e3b74a..fb47816 100644
--- a/src/Makefile.win32.features
+++ b/src/Makefile.win32.features
@@ -597,6 +597,22 @@ enabled_cairo_cxx_sources += $(cairo_pthread_cxx_sources)
enabled_cairo_sources += $(cairo_pthread_sources)
endif
+supported_cairo_headers += $(cairo_gobject_headers)
+all_cairo_headers += $(cairo_gobject_headers)
+all_cairo_private += $(cairo_gobject_private)
+all_cairo_cxx_sources += $(cairo_gobject_cxx_sources)
+all_cairo_sources += $(cairo_gobject_sources)
+ifeq ($(CAIRO_HAS_GOBJECT_FUNCTIONS),1)
+enabled_cairo_headers += $(cairo_gobject_headers)
+enabled_cairo_private += $(cairo_gobject_private)
+enabled_cairo_cxx_sources += $(cairo_gobject_cxx_sources)
+enabled_cairo_sources += $(cairo_gobject_sources)
+endif
+all_cairo_pkgconf += cairo-gobject.pc
+ifeq ($(CAIRO_HAS_GOBJECT_FUNCTIONS),1)
+enabled_cairo_pkgconf += cairo-gobject.pc
+endif
+
all_cairo_private += $(cairo_trace_private) $(cairo_trace_headers)
all_cairo_cxx_sources += $(cairo_trace_cxx_sources)
all_cairo_sources += $(cairo_trace_sources)
diff --git a/util/Makefile.am b/util/Makefile.am
index 4394fe3..0826763 100644
--- a/util/Makefile.am
+++ b/util/Makefile.am
@@ -2,6 +2,10 @@ include $(top_srcdir)/build/Makefile.am.common
SUBDIRS = .
+if CAIRO_HAS_GOBJECT_FUNCTIONS
+SUBDIRS += cairo-gobject
+endif
+
if CAIRO_HAS_INTERPRETER
SUBDIRS += cairo-script
endif
diff --git a/util/cairo-gobject/Makefile.am b/util/cairo-gobject/Makefile.am
new file mode 100644
index 0000000..22c1a27
--- a/dev/null
+++ b/util/cairo-gobject/Makefile.am
@@ -0,0 +1,15 @@
+lib_LTLIBRARIES = libcairo-gobject.la
+
+AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_builddir)/src
+
+cairoincludedir=$(includedir)/cairo
+cairoinclude_HEADERS = cairo-gobject.h
+libcairo_gobject_la_SOURCES = \
+ cairo-gobject-enums.c \
+ cairo-gobject-structs.c \
+ $(NULL)
+
+libcairo_gobject_la_CFLAGS = $(CAIRO_CFLAGS) $(GOBJECT_CFLAGS)
+libcairo_gobject_la_LDFLAGS = -version-info $(CAIRO_LIBTOOL_VERSION_INFO) -no-undefined $(export_symbols)
+libcairo_gobject_la_LIBADD = $(top_builddir)/src/libcairo.la $(CAIRO_LIBS) $(GOBJECT_LIBS)
+
diff --git a/util/cairo-gobject/cairo-gobject-enums.c b/util/cairo-gobject/cairo-gobject-enums.c
new file mode 100644
index 0000000..c91cfea
--- a/dev/null
+++ b/util/cairo-gobject/cairo-gobject-enums.c
@@ -0,0 +1,519 @@
+
+/* Generated data (by glib-mkenums) */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "cairo-gobject.h"
+
+GType
+cairo_gobject_status_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_STATUS_SUCCESS, "CAIRO_STATUS_SUCCESS", "success" },
+ { CAIRO_STATUS_NO_MEMORY, "CAIRO_STATUS_NO_MEMORY", "no-memory" },
+ { CAIRO_STATUS_INVALID_RESTORE, "CAIRO_STATUS_INVALID_RESTORE", "invalid-restore" },
+ { CAIRO_STATUS_INVALID_POP_GROUP, "CAIRO_STATUS_INVALID_POP_GROUP", "invalid-pop-group" },
+ { CAIRO_STATUS_NO_CURRENT_POINT, "CAIRO_STATUS_NO_CURRENT_POINT", "no-current-point" },
+ { CAIRO_STATUS_INVALID_MATRIX, "CAIRO_STATUS_INVALID_MATRIX", "invalid-matrix" },
+ { CAIRO_STATUS_INVALID_STATUS, "CAIRO_STATUS_INVALID_STATUS", "invalid-status" },
+ { CAIRO_STATUS_NULL_POINTER, "CAIRO_STATUS_NULL_POINTER", "null-pointer" },
+ { CAIRO_STATUS_INVALID_STRING, "CAIRO_STATUS_INVALID_STRING", "invalid-string" },
+ { CAIRO_STATUS_INVALID_PATH_DATA, "CAIRO_STATUS_INVALID_PATH_DATA", "invalid-path-data" },
+ { CAIRO_STATUS_READ_ERROR, "CAIRO_STATUS_READ_ERROR", "read-error" },
+ { CAIRO_STATUS_WRITE_ERROR, "CAIRO_STATUS_WRITE_ERROR", "write-error" },
+ { CAIRO_STATUS_SURFACE_FINISHED, "CAIRO_STATUS_SURFACE_FINISHED", "surface-finished" },
+ { CAIRO_STATUS_SURFACE_TYPE_MISMATCH, "CAIRO_STATUS_SURFACE_TYPE_MISMATCH", "surface-type-mismatch" },
+ { CAIRO_STATUS_PATTERN_TYPE_MISMATCH, "CAIRO_STATUS_PATTERN_TYPE_MISMATCH", "pattern-type-mismatch" },
+ { CAIRO_STATUS_INVALID_CONTENT, "CAIRO_STATUS_INVALID_CONTENT", "invalid-content" },
+ { CAIRO_STATUS_INVALID_FORMAT, "CAIRO_STATUS_INVALID_FORMAT", "invalid-format" },
+ { CAIRO_STATUS_INVALID_VISUAL, "CAIRO_STATUS_INVALID_VISUAL", "invalid-visual" },
+ { CAIRO_STATUS_FILE_NOT_FOUND, "CAIRO_STATUS_FILE_NOT_FOUND", "file-not-found" },
+ { CAIRO_STATUS_INVALID_DASH, "CAIRO_STATUS_INVALID_DASH", "invalid-dash" },
+ { CAIRO_STATUS_INVALID_DSC_COMMENT, "CAIRO_STATUS_INVALID_DSC_COMMENT", "invalid-dsc-comment" },
+ { CAIRO_STATUS_INVALID_INDEX, "CAIRO_STATUS_INVALID_INDEX", "invalid-index" },
+ { CAIRO_STATUS_CLIP_NOT_REPRESENTABLE, "CAIRO_STATUS_CLIP_NOT_REPRESENTABLE", "clip-not-representable" },
+ { CAIRO_STATUS_TEMP_FILE_ERROR, "CAIRO_STATUS_TEMP_FILE_ERROR", "temp-file-error" },
+ { CAIRO_STATUS_INVALID_STRIDE, "CAIRO_STATUS_INVALID_STRIDE", "invalid-stride" },
+ { CAIRO_STATUS_FONT_TYPE_MISMATCH, "CAIRO_STATUS_FONT_TYPE_MISMATCH", "font-type-mismatch" },
+ { CAIRO_STATUS_USER_FONT_IMMUTABLE, "CAIRO_STATUS_USER_FONT_IMMUTABLE", "user-font-immutable" },
+ { CAIRO_STATUS_USER_FONT_ERROR, "CAIRO_STATUS_USER_FONT_ERROR", "user-font-error" },
+ { CAIRO_STATUS_NEGATIVE_COUNT, "CAIRO_STATUS_NEGATIVE_COUNT", "negative-count" },
+ { CAIRO_STATUS_INVALID_CLUSTERS, "CAIRO_STATUS_INVALID_CLUSTERS", "invalid-clusters" },
+ { CAIRO_STATUS_INVALID_SLANT, "CAIRO_STATUS_INVALID_SLANT", "invalid-slant" },
+ { CAIRO_STATUS_INVALID_WEIGHT, "CAIRO_STATUS_INVALID_WEIGHT", "invalid-weight" },
+ { CAIRO_STATUS_INVALID_SIZE, "CAIRO_STATUS_INVALID_SIZE", "invalid-size" },
+ { CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, "CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED", "user-font-not-implemented" },
+ { CAIRO_STATUS_DEVICE_TYPE_MISMATCH, "CAIRO_STATUS_DEVICE_TYPE_MISMATCH", "device-type-mismatch" },
+ { CAIRO_STATUS_DEVICE_ERROR, "CAIRO_STATUS_DEVICE_ERROR", "device-error" },
+ { CAIRO_STATUS_LAST_STATUS, "CAIRO_STATUS_LAST_STATUS", "last-status" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_status_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_content_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_CONTENT_COLOR, "CAIRO_CONTENT_COLOR", "color" },
+ { CAIRO_CONTENT_ALPHA, "CAIRO_CONTENT_ALPHA", "alpha" },
+ { CAIRO_CONTENT_COLOR_ALPHA, "CAIRO_CONTENT_COLOR_ALPHA", "color-alpha" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_content_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_operator_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_OPERATOR_CLEAR, "CAIRO_OPERATOR_CLEAR", "clear" },
+ { CAIRO_OPERATOR_SOURCE, "CAIRO_OPERATOR_SOURCE", "source" },
+ { CAIRO_OPERATOR_OVER, "CAIRO_OPERATOR_OVER", "over" },
+ { CAIRO_OPERATOR_IN, "CAIRO_OPERATOR_IN", "in" },
+ { CAIRO_OPERATOR_OUT, "CAIRO_OPERATOR_OUT", "out" },
+ { CAIRO_OPERATOR_ATOP, "CAIRO_OPERATOR_ATOP", "atop" },
+ { CAIRO_OPERATOR_DEST, "CAIRO_OPERATOR_DEST", "dest" },
+ { CAIRO_OPERATOR_DEST_OVER, "CAIRO_OPERATOR_DEST_OVER", "dest-over" },
+ { CAIRO_OPERATOR_DEST_IN, "CAIRO_OPERATOR_DEST_IN", "dest-in" },
+ { CAIRO_OPERATOR_DEST_OUT, "CAIRO_OPERATOR_DEST_OUT", "dest-out" },
+ { CAIRO_OPERATOR_DEST_ATOP, "CAIRO_OPERATOR_DEST_ATOP", "dest-atop" },
+ { CAIRO_OPERATOR_XOR, "CAIRO_OPERATOR_XOR", "xor" },
+ { CAIRO_OPERATOR_ADD, "CAIRO_OPERATOR_ADD", "add" },
+ { CAIRO_OPERATOR_SATURATE, "CAIRO_OPERATOR_SATURATE", "saturate" },
+ { CAIRO_OPERATOR_MULTIPLY, "CAIRO_OPERATOR_MULTIPLY", "multiply" },
+ { CAIRO_OPERATOR_SCREEN, "CAIRO_OPERATOR_SCREEN", "screen" },
+ { CAIRO_OPERATOR_OVERLAY, "CAIRO_OPERATOR_OVERLAY", "overlay" },
+ { CAIRO_OPERATOR_DARKEN, "CAIRO_OPERATOR_DARKEN", "darken" },
+ { CAIRO_OPERATOR_LIGHTEN, "CAIRO_OPERATOR_LIGHTEN", "lighten" },
+ { CAIRO_OPERATOR_COLOR_DODGE, "CAIRO_OPERATOR_COLOR_DODGE", "color-dodge" },
+ { CAIRO_OPERATOR_COLOR_BURN, "CAIRO_OPERATOR_COLOR_BURN", "color-burn" },
+ { CAIRO_OPERATOR_HARD_LIGHT, "CAIRO_OPERATOR_HARD_LIGHT", "hard-light" },
+ { CAIRO_OPERATOR_SOFT_LIGHT, "CAIRO_OPERATOR_SOFT_LIGHT", "soft-light" },
+ { CAIRO_OPERATOR_DIFFERENCE, "CAIRO_OPERATOR_DIFFERENCE", "difference" },
+ { CAIRO_OPERATOR_EXCLUSION, "CAIRO_OPERATOR_EXCLUSION", "exclusion" },
+ { CAIRO_OPERATOR_HSL_HUE, "CAIRO_OPERATOR_HSL_HUE", "hsl-hue" },
+ { CAIRO_OPERATOR_HSL_SATURATION, "CAIRO_OPERATOR_HSL_SATURATION", "hsl-saturation" },
+ { CAIRO_OPERATOR_HSL_COLOR, "CAIRO_OPERATOR_HSL_COLOR", "hsl-color" },
+ { CAIRO_OPERATOR_HSL_LUMINOSITY, "CAIRO_OPERATOR_HSL_LUMINOSITY", "hsl-luminosity" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_operator_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_antialias_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_ANTIALIAS_DEFAULT, "CAIRO_ANTIALIAS_DEFAULT", "default" },
+ { CAIRO_ANTIALIAS_NONE, "CAIRO_ANTIALIAS_NONE", "none" },
+ { CAIRO_ANTIALIAS_GRAY, "CAIRO_ANTIALIAS_GRAY", "gray" },
+ { CAIRO_ANTIALIAS_SUBPIXEL, "CAIRO_ANTIALIAS_SUBPIXEL", "subpixel" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_antialias_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_fill_rule_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_FILL_RULE_WINDING, "CAIRO_FILL_RULE_WINDING", "winding" },
+ { CAIRO_FILL_RULE_EVEN_ODD, "CAIRO_FILL_RULE_EVEN_ODD", "even-odd" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_fill_rule_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_line_cap_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_LINE_CAP_BUTT, "CAIRO_LINE_CAP_BUTT", "butt" },
+ { CAIRO_LINE_CAP_ROUND, "CAIRO_LINE_CAP_ROUND", "round" },
+ { CAIRO_LINE_CAP_SQUARE, "CAIRO_LINE_CAP_SQUARE", "square" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_line_cap_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_line_join_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_LINE_JOIN_MITER, "CAIRO_LINE_JOIN_MITER", "miter" },
+ { CAIRO_LINE_JOIN_ROUND, "CAIRO_LINE_JOIN_ROUND", "round" },
+ { CAIRO_LINE_JOIN_BEVEL, "CAIRO_LINE_JOIN_BEVEL", "bevel" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_line_join_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_text_cluster_flags_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_TEXT_CLUSTER_FLAG_BACKWARD, "CAIRO_TEXT_CLUSTER_FLAG_BACKWARD", "backward" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_text_cluster_flags_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_font_slant_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_FONT_SLANT_NORMAL, "CAIRO_FONT_SLANT_NORMAL", "normal" },
+ { CAIRO_FONT_SLANT_ITALIC, "CAIRO_FONT_SLANT_ITALIC", "italic" },
+ { CAIRO_FONT_SLANT_OBLIQUE, "CAIRO_FONT_SLANT_OBLIQUE", "oblique" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_font_slant_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_font_weight_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_FONT_WEIGHT_NORMAL, "CAIRO_FONT_WEIGHT_NORMAL", "normal" },
+ { CAIRO_FONT_WEIGHT_BOLD, "CAIRO_FONT_WEIGHT_BOLD", "bold" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_font_weight_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_subpixel_order_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_SUBPIXEL_ORDER_DEFAULT, "CAIRO_SUBPIXEL_ORDER_DEFAULT", "default" },
+ { CAIRO_SUBPIXEL_ORDER_RGB, "CAIRO_SUBPIXEL_ORDER_RGB", "rgb" },
+ { CAIRO_SUBPIXEL_ORDER_BGR, "CAIRO_SUBPIXEL_ORDER_BGR", "bgr" },
+ { CAIRO_SUBPIXEL_ORDER_VRGB, "CAIRO_SUBPIXEL_ORDER_VRGB", "vrgb" },
+ { CAIRO_SUBPIXEL_ORDER_VBGR, "CAIRO_SUBPIXEL_ORDER_VBGR", "vbgr" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_subpixel_order_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_hint_style_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_HINT_STYLE_DEFAULT, "CAIRO_HINT_STYLE_DEFAULT", "default" },
+ { CAIRO_HINT_STYLE_NONE, "CAIRO_HINT_STYLE_NONE", "none" },
+ { CAIRO_HINT_STYLE_SLIGHT, "CAIRO_HINT_STYLE_SLIGHT", "slight" },
+ { CAIRO_HINT_STYLE_MEDIUM, "CAIRO_HINT_STYLE_MEDIUM", "medium" },
+ { CAIRO_HINT_STYLE_FULL, "CAIRO_HINT_STYLE_FULL", "full" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_hint_style_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_hint_metrics_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_HINT_METRICS_DEFAULT, "CAIRO_HINT_METRICS_DEFAULT", "default" },
+ { CAIRO_HINT_METRICS_OFF, "CAIRO_HINT_METRICS_OFF", "off" },
+ { CAIRO_HINT_METRICS_ON, "CAIRO_HINT_METRICS_ON", "on" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_hint_metrics_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_font_type_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_FONT_TYPE_TOY, "CAIRO_FONT_TYPE_TOY", "toy" },
+ { CAIRO_FONT_TYPE_FT, "CAIRO_FONT_TYPE_FT", "ft" },
+ { CAIRO_FONT_TYPE_WIN32, "CAIRO_FONT_TYPE_WIN32", "win32" },
+ { CAIRO_FONT_TYPE_QUARTZ, "CAIRO_FONT_TYPE_QUARTZ", "quartz" },
+ { CAIRO_FONT_TYPE_USER, "CAIRO_FONT_TYPE_USER", "user" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_font_type_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_path_data_type_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_PATH_MOVE_TO, "CAIRO_PATH_MOVE_TO", "move-to" },
+ { CAIRO_PATH_LINE_TO, "CAIRO_PATH_LINE_TO", "line-to" },
+ { CAIRO_PATH_CURVE_TO, "CAIRO_PATH_CURVE_TO", "curve-to" },
+ { CAIRO_PATH_CLOSE_PATH, "CAIRO_PATH_CLOSE_PATH", "close-path" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_path_data_type_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_device_type_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_DEVICE_TYPE_IMAGE, "CAIRO_DEVICE_TYPE_IMAGE", "image" },
+ { CAIRO_DEVICE_TYPE_PDF, "CAIRO_DEVICE_TYPE_PDF", "pdf" },
+ { CAIRO_DEVICE_TYPE_PS, "CAIRO_DEVICE_TYPE_PS", "ps" },
+ { CAIRO_DEVICE_TYPE_XLIB, "CAIRO_DEVICE_TYPE_XLIB", "xlib" },
+ { CAIRO_DEVICE_TYPE_XCB, "CAIRO_DEVICE_TYPE_XCB", "xcb" },
+ { CAIRO_DEVICE_TYPE_GLITZ, "CAIRO_DEVICE_TYPE_GLITZ", "glitz" },
+ { CAIRO_DEVICE_TYPE_QUARTZ, "CAIRO_DEVICE_TYPE_QUARTZ", "quartz" },
+ { CAIRO_DEVICE_TYPE_WIN32, "CAIRO_DEVICE_TYPE_WIN32", "win32" },
+ { CAIRO_DEVICE_TYPE_BEOS, "CAIRO_DEVICE_TYPE_BEOS", "beos" },
+ { CAIRO_DEVICE_TYPE_DIRECTFB, "CAIRO_DEVICE_TYPE_DIRECTFB", "directfb" },
+ { CAIRO_DEVICE_TYPE_SVG, "CAIRO_DEVICE_TYPE_SVG", "svg" },
+ { CAIRO_DEVICE_TYPE_OS2, "CAIRO_DEVICE_TYPE_OS2", "os2" },
+ { CAIRO_DEVICE_TYPE_WIN32_PRINTING, "CAIRO_DEVICE_TYPE_WIN32_PRINTING", "win32-printing" },
+ { CAIRO_DEVICE_TYPE_QUARTZ_IMAGE, "CAIRO_DEVICE_TYPE_QUARTZ_IMAGE", "quartz-image" },
+ { CAIRO_DEVICE_TYPE_SCRIPT, "CAIRO_DEVICE_TYPE_SCRIPT", "script" },
+ { CAIRO_DEVICE_TYPE_QT, "CAIRO_DEVICE_TYPE_QT", "qt" },
+ { CAIRO_DEVICE_TYPE_RECORDING, "CAIRO_DEVICE_TYPE_RECORDING", "recording" },
+ { CAIRO_DEVICE_TYPE_VG, "CAIRO_DEVICE_TYPE_VG", "vg" },
+ { CAIRO_DEVICE_TYPE_GL, "CAIRO_DEVICE_TYPE_GL", "gl" },
+ { CAIRO_DEVICE_TYPE_DRM, "CAIRO_DEVICE_TYPE_DRM", "drm" },
+ { CAIRO_DEVICE_TYPE_XML, "CAIRO_DEVICE_TYPE_XML", "xml" },
+ { CAIRO_DEVICE_TYPE_SKIA, "CAIRO_DEVICE_TYPE_SKIA", "skia" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_device_type_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_surface_type_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_SURFACE_TYPE_IMAGE, "CAIRO_SURFACE_TYPE_IMAGE", "image" },
+ { CAIRO_SURFACE_TYPE_PDF, "CAIRO_SURFACE_TYPE_PDF", "pdf" },
+ { CAIRO_SURFACE_TYPE_PS, "CAIRO_SURFACE_TYPE_PS", "ps" },
+ { CAIRO_SURFACE_TYPE_XLIB, "CAIRO_SURFACE_TYPE_XLIB", "xlib" },
+ { CAIRO_SURFACE_TYPE_XCB, "CAIRO_SURFACE_TYPE_XCB", "xcb" },
+ { CAIRO_SURFACE_TYPE_GLITZ, "CAIRO_SURFACE_TYPE_GLITZ", "glitz" },
+ { CAIRO_SURFACE_TYPE_QUARTZ, "CAIRO_SURFACE_TYPE_QUARTZ", "quartz" },
+ { CAIRO_SURFACE_TYPE_WIN32, "CAIRO_SURFACE_TYPE_WIN32", "win32" },
+ { CAIRO_SURFACE_TYPE_BEOS, "CAIRO_SURFACE_TYPE_BEOS", "beos" },
+ { CAIRO_SURFACE_TYPE_DIRECTFB, "CAIRO_SURFACE_TYPE_DIRECTFB", "directfb" },
+ { CAIRO_SURFACE_TYPE_SVG, "CAIRO_SURFACE_TYPE_SVG", "svg" },
+ { CAIRO_SURFACE_TYPE_OS2, "CAIRO_SURFACE_TYPE_OS2", "os2" },
+ { CAIRO_SURFACE_TYPE_WIN32_PRINTING, "CAIRO_SURFACE_TYPE_WIN32_PRINTING", "win32-printing" },
+ { CAIRO_SURFACE_TYPE_QUARTZ_IMAGE, "CAIRO_SURFACE_TYPE_QUARTZ_IMAGE", "quartz-image" },
+ { CAIRO_SURFACE_TYPE_SCRIPT, "CAIRO_SURFACE_TYPE_SCRIPT", "script" },
+ { CAIRO_SURFACE_TYPE_QT, "CAIRO_SURFACE_TYPE_QT", "qt" },
+ { CAIRO_SURFACE_TYPE_RECORDING, "CAIRO_SURFACE_TYPE_RECORDING", "recording" },
+ { CAIRO_SURFACE_TYPE_VG, "CAIRO_SURFACE_TYPE_VG", "vg" },
+ { CAIRO_SURFACE_TYPE_GL, "CAIRO_SURFACE_TYPE_GL", "gl" },
+ { CAIRO_SURFACE_TYPE_DRM, "CAIRO_SURFACE_TYPE_DRM", "drm" },
+ { CAIRO_SURFACE_TYPE_TEE, "CAIRO_SURFACE_TYPE_TEE", "tee" },
+ { CAIRO_SURFACE_TYPE_XML, "CAIRO_SURFACE_TYPE_XML", "xml" },
+ { CAIRO_SURFACE_TYPE_SKIA, "CAIRO_SURFACE_TYPE_SKIA", "skia" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_surface_type_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_format_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_FORMAT_INVALID, "CAIRO_FORMAT_INVALID", "invalid" },
+ { CAIRO_FORMAT_ARGB32, "CAIRO_FORMAT_ARGB32", "argb32" },
+ { CAIRO_FORMAT_RGB24, "CAIRO_FORMAT_RGB24", "rgb24" },
+ { CAIRO_FORMAT_A8, "CAIRO_FORMAT_A8", "a8" },
+ { CAIRO_FORMAT_A1, "CAIRO_FORMAT_A1", "a1" },
+ { CAIRO_FORMAT_RGB16_565, "CAIRO_FORMAT_RGB16_565", "rgb16-565" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_format_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_pattern_type_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_PATTERN_TYPE_SOLID, "CAIRO_PATTERN_TYPE_SOLID", "solid" },
+ { CAIRO_PATTERN_TYPE_SURFACE, "CAIRO_PATTERN_TYPE_SURFACE", "surface" },
+ { CAIRO_PATTERN_TYPE_LINEAR, "CAIRO_PATTERN_TYPE_LINEAR", "linear" },
+ { CAIRO_PATTERN_TYPE_RADIAL, "CAIRO_PATTERN_TYPE_RADIAL", "radial" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_pattern_type_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_extend_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_EXTEND_NONE, "CAIRO_EXTEND_NONE", "none" },
+ { CAIRO_EXTEND_REPEAT, "CAIRO_EXTEND_REPEAT", "repeat" },
+ { CAIRO_EXTEND_REFLECT, "CAIRO_EXTEND_REFLECT", "reflect" },
+ { CAIRO_EXTEND_PAD, "CAIRO_EXTEND_PAD", "pad" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_extend_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_filter_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_FILTER_FAST, "CAIRO_FILTER_FAST", "fast" },
+ { CAIRO_FILTER_GOOD, "CAIRO_FILTER_GOOD", "good" },
+ { CAIRO_FILTER_BEST, "CAIRO_FILTER_BEST", "best" },
+ { CAIRO_FILTER_NEAREST, "CAIRO_FILTER_NEAREST", "nearest" },
+ { CAIRO_FILTER_BILINEAR, "CAIRO_FILTER_BILINEAR", "bilinear" },
+ { CAIRO_FILTER_GAUSSIAN, "CAIRO_FILTER_GAUSSIAN", "gaussian" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_filter_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+GType
+cairo_gobject_region_overlap_get_type (void)
+{
+ static volatile gsize type_volatile = 0;
+ if (g_once_init_enter (&type_volatile)) {
+ static const GEnumValue values[] = {
+ { CAIRO_REGION_OVERLAP_IN, "CAIRO_REGION_OVERLAP_IN", "in" },
+ { CAIRO_REGION_OVERLAP_OUT, "CAIRO_REGION_OVERLAP_OUT", "out" },
+ { CAIRO_REGION_OVERLAP_PART, "CAIRO_REGION_OVERLAP_PART", "part" },
+ { 0, NULL, NULL }
+ };
+ GType type = g_enum_register_static (g_intern_static_string ("cairo_region_overlap_t"), values);
+
+ g_once_init_leave (&type_volatile, type);
+ }
+ return type_volatile;
+}
+
+
+/* Generated data ends here */
+
diff --git a/util/cairo-gobject/cairo-gobject-structs.c b/util/cairo-gobject/cairo-gobject-structs.c
new file mode 100644
index 0000000..05e3ece
--- a/dev/null
+++ b/util/cairo-gobject/cairo-gobject-structs.c
@@ -0,0 +1,87 @@
+/* cairo - a vector graphics library with display and print output
+ *
+ * Copyright © 2010 Red Hat Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it either under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation
+ * (the "LGPL") or, at your option, under the terms of the Mozilla
+ * Public License Version 1.1 (the "MPL"). If you do not alter this
+ * notice, a recipient may use your version of this file under either
+ * the MPL or the LGPL.
+ *
+ * You should have received a copy of the LGPL along with this library
+ * in the file COPYING-LGPL-2.1; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA
+ * You should have received a copy of the MPL along with this library
+ * in the file COPYING-MPL-1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
+ * OF ANY KIND, either express or implied. See the LGPL or the MPL for
+ * the specific language governing rights and limitations.
+ *
+ * The Original Code is the cairo graphics library.
+ *
+ * The Initial Developer of the Original Code is University of Southern
+ * California.
+ *
+ * Contributor(s):
+ * Benjamin Otte <otte@redhat.com>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "cairo-gobject.h"
+
+#define CAIRO_DEFINE_BOXED(Name,underscore_name,copy_func,free_func) \
+GType \
+underscore_name ## _get_type (void) \
+{ \
+ static volatile gsize type_volatile = 0; \
+ if (g_once_init_enter (&type_volatile)) { \
+ GType type = g_boxed_type_register_static (g_intern_static_string (Name), \
+ (GBoxedCopyFunc)copy_func, \
+ (GBoxedFreeFunc)free_func); \
+ g_once_init_leave (&type_volatile, type); \
+ } \
+ return type_volatile; \
+}
+
+CAIRO_DEFINE_BOXED ("CairoContext", cairo_gobject_context,
+ cairo_reference, cairo_destroy);
+CAIRO_DEFINE_BOXED ("CairoDevice", cairo_gobject_device,
+ cairo_device_reference, cairo_device_destroy);
+CAIRO_DEFINE_BOXED ("CairoPattern", cairo_gobject_pattern,
+ cairo_pattern_reference, cairo_pattern_destroy);
+CAIRO_DEFINE_BOXED ("CairoSurface", cairo_gobject_surface,
+ cairo_surface_reference, cairo_surface_destroy);
+CAIRO_DEFINE_BOXED ("CairoScaledFont", cairo_gobject_scaled_font,
+ cairo_scaled_font_reference, cairo_scaled_font_destroy);
+CAIRO_DEFINE_BOXED ("CairoFontFace", cairo_gobject_font_face,
+ cairo_font_face_reference, cairo_font_face_destroy);
+CAIRO_DEFINE_BOXED ("CairoFontOptions", cairo_gobject_font_options,
+ cairo_font_options_copy, cairo_font_options_destroy);
+CAIRO_DEFINE_BOXED ("CairoRegion", cairo_gobject_region,
+ cairo_region_reference, cairo_region_destroy);
+
+#define COPY_FUNC(name) \
+static gpointer \
+cairo_gobject_cairo_ ## name ## _copy (gpointer src) \
+{ \
+ return g_memdup (src, sizeof (cairo_ ## name ## _t)); \
+}
+
+COPY_FUNC (rectangle)
+CAIRO_DEFINE_BOXED ("CairoRectangle", cairo_gobject_rectangle,
+ cairo_gobject_cairo_rectangle_copy, g_free);
+COPY_FUNC (rectangle_int)
+CAIRO_DEFINE_BOXED ("CairoRectangleInt", cairo_gobject_rectangle_int,
+ cairo_gobject_cairo_rectangle_int_copy, g_free);
+
diff --git a/util/cairo-gobject/cairo-gobject.h b/util/cairo-gobject/cairo-gobject.h
new file mode 100644
index 0000000..2db4fd1
--- a/dev/null
+++ b/util/cairo-gobject/cairo-gobject.h
@@ -0,0 +1,186 @@
+/* cairo - a vector graphics library with display and print output
+ *
+ * Copyright © 2010 Red Hat Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it either under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation
+ * (the "LGPL") or, at your option, under the terms of the Mozilla
+ * Public License Version 1.1 (the "MPL"). If you do not alter this
+ * notice, a recipient may use your version of this file under either
+ * the MPL or the LGPL.
+ *
+ * You should have received a copy of the LGPL along with this library
+ * in the file COPYING-LGPL-2.1; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA
+ * You should have received a copy of the MPL along with this library
+ * in the file COPYING-MPL-1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
+ * OF ANY KIND, either express or implied. See the LGPL or the MPL for
+ * the specific language governing rights and limitations.
+ *
+ * The Original Code is the cairo graphics library.
+ *
+ * The Initial Developer of the Original Code is University of Southern
+ * California.
+ *
+ * Contributor(s):
+ * Benjamin Otte <otte@redhat.com>
+ */
+
+#ifndef CAIRO_GOBJECT_H
+#define CAIRO_GOBJECT_H
+
+#include <cairo.h>
+
+#if CAIRO_HAS_GOBJECT_FUNCTIONS
+
+#include <glib-object.h>
+
+CAIRO_BEGIN_DECLS
+
+/* structs */
+
+#define CAIRO_GOBJECT_TYPE_CONTEXT cairo_gobject_context_get_type
+cairo_public GType
+cairo_gobject_context_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_DEVICE cairo_gobject_device_get_type
+cairo_public GType
+cairo_gobject_device_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_PATTERN cairo_gobject_pattern_get_type
+cairo_public GType
+cairo_gobject_pattern_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_SURFACE cairo_gobject_surface_get_type
+cairo_public GType
+cairo_gobject_surface_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_RECTANGLE cairo_gobject_rectangle_get_type
+cairo_public GType
+cairo_gobject_rectangle_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_SCALED_FONT cairo_gobject_scaled_font_get_type
+cairo_public GType
+cairo_gobject_scaled_font_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_FONT_FACE cairo_gobject_font_face_get_type
+cairo_public GType
+cairo_gobject_font_face_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_FONT_OPTIONS cairo_gobject_font_options_get_type
+cairo_public GType
+cairo_gobject_font_options_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_RECTANGLE_INT cairo_gobject_rectangle_int_get_type
+cairo_public GType
+cairo_gobject_rectangle_int_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_REGION cairo_gobject_region_get_type
+cairo_public GType
+cairo_gobject_region_get_type (void);
+
+/* enums */
+
+#define CAIRO_GOBJECT_TYPE_STATUS cairo_gobject_status_get_type
+cairo_public GType
+cairo_gobject_status_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_CONTENT cairo_gobject_content_get_type
+cairo_public GType
+cairo_gobject_content_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_OPERATOR cairo_gobject_operator_get_type
+cairo_public GType
+cairo_gobject_operator_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_ANTIALIAS cairo_gobject_antialias_get_type
+cairo_public GType
+cairo_gobject_antialias_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_FILL_RULE cairo_gobject_fill_rule_get_type
+cairo_public GType
+cairo_gobject_fill_rule_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_LINE_CAP cairo_gobject_line_cap_get_type
+cairo_public GType
+cairo_gobject_line_cap_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_LINE_JOIN cairo_gobject_line_join_get_type
+cairo_public GType
+cairo_gobject_line_join_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_CLUSTER_FLAGS cairo_gobject_cluster_flags_get_type
+cairo_public GType
+cairo_gobject_text_cluster_flags_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_FONT_SLANT cairo_gobject_font_slant_get_type
+cairo_public GType
+cairo_gobject_font_slant_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_FONT_WEIGHT cairo_gobject_font_weight_get_type
+cairo_public GType
+cairo_gobject_font_weight_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_SUBPIXEL_ORDER cairo_gobject_subpixel_order_get_type
+cairo_public GType
+cairo_gobject_subpixel_order_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_HINT_STYLE cairo_gobject_hint_style_get_type
+cairo_public GType
+cairo_gobject_hint_style_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_HNT_METRICS cairo_gobject_hint_metrics_get_type
+cairo_public GType
+cairo_gobject_hint_metrics_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_FONT_TYPE cairo_gobject_font_type_get_type
+cairo_public GType
+cairo_gobject_font_type_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_PATH_DATA_TYPE cairo_gobject_path_data_type_get_type
+cairo_public GType
+cairo_gobject_path_data_type_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_DEVICE_TYPE cairo_gobject_device_type_get_type
+cairo_public GType
+cairo_gobject_device_type_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_SURFACE_TYPE cairo_gobject_surface_type_get_type
+cairo_public GType
+cairo_gobject_surface_type_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_FORMAT cairo_gobject_format_get_type
+cairo_public GType
+cairo_gobject_format_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_PATTERN_TYPE cairo_gobject_pattern_type_get_type
+cairo_public GType
+cairo_gobject_pattern_type_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_EXTEND cairo_gobject_extend_get_type
+cairo_public GType
+cairo_gobject_extend_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_FILTER cairo_gobject_filter_get_type
+cairo_public GType
+cairo_gobject_filter_get_type (void);
+
+#define CAIRO_GOBJECT_TYPE_REGION_OVERLAP cairo_gobject_region_overlap_get_type
+cairo_public GType
+cairo_gobject_region_overlap_get_type (void);
+
+CAIRO_END_DECLS
+
+#else /* CAIRO_HAS_GOBJECT_FUNCTIONS */
+# error Cairo was not compiled with support for GObject
+#endif /* CAIRO_HAS_GOBJECT_FUNCTIONS */
+
+#endif /* CAIRO_GOBJECT_H */