Add error checking
authorJan Vrany <jan.vrany@fit.cvut.cz>
Tue, 23 Feb 2016 16:58:27 +0000
changeset 43 1006839761af
parent 42 475e93b10c8f
child 44 ffe4882eb977
Add error checking Introduced exception class Cairo::CError. Check for errors after calling out to Cairo by means of cairo_*_status(). In case of error, throw an instance of Cairo::CError.
Cairo__CError.st
Cairo__CObject.st
Cairo__FontFace.st
Cairo__FontOptions.st
Cairo__GraphicsContext.st
Cairo__Pattern.st
Cairo__ScaledFont.st
Cairo__Surface.st
Make.proto
Make.spec
abbrev.stc
bc.mak
libInit.cc
stx_goodies_libcairo.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Cairo__CError.st	Tue Feb 23 16:58:27 2016 +0000
@@ -0,0 +1,33 @@
+"{ Package: 'stx:goodies/libcairo' }"
+
+"{ NameSpace: Cairo }"
+
+Error subclass:#CError
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Cairo-Exceptions'
+!
+
+!CError methodsFor:'printing & storing'!
+
+description
+    "return the description string of the signal"
+
+    parameter isInteger ifTrue:[ 
+        messageText isNil ifTrue:[ 
+            ^ CPrimitives cairo_status_to_string: parameter.
+        ].
+        ^ messageText , ': ' , (CPrimitives cairo_status_to_string: parameter).
+    ].
+    ^ super description
+
+    "
+      (CError new parameter: 1) description
+      (CError new messageText: 'Failed to create Cairo'; parameter: 1) description
+      (CError new messageText: 'Failed to create Cairo') description
+    "
+
+    "Created: / 23-02-2016 / 16:52:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/Cairo__CObject.st	Tue Feb 23 10:36:57 2016 +0000
+++ b/Cairo__CObject.st	Tue Feb 23 16:58:27 2016 +0000
@@ -5,7 +5,7 @@
 ExternalAddress subclass:#CObject
 	instanceVariableNames:''
 	classVariableNames:'Lobby'
-	poolDictionaries:''
+	poolDictionaries:'Cairo::Status'
 	category:'Cairo-Objects'
 !
 
@@ -40,6 +40,15 @@
 
     "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>"
+!
+
+status
+    "Checks whether an error has previously occurred for this object.
+     See Cairo::Status pool for possible values."    
+
+    ^ self subclassResponsibility
+
+    "Created: / 23-02-2016 / 10:43:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !CObject methodsFor:'finalization'!
@@ -55,7 +64,7 @@
 !
 
 finalize
-    self infoPrintCR:'Instance destroyed'.
+    Logger debug: '%1@%2 instance finalized' with: self address with: self referenceCount.
     self destroy
 
     "Created: / 09-09-2008 / 20:30:22 / Jan Vrany <vranyj1@fel.cvut.cz>"
@@ -65,7 +74,22 @@
 
 !CObject methodsFor:'initialization & release'!
 
+initialize
+    | status |
+    
+    Logger debug: '%1@%2 instance created' with: self address with: self referenceCount.
+    self registerForFinalization.
+    status := self status.
+    status ~~ CAIRO_STATUS_SUCCESS ifTrue:[ 
+        CError raiseWith: status errorString: 'Failed to create ', self class name
+    ].
+
+    "Created: / 23-02-2016 / 10:54:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 23-02-2016 / 16:57:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 release
+    Logger debug: '%1@%2 instance released explicitly' with: self address with: self referenceCount.
     self unregisterForFinalization.
     ^self destroy
 
@@ -86,29 +110,18 @@
     "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'.
+statusCheck
+    <resource: #skipInDebuggersWalkBack>        
 
-    "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>"
-!
+    | status |
 
-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
+    status := self status.
+    status ~~ CAIRO_STATUS_SUCCESS ifTrue:[ 
+        CError raiseWith: status errorString: 'Operation failed'.  
+    ].
 
-    "Created: / 10-09-2008 / 18:45:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Created: / 21-02-2016 / 15:11:55 / jv"
+    "Modified: / 23-02-2016 / 16:56:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !CObject class methodsFor:'documentation'!
--- a/Cairo__FontFace.st	Tue Feb 23 10:36:57 2016 +0000
+++ b/Cairo__FontFace.st	Tue Feb 23 16:58:27 2016 +0000
@@ -77,11 +77,21 @@
 !FontFace methodsFor:'accessing'!
 
 referenceCount
