GraphicsContext refactoring (part 1)
authorJan Vrany <jan.vrany@fit.cvut.cz>
Mon, 29 Dec 2014 00:14:00 +0100
changeset 30 c8fe298c8cc7
parent 29 6ba06265e543
child 31 26070c1e480e
GraphicsContext refactoring (part 1) * changed Cairo::GraphicsContext to inherit from GraphicsContext * renamed Cairo::RefCountedStructure to Cairo::CObject
Cairo__CObject.st
Cairo__CPrimitives.st
Cairo__FontFace.st
Cairo__GraphicsContext.st
Cairo__Pattern.st
Cairo__RefCountedStructure.st
Cairo__ScaledFont.st
Cairo__Surface.st
Make.proto
Make.spec
abbrev.stc
bc.mak
extensions.st
libInit.cc
libcairo.rc
stx_goodies_libcairo.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Cairo__CObject.st	Mon Dec 29 00:14:00 2014 +0100
@@ -0,0 +1,112 @@
+"{ Package: 'stx:goodies/libcairo' }"
+
+"{ NameSpace: Cairo }"
+
+ExternalAddress subclass:#CObject
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Cairo-Objects'
+!
+
+
+!CObject class methodsFor:'instance creation'!
+
+fromExternalAddress: anExternalAddress
+    ^ self new fromExternalAddress: anExternalAddress
+
+    "Created: / 24-12-2014 / 22:18:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-12-2014 / 10:33:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!CObject methodsFor:'accessing'!
+
+referenceCount
+    "Return value or reference counter"
+
+    ^ self subclassResponsibility
+
+    "Created: / 09-09-2008 / 20:33:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 28-12-2014 / 22:09:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!CObject methodsFor:'finalization'!
+
+executor
+
+    ^self class basicNew
+        setAddress: self address;
+        yourself
+
+    "Created: / 10-09-2008 / 18:57:28 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 25-12-2014 / 10:36:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+finalize
+    self infoPrintCR:'Instance destroyed'.
+    self destroy
+
+    "Created: / 09-09-2008 / 20:30:22 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-09-2008 / 18:45:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 28-12-2014 / 21:39:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!CObject methodsFor:'initialization & release'!
+
+release
+    self setAddress: nil.
+    self unregisterForFinalization.
+    ^self destroy
+
+    "Created: / 25-12-2014 / 10:34:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-12-2014 / 21:41:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!CObject methodsFor:'private'!
+
+destroy
+    "Tell Cairo library to destroy the corresponding C object.
+     Remember that object is physically destroyed only if internal
+     refcounter goes to zero. However, after calling destroy, 
+     this instance should be treated as invalid."
+
+    ^ self subclassResponsibility
+
+    "Created: / 28-12-2014 / 21:41:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fromExternalAddress:anExternalAddress 
+    self setAddress: anExternalAddress address.  
+    self registerForFinalization.
+    self infoPrintCR:'Instance created'.
+
+    "Created: / 09-09-2008 / 20:35:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 10-09-2008 / 18:45:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 25-12-2014 / 10:36:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+infoPrintCR:aString 
+    Stdout
+        nextPutAll:'Cairo [info] (';
+        nextPutAll:self class nameWithoutPrefix;
+        nextPutAll:' @ 0x';
+        nextPutAll:(self address printStringRadix:16);
+        nextPutAll:' @ ';
+        nextPutAll:(self referenceCount printString);
+        nextPutAll:': ';
+        nextPutAll:aString;
+        cr
+
+    "Created: / 10-09-2008 / 18:45:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
+! !
+
+!CObject class methodsFor:'documentation'!
+
+version
+    ^'$Id$'
+!
+
+version_HG
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/Cairo__CPrimitives.st	Sun Dec 28 22:38:24 2014 +0100
+++ b/Cairo__CPrimitives.st	Mon Dec 29 00:14:00 2014 +0100
@@ -24,7 +24,7 @@
             path := #( '/lib' '/usr/lib' '/usr/local/lib' ).
             (OperatingSystem getSystemInfo at:#machine) = 'x86_64' ifTrue:[
                 "If the machine is 64bit, prepend standard path for 32bit libs.
-                 Leave standard paths at the end, as the system might be completely 
+                 Leave standard paths at the end, as the system might be completely
                  32bit but running on 64bit-capable CPU.
 
                 CAVEAT: This is bit dangerous, as on 64bit OS, if ia32 libs are
@@ -60,81 +60,81 @@
 
 !CPrimitives class methodsFor:'primitives'!
 
-cairo_append_path: cr _: path 
-
-    <cdecl: void "cairo_append_path" ( Cairo::GraphicsContext Cairo::Path ) >
+cairo_append_path: cr _: path
+
+    <cdecl: void "cairo_append_path" ( handle Cairo::Path ) >
     self primitiveFailed
 !
 
-cairo_arc: cr _: xc _: yc _: radius _: angle1 _: angle2 
-
-    <cdecl: void "cairo_arc" ( Cairo::GraphicsContext double double double double double ) >
+cairo_arc: cr _: xc _: yc _: radius _: angle1 _: angle2
+
+    <cdecl: void "cairo_arc" ( handle double double double double double ) >
     self primitiveFailed
 !
 
-cairo_arc_negative: cr _: xc _: yc _: radius _: angle1 _: angle2 
-
-    <cdecl: void "cairo_arc_negative" ( Cairo::GraphicsContext double double double double double ) >
+cairo_arc_negative: cr _: xc _: yc _: radius _: angle1 _: angle2
+
+    <cdecl: void "cairo_arc_negative" ( handle double double double double double ) >
     self primitiveFailed
 !
 
-cairo_clip: cr 
-
-    <cdecl: void "cairo_clip" ( Cairo::GraphicsContext ) >
+cairo_clip: cr
+
+    <cdecl: void "cairo_clip" ( handle ) >
     self primitiveFailed
 !
 
-cairo_clip_extents: cr _: x1 _: y1 _: x2 _: y2 
-
-    <cdecl: void "cairo_clip_extents" ( Cairo::GraphicsContext doublePointer doublePointer doublePointer doublePointer ) >
+cairo_clip_extents: cr _: x1 _: y1 _: x2 _: y2
+
+    <cdecl: void "cairo_clip_extents" ( handle doublePointer doublePointer doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_clip_preserve: cr 
-
-    <cdecl: void "cairo_clip_preserve" ( Cairo::GraphicsContext ) >
+cairo_clip_preserve: cr
+
+    <cdecl: void "cairo_clip_preserve" ( handle ) >
     self primitiveFailed
 !
 
-cairo_close_path: cr 
-
-    <cdecl: void "cairo_close_path" ( Cairo::GraphicsContext ) >
+cairo_close_path: cr
+
+    <cdecl: void "cairo_close_path" ( handle ) >
     self primitiveFailed
 !
 
-cairo_copy_clip_rectangle_list: cr 
-
-    <cdecl: Cairo::RectangleList "cairo_copy_clip_rectangle_list" ( Cairo::GraphicsContext ) >
+cairo_copy_clip_rectangle_list: cr
+
+    <cdecl: Cairo::RectangleList "cairo_copy_clip_rectangle_list" ( handle ) >
     self primitiveFailed
 !
 
-cairo_copy_page: cr 
-
-    <cdecl: void "cairo_copy_page" ( Cairo::GraphicsContext ) >
+cairo_copy_page: cr
+
+    <cdecl: void "cairo_copy_page" ( handle ) >
     self primitiveFailed
 !
 
-cairo_copy_path: cr 
-
-    <cdecl: Cairo::Path "cairo_copy_path" ( Cairo::GraphicsContext ) >
+cairo_copy_path: cr
+
+    <cdecl: Cairo::Path "cairo_copy_path" ( handle ) >
     self primitiveFailed
 !
 
-cairo_copy_path_flat: cr 
-
-    <cdecl: Cairo::Path "cairo_copy_path_flat" ( Cairo::GraphicsContext ) >
+cairo_copy_path_flat: cr
+
+    <cdecl: Cairo::Path "cairo_copy_path_flat" ( handle ) >
     self primitiveFailed
 !
 
-cairo_create: target 
-
-    <cdecl: Cairo::GraphicsContext "cairo_create" ( Cairo::Surface ) >
+cairo_create: target
+
+    <cdecl: handle "cairo_create" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_curve_to: cr _: x1 _: y1 _: x2 _: y2 _: x3 _: y3 
-
-    <cdecl: void "cairo_curve_to" ( Cairo::GraphicsContext double double double double double double ) >
+cairo_curve_to: cr _: x1 _: y1 _: x2 _: y2 _: x3 _: y3
+
+    <cdecl: void "cairo_curve_to" ( handle double double double double double double ) >
     self primitiveFailed
 !
 
@@ -144,199 +144,199 @@
     self primitiveFailed
 !
 
-cairo_destroy: cr 
-
-    <cdecl: void "cairo_destroy" ( Cairo::GraphicsContext ) >
+cairo_destroy: cr
+
+    <cdecl: void "cairo_destroy" ( handle ) >
     self primitiveFailed
 !
 
-cairo_device_acquire: device 
+cairo_device_acquire: device
 
     <cdecl: int32 "cairo_device_acquire" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_device_destroy: device 
+cairo_device_destroy: device
 
     <cdecl: void "cairo_device_destroy" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_device_finish: device 
+cairo_device_finish: device
 
     <cdecl: void "cairo_device_finish" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_device_flush: device 
+cairo_device_flush: device
 
     <cdecl: void "cairo_device_flush" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_device_get_reference_count: device 
+cairo_device_get_reference_count: device
 
     <cdecl: uint32 "cairo_device_get_reference_count" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_device_get_type: device 
+cairo_device_get_type: device
 
     <cdecl: int32 "cairo_device_get_type" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_device_get_user_data: device _: key 
+cairo_device_get_user_data: device _: key
 
     <cdecl: voidPointer "cairo_device_get_user_data" ( Cairo::Device Cairo::UserDataKey ) >
     self primitiveFailed
 !
 
-cairo_device_observer_elapsed: device 
+cairo_device_observer_elapsed: device
 
     <cdecl: double "cairo_device_observer_elapsed" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_device_observer_fill_elapsed: device 
+cairo_device_observer_fill_elapsed: device
 
     <cdecl: double "cairo_device_observer_fill_elapsed" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_device_observer_glyphs_elapsed: device 
+cairo_device_observer_glyphs_elapsed: device
 
     <cdecl: double "cairo_device_observer_glyphs_elapsed" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_device_observer_mask_elapsed: device 
+cairo_device_observer_mask_elapsed: device
 
     <cdecl: double "cairo_device_observer_mask_elapsed" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_device_observer_paint_elapsed: device 
+cairo_device_observer_paint_elapsed: device
 
     <cdecl: double "cairo_device_observer_paint_elapsed" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_device_observer_print: device _: write_func _: closure 
+cairo_device_observer_print: device _: write_func _: closure
 
     <cdecl: int32 "cairo_device_observer_print" ( Cairo::Device pointer voidPointer ) >
     self primitiveFailed
 !
 
-cairo_device_observer_stroke_elapsed: device 
+cairo_device_observer_stroke_elapsed: device
 
     <cdecl: double "cairo_device_observer_stroke_elapsed" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_device_reference: device 
+cairo_device_reference: device
 
     <cdecl: Cairo::Device "cairo_device_reference" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_device_release: device 
+cairo_device_release: device
 
     <cdecl: void "cairo_device_release" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_device_set_user_data: device _: key _: user_data _: destroy 
+cairo_device_set_user_data: device _: key _: user_data _: destroy
 
     <cdecl: int32 "cairo_device_set_user_data" ( Cairo::Device Cairo::UserDataKey voidPointer pointer ) >
     self primitiveFailed
 !
 
-cairo_device_status: device 
+cairo_device_status: device
 
     <cdecl: int32 "cairo_device_status" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_device_to_user: cr _: x _: y 
-
-    <cdecl: void "cairo_device_to_user" ( Cairo::GraphicsContext doublePointer doublePointer ) >
+cairo_device_to_user: cr _: x _: y
+
+    <cdecl: void "cairo_device_to_user" ( handle doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_device_to_user_distance: cr _: dx _: dy 
-
-    <cdecl: void "cairo_device_to_user_distance" ( Cairo::GraphicsContext doublePointer doublePointer ) >
+cairo_device_to_user_distance: cr _: dx _: dy
+
+    <cdecl: void "cairo_device_to_user_distance" ( handle doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_fill: cr 
-
-    <cdecl: void "cairo_fill" ( Cairo::GraphicsContext ) >
+cairo_fill: cr
+
+    <cdecl: void "cairo_fill" ( handle ) >
     self primitiveFailed
 !
 
-cairo_fill_extents: cr _: x1 _: y1 _: x2 _: y2 
-
-    <cdecl: void "cairo_fill_extents" ( Cairo::GraphicsContext doublePointer doublePointer doublePointer doublePointer ) >
+cairo_fill_extents: cr _: x1 _: y1 _: x2 _: y2
+
+    <cdecl: void "cairo_fill_extents" ( handle doublePointer doublePointer doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_fill_preserve: cr 
-
-    <cdecl: void "cairo_fill_preserve" ( Cairo::GraphicsContext ) >
+cairo_fill_preserve: cr
+
+    <cdecl: void "cairo_fill_preserve" ( handle ) >
     self primitiveFailed
 !
 
-cairo_font_extents: cr _: extents 
-
-    <cdecl: void "cairo_font_extents" ( Cairo::GraphicsContext Cairo::FontExtents ) >
+cairo_font_extents: cr _: extents
+
+    <cdecl: void "cairo_font_extents" ( handle Cairo::FontExtents ) >
     self primitiveFailed
 !
 
-cairo_font_face_destroy: font_face 
+cairo_font_face_destroy: font_face
 
     <cdecl: void "cairo_font_face_destroy" ( Cairo::FontFace ) >
     self primitiveFailed
 !
 
-cairo_font_face_get_reference_count: font_face 
+cairo_font_face_get_reference_count: font_face
 
     <cdecl: uint32 "cairo_font_face_get_reference_count" ( Cairo::FontFace ) >
     self primitiveFailed
 !
 
-cairo_font_face_get_type: font_face 
+cairo_font_face_get_type: font_face
 
     <cdecl: int32 "cairo_font_face_get_type" ( Cairo::FontFace ) >
     self primitiveFailed
 !
 
-cairo_font_face_get_user_data: font_face _: key 
+cairo_font_face_get_user_data: font_face _: key
 
     <cdecl: voidPointer "cairo_font_face_get_user_data" ( Cairo::FontFace Cairo::UserDataKey ) >
     self primitiveFailed
 !
 
-cairo_font_face_reference: font_face 
+cairo_font_face_reference: font_face
 
     <cdecl: Cairo::FontFace "cairo_font_face_reference" ( Cairo::FontFace ) >
     self primitiveFailed
 !
 
-cairo_font_face_set_user_data: font_face _: key _: user_data _: destroy 
+cairo_font_face_set_user_data: font_face _: key _: user_data _: destroy
 
     <cdecl: int32 "cairo_font_face_set_user_data" ( Cairo::FontFace Cairo::UserDataKey voidPointer pointer ) >
     self primitiveFailed
 !
 
-cairo_font_face_status: font_face 
+cairo_font_face_status: font_face
 
     <cdecl: int32 "cairo_font_face_status" ( Cairo::FontFace ) >
     self primitiveFailed
 !
 
-cairo_font_options_copy: original 
+cairo_font_options_copy: original
 
     <cdecl: Cairo::FontOptions "cairo_font_options_copy" ( Cairo::FontOptions ) >
     self primitiveFailed
@@ -348,547 +348,547 @@
     self primitiveFailed
 !
 
-cairo_font_options_destroy: options 
+cairo_font_options_destroy: options
 
     <cdecl: void "cairo_font_options_destroy" ( Cairo::FontOptions ) >
     self primitiveFailed
 !
 
-cairo_font_options_equal: options _: other 
+cairo_font_options_equal: options _: other
 
     <cdecl: int32 "cairo_font_options_equal" ( Cairo::FontOptions Cairo::FontOptions ) >
     self primitiveFailed
 !
 
-cairo_font_options_get_antialias: options 
+cairo_font_options_get_antialias: options
 
     <cdecl: int32 "cairo_font_options_get_antialias" ( Cairo::FontOptions ) >
     self primitiveFailed
 !
 
-cairo_font_options_get_hint_metrics: options 
+cairo_font_options_get_hint_metrics: options
 
     <cdecl: int32 "cairo_font_options_get_hint_metrics" ( Cairo::FontOptions ) >
     self primitiveFailed
 !
 
-cairo_font_options_get_hint_style: options 
+cairo_font_options_get_hint_style: options
 
     <cdecl: int32 "cairo_font_options_get_hint_style" ( Cairo::FontOptions ) >
     self primitiveFailed
 !
 
-cairo_font_options_get_subpixel_order: options 
+cairo_font_options_get_subpixel_order: options
 
     <cdecl: int32 "cairo_font_options_get_subpixel_order" ( Cairo::FontOptions ) >
     self primitiveFailed
 !
 
-cairo_font_options_hash: options 
+cairo_font_options_hash: options
 
     <cdecl: long "cairo_font_options_hash" ( Cairo::FontOptions ) >
     self primitiveFailed
 !
 
-cairo_font_options_merge: options _: other 
+cairo_font_options_merge: options _: other
 
     <cdecl: void "cairo_font_options_merge" ( Cairo::FontOptions Cairo::FontOptions ) >
     self primitiveFailed
 !
 
-cairo_font_options_set_antialias: options _: antialias 
+cairo_font_options_set_antialias: options _: antialias
 
     <cdecl: void "cairo_font_options_set_antialias" ( Cairo::FontOptions int32 ) >
     self primitiveFailed
 !
 
-cairo_font_options_set_hint_metrics: options _: hint_metrics 
+cairo_font_options_set_hint_metrics: options _: hint_metrics
 
     <cdecl: void "cairo_font_options_set_hint_metrics" ( Cairo::FontOptions int32 ) >
     self primitiveFailed
 !
 
-cairo_font_options_set_hint_style: options _: hint_style 
+cairo_font_options_set_hint_style: options _: hint_style
 
     <cdecl: void "cairo_font_options_set_hint_style" ( Cairo::FontOptions int32 ) >
     self primitiveFailed
 !
 
-cairo_font_options_set_subpixel_order: options _: subpixel_order 
+cairo_font_options_set_subpixel_order: options _: subpixel_order
 
     <cdecl: void "cairo_font_options_set_subpixel_order" ( Cairo::FontOptions int32 ) >
     self primitiveFailed
 !
 
-cairo_font_options_status: options 
+cairo_font_options_status: options
 
     <cdecl: int32 "cairo_font_options_status" ( Cairo::FontOptions ) >
     self primitiveFailed
 !
 
-cairo_format_stride_for_width: format _: width 
+cairo_format_stride_for_width: format _: width
 
     <cdecl: int32 "cairo_format_stride_for_width" ( int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_get_antialias: cr 
-
-    <cdecl: int32 "cairo_get_antialias" ( Cairo::GraphicsContext ) >
+cairo_get_antialias: cr
+
+    <cdecl: int32 "cairo_get_antialias" ( handle ) >
     self primitiveFailed
 !
 
-cairo_get_current_point: cr _: x _: y 
-
-    <cdecl: void "cairo_get_current_point" ( Cairo::GraphicsContext doublePointer doublePointer ) >
+cairo_get_current_point: cr _: x _: y
+
+    <cdecl: void "cairo_get_current_point" ( handle doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_get_dash: cr _: dashes _: offset 
-
-    <cdecl: void "cairo_get_dash" ( Cairo::GraphicsContext doublePointer doublePointer ) >
+cairo_get_dash: cr _: dashes _: offset
+
+    <cdecl: void "cairo_get_dash" ( handle doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_get_dash_count: cr 
-
-    <cdecl: int32 "cairo_get_dash_count" ( Cairo::GraphicsContext ) >
+cairo_get_dash_count: cr
+
+    <cdecl: int32 "cairo_get_dash_count" ( handle ) >
     self primitiveFailed
 !
 
-cairo_get_fill_rule: cr 
-
-    <cdecl: int32 "cairo_get_fill_rule" ( Cairo::GraphicsContext ) >
+cairo_get_fill_rule: cr
+
+    <cdecl: int32 "cairo_get_fill_rule" ( handle ) >
     self primitiveFailed
 !
 
-cairo_get_font_face: cr 
-
-    <cdecl: Cairo::FontFace "cairo_get_font_face" ( Cairo::GraphicsContext ) >
+cairo_get_font_face: cr
+
+    <cdecl: Cairo::FontFace "cairo_get_font_face" ( handle ) >
     self primitiveFailed
 !
 
-cairo_get_font_matrix: cr _: matrix 
-
-    <cdecl: void "cairo_get_font_matrix" ( Cairo::GraphicsContext Cairo::Matrix ) >
+cairo_get_font_matrix: cr _: matrix
+
+    <cdecl: void "cairo_get_font_matrix" ( handle Cairo::Matrix ) >
     self primitiveFailed
 !
 
-cairo_get_font_options: cr _: options 
-
-    <cdecl: void "cairo_get_font_options" ( Cairo::GraphicsContext Cairo::FontOptions ) >
+cairo_get_font_options: cr _: options
+
+    <cdecl: void "cairo_get_font_options" ( handle Cairo::FontOptions ) >
     self primitiveFailed
 !
 
-cairo_get_group_target: cr 
-
-    <cdecl: Cairo::Surface "cairo_get_group_target" ( Cairo::GraphicsContext ) >
+cairo_get_group_target: cr
+
+    <cdecl: Cairo::Surface "cairo_get_group_target" ( handle ) >
     self primitiveFailed
 !
 
-cairo_get_line_cap: cr 
-
-    <cdecl: int32 "cairo_get_line_cap" ( Cairo::GraphicsContext ) >
+cairo_get_line_cap: cr
+
+    <cdecl: int32 "cairo_get_line_cap" ( handle ) >
     self primitiveFailed
 !
 
-cairo_get_line_join: cr 
-
-    <cdecl: int32 "cairo_get_line_join" ( Cairo::GraphicsContext ) >
+cairo_get_line_join: cr
+
+    <cdecl: int32 "cairo_get_line_join" ( handle ) >
     self primitiveFailed
 !
 
-cairo_get_line_width: cr 
-
-    <cdecl: double "cairo_get_line_width" ( Cairo::GraphicsContext ) >
+cairo_get_line_width: cr
+
+    <cdecl: double "cairo_get_line_width" ( handle ) >
     self primitiveFailed
 !
 
-cairo_get_matrix: cr _: matrix 
-
-    <cdecl: void "cairo_get_matrix" ( Cairo::GraphicsContext Cairo::Matrix ) >
+cairo_get_matrix: cr _: matrix
+
+    <cdecl: void "cairo_get_matrix" ( handle Cairo::Matrix ) >
     self primitiveFailed
 !
 
-cairo_get_miter_limit: cr 
-
-    <cdecl: double "cairo_get_miter_limit" ( Cairo::GraphicsContext ) >
+cairo_get_miter_limit: cr
+
+    <cdecl: double "cairo_get_miter_limit" ( handle ) >
     self primitiveFailed
 !
 
-cairo_get_operator: cr 
-
-    <cdecl: int32 "cairo_get_operator" ( Cairo::GraphicsContext ) >
+cairo_get_operator: cr
+
+    <cdecl: int32 "cairo_get_operator" ( handle ) >
     self primitiveFailed
 !
 
-cairo_get_reference_count: cr 
-
-    <cdecl: uint32 "cairo_get_reference_count" ( Cairo::GraphicsContext ) >
+cairo_get_reference_count: cr
+
+    <cdecl: uint32 "cairo_get_reference_count" ( handle ) >
     self primitiveFailed
 !
 
-cairo_get_scaled_font: cr 
-
-    <cdecl: Cairo::ScaledFont "cairo_get_scaled_font" ( Cairo::GraphicsContext ) >
+cairo_get_scaled_font: cr
+
+    <cdecl: Cairo::ScaledFont "cairo_get_scaled_font" ( handle ) >
     self primitiveFailed
 !
 
-cairo_get_source: cr 
-
-    <cdecl: Cairo::Pattern "cairo_get_source" ( Cairo::GraphicsContext ) >
+cairo_get_source: cr
+
+    <cdecl: Cairo::Pattern "cairo_get_source" ( handle ) >
     self primitiveFailed
 !
 
-cairo_get_target: cr 
-
-    <cdecl: Cairo::Surface "cairo_get_target" ( Cairo::GraphicsContext ) >
+cairo_get_target: cr
+
+    <cdecl: Cairo::Surface "cairo_get_target" ( handle ) >
     self primitiveFailed
 !
 
-cairo_get_tolerance: cr 
-
-    <cdecl: double "cairo_get_tolerance" ( Cairo::GraphicsContext ) >
+cairo_get_tolerance: cr
+
+    <cdecl: double "cairo_get_tolerance" ( handle ) >
     self primitiveFailed
 !
 
-cairo_get_user_data: cr _: key 
-
-    <cdecl: voidPointer "cairo_get_user_data" ( Cairo::GraphicsContext Cairo::UserDataKey ) >
+cairo_get_user_data: cr _: key
+
+    <cdecl: voidPointer "cairo_get_user_data" ( handle Cairo::UserDataKey ) >
     self primitiveFailed
 !
 
-cairo_glyph_allocate: num_glyphs 
+cairo_glyph_allocate: num_glyphs
 
     <cdecl: Cairo::Glyph "cairo_glyph_allocate" ( int32 ) >
     self primitiveFailed
 !
 
-cairo_glyph_extents: cr _: glyphs _: num_glyphs _: extents 
-
-    <cdecl: void "cairo_glyph_extents" ( Cairo::GraphicsContext Cairo::Glyph int32 Cairo::TextExtents ) >
+cairo_glyph_extents: cr _: glyphs _: num_glyphs _: extents
+
+    <cdecl: void "cairo_glyph_extents" ( handle Cairo::Glyph int32 Cairo::TextExtents ) >
     self primitiveFailed
 !
 
-cairo_glyph_free: glyphs 
+cairo_glyph_free: glyphs
 
     <cdecl: void "cairo_glyph_free" ( Cairo::Glyph ) >
     self primitiveFailed
 !
 
-cairo_glyph_path: cr _: glyphs _: num_glyphs 
-
-    <cdecl: void "cairo_glyph_path" ( Cairo::GraphicsContext Cairo::Glyph int32 ) >
+cairo_glyph_path: cr _: glyphs _: num_glyphs
+
+    <cdecl: void "cairo_glyph_path" ( handle Cairo::Glyph int32 ) >
     self primitiveFailed
 !
 
-cairo_has_current_point: cr 
-
-    <cdecl: int32 "cairo_has_current_point" ( Cairo::GraphicsContext ) >
+cairo_has_current_point: cr
+
+    <cdecl: int32 "cairo_has_current_point" ( handle ) >
     self primitiveFailed
 !
 
-cairo_identity_matrix: cr 
-
-    <cdecl: void "cairo_identity_matrix" ( Cairo::GraphicsContext ) >
+cairo_identity_matrix: cr
+
+    <cdecl: void "cairo_identity_matrix" ( handle ) >
     self primitiveFailed
 !
 
-cairo_image_surface_create: format _: width _: height 
+cairo_image_surface_create: format _: width _: height
 
     <cdecl: Cairo::Surface "cairo_image_surface_create" ( int32 int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_image_surface_create_for_data: data _: format _: width _: height _: stride 
+cairo_image_surface_create_for_data: data _: format _: width _: height _: stride
 
     <cdecl: Cairo::Surface "cairo_image_surface_create_for_data" ( charPointer int32 int32 int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_image_surface_create_from_png: filename 
+cairo_image_surface_create_from_png: filename
 
     <cdecl: Cairo::Surface "cairo_image_surface_create_from_png" ( charPointer ) >
     self primitiveFailed
 !
 
-cairo_image_surface_create_from_png_stream: read_func _: closure 
+cairo_image_surface_create_from_png_stream: read_func _: closure
 
     <cdecl: Cairo::Surface "cairo_image_surface_create_from_png_stream" ( pointer voidPointer ) >
     self primitiveFailed
 !
 
-cairo_image_surface_get_data: surface 
+cairo_image_surface_get_data: surface
 
     <cdecl: charPointer "cairo_image_surface_get_data" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_image_surface_get_format: surface 
+cairo_image_surface_get_format: surface
 
     <cdecl: int32 "cairo_image_surface_get_format" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_image_surface_get_height: surface 
+cairo_image_surface_get_height: surface
 
     <cdecl: int32 "cairo_image_surface_get_height" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_image_surface_get_stride: surface 
+cairo_image_surface_get_stride: surface
 
     <cdecl: int32 "cairo_image_surface_get_stride" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_image_surface_get_width: surface 
+cairo_image_surface_get_width: surface
 
     <cdecl: int32 "cairo_image_surface_get_width" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_in_clip: cr _: x _: y 
-
-    <cdecl: int32 "cairo_in_clip" ( Cairo::GraphicsContext double double ) >
+cairo_in_clip: cr _: x _: y
+
+    <cdecl: int32 "cairo_in_clip" ( handle double double ) >
     self primitiveFailed
 !
 
-cairo_in_fill: cr _: x _: y 
-
-    <cdecl: int32 "cairo_in_fill" ( Cairo::GraphicsContext double double ) >
+cairo_in_fill: cr _: x _: y
+
+    <cdecl: int32 "cairo_in_fill" ( handle double double ) >
     self primitiveFailed
 !
 
-cairo_in_stroke: cr _: x _: y 
-
-    <cdecl: int32 "cairo_in_stroke" ( Cairo::GraphicsContext double double ) >
+cairo_in_stroke: cr _: x _: y
+
+    <cdecl: int32 "cairo_in_stroke" ( handle double double ) >
     self primitiveFailed
 !
 
-cairo_line_to: cr _: x _: y 
-
-    <cdecl: void "cairo_line_to" ( Cairo::GraphicsContext double double ) >
+cairo_line_to: cr _: x _: y
+
+    <cdecl: void "cairo_line_to" ( handle double double ) >
     self primitiveFailed
 !
 
-cairo_mask: cr _: pattern 
-
-    <cdecl: void "cairo_mask" ( Cairo::GraphicsContext Cairo::Pattern ) >
+cairo_mask: cr _: pattern
+
+    <cdecl: void "cairo_mask" ( handle Cairo::Pattern ) >
     self primitiveFailed
 !
 
-cairo_mask_surface: cr _: surface _: surface_x _: surface_y 
-
-    <cdecl: void "cairo_mask_surface" ( Cairo::GraphicsContext Cairo::Surface double double ) >
+cairo_mask_surface: cr _: surface _: surface_x _: surface_y
+
+    <cdecl: void "cairo_mask_surface" ( handle Cairo::Surface double double ) >
     self primitiveFailed
 !
 
-cairo_matrix_init: matrix _: xx _: yx _: xy _: yy _: x0 _: y0 
+cairo_matrix_init: matrix _: xx _: yx _: xy _: yy _: x0 _: y0
 
     <cdecl: void "cairo_matrix_init" ( Cairo::Matrix double double double double double double ) >
     self primitiveFailed
 !
 
-cairo_matrix_init_identity: matrix 
+cairo_matrix_init_identity: matrix
 
     <cdecl: void "cairo_matrix_init_identity" ( Cairo::Matrix ) >
     self primitiveFailed
 !
 
-cairo_matrix_init_rotate: matrix _: radians 
+cairo_matrix_init_rotate: matrix _: radians
 
     <cdecl: void "cairo_matrix_init_rotate" ( Cairo::Matrix double ) >
     self primitiveFailed
 !
 
-cairo_matrix_init_scale: matrix _: sx _: sy 
+cairo_matrix_init_scale: matrix _: sx _: sy
 
     <cdecl: void "cairo_matrix_init_scale" ( Cairo::Matrix double double ) >
     self primitiveFailed
 !
 
-cairo_matrix_init_translate: matrix _: tx _: ty 
+cairo_matrix_init_translate: matrix _: tx _: ty
 
     <cdecl: void "cairo_matrix_init_translate" ( Cairo::Matrix double double ) >
     self primitiveFailed
 !
 
-cairo_matrix_invert: matrix 
+cairo_matrix_invert: matrix
 
     <cdecl: int32 "cairo_matrix_invert" ( Cairo::Matrix ) >
     self primitiveFailed
 !
 
-cairo_matrix_multiply: result _: a _: b 
+cairo_matrix_multiply: result _: a _: b
 
     <cdecl: void "cairo_matrix_multiply" ( Cairo::Matrix Cairo::Matrix Cairo::Matrix ) >
     self primitiveFailed
 !
 
-cairo_matrix_rotate: matrix _: radians 
+cairo_matrix_rotate: matrix _: radians
 
     <cdecl: void "cairo_matrix_rotate" ( Cairo::Matrix double ) >
     self primitiveFailed
 !
 
-cairo_matrix_scale: matrix _: sx _: sy 
+cairo_matrix_scale: matrix _: sx _: sy
 
     <cdecl: void "cairo_matrix_scale" ( Cairo::Matrix double double ) >
     self primitiveFailed
 !
 
-cairo_matrix_transform_distance: matrix _: dx _: dy 
+cairo_matrix_transform_distance: matrix _: dx _: dy
 
     <cdecl: void "cairo_matrix_transform_distance" ( Cairo::Matrix doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_matrix_transform_point: matrix _: x _: y 
+cairo_matrix_transform_point: matrix _: x _: y
 
     <cdecl: void "cairo_matrix_transform_point" ( Cairo::Matrix doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_matrix_translate: matrix _: tx _: ty 
+cairo_matrix_translate: matrix _: tx _: ty
 
     <cdecl: void "cairo_matrix_translate" ( Cairo::Matrix double double ) >
     self primitiveFailed
 !
 
-cairo_mesh_pattern_begin_patch: pattern 
+cairo_mesh_pattern_begin_patch: pattern
 
     <cdecl: void "cairo_mesh_pattern_begin_patch" ( Cairo::Pattern ) >
     self primitiveFailed
 !
 
-cairo_mesh_pattern_curve_to: pattern _: x1 _: y1 _: x2 _: y2 _: x3 _: y3 
+cairo_mesh_pattern_curve_to: pattern _: x1 _: y1 _: x2 _: y2 _: x3 _: y3
 
     <cdecl: void "cairo_mesh_pattern_curve_to" ( Cairo::Pattern double double double double double double ) >
     self primitiveFailed
 !
 
-cairo_mesh_pattern_end_patch: pattern 
+cairo_mesh_pattern_end_patch: pattern
 
     <cdecl: void "cairo_mesh_pattern_end_patch" ( Cairo::Pattern ) >
     self primitiveFailed
 !
 
-cairo_mesh_pattern_get_control_point: pattern _: patch_num _: point_num _: x _: y 
+cairo_mesh_pattern_get_control_point: pattern _: patch_num _: point_num _: x _: y
 
     <cdecl: int32 "cairo_mesh_pattern_get_control_point" ( Cairo::Pattern uint32 uint32 doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_mesh_pattern_get_corner_color_rgba: pattern _: patch_num _: corner_num _: red _: green _: blue _: alpha 
+cairo_mesh_pattern_get_corner_color_rgba: pattern _: patch_num _: corner_num _: red _: green _: blue _: alpha
 
     <cdecl: int32 "cairo_mesh_pattern_get_corner_color_rgba" ( Cairo::Pattern uint32 uint32 doublePointer doublePointer doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_mesh_pattern_get_patch_count: pattern _: count 
+cairo_mesh_pattern_get_patch_count: pattern _: count
 
     <cdecl: int32 "cairo_mesh_pattern_get_patch_count" ( Cairo::Pattern int32Pointer ) >
     self primitiveFailed
 !
 
-cairo_mesh_pattern_get_path: pattern _: patch_num 
+cairo_mesh_pattern_get_path: pattern _: patch_num
 
     <cdecl: Cairo::Path "cairo_mesh_pattern_get_path" ( Cairo::Pattern uint32 ) >
     self primitiveFailed
 !
 
-cairo_mesh_pattern_line_to: pattern _: x _: y 
+cairo_mesh_pattern_line_to: pattern _: x _: y
 
     <cdecl: void "cairo_mesh_pattern_line_to" ( Cairo::Pattern double double ) >
     self primitiveFailed
 !
 
-cairo_mesh_pattern_move_to: pattern _: x _: y 
+cairo_mesh_pattern_move_to: pattern _: x _: y
 
     <cdecl: void "cairo_mesh_pattern_move_to" ( Cairo::Pattern double double ) >
     self primitiveFailed
 !
 
-cairo_mesh_pattern_set_control_point: pattern _: point_num _: x _: y 
+cairo_mesh_pattern_set_control_point: pattern _: point_num _: x _: y
 
     <cdecl: void "cairo_mesh_pattern_set_control_point" ( Cairo::Pattern uint32 double double ) >
     self primitiveFailed
 !
 
-cairo_mesh_pattern_set_corner_color_rgb: pattern _: corner_num _: red _: green _: blue 
+cairo_mesh_pattern_set_corner_color_rgb: pattern _: corner_num _: red _: green _: blue
 
     <cdecl: void "cairo_mesh_pattern_set_corner_color_rgb" ( Cairo::Pattern uint32 double double double ) >
     self primitiveFailed
 !
 
-cairo_mesh_pattern_set_corner_color_rgba: pattern _: corner_num _: red _: green _: blue _: alpha 
+cairo_mesh_pattern_set_corner_color_rgba: pattern _: corner_num _: red _: green _: blue _: alpha
 
     <cdecl: void "cairo_mesh_pattern_set_corner_color_rgba" ( Cairo::Pattern uint32 double double double double ) >
     self primitiveFailed
 !
 
-cairo_move_to: cr _: x _: y 
-
-    <cdecl: void "cairo_move_to" ( Cairo::GraphicsContext double double ) >
+cairo_move_to: cr _: x _: y
+
+    <cdecl: void "cairo_move_to" ( handle double double ) >
     self primitiveFailed
 !
 
-cairo_new_path: cr 
-
-    <cdecl: void "cairo_new_path" ( Cairo::GraphicsContext ) >
+cairo_new_path: cr
+
+    <cdecl: void "cairo_new_path" ( handle ) >
     self primitiveFailed
 !
 
-cairo_new_sub_path: cr 
-
-    <cdecl: void "cairo_new_sub_path" ( Cairo::GraphicsContext ) >
+cairo_new_sub_path: cr
+
+    <cdecl: void "cairo_new_sub_path" ( handle ) >
     self primitiveFailed
 !
 
-cairo_paint: cr 
-
-    <cdecl: void "cairo_paint" ( Cairo::GraphicsContext ) >
+cairo_paint: cr
+
+    <cdecl: void "cairo_paint" ( handle ) >
     self primitiveFailed
 !
 
-cairo_paint_with_alpha: cr _: alpha 
-
-    <cdecl: void "cairo_paint_with_alpha" ( Cairo::GraphicsContext double ) >
+cairo_paint_with_alpha: cr _: alpha
+
+    <cdecl: void "cairo_paint_with_alpha" ( handle double ) >
     self primitiveFailed
 !
 
-cairo_path_destroy: path 
+cairo_path_destroy: path
 
     <cdecl: void "cairo_path_destroy" ( Cairo::Path ) >
     self primitiveFailed
 !
 
-cairo_path_extents: cr _: x1 _: y1 _: x2 _: y2 
-
-    <cdecl: void "cairo_path_extents" ( Cairo::GraphicsContext doublePointer doublePointer doublePointer doublePointer ) >
+cairo_path_extents: cr _: x1 _: y1 _: x2 _: y2
+
+    <cdecl: void "cairo_path_extents" ( handle doublePointer doublePointer doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_pattern_add_color_stop_rgb: pattern _: offset _: red _: green _: blue 
+cairo_pattern_add_color_stop_rgb: pattern _: offset _: red _: green _: blue
 
     <cdecl: void "cairo_pattern_add_color_stop_rgb" ( Cairo::Pattern double double double double ) >
     self primitiveFailed
 !
 
-cairo_pattern_add_color_stop_rgba: pattern _: offset _: red _: green _: blue _: alpha 
+cairo_pattern_add_color_stop_rgba: pattern _: offset _: red _: green _: blue _: alpha
 
     <cdecl: void "cairo_pattern_add_color_stop_rgba" ( Cairo::Pattern double double double double double ) >
     self primitiveFailed
 !
 
-cairo_pattern_create_for_surface: surface 
+cairo_pattern_create_for_surface: surface
 
     <cdecl: Cairo::Pattern "cairo_pattern_create_for_surface" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_pattern_create_linear: x0 _: y0 _: x1 _: y1 
+cairo_pattern_create_linear: x0 _: y0 _: x1 _: y1
 
     <cdecl: Cairo::Pattern "cairo_pattern_create_linear" ( double double double double ) >
     self primitiveFailed
@@ -900,313 +900,313 @@
     self primitiveFailed
 !
 
-cairo_pattern_create_radial: cx0 _: cy0 _: radius0 _: cx1 _: cy1 _: radius1 
+cairo_pattern_create_radial: cx0 _: cy0 _: radius0 _: cx1 _: cy1 _: radius1
 
     <cdecl: Cairo::Pattern "cairo_pattern_create_radial" ( double double double double double double ) >
     self primitiveFailed
 !
 
-cairo_pattern_create_raster_source: user_data _: content _: width _: height 
+cairo_pattern_create_raster_source: user_data _: content _: width _: height
 
     <cdecl: Cairo::Pattern "cairo_pattern_create_raster_source" ( voidPointer int32 int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_pattern_create_rgb: red _: green _: blue 
+cairo_pattern_create_rgb: red _: green _: blue
 
     <cdecl: Cairo::Pattern "cairo_pattern_create_rgb" ( double double double ) >
     self primitiveFailed
 !
 
-cairo_pattern_create_rgba: red _: green _: blue _: alpha 
+cairo_pattern_create_rgba: red _: green _: blue _: alpha
 
     <cdecl: Cairo::Pattern "cairo_pattern_create_rgba" ( double double double double ) >
     self primitiveFailed
 !
 
-cairo_pattern_destroy: pattern 
+cairo_pattern_destroy: pattern
 
     <cdecl: void "cairo_pattern_destroy" ( Cairo::Pattern ) >
     self primitiveFailed
 !
 
-cairo_pattern_get_color_stop_count: pattern _: count 
+cairo_pattern_get_color_stop_count: pattern _: count
 
     <cdecl: int32 "cairo_pattern_get_color_stop_count" ( Cairo::Pattern int32Pointer ) >
     self primitiveFailed
 !
 
-cairo_pattern_get_color_stop_rgba: pattern _: index _: offset _: red _: green _: blue _: alpha 
+cairo_pattern_get_color_stop_rgba: pattern _: index _: offset _: red _: green _: blue _: alpha
 
     <cdecl: int32 "cairo_pattern_get_color_stop_rgba" ( Cairo::Pattern int32 doublePointer doublePointer doublePointer doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_pattern_get_extend: pattern 
+cairo_pattern_get_extend: pattern
 
     <cdecl: int32 "cairo_pattern_get_extend" ( Cairo::Pattern ) >
     self primitiveFailed
 !
 
-cairo_pattern_get_filter: pattern 
+cairo_pattern_get_filter: pattern
 
     <cdecl: int32 "cairo_pattern_get_filter" ( Cairo::Pattern ) >
     self primitiveFailed
 !
 
-cairo_pattern_get_linear_points: pattern _: x0 _: y0 _: x1 _: y1 
+cairo_pattern_get_linear_points: pattern _: x0 _: y0 _: x1 _: y1
 
     <cdecl: int32 "cairo_pattern_get_linear_points" ( Cairo::Pattern doublePointer doublePointer doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_pattern_get_matrix: pattern _: matrix 
+cairo_pattern_get_matrix: pattern _: matrix
 
     <cdecl: void "cairo_pattern_get_matrix" ( Cairo::Pattern Cairo::Matrix ) >
     self primitiveFailed
 !
 
-cairo_pattern_get_radial_circles: pattern _: x0 _: y0 _: r0 _: x1 _: y1 _: r1 
+cairo_pattern_get_radial_circles: pattern _: x0 _: y0 _: r0 _: x1 _: y1 _: r1
 
     <cdecl: int32 "cairo_pattern_get_radial_circles" ( Cairo::Pattern doublePointer doublePointer doublePointer doublePointer doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_pattern_get_reference_count: pattern 
+cairo_pattern_get_reference_count: pattern
 
     <cdecl: uint32 "cairo_pattern_get_reference_count" ( Cairo::Pattern ) >
     self primitiveFailed
 !
 
-cairo_pattern_get_rgba: pattern _: red _: green _: blue _: alpha 
+cairo_pattern_get_rgba: pattern _: red _: green _: blue _: alpha
 
     <cdecl: int32 "cairo_pattern_get_rgba" ( Cairo::Pattern doublePointer doublePointer doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_pattern_get_surface: pattern _: surface 
+cairo_pattern_get_surface: pattern _: surface
 
     <cdecl: int32 "cairo_pattern_get_surface" ( Cairo::Pattern pointer ) >
     self primitiveFailed
 !
 
-cairo_pattern_get_type: pattern 
+cairo_pattern_get_type: pattern
 
     <cdecl: int32 "cairo_pattern_get_type" ( Cairo::Pattern ) >
     self primitiveFailed
 !
 
-cairo_pattern_get_user_data: pattern _: key 
+cairo_pattern_get_user_data: pattern _: key
 
     <cdecl: voidPointer "cairo_pattern_get_user_data" ( Cairo::Pattern Cairo::UserDataKey ) >
     self primitiveFailed
 !
 
-cairo_pattern_reference: pattern 
+cairo_pattern_reference: pattern
 
     <cdecl: Cairo::Pattern "cairo_pattern_reference" ( Cairo::Pattern ) >
     self primitiveFailed
 !
 
-cairo_pattern_set_extend: pattern _: extend 
+cairo_pattern_set_extend: pattern _: extend
 
     <cdecl: void "cairo_pattern_set_extend" ( Cairo::Pattern int32 ) >
     self primitiveFailed
 !
 
-cairo_pattern_set_filter: pattern _: filter 
+cairo_pattern_set_filter: pattern _: filter
 
     <cdecl: void "cairo_pattern_set_filter" ( Cairo::Pattern int32 ) >
     self primitiveFailed
 !
 
-cairo_pattern_set_matrix: pattern _: matrix 
+cairo_pattern_set_matrix: pattern _: matrix
 
     <cdecl: void "cairo_pattern_set_matrix" ( Cairo::Pattern Cairo::Matrix ) >
     self primitiveFailed
 !
 
-cairo_pattern_set_user_data: pattern _: key _: user_data _: destroy 
+cairo_pattern_set_user_data: pattern _: key _: user_data _: destroy
 
     <cdecl: int32 "cairo_pattern_set_user_data" ( Cairo::Pattern Cairo::UserDataKey voidPointer pointer ) >
     self primitiveFailed
 !
 
-cairo_pattern_status: pattern 
+cairo_pattern_status: pattern
 
     <cdecl: int32 "cairo_pattern_status" ( Cairo::Pattern ) >
     self primitiveFailed
 !
 
-cairo_pdf_get_versions: versions _: num_versions 
+cairo_pdf_get_versions: versions _: num_versions
 
     <cdecl: void "cairo_pdf_get_versions" ( pointer int32Pointer ) >
     self primitiveFailed
 !
 
-cairo_pdf_surface_create: filename _: width_in_points _: height_in_points 
+cairo_pdf_surface_create: filename _: width_in_points _: height_in_points
 
     <cdecl: Cairo::Surface "cairo_pdf_surface_create" ( charPointer double double ) >
     self primitiveFailed
 !
 
-cairo_pdf_surface_create_for_stream: write_func _: closure _: width_in_points _: height_in_points 
+cairo_pdf_surface_create_for_stream: write_func _: closure _: width_in_points _: height_in_points
 
     <cdecl: Cairo::Surface "cairo_pdf_surface_create_for_stream" ( pointer voidPointer double double ) >
     self primitiveFailed
 !
 
-cairo_pdf_surface_restrict_to_version: surface _: version 
+cairo_pdf_surface_restrict_to_version: surface _: version
 
     <cdecl: void "cairo_pdf_surface_restrict_to_version" ( Cairo::Surface int32 ) >
     self primitiveFailed
 !
 
-cairo_pdf_surface_set_size: surface _: width_in_points _: height_in_points 
+cairo_pdf_surface_set_size: surface _: width_in_points _: height_in_points
 
     <cdecl: void "cairo_pdf_surface_set_size" ( Cairo::Surface double double ) >
     self primitiveFailed
 !
 
-cairo_pdf_version_to_string: version 
+cairo_pdf_version_to_string: version
 
     <cdecl: charPointer "cairo_pdf_version_to_string" ( int32 ) >
     self primitiveFailed
 !
 
-cairo_pop_group: cr 
-
-    <cdecl: Cairo::Pattern "cairo_pop_group" ( Cairo::GraphicsContext ) >
+cairo_pop_group: cr
+
+    <cdecl: Cairo::Pattern "cairo_pop_group" ( handle ) >
     self primitiveFailed
 !
 
-cairo_pop_group_to_source: cr 
-
-    <cdecl: void "cairo_pop_group_to_source" ( Cairo::GraphicsContext ) >
+cairo_pop_group_to_source: cr
+
+    <cdecl: void "cairo_pop_group_to_source" ( handle ) >
     self primitiveFailed
 !
 
-cairo_push_group: cr 
-
-    <cdecl: void "cairo_push_group" ( Cairo::GraphicsContext ) >
+cairo_push_group: cr
+
+    <cdecl: void "cairo_push_group" ( handle ) >
     self primitiveFailed
 !
 
-cairo_push_group_with_content: cr _: content 
-
-    <cdecl: void "cairo_push_group_with_content" ( Cairo::GraphicsContext int32 ) >
+cairo_push_group_with_content: cr _: content
+
+    <cdecl: void "cairo_push_group_with_content" ( handle int32 ) >
     self primitiveFailed
 !
 
-cairo_raster_source_pattern_get_acquire: pattern _: acquire _: release 
+cairo_raster_source_pattern_get_acquire: pattern _: acquire _: release
 
     <cdecl: void "cairo_raster_source_pattern_get_acquire" ( Cairo::Pattern pointer pointer ) >
     self primitiveFailed
 !
 
-cairo_raster_source_pattern_get_callback_data: pattern 
+cairo_raster_source_pattern_get_callback_data: pattern
 
     <cdecl: voidPointer "cairo_raster_source_pattern_get_callback_data" ( Cairo::Pattern ) >
     self primitiveFailed
 !
 
-cairo_raster_source_pattern_get_copy: pattern 
+cairo_raster_source_pattern_get_copy: pattern
 
     <cdecl: pointer "cairo_raster_source_pattern_get_copy" ( Cairo::Pattern ) >
     self primitiveFailed
 !
 
-cairo_raster_source_pattern_get_finish: pattern 
+cairo_raster_source_pattern_get_finish: pattern
 
     <cdecl: pointer "cairo_raster_source_pattern_get_finish" ( Cairo::Pattern ) >
     self primitiveFailed
 !
 
-cairo_raster_source_pattern_get_snapshot: pattern 
+cairo_raster_source_pattern_get_snapshot: pattern
 
     <cdecl: pointer "cairo_raster_source_pattern_get_snapshot" ( Cairo::Pattern ) >
     self primitiveFailed
 !
 
-cairo_raster_source_pattern_set_acquire: pattern _: acquire _: release 
+cairo_raster_source_pattern_set_acquire: pattern _: acquire _: release
 
     <cdecl: void "cairo_raster_source_pattern_set_acquire" ( Cairo::Pattern pointer pointer ) >
     self primitiveFailed
 !
 
-cairo_raster_source_pattern_set_callback_data: pattern _: data 
+cairo_raster_source_pattern_set_callback_data: pattern _: data
 
     <cdecl: void "cairo_raster_source_pattern_set_callback_data" ( Cairo::Pattern voidPointer ) >
     self primitiveFailed
 !
 
-cairo_raster_source_pattern_set_copy: pattern _: copy 
+cairo_raster_source_pattern_set_copy: pattern _: copy
 
     <cdecl: void "cairo_raster_source_pattern_set_copy" ( Cairo::Pattern pointer ) >
     self primitiveFailed
 !
 
-cairo_raster_source_pattern_set_finish: pattern _: finish 
+cairo_raster_source_pattern_set_finish: pattern _: finish
 
     <cdecl: void "cairo_raster_source_pattern_set_finish" ( Cairo::Pattern pointer ) >
     self primitiveFailed
 !
 
-cairo_raster_source_pattern_set_snapshot: pattern _: snapshot 
+cairo_raster_source_pattern_set_snapshot: pattern _: snapshot
 
     <cdecl: void "cairo_raster_source_pattern_set_snapshot" ( Cairo::Pattern pointer ) >
     self primitiveFailed
 !
 
-cairo_recording_surface_create: content _: extents 
+cairo_recording_surface_create: content _: extents
 
     <cdecl: Cairo::Surface "cairo_recording_surface_create" ( int32 Cairo::Rectangle ) >
     self primitiveFailed
 !
 
-cairo_recording_surface_get_extents: surface _: extents 
+cairo_recording_surface_get_extents: surface _: extents
 
     <cdecl: int32 "cairo_recording_surface_get_extents" ( Cairo::Surface Cairo::Rectangle ) >
     self primitiveFailed
 !
 
-cairo_recording_surface_ink_extents: surface _: x0 _: y0 _: width _: height 
+cairo_recording_surface_ink_extents: surface _: x0 _: y0 _: width _: height
 
     <cdecl: void "cairo_recording_surface_ink_extents" ( Cairo::Surface doublePointer doublePointer doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_rectangle: cr _: x _: y _: width _: height 
-
-    <cdecl: void "cairo_rectangle" ( Cairo::GraphicsContext double double double double ) >
+cairo_rectangle: cr _: x _: y _: width _: height
+
+    <cdecl: void "cairo_rectangle" ( handle double double double double ) >
     self primitiveFailed
 !
 
-cairo_rectangle_list_destroy: rectangle_list 
+cairo_rectangle_list_destroy: rectangle_list
 
     <cdecl: void "cairo_rectangle_list_destroy" ( Cairo::RectangleList ) >
     self primitiveFailed
 !
 
-cairo_reference: cr 
-
-    <cdecl: Cairo::GraphicsContext "cairo_reference" ( Cairo::GraphicsContext ) >
+cairo_reference: cr
+
+    <cdecl: handle "cairo_reference" ( handle ) >
     self primitiveFailed
 !
 
-cairo_region_contains_point: region _: x _: y 
+cairo_region_contains_point: region _: x _: y
 
     <cdecl: int32 "cairo_region_contains_point" ( Cairo::Region int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_region_contains_rectangle: region _: rectangle 
+cairo_region_contains_rectangle: region _: rectangle
 
     <cdecl: int32 "cairo_region_contains_rectangle" ( Cairo::Region Cairo::RectangleInt ) >
     self primitiveFailed
 !
 
-cairo_region_copy: original 
+cairo_region_copy: original
 
     <cdecl: Cairo::Region "cairo_region_copy" ( Cairo::Region ) >
     self primitiveFailed
@@ -1218,765 +1218,765 @@
     self primitiveFailed
 !
 
-cairo_region_create_rectangle: rectangle 
+cairo_region_create_rectangle: rectangle
 
     <cdecl: Cairo::Region "cairo_region_create_rectangle" ( Cairo::RectangleInt ) >
     self primitiveFailed
 !
 
-cairo_region_create_rectangles: rects _: count 
+cairo_region_create_rectangles: rects _: count
 
     <cdecl: Cairo::Region "cairo_region_create_rectangles" ( Cairo::RectangleInt int32 ) >
     self primitiveFailed
 !
 
-cairo_region_destroy: region 
+cairo_region_destroy: region
 
     <cdecl: void "cairo_region_destroy" ( Cairo::Region ) >
     self primitiveFailed
 !
 
-cairo_region_equal: a _: b 
+cairo_region_equal: a _: b
 
     <cdecl: int32 "cairo_region_equal" ( Cairo::Region Cairo::Region ) >
     self primitiveFailed
 !
 
-cairo_region_get_extents: region _: extents 
+cairo_region_get_extents: region _: extents
 
     <cdecl: void "cairo_region_get_extents" ( Cairo::Region Cairo::RectangleInt ) >
     self primitiveFailed
 !
 
-cairo_region_get_rectangle: region _: nth _: rectangle 
+cairo_region_get_rectangle: region _: nth _: rectangle
 
     <cdecl: void "cairo_region_get_rectangle" ( Cairo::Region int32 Cairo::RectangleInt ) >
     self primitiveFailed
 !
 
-cairo_region_intersect: dst _: other 
+cairo_region_intersect: dst _: other
 
     <cdecl: int32 "cairo_region_intersect" ( Cairo::Region Cairo::Region ) >
     self primitiveFailed
 !
 
-cairo_region_intersect_rectangle: dst _: rectangle 
+cairo_region_intersect_rectangle: dst _: rectangle
 
     <cdecl: int32 "cairo_region_intersect_rectangle" ( Cairo::Region Cairo::RectangleInt ) >
     self primitiveFailed
 !
 
-cairo_region_is_empty: region 
+cairo_region_is_empty: region
 
     <cdecl: int32 "cairo_region_is_empty" ( Cairo::Region ) >
     self primitiveFailed
 !
 
-cairo_region_num_rectangles: region 
+cairo_region_num_rectangles: region
 
     <cdecl: int32 "cairo_region_num_rectangles" ( Cairo::Region ) >
     self primitiveFailed
 !
 
-cairo_region_reference: region 
+cairo_region_reference: region
 
     <cdecl: Cairo::Region "cairo_region_reference" ( Cairo::Region ) >
     self primitiveFailed
 !
 
-cairo_region_status: region 
+cairo_region_status: region
 
     <cdecl: int32 "cairo_region_status" ( Cairo::Region ) >
     self primitiveFailed
 !
 
-cairo_region_subtract: dst _: other 
+cairo_region_subtract: dst _: other
 
     <cdecl: int32 "cairo_region_subtract" ( Cairo::Region Cairo::Region ) >
     self primitiveFailed
 !
 
-cairo_region_subtract_rectangle: dst _: rectangle 
+cairo_region_subtract_rectangle: dst _: rectangle
 
     <cdecl: int32 "cairo_region_subtract_rectangle" ( Cairo::Region Cairo::RectangleInt ) >
     self primitiveFailed
 !
 
-cairo_region_translate: region _: dx _: dy 
+cairo_region_translate: region _: dx _: dy
 
     <cdecl: void "cairo_region_translate" ( Cairo::Region int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_region_union: dst _: other 
+cairo_region_union: dst _: other
 
     <cdecl: int32 "cairo_region_union" ( Cairo::Region Cairo::Region ) >
     self primitiveFailed
 !
 
-cairo_region_union_rectangle: dst _: rectangle 
+cairo_region_union_rectangle: dst _: rectangle
 
     <cdecl: int32 "cairo_region_union_rectangle" ( Cairo::Region Cairo::RectangleInt ) >
     self primitiveFailed
 !
 
-cairo_region_xor: dst _: other 
+cairo_region_xor: dst _: other
 
     <cdecl: int32 "cairo_region_xor" ( Cairo::Region Cairo::Region ) >
     self primitiveFailed
 !
 
-cairo_region_xor_rectangle: dst _: rectangle 
+cairo_region_xor_rectangle: dst _: rectangle
 
     <cdecl: int32 "cairo_region_xor_rectangle" ( Cairo::Region Cairo::RectangleInt ) >
     self primitiveFailed
 !
 
-cairo_rel_curve_to: cr _: dx1 _: dy1 _: dx2 _: dy2 _: dx3 _: dy3 
-
-    <cdecl: void "cairo_rel_curve_to" ( Cairo::GraphicsContext double double double double double double ) >
+cairo_rel_curve_to: cr _: dx1 _: dy1 _: dx2 _: dy2 _: dx3 _: dy3
+
+    <cdecl: void "cairo_rel_curve_to" ( handle double double double double double double ) >
     self primitiveFailed
 !
 
-cairo_rel_line_to: cr _: dx _: dy 
-
-    <cdecl: void "cairo_rel_line_to" ( Cairo::GraphicsContext double double ) >
+cairo_rel_line_to: cr _: dx _: dy
+
+    <cdecl: void "cairo_rel_line_to" ( handle double double ) >
     self primitiveFailed
 !
 
-cairo_rel_move_to: cr _: dx _: dy 
-
-    <cdecl: void "cairo_rel_move_to" ( Cairo::GraphicsContext double double ) >
+cairo_rel_move_to: cr _: dx _: dy
+
+    <cdecl: void "cairo_rel_move_to" ( handle double double ) >
     self primitiveFailed
 !
 
-cairo_reset_clip: cr 
-
-    <cdecl: void "cairo_reset_clip" ( Cairo::GraphicsContext ) >
+cairo_reset_clip: cr
+
+    <cdecl: void "cairo_reset_clip" ( handle ) >
     self primitiveFailed
 !
 
-cairo_restore: cr 
-
-    <cdecl: void "cairo_restore" ( Cairo::GraphicsContext ) >
+cairo_restore: cr
+
+    <cdecl: void "cairo_restore" ( handle ) >
     self primitiveFailed
 !
 
-cairo_rotate: cr _: angle 
-
-    <cdecl: void "cairo_rotate" ( Cairo::GraphicsContext double ) >
+cairo_rotate: cr _: angle
+
+    <cdecl: void "cairo_rotate" ( handle double ) >
     self primitiveFailed
 !
 
-cairo_save: cr 
-
-    <cdecl: void "cairo_save" ( Cairo::GraphicsContext ) >
+cairo_save: cr
+
+    <cdecl: void "cairo_save" ( handle ) >
     self primitiveFailed
 !
 
-cairo_scale: cr _: sx _: sy 
-
-    <cdecl: void "cairo_scale" ( Cairo::GraphicsContext double double ) >
+cairo_scale: cr _: sx _: sy
+
+    <cdecl: void "cairo_scale" ( handle double double ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_create: font_face _: font_matrix _: ctm _: options 
+cairo_scaled_font_create: font_face _: font_matrix _: ctm _: options
 
     <cdecl: Cairo::ScaledFont "cairo_scaled_font_create" ( Cairo::FontFace Cairo::Matrix Cairo::Matrix Cairo::FontOptions ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_destroy: scaled_font 
+cairo_scaled_font_destroy: scaled_font
 
     <cdecl: void "cairo_scaled_font_destroy" ( Cairo::ScaledFont ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_extents: scaled_font _: extents 
+cairo_scaled_font_extents: scaled_font _: extents
 
     <cdecl: void "cairo_scaled_font_extents" ( Cairo::ScaledFont Cairo::FontExtents ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_get_ctm: scaled_font _: ctm 
+cairo_scaled_font_get_ctm: scaled_font _: ctm
 
     <cdecl: void "cairo_scaled_font_get_ctm" ( Cairo::ScaledFont Cairo::Matrix ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_get_font_face: scaled_font 
+cairo_scaled_font_get_font_face: scaled_font
 
     <cdecl: Cairo::FontFace "cairo_scaled_font_get_font_face" ( Cairo::ScaledFont ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_get_font_matrix: scaled_font _: font_matrix 
+cairo_scaled_font_get_font_matrix: scaled_font _: font_matrix
 
     <cdecl: void "cairo_scaled_font_get_font_matrix" ( Cairo::ScaledFont Cairo::Matrix ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_get_font_options: scaled_font _: options 
+cairo_scaled_font_get_font_options: scaled_font _: options
 
     <cdecl: void "cairo_scaled_font_get_font_options" ( Cairo::ScaledFont Cairo::FontOptions ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_get_reference_count: scaled_font 
+cairo_scaled_font_get_reference_count: scaled_font
 
     <cdecl: uint32 "cairo_scaled_font_get_reference_count" ( Cairo::ScaledFont ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_get_scale_matrix: scaled_font _: scale_matrix 
+cairo_scaled_font_get_scale_matrix: scaled_font _: scale_matrix
 
     <cdecl: void "cairo_scaled_font_get_scale_matrix" ( Cairo::ScaledFont Cairo::Matrix ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_get_type: scaled_font 
+cairo_scaled_font_get_type: scaled_font
 
     <cdecl: int32 "cairo_scaled_font_get_type" ( Cairo::ScaledFont ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_get_user_data: scaled_font _: key 
+cairo_scaled_font_get_user_data: scaled_font _: key
 
     <cdecl: voidPointer "cairo_scaled_font_get_user_data" ( Cairo::ScaledFont Cairo::UserDataKey ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_glyph_extents: scaled_font _: glyphs _: num_glyphs _: extents 
+cairo_scaled_font_glyph_extents: scaled_font _: glyphs _: num_glyphs _: extents
 
     <cdecl: void "cairo_scaled_font_glyph_extents" ( Cairo::ScaledFont Cairo::Glyph int32 Cairo::TextExtents ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_reference: scaled_font 
+cairo_scaled_font_reference: scaled_font
 
     <cdecl: Cairo::ScaledFont "cairo_scaled_font_reference" ( Cairo::ScaledFont ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_set_user_data: scaled_font _: key _: user_data _: destroy 
+cairo_scaled_font_set_user_data: scaled_font _: key _: user_data _: destroy
 
     <cdecl: int32 "cairo_scaled_font_set_user_data" ( Cairo::ScaledFont Cairo::UserDataKey voidPointer pointer ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_status: scaled_font 
+cairo_scaled_font_status: scaled_font
 
     <cdecl: int32 "cairo_scaled_font_status" ( Cairo::ScaledFont ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_text_extents: scaled_font _: utf8 _: extents 
+cairo_scaled_font_text_extents: scaled_font _: utf8 _: extents
 
     <cdecl: void "cairo_scaled_font_text_extents" ( Cairo::ScaledFont charPointer Cairo::TextExtents ) >
     self primitiveFailed
 !
 
-cairo_scaled_font_text_to_glyphs: scaled_font _: x _: y _: utf8 _: utf8_len _: glyphs _: num_glyphs _: clusters _: num_clusters _: cluster_flags 
+cairo_scaled_font_text_to_glyphs: scaled_font _: x _: y _: utf8 _: utf8_len _: glyphs _: num_glyphs _: clusters _: num_clusters _: cluster_flags
 
     <cdecl: int32 "cairo_scaled_font_text_to_glyphs" ( Cairo::ScaledFont double double charPointer int32 pointer int32Pointer pointer int32Pointer intPointer ) >
     self primitiveFailed
 !
 
-cairo_select_font_face: cr _: family _: slant _: weight 
-
-    <cdecl: void "cairo_select_font_face" ( Cairo::GraphicsContext charPointer int32 int32 ) >
+cairo_select_font_face: cr _: family _: slant _: weight
+
+    <cdecl: void "cairo_select_font_face" ( handle charPointer int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_set_antialias: cr _: antialias 
-
-    <cdecl: void "cairo_set_antialias" ( Cairo::GraphicsContext int32 ) >
+cairo_set_antialias: cr _: antialias
+
+    <cdecl: void "cairo_set_antialias" ( handle int32 ) >
     self primitiveFailed
 !
 
-cairo_set_dash: cr _: dashes _: num_dashes _: offset 
-
-    <cdecl: void "cairo_set_dash" ( Cairo::GraphicsContext doublePointer int32 double ) >
+cairo_set_dash: cr _: dashes _: num_dashes _: offset
+
+    <cdecl: void "cairo_set_dash" ( handle doublePointer int32 double ) >
     self primitiveFailed
 !
 
-cairo_set_fill_rule: cr _: fill_rule 
-
-    <cdecl: void "cairo_set_fill_rule" ( Cairo::GraphicsContext int32 ) >
+cairo_set_fill_rule: cr _: fill_rule
+
+    <cdecl: void "cairo_set_fill_rule" ( handle int32 ) >
     self primitiveFailed
 !
 
-cairo_set_font_face: cr _: font_face 
-
-    <cdecl: void "cairo_set_font_face" ( Cairo::GraphicsContext Cairo::FontFace ) >
+cairo_set_font_face: cr _: font_face
+
+    <cdecl: void "cairo_set_font_face" ( handle Cairo::FontFace ) >
     self primitiveFailed
 !
 
-cairo_set_font_matrix: cr _: matrix 
-
-    <cdecl: void "cairo_set_font_matrix" ( Cairo::GraphicsContext Cairo::Matrix ) >
+cairo_set_font_matrix: cr _: matrix
+
+    <cdecl: void "cairo_set_font_matrix" ( handle Cairo::Matrix ) >
     self primitiveFailed
 !
 
-cairo_set_font_options: cr _: options 
-
-    <cdecl: void "cairo_set_font_options" ( Cairo::GraphicsContext Cairo::FontOptions ) >
+cairo_set_font_options: cr _: options
+
+    <cdecl: void "cairo_set_font_options" ( handle Cairo::FontOptions ) >
     self primitiveFailed
 !
 
-cairo_set_font_size: cr _: size 
-
-    <cdecl: void "cairo_set_font_size" ( Cairo::GraphicsContext double ) >
+cairo_set_font_size: cr _: size
+
+    <cdecl: void "cairo_set_font_size" ( handle double ) >
     self primitiveFailed
 !
 
-cairo_set_line_cap: cr _: line_cap 
-
-    <cdecl: void "cairo_set_line_cap" ( Cairo::GraphicsContext int32 ) >
+cairo_set_line_cap: cr _: line_cap
+
+    <cdecl: void "cairo_set_line_cap" ( handle int32 ) >
     self primitiveFailed
 !
 
-cairo_set_line_join: cr _: line_join 
-
-    <cdecl: void "cairo_set_line_join" ( Cairo::GraphicsContext int32 ) >
+cairo_set_line_join: cr _: line_join
+
+    <cdecl: void "cairo_set_line_join" ( handle int32 ) >
     self primitiveFailed
 !
 
-cairo_set_line_width: cr _: width 
-
-    <cdecl: void "cairo_set_line_width" ( Cairo::GraphicsContext double ) >
+cairo_set_line_width: cr _: width
+
+    <cdecl: void "cairo_set_line_width" ( handle double ) >
     self primitiveFailed
 !
 
-cairo_set_matrix: cr _: matrix 
-
-    <cdecl: void "cairo_set_matrix" ( Cairo::GraphicsContext Cairo::Matrix ) >
+cairo_set_matrix: cr _: matrix
+
+    <cdecl: void "cairo_set_matrix" ( handle Cairo::Matrix ) >
     self primitiveFailed
 !
 
-cairo_set_miter_limit: cr _: limit 
-
-    <cdecl: void "cairo_set_miter_limit" ( Cairo::GraphicsContext double ) >
+cairo_set_miter_limit: cr _: limit
+
+    <cdecl: void "cairo_set_miter_limit" ( handle double ) >
     self primitiveFailed
 !
 
-cairo_set_operator: cr _: op 
-
-    <cdecl: void "cairo_set_operator" ( Cairo::GraphicsContext int32 ) >
+cairo_set_operator: cr _: op
+
+    <cdecl: void "cairo_set_operator" ( handle int32 ) >
     self primitiveFailed
 !
 
-cairo_set_scaled_font: cr _: scaled_font 
-
-    <cdecl: void "cairo_set_scaled_font" ( Cairo::GraphicsContext Cairo::ScaledFont ) >
+cairo_set_scaled_font: cr _: scaled_font
+
+    <cdecl: void "cairo_set_scaled_font" ( handle Cairo::ScaledFont ) >
     self primitiveFailed
 !
 
-cairo_set_source: cr _: source 
-
-    <cdecl: void "cairo_set_source" ( Cairo::GraphicsContext Cairo::Pattern ) >
+cairo_set_source: cr _: source
+
+    <cdecl: void "cairo_set_source" ( handle Cairo::Pattern ) >
     self primitiveFailed
 !
 
-cairo_set_source_rgb: cr _: red _: green _: blue 
-
-    <cdecl: void "cairo_set_source_rgb" ( Cairo::GraphicsContext double double double ) >
+cairo_set_source_rgb: cr _: red _: green _: blue
+
+    <cdecl: void "cairo_set_source_rgb" ( handle double double double ) >
     self primitiveFailed
 !
 
-cairo_set_source_rgba: cr _: red _: green _: blue _: alpha 
-
-    <cdecl: void "cairo_set_source_rgba" ( Cairo::GraphicsContext double double double double ) >
+cairo_set_source_rgba: cr _: red _: green _: blue _: alpha
+
+    <cdecl: void "cairo_set_source_rgba" ( handle double double double double ) >
     self primitiveFailed
 !
 
-cairo_set_source_surface: cr _: surface _: x _: y 
-
-    <cdecl: void "cairo_set_source_surface" ( Cairo::GraphicsContext Cairo::Surface double double ) >
+cairo_set_source_surface: cr _: surface _: x _: y
+
+    <cdecl: void "cairo_set_source_surface" ( handle Cairo::Surface double double ) >
     self primitiveFailed
 !
 
-cairo_set_tolerance: cr _: tolerance 
-
-    <cdecl: void "cairo_set_tolerance" ( Cairo::GraphicsContext double ) >
+cairo_set_tolerance: cr _: tolerance
+
+    <cdecl: void "cairo_set_tolerance" ( handle double ) >
     self primitiveFailed
 !
 
-cairo_set_user_data: cr _: key _: user_data _: destroy 
-
-    <cdecl: int32 "cairo_set_user_data" ( Cairo::GraphicsContext Cairo::UserDataKey voidPointer pointer ) >
+cairo_set_user_data: cr _: key _: user_data _: destroy
+
+    <cdecl: int32 "cairo_set_user_data" ( handle Cairo::UserDataKey voidPointer pointer ) >
     self primitiveFailed
 !
 
-cairo_show_glyphs: cr _: glyphs _: num_glyphs 
-
-    <cdecl: void "cairo_show_glyphs" ( Cairo::GraphicsContext Cairo::Glyph int32 ) >
+cairo_show_glyphs: cr _: glyphs _: num_glyphs
+
+    <cdecl: void "cairo_show_glyphs" ( handle Cairo::Glyph int32 ) >
     self primitiveFailed
 !
 
-cairo_show_page: cr 
-
-    <cdecl: void "cairo_show_page" ( Cairo::GraphicsContext ) >
+cairo_show_page: cr
+
+    <cdecl: void "cairo_show_page" ( handle ) >
     self primitiveFailed
 !
 
-cairo_show_text: cr _: utf8 
-
-    <cdecl: void "cairo_show_text" ( Cairo::GraphicsContext charPointer ) >
+cairo_show_text: cr _: utf8
+
+    <cdecl: void "cairo_show_text" ( handle charPointer ) >
     self primitiveFailed
 !
 
-cairo_show_text_glyphs: cr _: utf8 _: utf8_len _: glyphs _: num_glyphs _: clusters _: num_clusters _: cluster_flags 
-
-    <cdecl: void "cairo_show_text_glyphs" ( Cairo::GraphicsContext charPointer int32 Cairo::Glyph int32 Cairo::TextCluster int32 int32 ) >
+cairo_show_text_glyphs: cr _: utf8 _: utf8_len _: glyphs _: num_glyphs _: clusters _: num_clusters _: cluster_flags
+
+    <cdecl: void "cairo_show_text_glyphs" ( handle charPointer int32 Cairo::Glyph int32 Cairo::TextCluster int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_status: cr 
-
-    <cdecl: int32 "cairo_status" ( Cairo::GraphicsContext ) >
+cairo_status: cr
+
+    <cdecl: int32 "cairo_status" ( handle ) >
     self primitiveFailed
 !
 
-cairo_status_to_string: status 
+cairo_status_to_string: status
 
     <cdecl: charPointer "cairo_status_to_string" ( int32 ) >
     self primitiveFailed
 !
 
-cairo_stroke: cr 
-
-    <cdecl: void "cairo_stroke" ( Cairo::GraphicsContext ) >
+cairo_stroke: cr
+
+    <cdecl: void "cairo_stroke" ( handle ) >
     self primitiveFailed
 !
 
-cairo_stroke_extents: cr _: x1 _: y1 _: x2 _: y2 
-
-    <cdecl: void "cairo_stroke_extents" ( Cairo::GraphicsContext doublePointer doublePointer doublePointer doublePointer ) >
+cairo_stroke_extents: cr _: x1 _: y1 _: x2 _: y2
+
+    <cdecl: void "cairo_stroke_extents" ( handle doublePointer doublePointer doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_stroke_preserve: cr 
-
-    <cdecl: void "cairo_stroke_preserve" ( Cairo::GraphicsContext ) >
+cairo_stroke_preserve: cr
+
+    <cdecl: void "cairo_stroke_preserve" ( handle ) >
     self primitiveFailed
 !
 
-cairo_surface_copy_page: surface 
+cairo_surface_copy_page: surface
 
     <cdecl: void "cairo_surface_copy_page" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_surface_create_for_rectangle: target _: x _: y _: width _: height 
+cairo_surface_create_for_rectangle: target _: x _: y _: width _: height
 
     <cdecl: Cairo::Surface "cairo_surface_create_for_rectangle" ( Cairo::Surface double double double double ) >
     self primitiveFailed
 !
 
-cairo_surface_create_observer: target _: mode 
+cairo_surface_create_observer: target _: mode
 
     <cdecl: Cairo::Surface "cairo_surface_create_observer" ( Cairo::Surface int32 ) >
     self primitiveFailed
 !
 
-cairo_surface_create_similar: other _: content _: width _: height 
+cairo_surface_create_similar: other _: content _: width _: height
 
     <cdecl: Cairo::Surface "cairo_surface_create_similar" ( Cairo::Surface int32 int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_surface_create_similar_image: other _: format _: width _: height 
+cairo_surface_create_similar_image: other _: format _: width _: height
 
     <cdecl: Cairo::Surface "cairo_surface_create_similar_image" ( Cairo::Surface int32 int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_surface_destroy: surface 
+cairo_surface_destroy: surface
 
     <cdecl: void "cairo_surface_destroy" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_surface_finish: surface 
+cairo_surface_finish: surface
 
     <cdecl: void "cairo_surface_finish" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_surface_flush: surface 
+cairo_surface_flush: surface
 
     <cdecl: void "cairo_surface_flush" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_surface_get_content: surface 
+cairo_surface_get_content: surface
 
     <cdecl: int32 "cairo_surface_get_content" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_surface_get_device: surface 
+cairo_surface_get_device: surface
 
     <cdecl: Cairo::Device "cairo_surface_get_device" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_surface_get_device_offset: surface _: x_offset _: y_offset 
+cairo_surface_get_device_offset: surface _: x_offset _: y_offset
 
     <cdecl: void "cairo_surface_get_device_offset" ( Cairo::Surface doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_surface_get_device_scale: surface _: x_scale _: y_scale 
+cairo_surface_get_device_scale: surface _: x_scale _: y_scale
 
     <cdecl: void "cairo_surface_get_device_scale" ( Cairo::Surface doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_surface_get_fallback_resolution: surface _: x_pixels_per_inch _: y_pixels_per_inch 
+cairo_surface_get_fallback_resolution: surface _: x_pixels_per_inch _: y_pixels_per_inch
 
     <cdecl: void "cairo_surface_get_fallback_resolution" ( Cairo::Surface doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_surface_get_font_options: surface _: options 
+cairo_surface_get_font_options: surface _: options
 
     <cdecl: void "cairo_surface_get_font_options" ( Cairo::Surface Cairo::FontOptions ) >
     self primitiveFailed
 !
 
-cairo_surface_get_mime_data: surface _: mime_type _: data _: length 
+cairo_surface_get_mime_data: surface _: mime_type _: data _: length
 
     <cdecl: void "cairo_surface_get_mime_data" ( Cairo::Surface charPointer pointer longPointer ) >
     self primitiveFailed
 !
 
-cairo_surface_get_reference_count: surface 
+cairo_surface_get_reference_count: surface
 
     <cdecl: uint32 "cairo_surface_get_reference_count" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_surface_get_type: surface 
+cairo_surface_get_type: surface
 
     <cdecl: int32 "cairo_surface_get_type" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_surface_get_user_data: surface _: key 
+cairo_surface_get_user_data: surface _: key
 
     <cdecl: voidPointer "cairo_surface_get_user_data" ( Cairo::Surface Cairo::UserDataKey ) >
     self primitiveFailed
 !
 
-cairo_surface_has_show_text_glyphs: surface 
+cairo_surface_has_show_text_glyphs: surface
 
     <cdecl: int32 "cairo_surface_has_show_text_glyphs" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_surface_map_to_image: surface _: extents 
+cairo_surface_map_to_image: surface _: extents
 
     <cdecl: Cairo::Surface "cairo_surface_map_to_image" ( Cairo::Surface Cairo::RectangleInt ) >
     self primitiveFailed
 !
 
-cairo_surface_mark_dirty: surface 
+cairo_surface_mark_dirty: surface
 
     <cdecl: void "cairo_surface_mark_dirty" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_surface_mark_dirty_rectangle: surface _: x _: y _: width _: height 
+cairo_surface_mark_dirty_rectangle: surface _: x _: y _: width _: height
 
     <cdecl: void "cairo_surface_mark_dirty_rectangle" ( Cairo::Surface int32 int32 int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_surface_observer_add_fill_callback: abstract_surface _: func _: data 
+cairo_surface_observer_add_fill_callback: abstract_surface _: func _: data
 
     <cdecl: int32 "cairo_surface_observer_add_fill_callback" ( Cairo::Surface pointer voidPointer ) >
     self primitiveFailed
 !
 
-cairo_surface_observer_add_finish_callback: abstract_surface _: func _: data 
+cairo_surface_observer_add_finish_callback: abstract_surface _: func _: data
 
     <cdecl: int32 "cairo_surface_observer_add_finish_callback" ( Cairo::Surface pointer voidPointer ) >
     self primitiveFailed
 !
 
-cairo_surface_observer_add_flush_callback: abstract_surface _: func _: data 
+cairo_surface_observer_add_flush_callback: abstract_surface _: func _: data
 
     <cdecl: int32 "cairo_surface_observer_add_flush_callback" ( Cairo::Surface pointer voidPointer ) >
     self primitiveFailed
 !
 
-cairo_surface_observer_add_glyphs_callback: abstract_surface _: func _: data 
+cairo_surface_observer_add_glyphs_callback: abstract_surface _: func _: data
 
     <cdecl: int32 "cairo_surface_observer_add_glyphs_callback" ( Cairo::Surface pointer voidPointer ) >
     self primitiveFailed
 !
 
-cairo_surface_observer_add_mask_callback: abstract_surface _: func _: data 
+cairo_surface_observer_add_mask_callback: abstract_surface _: func _: data
 
     <cdecl: int32 "cairo_surface_observer_add_mask_callback" ( Cairo::Surface pointer voidPointer ) >
     self primitiveFailed
 !
 
-cairo_surface_observer_add_paint_callback: abstract_surface _: func _: data 
+cairo_surface_observer_add_paint_callback: abstract_surface _: func _: data
 
     <cdecl: int32 "cairo_surface_observer_add_paint_callback" ( Cairo::Surface pointer voidPointer ) >
     self primitiveFailed
 !
 
-cairo_surface_observer_add_stroke_callback: abstract_surface _: func _: data 
+cairo_surface_observer_add_stroke_callback: abstract_surface _: func _: data
 
     <cdecl: int32 "cairo_surface_observer_add_stroke_callback" ( Cairo::Surface pointer voidPointer ) >
     self primitiveFailed
 !
 
-cairo_surface_observer_elapsed: surface 
+cairo_surface_observer_elapsed: surface
 
     <cdecl: double "cairo_surface_observer_elapsed" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_surface_observer_print: surface _: write_func _: closure 
+cairo_surface_observer_print: surface _: write_func _: closure
 
     <cdecl: int32 "cairo_surface_observer_print" ( Cairo::Surface pointer voidPointer ) >
     self primitiveFailed
 !
 
-cairo_surface_reference: surface 
+cairo_surface_reference: surface
 
     <cdecl: Cairo::Surface "cairo_surface_reference" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_surface_set_device_offset: surface _: x_offset _: y_offset 
+cairo_surface_set_device_offset: surface _: x_offset _: y_offset
 
     <cdecl: void "cairo_surface_set_device_offset" ( Cairo::Surface double double ) >
     self primitiveFailed
 !
 
-cairo_surface_set_device_scale: surface _: x_scale _: y_scale 
+cairo_surface_set_device_scale: surface _: x_scale _: y_scale
 
     <cdecl: void "cairo_surface_set_device_scale" ( Cairo::Surface double double ) >
     self primitiveFailed
 !
 
-cairo_surface_set_fallback_resolution: surface _: x_pixels_per_inch _: y_pixels_per_inch 
+cairo_surface_set_fallback_resolution: surface _: x_pixels_per_inch _: y_pixels_per_inch
 
     <cdecl: void "cairo_surface_set_fallback_resolution" ( Cairo::Surface double double ) >
     self primitiveFailed
 !
 
-cairo_surface_set_mime_data: surface _: mime_type _: data _: length _: destroy _: closure 
+cairo_surface_set_mime_data: surface _: mime_type _: data _: length _: destroy _: closure
 
     <cdecl: int32 "cairo_surface_set_mime_data" ( Cairo::Surface charPointer charPointer long pointer voidPointer ) >
     self primitiveFailed
 !
 
-cairo_surface_set_user_data: surface _: key _: user_data _: destroy 
+cairo_surface_set_user_data: surface _: key _: user_data _: destroy
 
     <cdecl: int32 "cairo_surface_set_user_data" ( Cairo::Surface Cairo::UserDataKey voidPointer pointer ) >
     self primitiveFailed
 !
 
-cairo_surface_show_page: surface 
+cairo_surface_show_page: surface
 
     <cdecl: void "cairo_surface_show_page" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_surface_status: surface 
+cairo_surface_status: surface
 
     <cdecl: int32 "cairo_surface_status" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_surface_supports_mime_type: surface _: mime_type 
+cairo_surface_supports_mime_type: surface _: mime_type
 
     <cdecl: int32 "cairo_surface_supports_mime_type" ( Cairo::Surface charPointer ) >
     self primitiveFailed
 !
 
-cairo_surface_unmap_image: surface _: image 
+cairo_surface_unmap_image: surface _: image
 
     <cdecl: void "cairo_surface_unmap_image" ( Cairo::Surface Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_surface_write_to_png: surface _: filename 
+cairo_surface_write_to_png: surface _: filename
 
     <cdecl: int32 "cairo_surface_write_to_png" ( Cairo::Surface charPointer ) >
     self primitiveFailed
 !
 
-cairo_surface_write_to_png_stream: surface _: write_func _: closure 
+cairo_surface_write_to_png_stream: surface _: write_func _: closure
 
     <cdecl: int32 "cairo_surface_write_to_png_stream" ( Cairo::Surface pointer voidPointer ) >
     self primitiveFailed
 !
 
-cairo_text_cluster_allocate: num_clusters 
+cairo_text_cluster_allocate: num_clusters
 
     <cdecl: Cairo::TextCluster "cairo_text_cluster_allocate" ( int32 ) >
     self primitiveFailed
 !
 
-cairo_text_cluster_free: clusters 
+cairo_text_cluster_free: clusters
 
     <cdecl: void "cairo_text_cluster_free" ( Cairo::TextCluster ) >
     self primitiveFailed
 !
 
-cairo_text_extents: cr _: utf8 _: extents 
-
-    <cdecl: void "cairo_text_extents" ( Cairo::GraphicsContext charPointer Cairo::TextExtents ) >
+cairo_text_extents: cr _: utf8 _: extents
+
+    <cdecl: void "cairo_text_extents" ( handle charPointer Cairo::TextExtents ) >
     self primitiveFailed
 !
 
-cairo_text_path: cr _: utf8 
-
-    <cdecl: void "cairo_text_path" ( Cairo::GraphicsContext charPointer ) >
+cairo_text_path: cr _: utf8
+
+    <cdecl: void "cairo_text_path" ( handle charPointer ) >
     self primitiveFailed
 !
 
-cairo_toy_font_face_create: family _: slant _: weight 
+cairo_toy_font_face_create: family _: slant _: weight
 
     <cdecl: Cairo::FontFace "cairo_toy_font_face_create" ( charPointer int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_toy_font_face_get_family: font_face 
+cairo_toy_font_face_get_family: font_face
 
     <cdecl: charPointer "cairo_toy_font_face_get_family" ( Cairo::FontFace ) >
     self primitiveFailed
 !
 
-cairo_toy_font_face_get_slant: font_face 
+cairo_toy_font_face_get_slant: font_face
 
     <cdecl: int32 "cairo_toy_font_face_get_slant" ( Cairo::FontFace ) >
     self primitiveFailed
 !
 
-cairo_toy_font_face_get_weight: font_face 
+cairo_toy_font_face_get_weight: font_face
 
     <cdecl: int32 "cairo_toy_font_face_get_weight" ( Cairo::FontFace ) >
     self primitiveFailed
 !
 
-cairo_transform: cr _: matrix 
-
-    <cdecl: void "cairo_transform" ( Cairo::GraphicsContext Cairo::Matrix ) >
+cairo_transform: cr _: matrix
+
+    <cdecl: void "cairo_transform" ( handle Cairo::Matrix ) >
     self primitiveFailed
 !
 
-cairo_translate: cr _: tx _: ty 
-
-    <cdecl: void "cairo_translate" ( Cairo::GraphicsContext double double ) >
+cairo_translate: cr _: tx _: ty
+
+    <cdecl: void "cairo_translate" ( handle double double ) >
     self primitiveFailed
 !
 
@@ -1986,63 +1986,63 @@
     self primitiveFailed
 !
 
-cairo_user_font_face_get_init_func: font_face 
+cairo_user_font_face_get_init_func: font_face
 
     <cdecl: pointer "cairo_user_font_face_get_init_func" ( Cairo::FontFace ) >
     self primitiveFailed
 !
 
-cairo_user_font_face_get_render_glyph_func: font_face 
+cairo_user_font_face_get_render_glyph_func: font_face
 
     <cdecl: pointer "cairo_user_font_face_get_render_glyph_func" ( Cairo::FontFace ) >
     self primitiveFailed
 !
 
-cairo_user_font_face_get_text_to_glyphs_func: font_face 
+cairo_user_font_face_get_text_to_glyphs_func: font_face
 
     <cdecl: pointer "cairo_user_font_face_get_text_to_glyphs_func" ( Cairo::FontFace ) >
     self primitiveFailed
 !
 
-cairo_user_font_face_get_unicode_to_glyph_func: font_face 
+cairo_user_font_face_get_unicode_to_glyph_func: font_face
 
     <cdecl: pointer "cairo_user_font_face_get_unicode_to_glyph_func" ( Cairo::FontFace ) >
     self primitiveFailed
 !
 
-cairo_user_font_face_set_init_func: font_face _: init_func 
+cairo_user_font_face_set_init_func: font_face _: init_func
 
     <cdecl: void "cairo_user_font_face_set_init_func" ( Cairo::FontFace pointer ) >
     self primitiveFailed
 !
 
-cairo_user_font_face_set_render_glyph_func: font_face _: render_glyph_func 
+cairo_user_font_face_set_render_glyph_func: font_face _: render_glyph_func
 
     <cdecl: void "cairo_user_font_face_set_render_glyph_func" ( Cairo::FontFace pointer ) >
     self primitiveFailed
 !
 
-cairo_user_font_face_set_text_to_glyphs_func: font_face _: text_to_glyphs_func 
+cairo_user_font_face_set_text_to_glyphs_func: font_face _: text_to_glyphs_func
 
     <cdecl: void "cairo_user_font_face_set_text_to_glyphs_func" ( Cairo::FontFace pointer ) >
     self primitiveFailed
 !
 
-cairo_user_font_face_set_unicode_to_glyph_func: font_face _: unicode_to_glyph_func 
+cairo_user_font_face_set_unicode_to_glyph_func: font_face _: unicode_to_glyph_func
 
     <cdecl: void "cairo_user_font_face_set_unicode_to_glyph_func" ( Cairo::FontFace pointer ) >
     self primitiveFailed
 !
 
-cairo_user_to_device: cr _: x _: y 
-
-    <cdecl: void "cairo_user_to_device" ( Cairo::GraphicsContext doublePointer doublePointer ) >
+cairo_user_to_device: cr _: x _: y
+
+    <cdecl: void "cairo_user_to_device" ( handle doublePointer doublePointer ) >
     self primitiveFailed
 !
 
-cairo_user_to_device_distance: cr _: dx _: dy 
-
-    <cdecl: void "cairo_user_to_device_distance" ( Cairo::GraphicsContext doublePointer doublePointer ) >
+cairo_user_to_device_distance: cr _: dx _: dy
+
+    <cdecl: void "cairo_user_to_device_distance" ( handle doublePointer doublePointer ) >
     self primitiveFailed
 !
 
@@ -2058,85 +2058,85 @@
     self primitiveFailed
 !
 
-cairo_xlib_device_debug_cap_xrender_version: device _: major_version _: minor_version 
+cairo_xlib_device_debug_cap_xrender_version: device _: major_version _: minor_version
 
     <cdecl: void "cairo_xlib_device_debug_cap_xrender_version" ( Cairo::Device int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_xlib_device_debug_get_precision: device 
+cairo_xlib_device_debug_get_precision: device
 
     <cdecl: int32 "cairo_xlib_device_debug_get_precision" ( Cairo::Device ) >
     self primitiveFailed
 !
 
-cairo_xlib_device_debug_set_precision: device _: precision 
+cairo_xlib_device_debug_set_precision: device _: precision
 
     <cdecl: void "cairo_xlib_device_debug_set_precision" ( Cairo::Device int32 ) >
     self primitiveFailed
 !
 
-cairo_xlib_surface_create: dpy _: drawable _: visual _: width _: height 
+cairo_xlib_surface_create: dpy _: drawable _: visual _: width _: height
 
     <cdecl: Cairo::Surface "cairo_xlib_surface_create" ( pointer long pointer int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_xlib_surface_create_for_bitmap: dpy _: bitmap _: screen _: width _: height 
+cairo_xlib_surface_create_for_bitmap: dpy _: bitmap _: screen _: width _: height
 
     <cdecl: Cairo::Surface "cairo_xlib_surface_create_for_bitmap" ( pointer long pointer int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_xlib_surface_get_depth: surface 
+cairo_xlib_surface_get_depth: surface
 
     <cdecl: int32 "cairo_xlib_surface_get_depth" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_xlib_surface_get_display: surface 
+cairo_xlib_surface_get_display: surface
 
     <cdecl: pointer "cairo_xlib_surface_get_display" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_xlib_surface_get_drawable: surface 
+cairo_xlib_surface_get_drawable: surface
 
     <cdecl: long "cairo_xlib_surface_get_drawable" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_xlib_surface_get_height: surface 
+cairo_xlib_surface_get_height: surface
 
     <cdecl: int32 "cairo_xlib_surface_get_height" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_xlib_surface_get_screen: surface 
+cairo_xlib_surface_get_screen: surface
 
     <cdecl: pointer "cairo_xlib_surface_get_screen" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_xlib_surface_get_visual: surface 
+cairo_xlib_surface_get_visual: surface
 
     <cdecl: pointer "cairo_xlib_surface_get_visual" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_xlib_surface_get_width: surface 
+cairo_xlib_surface_get_width: surface
 
     <cdecl: int32 "cairo_xlib_surface_get_width" ( Cairo::Surface ) >
     self primitiveFailed
 !
 
-cairo_xlib_surface_set_drawable: surface _: drawable _: width _: height 
+cairo_xlib_surface_set_drawable: surface _: drawable _: width _: height
 
     <cdecl: void "cairo_xlib_surface_set_drawable" ( Cairo::Surface long int32 int32 ) >
     self primitiveFailed
 !
 
-cairo_xlib_surface_set_size: surface _: width _: height 
+cairo_xlib_surface_set_size: surface _: width _: height
 
     <cdecl: void "cairo_xlib_surface_set_size" ( Cairo::Surface int32 int32 ) >
     self primitiveFailed
--- a/Cairo__FontFace.st	Sun Dec 28 22:38:24 2014 +0100
+++ b/Cairo__FontFace.st	Mon Dec 29 00:14:00 2014 +0100
@@ -2,7 +2,7 @@
 
 "{ NameSpace: Cairo }"
 
-RefCountedStructure subclass:#FontFace
+CObject subclass:#FontFace
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
--- a/Cairo__GraphicsContext.st	Sun Dec 28 22:38:24 2014 +0100
+++ b/Cairo__GraphicsContext.st	Mon Dec 29 00:14:00 2014 +0100
@@ -2,9 +2,9 @@
 
 "{ NameSpace: Cairo }"
 
-RefCountedStructure subclass:#GraphicsContext
-	instanceVariableNames:'surface gcId'
-	classVariableNames:''
+Smalltalk::GraphicsContext subclass:#GraphicsContext
+	instanceVariableNames:'handle surface'
+	classVariableNames:'Lobby'
 	poolDictionaries:''
 	category:'Cairo-Objects'
 !
@@ -12,20 +12,18 @@
 
 !GraphicsContext class methodsFor:'instance creation'!
 
-on: surface
+onSurface: surface
 
-    | cr |
+    | handle |
 
     self
         assert: (surface isKindOf: Cairo::Surface)
         message: 'surface is not valid Cairo surface'.
 
-    cr := CPrimitives cairo_create: surface.
-    ^cr
+    handle := CPrimitives cairo_create: surface.
+    ^ self new initializeWithHandle: handle surface: surface
 
-    "Created: / 10-07-2008 / 09:37:57 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 10-09-2008 / 19:03:15 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 28-12-2014 / 21:57:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 28-12-2014 / 23:45:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !GraphicsContext class methodsFor:'accessing'!
@@ -108,75 +106,188 @@
 
 !GraphicsContext methodsFor:'accessing'!
 
-paint: aColor
+font:aFont
+    "set the drawing font"
+
+    ^ self shouldImplement
+!
+
+function:aFunctionSymbol
+    "set the drawing function"
+
+    ^ self shouldImplement
+!
+
+lineWidth: w
 
-    ^self
-        paintRed:   (aColor red / 100) asDouble
-        green:      (aColor green / 100) asDouble
-        blue:       (aColor blue / 100) asDouble
-        alpha:      aColor alpha asDouble
+    ^CPrimitives cairo_set_line_width: handle _:w
+
+    "Created: / 17-06-2012 / 21:55:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-12-2014 / 21:58:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mask:aForm
+    "set the drawing mask"
+
+    ^ self shouldImplement
+!
+
+paint: aColor
+    CPrimitives cairo_set_source_rgba: handle _: (aColor red / 100) asDouble _: (aColor green / 100) asDouble _: (aColor blue / 100) asDouble _: aColor alpha asDouble
 
     "Created: / 10-07-2008 / 11:18:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Modified: / 23-04-2009 / 17:31:33 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 28-12-2014 / 23:58:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 referenceCount
     "Return value or reference counter"
 
-    ^ CPrimitives cairo_get_reference_count: self
+    ^ CPrimitives cairo_get_reference_count: handle
 
     "Created: / 28-12-2014 / 22:11:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 surface
-
-    surface ifNil:[surface := self class primGetTarget: self].
     ^surface
 
     "Created: / 10-07-2008 / 10:33:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Modified: / 10-09-2008 / 20:53:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 28-12-2014 / 23:59:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !GraphicsContext methodsFor:'accessing-path properties'!
 
 lineCap: lc
 
-    ^ CPrimitives cairo_set_line_cap: self _: lc
+    ^ CPrimitives cairo_set_line_cap: handle _: lc
 
     "Created: / 17-06-2012 / 22:09:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-12-2014 / 21:58:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GraphicsContext methodsFor:'basic drawing'!
+
+displayArcX:x y:y width:width height:height from:startAngle angle:angle
+    "draw an arc in a box
+     - this could be recoded to draw using displayLine"
+
+    ^ self shouldImplement
+!
+
+displayLineFromX:x0 y:y0 toX:x1 y:y1
+    "draw a line from x0/y0 to x1/y1"
+
+    ^ self shouldImplement
+!
+
+displayOpaqueForm:aForm x:x y:y
+    "draw a form at x/y; if the form has depth 1, 1's in the form are
+     drawn in current fg, 0's in current bg color.
+     If the form has depth ~~ 1, it is copied as is onto the receiver"
+
+    ^ self shouldImplement
 !
 
-lineWidth: w
+displayOpaqueString:aString from:index1 to:index2 x:x y:y
+    "draw part of a string with both fg and bg at x/y in current font"
+
+    ^ self shouldImplement
+!
+
+displayOpaqueString:aString from:index1 to:index2 x:x y:y maxWitdh:maxWidth
+    "draw part of a string with both fg and bg at x/y in current font"
+
+    ^ self shouldImplement
+!
 
-    ^CPrimitives cairo_set_line_width: self _:w
+displayPolygon:aPolygon
+    "draw a polygon
+     - this could be recoded to draw using displayLine"
+
+    ^ self shouldImplement
+!
 
-    "Created: / 17-06-2012 / 21:55:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 28-12-2014 / 21:58:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+displayRectangleX:x y:y width:w height:h
+    "draw a rectangle
+     - this could be recoded to draw using displayLine"
+
+    ^ self shouldImplement
+!
+
+displayString:aString from:index1 to:index2 x:x y:y
+    "draw part of a string with fg at x/y in current font"
+
+    ^ self shouldImplement
 ! !
 
-!GraphicsContext methodsFor:'font'!
+!GraphicsContext methodsFor:'basic filling'!
 
-fontFaceFamily: family slant: slant weight: weight
+fillArcX:x y:y width:w height:h from:start angle:angle
+    "fill an arc with current paint color"
 
-    ^CPrimitives cairo_select_font_face: self
-        _: family asString
-        _: slant asInteger
-        _: weight asInteger
+    ^ self shouldImplement
+!
 
-    "Created: / 23-04-2009 / 17:23:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 28-12-2014 / 21:58:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+fillPolygon:points
+    "fill a polygon with current paint color"
+
+    ^ self shouldImplement
 !
 
-fontSize: sz
+fillRectangleX:x y:y width:w height:h
+    "fill a rectangle with current paint color"
+
+    ^ self shouldImplement
+! !
 
-    ^CPrimitives cairo_set_font_size: self _: sz
+!GraphicsContext methodsFor:'bit blitting'!
 
-    "Created: / 23-04-2009 / 17:24:33 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 28-12-2014 / 21:58:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+copyFrom:aGC x:srcX y:srcY toX:dstX y:dstY width:w height:h
+    "copy from a drawable - maybe self"
+
+    ^ self shouldImplement
 ! !
 
-!GraphicsContext methodsFor:'misc'!
+!GraphicsContext methodsFor:'cairo api - paths'!
+
+arcX: x y: y radius: r from: startAngle to: stopAngle
+
+    ^CPrimitives cairo_arc: handle _: x asDouble _: y asDouble _: r asDouble _: startAngle asDouble _: stopAngle asDouble
+
+    "Created: / 17-06-2012 / 21:50:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-12-2014 / 22:00:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+lineToX: x y: y
+
+    ^CPrimitives cairo_line_to: handle _: x asDouble _: y asDouble
+
+    "Created: / 17-06-2012 / 22:15:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-12-2014 / 22:00:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+moveToX: x y: y
+
+    ^CPrimitives cairo_move_to: handle _: x asDouble _: y asDouble
+
+    "Created: / 23-04-2009 / 17:21:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 28-12-2014 / 22:00:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+rectangleX: x y: y width: width height: height
+
+    ^CPrimitives cairo_rectangle: handle
+        _: x asDouble
+        _: y asDouble
+        _: width asDouble
+        _: height asDouble
+
+    "Created: / 10-07-2008 / 09:41:50 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 28-12-2014 / 22:01:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GraphicsContext methodsFor:'cairo api - patterns'!
 
 setSourceSurface: aSurface
     ^ self setSourceSurface: aSurface x: 0.0 y: 0.0
@@ -187,103 +298,33 @@
 setSourceSurface: aSyrface x:x y:y
     "raise an error: this method should be implemented (TODO)"
 
-    ^ CPrimitives cairo_set_source_surface: self _: aSyrface _: x _: y
+    ^ CPrimitives cairo_set_source_surface: handle _: aSyrface _: x _: y
 
     "Created: / 24-12-2014 / 23:12:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-12-2014 / 21:59:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!GraphicsContext methodsFor:'paints'!
-
-paintRed: red green: green blue: blue alpha: alpha
-
-    ^CPrimitives cairo_set_source_rgba: self _: red _: green _: blue _: alpha
-
-    "Created: / 10-07-2008 / 11:10:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 28-12-2014 / 21:59:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!GraphicsContext methodsFor:'paths'!
-
-arcX: x y: y radius: r from: startAngle to: stopAngle
-
-    ^CPrimitives cairo_arc: self _: x asDouble _: y asDouble _: r asDouble _: startAngle asDouble _: stopAngle asDouble
-
-    "Created: / 17-06-2012 / 21:50:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 28-12-2014 / 22:00:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-lineToX: x y: y
-
-    ^CPrimitives cairo_line_to: self _: x asDouble _: y asDouble
-
-    "Created: / 17-06-2012 / 22:15:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 28-12-2014 / 22:00:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-moveToX: x y: y
-
-    ^CPrimitives cairo_move_to: self _: x asDouble _: y asDouble
-
-    "Created: / 23-04-2009 / 17:21:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 28-12-2014 / 22:00:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-rectangleX: x y: y width: width height: height
-
-    ^CPrimitives cairo_rectangle: self
-        _: x asDouble
-        _: y asDouble
-        _: width asDouble
-        _: height asDouble
-
-    "Created: / 10-07-2008 / 09:41:50 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 28-12-2014 / 22:01:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!GraphicsContext methodsFor:'private'!
-
-destroy
-    "Tell Cairo library to destroy the corresponding C object.
-     Remember that object is physically destroyed only if internal
-     refcounter goes to zero. However, after calling destroy,
-     this instance should be treated as invalid."
-
-    ^ CPrimitives cairo_destroy: self
-
-    "Created: / 28-12-2014 / 22:10:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!GraphicsContext methodsFor:'private accessing'!
-
-setSurface: aSurface
-
-    surface := aSurface
-
-    "Created: / 10-09-2008 / 19:02:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
-! !
-
-!GraphicsContext methodsFor:'state'!
+!GraphicsContext methodsFor:'cairo api - save & restore'!
 
 restore
-    ^CPrimitives cairo_restore: self
+    ^CPrimitives cairo_restore: handle
 
     "Created: / 17-06-2012 / 21:51:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-12-2014 / 22:01:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 save
-    ^CPrimitives cairo_save: self
+    ^CPrimitives cairo_save: handle
 
     "Created: / 17-06-2012 / 21:51:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-12-2014 / 22:01:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!GraphicsContext methodsFor:'stroke & fill'!
+!GraphicsContext methodsFor:'cairo api - stroke & fill'!
 
 fill
 
-    ^CPrimitives cairo_fill: self
+    ^CPrimitives cairo_fill: handle
 
     "Created: / 10-07-2008 / 09:42:50 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Modified: / 28-12-2014 / 22:01:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -291,7 +332,7 @@
 
 fillAndPreserve
 
-    ^CPrimitives cairo_fill_preserve: self
+    ^CPrimitives cairo_fill_preserve: handle
 
     "Created: / 17-06-2012 / 21:52:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-12-2014 / 22:01:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -300,7 +341,7 @@
 paint
     "Fills whole surface"
 
-    ^CPrimitives cairo_paint: self.
+    ^CPrimitives cairo_paint: handle.
 
     "Created: / 17-06-2012 / 21:40:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-12-2014 / 22:01:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -309,7 +350,7 @@
 showPage
     "Makes sense only for PDF surfaces"
 
-    ^CPrimitives cairo_show_page: self.
+    ^CPrimitives cairo_show_page: handle.
 
     "Created: / 17-06-2012 / 08:44:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-12-2014 / 22:02:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -317,7 +358,7 @@
 
 stroke
 
-    ^CPrimitives cairo_stroke: self
+    ^CPrimitives cairo_stroke: handle
 
     "Created: / 10-07-2008 / 09:42:43 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Modified: / 28-12-2014 / 22:02:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -325,27 +366,46 @@
 
 strokeAndPreserve
 
-    ^CPrimitives cairo_stroke_preserve: self
+    ^CPrimitives cairo_stroke_preserve: handle
 
     "Created: / 17-06-2012 / 21:52:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-12-2014 / 22:15:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!GraphicsContext methodsFor:'text'!
+!GraphicsContext methodsFor:'cairo api - text'!
+
+fontFaceFamily: family slant: slant weight: weight
+
+    ^CPrimitives cairo_select_font_face: handle
+        _: family asString
+        _: slant asInteger
+        _: weight asInteger
+
+    "Created: / 23-04-2009 / 17:23:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 28-12-2014 / 21:58:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fontSize: sz
+
+    ^CPrimitives cairo_set_font_size: handle _: sz
+
+    "Created: / 23-04-2009 / 17:24:33 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 28-12-2014 / 21:58:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
 
 showText: aString
 
-    ^CPrimitives cairo_show_text: self _: aString utf8Encoded
+    ^CPrimitives cairo_show_text: handle _: aString utf8Encoded
 
     "Created: / 23-04-2009 / 17:25:20 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Modified: / 28-12-2014 / 22:02:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!GraphicsContext methodsFor:'transformations & clipping'!
+!GraphicsContext methodsFor:'cairo api - transformations & clipping'!
 
 clip
 
-    ^CPrimitives cairo_clip: self.
+    ^CPrimitives cairo_clip: handle.
 
     "Created: / 17-06-2012 / 21:56:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-12-2014 / 22:02:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -353,7 +413,7 @@
 
 scale: point
 
-    ^CPrimitives cairo_scale: self _: point x _: point y
+    ^CPrimitives cairo_scale: handle _: point x _: point y
 
     "Created: / 17-06-2012 / 21:45:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-12-2014 / 22:03:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -361,12 +421,39 @@
 
 translate: point
 
-    ^CPrimitives cairo_translate: self _: point x _: point y
+    ^CPrimitives cairo_translate: handle _: point x _: point y
 
     "Created: / 17-06-2012 / 21:45:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-12-2014 / 22:03:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!GraphicsContext methodsFor:'initialize & release'!
+
+destroy
+    "Tell Cairo library to destroy the corresponding C object.
+     Remember that object is physically destroyed only if internal
+     refcounter goes to zero. However, after calling destroy,
+     this instance should be treated as invalid."
+
+    ^ CPrimitives cairo_destroy: handle
+
+    "Created: / 28-12-2014 / 22:10:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+initializeWithHandle:anExternalAddress surface: aSurface
+    self initialize.
+    handle := anExternalAddress.
+    surface := aSurface.
+
+    "Created: / 28-12-2014 / 23:52:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+release
+    ^self destroy
+
+    "Created: / 28-12-2014 / 23:49:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !GraphicsContext class methodsFor:'documentation'!
 
 version
--- a/Cairo__Pattern.st	Sun Dec 28 22:38:24 2014 +0100
+++ b/Cairo__Pattern.st	Mon Dec 29 00:14:00 2014 +0100
@@ -2,7 +2,7 @@
 
 "{ NameSpace: Cairo }"
 
-RefCountedStructure subclass:#Pattern
+CObject subclass:#Pattern
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
--- a/Cairo__RefCountedStructure.st	Sun Dec 28 22:38:24 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-"{ Package: 'stx:goodies/libcairo' }"
-
-"{ NameSpace: Cairo }"
-
-ExternalAddress subclass:#RefCountedStructure
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	category:'Cairo-Objects'
-!
-
-
-!RefCountedStructure class methodsFor:'instance creation'!
-
-fromExternalAddress: anExternalAddress
-    ^ self new fromExternalAddress: anExternalAddress
-
-    "Created: / 24-12-2014 / 22:18:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 25-12-2014 / 10:33:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!RefCountedStructure methodsFor:'accessing'!
-
-referenceCount
-    "Return value or reference counter"
-
-    ^ self subclassResponsibility
-
-    "Created: / 09-09-2008 / 20:33:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 28-12-2014 / 22:09:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!RefCountedStructure methodsFor:'finalization'!
-
-executor
-
-    ^self class basicNew
-        setAddress: self address;
-        yourself
-
-    "Created: / 10-09-2008 / 18:57:28 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 25-12-2014 / 10:36:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-finalize
-    self infoPrintCR:'Instance destroyed'.
-    self destroy
-
-    "Created: / 09-09-2008 / 20:30:22 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 10-09-2008 / 18:45:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 28-12-2014 / 21:39:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!RefCountedStructure methodsFor:'initialization & release'!
-
-release
-    self setAddress: nil.
-    self unregisterForFinalization.
-    ^self destroy
-
-    "Created: / 25-12-2014 / 10:34:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 28-12-2014 / 21:41:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-retain
-    "
-        Increases cairo's internal ref-count!!
-    "
-
-    ^self class primReference: self
-
-    "Created: / 09-09-2008 / 20:33:16 / Jan Vrany <vranyj1@fel.cvut.cz>"
-! !
-
-!RefCountedStructure methodsFor:'private'!
-
-destroy
-    "Tell Cairo library to destroy the corresponding C object.
-     Remember that object is physically destroyed only if internal
-     refcounter goes to zero. However, after calling destroy, 
-     this instance should be treated as invalid."
-
-    ^ self subclassResponsibility
-
-    "Created: / 28-12-2014 / 21:41:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-fromExternalAddress:anExternalAddress 
-    self setAddress: anExternalAddress address.  
-    self registerForFinalization.
-    self infoPrintCR:'Instance created'.
-
-    "Created: / 09-09-2008 / 20:35:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 10-09-2008 / 18:45:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 25-12-2014 / 10:36:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-infoPrintCR:aString 
-    Stdout
-        nextPutAll:'Cairo [info] (';
-        nextPutAll:self class nameWithoutPrefix;
-        nextPutAll:' @ 0x';
-        nextPutAll:(self address printStringRadix:16);
-        nextPutAll:' @ ';
-        nextPutAll:(self referenceCount printString);
-        nextPutAll:': ';
-        nextPutAll:aString;
-        cr
-
-    "Created: / 10-09-2008 / 18:45:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
-! !
-
-!RefCountedStructure class methodsFor:'documentation'!
-
-version
-    ^'$Id$'
-!
-
-version_HG
-    ^ '$Changeset: <not expanded> $'
-! !
-
--- a/Cairo__ScaledFont.st	Sun Dec 28 22:38:24 2014 +0100
+++ b/Cairo__ScaledFont.st	Mon Dec 29 00:14:00 2014 +0100
@@ -2,7 +2,7 @@
 
 "{ NameSpace: Cairo }"
 
-RefCountedStructure subclass:#ScaledFont
+CObject subclass:#ScaledFont
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
--- a/Cairo__Surface.st	Sun Dec 28 22:38:24 2014 +0100
+++ b/Cairo__Surface.st	Mon Dec 29 00:14:00 2014 +0100
@@ -2,7 +2,7 @@
 
 "{ NameSpace: Cairo }"
 
-RefCountedStructure subclass:#Surface
+CObject subclass:#Surface
 	instanceVariableNames:'view'
 	classVariableNames:''
 	poolDictionaries:'Cairo::SurfaceType Cairo::Format'
--- a/Make.proto	Sun Dec 28 22:38:24 2014 +0100
+++ b/Make.proto	Mon Dec 29 00:14:00 2014 +0100
@@ -145,6 +145,7 @@
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)Cairo__Antialias.$(O) Cairo__Antialias.$(H): Cairo__Antialias.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
+$(OUTDIR)Cairo__CObject.$(O) Cairo__CObject.$(H): Cairo__CObject.st $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__CPrimitives.$(O) Cairo__CPrimitives.$(H): Cairo__CPrimitives.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__ClockView.$(O) Cairo__ClockView.$(H): Cairo__ClockView.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(STCHDR)
 $(OUTDIR)Cairo__Content.$(O) Cairo__Content.$(H): Cairo__Content.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
@@ -161,6 +162,7 @@
 $(OUTDIR)Cairo__Format.$(O) Cairo__Format.$(H): Cairo__Format.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)Cairo__GLXWorkstation.$(O) Cairo__GLXWorkstation.$(H): Cairo__GLXWorkstation.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview/DeviceWorkstation.$(H) $(INCLUDE_TOP)/stx/libview/GLXWorkstation.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsDevice.$(H) $(INCLUDE_TOP)/stx/libview/HostGraphicsDevice.$(H) $(INCLUDE_TOP)/stx/libview/XWorkstation.$(H) $(STCHDR)
 $(OUTDIR)Cairo__Glyph.$(O) Cairo__Glyph.$(H): Cairo__Glyph.st $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalStructure.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(STCHDR)
+$(OUTDIR)Cairo__GraphicsContext.$(O) Cairo__GraphicsContext.$(H): Cairo__GraphicsContext.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(STCHDR)
 $(OUTDIR)Cairo__HintMetrics.$(O) Cairo__HintMetrics.$(H): Cairo__HintMetrics.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)Cairo__HintStyle.$(O) Cairo__HintStyle.$(H): Cairo__HintStyle.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)Cairo__LineCap.$(O) Cairo__LineCap.$(H): Cairo__LineCap.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
@@ -175,7 +177,6 @@
 $(OUTDIR)Cairo__Rectangle.$(O) Cairo__Rectangle.$(H): Cairo__Rectangle.st $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalStructure.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(STCHDR)
 $(OUTDIR)Cairo__RectangleInt.$(O) Cairo__RectangleInt.$(H): Cairo__RectangleInt.st $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__RectangleList.$(O) Cairo__RectangleList.$(H): Cairo__RectangleList.st $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalStructure.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(STCHDR)
-$(OUTDIR)Cairo__RefCountedStructure.$(O) Cairo__RefCountedStructure.$(H): Cairo__RefCountedStructure.st $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__Region.$(O) Cairo__Region.$(H): Cairo__Region.st $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__RegionOverlap.$(O) Cairo__RegionOverlap.$(H): Cairo__RegionOverlap.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)Cairo__Status.$(O) Cairo__Status.$(H): Cairo__Status.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
@@ -188,11 +189,10 @@
 $(OUTDIR)Cairo__TextExtents.$(O) Cairo__TextExtents.$(H): Cairo__TextExtents.st $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalStructure.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(STCHDR)
 $(OUTDIR)Cairo__UserDataKey.$(O) Cairo__UserDataKey.$(H): Cairo__UserDataKey.st $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalStructure.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(STCHDR)
 $(OUTDIR)stx_goodies_libcairo.$(O) stx_goodies_libcairo.$(H): stx_goodies_libcairo.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
-$(OUTDIR)Cairo__FontFace.$(O) Cairo__FontFace.$(H): Cairo__FontFace.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__RefCountedStructure.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)Cairo__GraphicsContext.$(O) Cairo__GraphicsContext.$(H): Cairo__GraphicsContext.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__RefCountedStructure.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)Cairo__Pattern.$(O) Cairo__Pattern.$(H): Cairo__Pattern.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__RefCountedStructure.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)Cairo__ScaledFont.$(O) Cairo__ScaledFont.$(H): Cairo__ScaledFont.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__RefCountedStructure.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)Cairo__Surface.$(O) Cairo__Surface.$(H): Cairo__Surface.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Format.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__RefCountedStructure.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__SurfaceType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Cairo__FontFace.$(O) Cairo__FontFace.$(H): Cairo__FontFace.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Cairo__Pattern.$(O) Cairo__Pattern.$(H): Cairo__Pattern.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Cairo__ScaledFont.$(O) Cairo__ScaledFont.$(H): Cairo__ScaledFont.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Cairo__Surface.$(O) Cairo__Surface.$(H): Cairo__Surface.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Format.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__SurfaceType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/DeviceWorkstation.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsDevice.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/HostGraphicsDevice.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/XGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/XWorkstation.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
--- a/Make.spec	Sun Dec 28 22:38:24 2014 +0100
+++ b/Make.spec	Mon Dec 29 00:14:00 2014 +0100
@@ -52,6 +52,7 @@
 
 COMMON_CLASSES= \
 	Cairo::Antialias \
+	Cairo::CObject \
 	Cairo::CPrimitives \
 	Cairo::ClockView \
 	Cairo::Content \
@@ -68,6 +69,7 @@
 	Cairo::Format \
 	Cairo::GLXWorkstation \
 	Cairo::Glyph \
+	Cairo::GraphicsContext \
 	Cairo::HintMetrics \
 	Cairo::HintStyle \
 	Cairo::LineCap \
@@ -82,7 +84,6 @@
 	Cairo::Rectangle \
 	Cairo::RectangleInt \
 	Cairo::RectangleList \
-	Cairo::RefCountedStructure \
 	Cairo::Region \
 	Cairo::RegionOverlap \
 	Cairo::Status \
@@ -96,7 +97,6 @@
 	Cairo::UserDataKey \
 	stx_goodies_libcairo \
 	Cairo::FontFace \
-	Cairo::GraphicsContext \
 	Cairo::Pattern \
 	Cairo::ScaledFont \
 	Cairo::Surface \
@@ -106,6 +106,7 @@
 
 COMMON_OBJS= \
     $(OUTDIR_SLASH)Cairo__Antialias.$(O) \
+    $(OUTDIR_SLASH)Cairo__CObject.$(O) \
     $(OUTDIR_SLASH)Cairo__CPrimitives.$(O) \
     $(OUTDIR_SLASH)Cairo__ClockView.$(O) \
     $(OUTDIR_SLASH)Cairo__Content.$(O) \
@@ -122,6 +123,7 @@
     $(OUTDIR_SLASH)Cairo__Format.$(O) \
     $(OUTDIR_SLASH)Cairo__GLXWorkstation.$(O) \
     $(OUTDIR_SLASH)Cairo__Glyph.$(O) \
+    $(OUTDIR_SLASH)Cairo__GraphicsContext.$(O) \
     $(OUTDIR_SLASH)Cairo__HintMetrics.$(O) \
     $(OUTDIR_SLASH)Cairo__HintStyle.$(O) \
     $(OUTDIR_SLASH)Cairo__LineCap.$(O) \
@@ -136,7 +138,6 @@
     $(OUTDIR_SLASH)Cairo__Rectangle.$(O) \
     $(OUTDIR_SLASH)Cairo__RectangleInt.$(O) \
     $(OUTDIR_SLASH)Cairo__RectangleList.$(O) \
-    $(OUTDIR_SLASH)Cairo__RefCountedStructure.$(O) \
     $(OUTDIR_SLASH)Cairo__Region.$(O) \
     $(OUTDIR_SLASH)Cairo__RegionOverlap.$(O) \
     $(OUTDIR_SLASH)Cairo__Status.$(O) \
@@ -150,7 +151,6 @@
     $(OUTDIR_SLASH)Cairo__UserDataKey.$(O) \
     $(OUTDIR_SLASH)stx_goodies_libcairo.$(O) \
     $(OUTDIR_SLASH)Cairo__FontFace.$(O) \
-    $(OUTDIR_SLASH)Cairo__GraphicsContext.$(O) \
     $(OUTDIR_SLASH)Cairo__Pattern.$(O) \
     $(OUTDIR_SLASH)Cairo__ScaledFont.$(O) \
     $(OUTDIR_SLASH)Cairo__Surface.$(O) \
--- a/abbrev.stc	Sun Dec 28 22:38:24 2014 +0100
+++ b/abbrev.stc	Mon Dec 29 00:14:00 2014 +0100
@@ -2,6 +2,7 @@
 # this file is needed for stc to be able to compile modules independently.
 # it provides information about a classes filename, category and especially namespace.
 Cairo::Antialias Cairo__Antialias stx:goodies/libcairo 'Cairo-Constants' 0
+Cairo::CObject Cairo__CObject stx:goodies/libcairo 'Cairo-Objects' 0
 Cairo::CPrimitives Cairo__CPrimitives stx:goodies/libcairo 'Cairo-Primitives' 0
 Cairo::ClockView Cairo__ClockView stx:goodies/libcairo 'Cairo-Examples' 2
 Cairo::Content Cairo__Content stx:goodies/libcairo 'Cairo-Constants' 0
@@ -18,6 +19,7 @@
 Cairo::Format Cairo__Format stx:goodies/libcairo 'Cairo-Constants' 0
 Cairo::GLXWorkstation Cairo__GLXWorkstation stx:goodies/libcairo 'Cairo-Workstation' 0
 Cairo::Glyph Cairo__Glyph stx:goodies/libcairo 'Cairo-Objects' 1
+Cairo::GraphicsContext Cairo__GraphicsContext stx:goodies/libcairo 'Cairo-Objects' 0
 Cairo::HintMetrics Cairo__HintMetrics stx:goodies/libcairo 'Cairo-Constants' 0
 Cairo::HintStyle Cairo__HintStyle stx:goodies/libcairo 'Cairo-Constants' 0
 Cairo::LineCap Cairo__LineCap stx:goodies/libcairo 'Cairo-Constants' 0
@@ -32,7 +34,6 @@
 Cairo::Rectangle Cairo__Rectangle stx:goodies/libcairo 'Cairo-Objects' 1
 Cairo::RectangleInt Cairo__RectangleInt stx:goodies/libcairo 'Cairo-Constants' 0
 Cairo::RectangleList Cairo__RectangleList stx:goodies/libcairo 'Cairo-Objects' 1
-Cairo::RefCountedStructure Cairo__RefCountedStructure stx:goodies/libcairo 'Cairo-Objects' 0
 Cairo::Region Cairo__Region stx:goodies/libcairo 'Cairo-Constants' 0
 Cairo::RegionOverlap Cairo__RegionOverlap stx:goodies/libcairo 'Cairo-Constants' 0
 Cairo::Status Cairo__Status stx:goodies/libcairo 'Cairo-Constants' 0
@@ -46,7 +47,6 @@
 Cairo::UserDataKey Cairo__UserDataKey stx:goodies/libcairo 'Cairo-Objects' 1
 stx_goodies_libcairo stx_goodies_libcairo stx:goodies/libcairo '* Projects & Packages *' 3
 Cairo::FontFace Cairo__FontFace stx:goodies/libcairo 'Cairo-Objects' 0
-Cairo::GraphicsContext Cairo__GraphicsContext stx:goodies/libcairo 'Cairo-Objects' 0
 Cairo::Pattern Cairo__Pattern stx:goodies/libcairo 'Cairo-Objects' 0
 Cairo::ScaledFont Cairo__ScaledFont stx:goodies/libcairo 'Cairo-Objects' 0
 Cairo::Surface Cairo__Surface stx:goodies/libcairo 'Cairo-Objects' 0
--- a/bc.mak	Sun Dec 28 22:38:24 2014 +0100
+++ b/bc.mak	Mon Dec 29 00:14:00 2014 +0100
@@ -70,6 +70,7 @@
 
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)Cairo__Antialias.$(O) Cairo__Antialias.$(H): Cairo__Antialias.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
+$(OUTDIR)Cairo__CObject.$(O) Cairo__CObject.$(H): Cairo__CObject.st $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__CPrimitives.$(O) Cairo__CPrimitives.$(H): Cairo__CPrimitives.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__ClockView.$(O) Cairo__ClockView.$(H): Cairo__ClockView.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(STCHDR)
 $(OUTDIR)Cairo__Content.$(O) Cairo__Content.$(H): Cairo__Content.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
@@ -86,6 +87,7 @@
 $(OUTDIR)Cairo__Format.$(O) Cairo__Format.$(H): Cairo__Format.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)Cairo__GLXWorkstation.$(O) Cairo__GLXWorkstation.$(H): Cairo__GLXWorkstation.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview\DeviceWorkstation.$(H) $(INCLUDE_TOP)\stx\libview\GLXWorkstation.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsDevice.$(H) $(INCLUDE_TOP)\stx\libview\HostGraphicsDevice.$(H) $(INCLUDE_TOP)\stx\libview\XWorkstation.$(H) $(STCHDR)
 $(OUTDIR)Cairo__Glyph.$(O) Cairo__Glyph.$(H): Cairo__Glyph.st $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalStructure.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(STCHDR)
+$(OUTDIR)Cairo__GraphicsContext.$(O) Cairo__GraphicsContext.$(H): Cairo__GraphicsContext.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(STCHDR)
 $(OUTDIR)Cairo__HintMetrics.$(O) Cairo__HintMetrics.$(H): Cairo__HintMetrics.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)Cairo__HintStyle.$(O) Cairo__HintStyle.$(H): Cairo__HintStyle.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)Cairo__LineCap.$(O) Cairo__LineCap.$(H): Cairo__LineCap.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
@@ -100,7 +102,6 @@
 $(OUTDIR)Cairo__Rectangle.$(O) Cairo__Rectangle.$(H): Cairo__Rectangle.st $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalStructure.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(STCHDR)
 $(OUTDIR)Cairo__RectangleInt.$(O) Cairo__RectangleInt.$(H): Cairo__RectangleInt.st $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__RectangleList.$(O) Cairo__RectangleList.$(H): Cairo__RectangleList.st $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalStructure.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(STCHDR)
-$(OUTDIR)Cairo__RefCountedStructure.$(O) Cairo__RefCountedStructure.$(H): Cairo__RefCountedStructure.st $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__Region.$(O) Cairo__Region.$(H): Cairo__Region.st $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__RegionOverlap.$(O) Cairo__RegionOverlap.$(H): Cairo__RegionOverlap.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)Cairo__Status.$(O) Cairo__Status.$(H): Cairo__Status.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
@@ -113,11 +114,10 @@
 $(OUTDIR)Cairo__TextExtents.$(O) Cairo__TextExtents.$(H): Cairo__TextExtents.st $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalStructure.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(STCHDR)
 $(OUTDIR)Cairo__UserDataKey.$(O) Cairo__UserDataKey.$(H): Cairo__UserDataKey.st $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalStructure.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(STCHDR)
 $(OUTDIR)stx_goodies_libcairo.$(O) stx_goodies_libcairo.$(H): stx_goodies_libcairo.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
-$(OUTDIR)Cairo__FontFace.$(O) Cairo__FontFace.$(H): Cairo__FontFace.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__RefCountedStructure.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Cairo__GraphicsContext.$(O) Cairo__GraphicsContext.$(H): Cairo__GraphicsContext.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__RefCountedStructure.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Cairo__Pattern.$(O) Cairo__Pattern.$(H): Cairo__Pattern.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__RefCountedStructure.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Cairo__ScaledFont.$(O) Cairo__ScaledFont.$(H): Cairo__ScaledFont.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__RefCountedStructure.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Cairo__Surface.$(O) Cairo__Surface.$(H): Cairo__Surface.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Format.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__RefCountedStructure.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__SurfaceType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Cairo__FontFace.$(O) Cairo__FontFace.$(H): Cairo__FontFace.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Cairo__Pattern.$(O) Cairo__Pattern.$(H): Cairo__Pattern.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Cairo__ScaledFont.$(O) Cairo__ScaledFont.$(H): Cairo__ScaledFont.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Cairo__Surface.$(O) Cairo__Surface.$(H): Cairo__Surface.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Format.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__SurfaceType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\DeviceWorkstation.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsDevice.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\HostGraphicsDevice.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\XGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\XWorkstation.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
--- a/extensions.st	Sun Dec 28 22:38:24 2014 +0100
+++ b/extensions.st	Mon Dec 29 00:14:00 2014 +0100
@@ -84,7 +84,7 @@
 
     [     
         image_surface := Cairo::Surface forImageFormatARGB32width: self width  height: self height.
-        image_cr := Cairo::GraphicsContext on: image_surface. 
+        image_cr := Cairo::GraphicsContext onSurface: image_surface. 
         self redrawWithCairo: image_cr.  
         view_cr setSourceSurface: image_surface. 
         view_cr paint.
@@ -94,6 +94,7 @@
     ].
 
     "Created: / 27-12-2014 / 00:13:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-12-2014 / 23:45:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !SimpleView methodsFor:'redrawing - cairo'!
@@ -104,7 +105,7 @@
 
     [     
         image_surface := Cairo::Surface forImageFormatARGB32width: self width  height: self height.
-        image_cr := Cairo::GraphicsContext on: image_surface. 
+        image_cr := Cairo::GraphicsContext onSurface: image_surface. 
         image_cr rectangleX: x  y: y width: w height: h. 
         image_cr clip.
         self redrawWithCairo: image_cr x: x y: y width: w height: h.
@@ -118,6 +119,7 @@
     ].
 
     "Created: / 27-12-2014 / 00:28:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-12-2014 / 23:45:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !SimpleView methodsFor:'redrawing - cairo'!
@@ -154,9 +156,10 @@
 
 cairo
     "Return a Cairo context for drawing onto this GC"    
-    ^ Cairo::GraphicsContext on: self cairoSurfaceId
+    ^ Cairo::GraphicsContext onSurface: self cairoSurfaceId
 
     "Created: / 26-12-2014 / 23:28:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-12-2014 / 23:45:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !XGraphicsContext methodsFor:'accessing'!
--- a/libInit.cc	Sun Dec 28 22:38:24 2014 +0100
+++ b/libInit.cc	Mon Dec 29 00:14:00 2014 +0100
@@ -28,6 +28,7 @@
 OBJ snd; struct __vmData__ *__pRT__; {
 __BEGIN_PACKAGE2__("libstx_goodies_libcairo", _libstx_goodies_libcairo_Init, "stx:goodies/libcairo");
 _Cairo__Antialias_Init(pass,__pRT__,snd);
+_Cairo__CObject_Init(pass,__pRT__,snd);
 _Cairo__CPrimitives_Init(pass,__pRT__,snd);
 _Cairo__ClockView_Init(pass,__pRT__,snd);
 _Cairo__Content_Init(pass,__pRT__,snd);
@@ -44,6 +45,7 @@
 _Cairo__Format_Init(pass,__pRT__,snd);
 _Cairo__GLXWorkstation_Init(pass,__pRT__,snd);
 _Cairo__Glyph_Init(pass,__pRT__,snd);
+_Cairo__GraphicsContext_Init(pass,__pRT__,snd);
 _Cairo__HintMetrics_Init(pass,__pRT__,snd);
 _Cairo__HintStyle_Init(pass,__pRT__,snd);
 _Cairo__LineCap_Init(pass,__pRT__,snd);
@@ -58,7 +60,6 @@
 _Cairo__Rectangle_Init(pass,__pRT__,snd);
 _Cairo__RectangleInt_Init(pass,__pRT__,snd);
 _Cairo__RectangleList_Init(pass,__pRT__,snd);
-_Cairo__RefCountedStructure_Init(pass,__pRT__,snd);
 _Cairo__Region_Init(pass,__pRT__,snd);
 _Cairo__RegionOverlap_Init(pass,__pRT__,snd);
 _Cairo__Status_Init(pass,__pRT__,snd);
@@ -72,7 +73,6 @@
 _Cairo__UserDataKey_Init(pass,__pRT__,snd);
 _stx_137goodies_137libcairo_Init(pass,__pRT__,snd);
 _Cairo__FontFace_Init(pass,__pRT__,snd);
-_Cairo__GraphicsContext_Init(pass,__pRT__,snd);
 _Cairo__Pattern_Init(pass,__pRT__,snd);
 _Cairo__ScaledFont_Init(pass,__pRT__,snd);
 _Cairo__Surface_Init(pass,__pRT__,snd);
--- a/libcairo.rc	Sun Dec 28 22:38:24 2014 +0100
+++ b/libcairo.rc	Mon Dec 29 00:14:00 2014 +0100
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "Copyright Jan Vrany 2008\0"
       VALUE "ProductName", "Cairo\0"
       VALUE "ProductVersion", "6.2.5.0\0"
-      VALUE "ProductDate", "Sun, 28 Dec 2014 21:31:20 GMT\0"
+      VALUE "ProductDate", "Sun, 28 Dec 2014 23:13:47 GMT\0"
     END
 
   END
--- a/stx_goodies_libcairo.st	Sun Dec 28 22:38:24 2014 +0100
+++ b/stx_goodies_libcairo.st	Mon Dec 29 00:14:00 2014 +0100
@@ -10,6 +10,15 @@
 
 !stx_goodies_libcairo class methodsFor:'description'!
 
+excludedFromPreRequisites
+    "list packages which are to be explicitely excluded from the automatic constructed
+     prerequisites list. If empty, everything that is found along the inheritance of any of
+     my classes is considered to be a prerequisite package."
+
+    ^ #(
+    )
+!
+
 mandatoryPreRequisites
     "list packages which are mandatory as a prerequisite.
      This are packages containing superclasses of my classes and classes which
@@ -102,6 +111,7 @@
     ^ #(
         "<className> or (<className> attributes...) in load order"
         #'Cairo::Antialias'
+        #'Cairo::CObject'
         #'Cairo::CPrimitives'
         #'Cairo::ClockView'
         #'Cairo::Content'
@@ -118,6 +128,7 @@
         #'Cairo::Format'
         #'Cairo::GLXWorkstation'
         #'Cairo::Glyph'
+        #'Cairo::GraphicsContext'
         #'Cairo::HintMetrics'
         #'Cairo::HintStyle'
         #'Cairo::LineCap'
@@ -132,7 +143,6 @@
         #'Cairo::Rectangle'
         #'Cairo::RectangleInt'
         #'Cairo::RectangleList'
-        #'Cairo::RefCountedStructure'
         #'Cairo::Region'
         #'Cairo::RegionOverlap'
         #'Cairo::Status'
@@ -146,7 +156,6 @@
         #'Cairo::UserDataKey'
         #'stx_goodies_libcairo'
         #'Cairo::FontFace'
-        #'Cairo::GraphicsContext'
         #'Cairo::Pattern'
         #'Cairo::ScaledFont'
         #'Cairo::Surface'