-    "Return value or reference counter"
+    "Return value of reference counter"
 
     ^ CPrimitives cairo_font_face_get_reference_count: self
 
     "Modified: / 17-02-2016 / 19:54:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 23-02-2016 / 10:49:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+status
+    "Checks whether an error has previously occurred for this object.
+     See Cairo::Status pool for possible values."
+
+    ^ CPrimitives cairo_font_face_status: self
+
+    "Modified: / 23-02-2016 / 10:50:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 type
--- a/Cairo__FontOptions.st	Tue Feb 23 10:36:57 2016 +0000
+++ b/Cairo__FontOptions.st	Tue Feb 23 16:58:27 2016 +0000
@@ -206,11 +206,20 @@
 !FontOptions methodsFor:'accessing'!
 
 referenceCount
-    "Return value or reference counter"
+    "Return value of reference counter"
+
+    ^ -1 "/ Not refcounted 
+
+    "Modified: / 23-02-2016 / 10:49:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
 
-    ^ self shouldNotImplement
+status
+    "Checks whether an error has previously occurred for this object.
+     See Cairo::Status pool for possible values."
 
-    "Modified: / 17-02-2016 / 20:29:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    ^ CPrimitives cairo_font_options_status: self
+
+    "Modified: / 23-02-2016 / 10:49:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !FontOptions methodsFor:'private'!
--- a/Cairo__GraphicsContext.st	Tue Feb 23 10:36:57 2016 +0000
+++ b/Cairo__GraphicsContext.st	Tue Feb 23 16:58:27 2016 +0000
@@ -48,69 +48,82 @@
 !GraphicsContext methodsFor:'cairo api - paths'!
 
 arcNegativeX:x y:y radius:r from:startAngle to:stopAngle 
-    ^ CPrimitives 
+    CPrimitives 
         cairo_arc_negative:self
         _:x asDouble
         _:y asDouble
         _:r asDouble
         _:startAngle asDouble
-        _:stopAngle asDouble
+        _:stopAngle asDouble.
+    self statusCheck.
 
     "Created: / 07-01-2015 / 02:35:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:17:14 / jv"
 !
 
 arcX:x y:y radius:r from:startAngle to:stopAngle 
-    ^ CPrimitives 
+    CPrimitives 
         cairo_arc:self
         _:x asDouble
         _:y asDouble
         _:r asDouble
         _:startAngle asDouble
-        _:stopAngle asDouble
+        _:stopAngle asDouble.
+    self statusCheck.
 
     "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>"
+    "Modified: / 21-02-2016 / 15:17:24 / jv"
 !
 
 closePath
-    ^ CPrimitives cairo_close_path:self.
+    CPrimitives cairo_close_path:self.
+    self statusCheck.
 
     "Created: / 01-01-2015 / 22:42:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:17:34 / jv"
 !
 
 lineCap: lc
 
-    ^ CPrimitives cairo_set_line_cap: self _: lc
+    CPrimitives cairo_set_line_cap: self _: lc.
+    self statusCheck.
 
     "Created: / 17-06-2012 / 22:09:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 13-02-2016 / 16:42:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:17:42 / jv"
 !
 
 lineToX:x y:y 
-    ^ CPrimitives 
+    CPrimitives 
         cairo_line_to:self
         _:x asDouble
-        _:y asDouble
+        _:y asDouble.
+    self statusCheck.
 
     "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>"
+    "Modified: / 21-02-2016 / 15:17:53 / jv"
 !
 
 lineWidth: aNumber
-    CPrimitives cairo_set_line_width: self _:aNumber asFloat
-    .
+    CPrimitives cairo_set_line_width: self _:aNumber asFloat.
+    self statusCheck.
 
     "Created: / 13-02-2016 / 16:45:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:18:04 / jv"
 !
 
 moveToX:x y:y 
-    ^ CPrimitives 
+    CPrimitives 
         cairo_move_to:self
         _:x asDouble
-        _:y asDouble
+        _:y asDouble.
+    self statusCheck.
 
     "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>"
+    "Modified: / 21-02-2016 / 15:18:12 / jv"
 !
 
 rectangleX:x y:y width:w height:h 
@@ -128,15 +141,17 @@
         ry := ry + rh.
         rh := rh abs.
     ].
-    ^ CPrimitives 
+    CPrimitives 
         cairo_rectangle:self
         _:rx asDouble
         _:ry asDouble
         _:rw asDouble
-        _:rh asDouble
+        _:rh asDouble.
+    self statusCheck.
 
     "Created: / 10-07-2008 / 09:41:50 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Modified: / 02-01-2015 / 01:21:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:18:25 / jv"
 ! !
 
 !GraphicsContext methodsFor:'cairo api - patterns'!
@@ -150,30 +165,36 @@
 setSourceSurface:aSyrface x:x y:y 
     "raise an error: this method should be implemented (TODO)"
     
-    ^ CPrimitives 
+    CPrimitives 
         cairo_set_source_surface:self
         _:aSyrface
         _:x
-        _:y
+        _:y.
+    self statusCheck.
 
     "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>"
+    "Modified: / 21-02-2016 / 15:16:56 / jv"
 ! !
 
 !GraphicsContext methodsFor:'cairo api - save & restore'!
 
 restore
-    ^ CPrimitives cairo_restore:self
+    CPrimitives cairo_restore:self.
+    self statusCheck.
 
     "Created: / 17-06-2012 / 21:51:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 13-02-2016 / 16:14:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:16:13 / jv"
 !
 
 save
-    ^ CPrimitives cairo_save:self
+    CPrimitives cairo_save:self.
+    self statusCheck.
 
     "Created: / 17-06-2012 / 21:51:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 13-02-2016 / 16:15:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:16:19 / jv"
 ! !
 
 !GraphicsContext methodsFor:'cairo api - source'!
@@ -195,9 +216,11 @@
     CPrimitives cairo_set_source_rgb: self 
                                    _: r asDouble
                                    _: g asDouble
-                                   _: b asDouble
+                                   _: b asDouble.
+    self statusCheck.
 
     "Created: / 13-02-2016 / 16:55:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:16:01 / jv"
 !
 
 sourceR:r G:g B:b A:a
@@ -206,56 +229,70 @@
                                     _: g asDouble
                                     _: b asDouble
                                     _: a asDouble.
+    self statusCheck.
 
     "Created: / 13-02-2016 / 16:54:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:16:05 / jv"
 ! !
 
 !GraphicsContext methodsFor:'cairo api - stroke & fill'!
 
 fill
-    ^ CPrimitives cairo_fill:self
+    CPrimitives cairo_fill:self.
+    self statusCheck.
 
     "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>"
+    "Modified: / 21-02-2016 / 15:15:26 / jv"
 !
 
 fillAndPreserve
-    ^ CPrimitives cairo_fill_preserve:self
+    CPrimitives cairo_fill_preserve:self.
+    self statusCheck.
 
     "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>"
+    "Modified: / 21-02-2016 / 15:15:30 / jv"
 !
 
 paint
     "A drawing operator that paints the current source everywhere within 
      the current clip region."
 
-    ^ CPrimitives cairo_paint:self.
+    CPrimitives cairo_paint:self.
+    self statusCheck.
 
     "Created: / 13-02-2016 / 16:59:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:15:34 / jv"
 !
 
 showPage
     "Makes sense only for PDF surfaces"
     
-    ^ CPrimitives cairo_show_page:self.
+    CPrimitives cairo_show_page:self.
+    self statusCheck.
 
     "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>"
+    "Modified: / 21-02-2016 / 15:15:39 / jv"
 !
 
 stroke
-    ^ CPrimitives cairo_stroke:self
+    CPrimitives cairo_stroke:self.
+    self statusCheck.
 
     "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>"
+    "Modified: / 21-02-2016 / 15:15:44 / jv"
 !
 
 strokeAndPreserve
-    ^ CPrimitives cairo_stroke_preserve:self
+    CPrimitives cairo_stroke_preserve:self.
+    self statusCheck.
 
     "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>"
+    "Modified: / 21-02-2016 / 15:15:48 / jv"
 ! !
 
 !GraphicsContext methodsFor:'cairo api - text'!
@@ -267,19 +304,19 @@
 !
 
 font: scaledFont
-    CPrimitives cairo_set_scaled_font: self _: scaledFont
+    CPrimitives cairo_set_scaled_font: self _: scaledFont.
+    self statusCheck.
 
     "Created: / 17-02-2016 / 21:01:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:08:25 / jv"
 !
 
 font:family slant:slant weight:weight 
-    ^ CPrimitives 
-        cairo_select_font_face:self
-        _:family asString
-        _:slant asInteger
-        _:weight asInteger
+    CPrimitives cairo_select_font_face:self _:family asString _:slant asInteger _:weight asInteger.
+    self statusCheck.
 
     "Created: / 29-12-2014 / 01:08:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:13:15 / jv"
 !
 
 fontMatrix
@@ -299,22 +336,28 @@
      font matrix can be used to shear the font or stretch it unequally along the two axes"
 
     CPrimitives cairo_set_font_matrix: self _: matrix.
+    self statusCheck.
 
     "Created: / 18-02-2016 / 10:11:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:14:09 / jv"
 !
 
 fontSize:sz 
-    ^ CPrimitives cairo_set_font_size:self _:sz asFloat
+    CPrimitives cairo_set_font_size:self _:sz asFloat.
+    self statusCheck
 
     "Created: / 23-04-2009 / 17:24:33 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Modified: / 02-01-2015 / 01:39:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:13:30 / jv"
 !
 
 showText:aString 
-    ^ CPrimitives cairo_show_text:self _:aString utf8Encoded
+    CPrimitives cairo_show_text:self _:aString utf8Encoded.
+    self statusCheck.
 
     "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>"
+    "Modified: / 21-02-2016 / 15:13:46 / jv"
 !
 
 textExtents:aString
@@ -322,18 +365,22 @@
 
     extents := TextExtents new.
     CPrimitives cairo_text_extents:self _:aString utf8Encoded _: extents.
+    self statusCheck.
     ^ extents.
 
     "Created: / 18-02-2016 / 08:55:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:13:58 / jv"
 ! !
 
 !GraphicsContext methodsFor:'cairo api - transformations & clipping'!
 
 clip
-    ^ CPrimitives cairo_clip:self.
+    CPrimitives cairo_clip:self.
+    self statusCheck.
 
     "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>"
+    "Modified: / 21-02-2016 / 15:15:18 / jv"
 !
 
 matrix: aCairoMatrix
@@ -347,8 +394,10 @@
      identity matrix. That is, the user-space and device-space axes will be 
      aligned and one user-space unit will transform to one device-space unit."
     CPrimitives cairo_identity_matrix: self.
+    self statusCheck.
 
     "Created: / 13-02-2016 / 19:54:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:15:09 / jv"
 !
 
 scale: aNumberOrPoint
@@ -360,8 +409,10 @@
         sx := sy := aNumberOrPoint asFloat.
     ].
     CPrimitives cairo_scale: self _: sx _: sy.
+    self statusCheck.
 
     "Created: / 13-02-2016 / 16:40:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:15:05 / jv"
 !
 
 translate: aNumberOrPoint
@@ -373,17 +424,20 @@
         tx := ty := aNumberOrPoint asFloat.
     ].
     CPrimitives cairo_translate: self _: tx _: ty.
+    self statusCheck.
 
     "Created: / 13-02-2016 / 16:40:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:15:00 / jv"
 ! !
 
 !GraphicsContext methodsFor:'initialization & release'!
 
 initializeWithSurface: aSurface
     surface := aSurface.
-    self registerForFinalization
 
     "Created: / 13-02-2016 / 16:08:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-02-2016 / 15:30:05 / jv"
+    "Modified: / 23-02-2016 / 10:54:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !GraphicsContext methodsFor:'private'!
--- a/Cairo__Pattern.st	Tue Feb 23 10:36:57 2016 +0000
+++ b/Cairo__Pattern.st	Tue Feb 23 16:58:27 2016 +0000
@@ -65,6 +65,36 @@
     ^0
 ! !
 
+!Pattern methodsFor:'accessing'!
+
+referenceCount
+    "Return value of reference counter"
+
+    ^ CPrimitives cairo_pattern_get_reference_count: self
+
+    "Modified (comment): / 23-02-2016 / 10:47:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+status
+    "Checks whether an error has previously occurred for this object.
+     See Cairo::Status pool for possible values."
+
+    ^ CPrimitives cairo_pattern_status: self
+
+    "Modified: / 23-02-2016 / 10:48:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Pattern 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 shouldImplement
+! !
+
 !Pattern class methodsFor:'documentation'!
 
 version
--- a/Cairo__ScaledFont.st	Tue Feb 23 10:36:57 2016 +0000
+++ b/Cairo__ScaledFont.st	Tue Feb 23 16:58:27 2016 +0000
@@ -64,11 +64,21 @@
 !
 
 referenceCount
-    "Return value or reference counter"
+    "Return value of reference counter"
 
     ^ CPrimitives cairo_scaled_font_get_reference_count: self.
 
     "Modified: / 17-02-2016 / 20:16:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 23-02-2016 / 10:48:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+status
+    "Checks whether an error has previously occurred for this object.
+     See Cairo::Status pool for possible values."
+
+    ^ CPrimitives cairo_scaled_font_status: self
+
+    "Modified: / 23-02-2016 / 10:48:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ScaledFont methodsFor:'cairo api'!
--- a/Cairo__Surface.st	Tue Feb 23 10:36:57 2016 +0000
+++ b/Cairo__Surface.st	Tue Feb 23 16:58:27 2016 +0000
@@ -142,6 +142,15 @@
     "Created: / 28-12-2014 / 22:09:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+status
+    "Checks whether an error has previously occurred for this object.
+     See Cairo::Status pool for possible values."
+
+    ^ CPrimitives cairo_surface_status: self
+
+    "Modified: / 23-02-2016 / 11:28:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 type
     ^CPrimitives cairo_surface_get_type: self
 
--- a/Make.proto	Tue Feb 23 10:36:57 2016 +0000
+++ b/Make.proto	Tue Feb 23 16:58:27 2016 +0000
@@ -145,7 +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__CError.$(O) Cairo__CError.$(H): Cairo__CError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(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__CStructure.$(O) Cairo__CStructure.$(H): Cairo__CStructure.st $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(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)
@@ -182,19 +182,20 @@
 $(OUTDIR)Cairo__TextExampleView.$(O) Cairo__TextExampleView.$(H): Cairo__TextExampleView.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__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__CObject.$(O) Cairo__CObject.$(H): Cairo__CObject.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Status.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__FontExtents.$(O) Cairo__FontExtents.$(H): Cairo__FontExtents.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CStructure.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(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__FontOptions.$(O) Cairo__FontOptions.$(H): Cairo__FontOptions.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__Glyph.$(O) Cairo__Glyph.$(H): Cairo__Glyph.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CStructure.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(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/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__Matrix.$(O) Cairo__Matrix.$(H): Cairo__Matrix.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CStructure.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(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__Rectangle.$(O) Cairo__Rectangle.$(H): Cairo__Rectangle.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CStructure.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(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)Cairo__TextExtents.$(O) Cairo__TextExtents.$(H): Cairo__TextExtents.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CStructure.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(STCHDR)
 $(OUTDIR)CairoGraphicsContext.$(O) CairoGraphicsContext.$(H): CairoGraphicsContext.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__FontSlant.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__FontWeight.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Format.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Status.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(STCHDR)
 $(OUTDIR)CairoScaledFont.$(O) CairoScaledFont.$(H): CairoScaledFont.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__FontSlant.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__FontWeight.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Format.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview/FontDescription.$(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__FontOptions.$(O) Cairo__FontOptions.$(H): Cairo__FontOptions.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(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__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)Cairo__SurfaceImage.$(O) Cairo__SurfaceImage.$(H): Cairo__SurfaceImage.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Surface.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__SurfacePDF.$(O) Cairo__SurfacePDF.$(H): Cairo__SurfacePDF.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Surface.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__SurfaceXlib.$(O) Cairo__SurfaceXlib.$(H): Cairo__SurfaceXlib.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Format.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Surface.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__SurfaceType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec	Tue Feb 23 10:36:57 2016 +0000
+++ b/Make.spec	Tue Feb 23 16:58:27 2016 +0000
@@ -52,7 +52,7 @@
 
 COMMON_CLASSES= \
 	Cairo::Antialias \
-	Cairo::CObject \
+	Cairo::CError \
 	Cairo::CPrimitives \
 	Cairo::CStructure \
 	Cairo::ClockView \
@@ -89,19 +89,20 @@
 	Cairo::TextExampleView \
 	Cairo::UserDataKey \
 	stx_goodies_libcairo \
+	Cairo::CObject \
 	Cairo::FontExtents \
-	Cairo::FontFace \
-	Cairo::FontOptions \
 	Cairo::Glyph \
-	Cairo::GraphicsContext \
 	Cairo::Matrix \
-	Cairo::Pattern \
 	Cairo::Rectangle \
-	Cairo::ScaledFont \
-	Cairo::Surface \
 	Cairo::TextExtents \
 	CairoGraphicsContext \
 	CairoScaledFont \
+	Cairo::FontFace \
+	Cairo::FontOptions \
+	Cairo::GraphicsContext \
+	Cairo::Pattern \
+	Cairo::ScaledFont \
+	Cairo::Surface \
 	Cairo::SurfaceImage \
 	Cairo::SurfacePDF \
 	Cairo::SurfaceXlib \
@@ -111,7 +112,7 @@
 
 COMMON_OBJS= \
     $(OUTDIR_SLASH)Cairo__Antialias.$(O) \
-    $(OUTDIR_SLASH)Cairo__CObject.$(O) \
+    $(OUTDIR_SLASH)Cairo__CError.$(O) \
     $(OUTDIR_SLASH)Cairo__CPrimitives.$(O) \
     $(OUTDIR_SLASH)Cairo__CStructure.$(O) \
     $(OUTDIR_SLASH)Cairo__ClockView.$(O) \
@@ -148,19 +149,20 @@
     $(OUTDIR_SLASH)Cairo__TextExampleView.$(O) \
     $(OUTDIR_SLASH)Cairo__UserDataKey.$(O) \
     $(OUTDIR_SLASH)stx_goodies_libcairo.$(O) \
+    $(OUTDIR_SLASH)Cairo__CObject.$(O) \
     $(OUTDIR_SLASH)Cairo__FontExtents.$(O) \
-    $(OUTDIR_SLASH)Cairo__FontFace.$(O) \
-    $(OUTDIR_SLASH)Cairo__FontOptions.$(O) \
     $(OUTDIR_SLASH)Cairo__Glyph.$(O) \
-    $(OUTDIR_SLASH)Cairo__GraphicsContext.$(O) \
     $(OUTDIR_SLASH)Cairo__Matrix.$(O) \
-    $(OUTDIR_SLASH)Cairo__Pattern.$(O) \
     $(OUTDIR_SLASH)Cairo__Rectangle.$(O) \
-    $(OUTDIR_SLASH)Cairo__ScaledFont.$(O) \
-    $(OUTDIR_SLASH)Cairo__Surface.$(O) \
     $(OUTDIR_SLASH)Cairo__TextExtents.$(O) \
     $(OUTDIR_SLASH)CairoGraphicsContext.$(O) \
     $(OUTDIR_SLASH)CairoScaledFont.$(O) \
+    $(OUTDIR_SLASH)Cairo__FontFace.$(O) \
+    $(OUTDIR_SLASH)Cairo__FontOptions.$(O) \
+    $(OUTDIR_SLASH)Cairo__GraphicsContext.$(O) \
+    $(OUTDIR_SLASH)Cairo__Pattern.$(O) \
+    $(OUTDIR_SLASH)Cairo__ScaledFont.$(O) \
+    $(OUTDIR_SLASH)Cairo__Surface.$(O) \
     $(OUTDIR_SLASH)Cairo__SurfaceImage.$(O) \
     $(OUTDIR_SLASH)Cairo__SurfacePDF.$(O) \
     $(OUTDIR_SLASH)Cairo__SurfaceXlib.$(O) \
--- a/abbrev.stc	Tue Feb 23 10:36:57 2016 +0000
+++ b/abbrev.stc	Tue Feb 23 16:58:27 2016 +0000
@@ -2,7 +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::CError Cairo__CError stx:goodies/libcairo 'Cairo-Exceptions' 1
 Cairo::CPrimitives Cairo__CPrimitives stx:goodies/libcairo 'Cairo-Primitives' 0
 Cairo::CStructure Cairo__CStructure stx:goodies/libcairo 'Cairo-Objects' 1
 Cairo::ClockView Cairo__ClockView stx:goodies/libcairo 'Cairo-Examples' 2
@@ -39,19 +39,20 @@
 Cairo::TextExampleView Cairo__TextExampleView stx:goodies/libcairo 'Cairo-Examples' 2
 Cairo::UserDataKey Cairo__UserDataKey stx:goodies/libcairo 'Cairo-Objects' 1
 stx_goodies_libcairo stx_goodies_libcairo stx:goodies/libcairo '* Projects & Packages *' 3
+Cairo::CObject Cairo__CObject stx:goodies/libcairo 'Cairo-Objects' 0
 Cairo::FontExtents Cairo__FontExtents stx:goodies/libcairo 'Cairo-Objects' 1
-Cairo::FontFace Cairo__FontFace stx:goodies/libcairo 'Cairo-Objects' 0
-Cairo::FontOptions Cairo__FontOptions stx:goodies/libcairo 'Cairo-Objects' 0
 Cairo::Glyph Cairo__Glyph stx:goodies/libcairo 'Cairo-Objects' 1
-Cairo::GraphicsContext Cairo__GraphicsContext stx:goodies/libcairo 'Cairo-Objects' 0
 Cairo::Matrix Cairo__Matrix stx:goodies/libcairo 'Cairo-Objects' 1
-Cairo::Pattern Cairo__Pattern stx:goodies/libcairo 'Cairo-Objects' 0
 Cairo::Rectangle Cairo__Rectangle stx:goodies/libcairo 'Cairo-Objects' 1
-Cairo::ScaledFont Cairo__ScaledFont stx:goodies/libcairo 'Cairo-Objects' 0
-Cairo::Surface Cairo__Surface stx:goodies/libcairo 'Cairo-Objects' 0
 Cairo::TextExtents Cairo__TextExtents stx:goodies/libcairo 'Cairo-Objects' 1
 CairoGraphicsContext CairoGraphicsContext stx:goodies/libcairo 'Cairo-Compatibility' 0
 CairoScaledFont CairoScaledFont stx:goodies/libcairo 'Cairo-Compatibility' 0
+Cairo::FontFace Cairo__FontFace stx:goodies/libcairo 'Cairo-Objects' 0
+Cairo::FontOptions Cairo__FontOptions 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
 Cairo::SurfaceImage Cairo__SurfaceImage stx:goodies/libcairo 'Cairo-Objects' 0
 Cairo::SurfacePDF Cairo__SurfacePDF stx:goodies/libcairo 'Cairo-Objects' 0
 Cairo::SurfaceXlib Cairo__SurfaceXlib stx:goodies/libcairo 'Cairo-Objects' 0
--- a/bc.mak	Tue Feb 23 10:36:57 2016 +0000
+++ b/bc.mak	Tue Feb 23 16:58:27 2016 +0000
@@ -70,7 +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__CError.$(O) Cairo__CError.$(H): Cairo__CError.st $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(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__CStructure.$(O) Cairo__CStructure.$(H): Cairo__CStructure.st $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(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)
@@ -107,19 +107,20 @@
 $(OUTDIR)Cairo__TextExampleView.$(O) Cairo__TextExampleView.$(H): Cairo__TextExampleView.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__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__CObject.$(O) Cairo__CObject.$(H): Cairo__CObject.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Status.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__FontExtents.$(O) Cairo__FontExtents.$(H): Cairo__FontExtents.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CStructure.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(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__FontOptions.$(O) Cairo__FontOptions.$(H): Cairo__FontOptions.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__Glyph.$(O) Cairo__Glyph.$(H): Cairo__Glyph.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CStructure.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(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\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__Matrix.$(O) Cairo__Matrix.$(H): Cairo__Matrix.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CStructure.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(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__Rectangle.$(O) Cairo__Rectangle.$(H): Cairo__Rectangle.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CStructure.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(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)Cairo__TextExtents.$(O) Cairo__TextExtents.$(H): Cairo__TextExtents.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CStructure.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(STCHDR)
 $(OUTDIR)CairoGraphicsContext.$(O) CairoGraphicsContext.$(H): CairoGraphicsContext.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__FontSlant.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__FontWeight.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Format.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Status.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(STCHDR)
 $(OUTDIR)CairoScaledFont.$(O) CairoScaledFont.$(H): CairoScaledFont.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__FontSlant.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__FontWeight.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Format.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview\FontDescription.$(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__FontOptions.$(O) Cairo__FontOptions.$(H): Cairo__FontOptions.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(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__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)Cairo__SurfaceImage.$(O) Cairo__SurfaceImage.$(H): Cairo__SurfaceImage.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Surface.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__SurfacePDF.$(O) Cairo__SurfacePDF.$(H): Cairo__SurfacePDF.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Surface.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Cairo__SurfaceXlib.$(O) Cairo__SurfaceXlib.$(H): Cairo__SurfaceXlib.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Format.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Surface.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__SurfaceType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/libInit.cc	Tue Feb 23 10:36:57 2016 +0000
+++ b/libInit.cc	Tue Feb 23 16:58:27 2016 +0000
@@ -28,7 +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__CError_Init(pass,__pRT__,snd);
 _Cairo__CPrimitives_Init(pass,__pRT__,snd);
 _Cairo__CStructure_Init(pass,__pRT__,snd);
 _Cairo__ClockView_Init(pass,__pRT__,snd);
@@ -65,19 +65,20 @@
 _Cairo__TextExampleView_Init(pass,__pRT__,snd);
 _Cairo__UserDataKey_Init(pass,__pRT__,snd);
 _stx_137goodies_137libcairo_Init(pass,__pRT__,snd);
+_Cairo__CObject_Init(pass,__pRT__,snd);
 _Cairo__FontExtents_Init(pass,__pRT__,snd);
-_Cairo__FontFace_Init(pass,__pRT__,snd);
-_Cairo__FontOptions_Init(pass,__pRT__,snd);
 _Cairo__Glyph_Init(pass,__pRT__,snd);
-_Cairo__GraphicsContext_Init(pass,__pRT__,snd);
 _Cairo__Matrix_Init(pass,__pRT__,snd);
-_Cairo__Pattern_Init(pass,__pRT__,snd);
 _Cairo__Rectangle_Init(pass,__pRT__,snd);
-_Cairo__ScaledFont_Init(pass,__pRT__,snd);
-_Cairo__Surface_Init(pass,__pRT__,snd);
 _Cairo__TextExtents_Init(pass,__pRT__,snd);
 _CairoGraphicsContext_Init(pass,__pRT__,snd);
 _CairoScaledFont_Init(pass,__pRT__,snd);
+_Cairo__FontFace_Init(pass,__pRT__,snd);
+_Cairo__FontOptions_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);
 _Cairo__SurfaceImage_Init(pass,__pRT__,snd);
 _Cairo__SurfacePDF_Init(pass,__pRT__,snd);
 _Cairo__SurfaceXlib_Init(pass,__pRT__,snd);
--- a/stx_goodies_libcairo.st	Tue Feb 23 10:36:57 2016 +0000
+++ b/stx_goodies_libcairo.st	Tue Feb 23 16:58:27 2016 +0000
@@ -118,7 +118,7 @@
     ^ #(
         "<className> or (<className> attributes...) in load order"
         #'Cairo::Antialias'
-        #'Cairo::CObject'
+        #'Cairo::CError'
         #'Cairo::CPrimitives'
         #'Cairo::CStructure'
         #'Cairo::ClockView'
@@ -155,19 +155,20 @@
         #'Cairo::TextExampleView'
         #'Cairo::UserDataKey'
         #'stx_goodies_libcairo'
+        #'Cairo::CObject'
         #'Cairo::FontExtents'
-        #'Cairo::FontFace'
-        #'Cairo::FontOptions'
         #'Cairo::Glyph'
-        #'Cairo::GraphicsContext'
         #'Cairo::Matrix'
-        #'Cairo::Pattern'
         #'Cairo::Rectangle'
-        #'Cairo::ScaledFont'
-        #'Cairo::Surface'
         #'Cairo::TextExtents'
         CairoGraphicsContext
         CairoScaledFont
+        #'Cairo::FontFace'
+        #'Cairo::FontOptions'
+        #'Cairo::GraphicsContext'
+        #'Cairo::Pattern'
+        #'Cairo::ScaledFont'
+        #'Cairo::Surface'
         #'Cairo::SurfaceImage'
         #'Cairo::SurfacePDF'
         #'Cairo::SurfaceXlib'