Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
authorJan Vrany <jan.vrany@fit.cvut.cz>
Wed, 16 Mar 2016 19:33:02 +0000
changeset 65 dcb2eb06e759
parent 64 6e9458bb0697
child 66 e2ce20f7d777
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext For explanation, see * https://projecthamster.wordpress.com/2009/12/22/getting-sharp-pixels-and-actually-something-drawn-using-cairo/ * http://www.cairographics.org/FAQ/#sharp_lines
CairoGraphicsContext.st
Cairo__CairoGraphicsContextTests.st
Make.proto
abbrev.stc
bc.mak
stx_goodies_libcairo.st
--- a/CairoGraphicsContext.st	Wed Mar 16 09:56:21 2016 +0000
+++ b/CairoGraphicsContext.st	Wed Mar 16 19:33:02 2016 +0000
@@ -10,6 +10,7 @@
 	category:'Cairo-Compatibility'
 !
 
+
 !CairoGraphicsContext class methodsFor:'instance creation'!
 
 onDeviceGraphicsContext: dGC
@@ -108,6 +109,16 @@
 
 !CairoGraphicsContext methodsFor:'accessing'!
 
+atX:x y:y
+    "return the pixel at the coordinate given by x/y"
+    cr notNil ifTrue:[ 
+        cr surface flush.
+    ].
+    ^ device getPixelX:x y:y from:drawableId with:gcId
+
+    "Created: / 16-03-2016 / 18:27:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 basicFont:aFont
     (aFont ~~ font) ifTrue:[     
         super basicFont: aFont.
@@ -221,7 +232,7 @@
     super transformation: aTransformation.
     cr notNil ifTrue:[
         cr matrixReset.
-        transformation notNil ifTrue:[    
+        transformation notNil ifTrue:[ 
             cr
                 scale: transformation scale;
                 translate: transformation translation.
@@ -229,7 +240,7 @@
     ]
 
     "Created: / 01-01-2015 / 12:07:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 24-02-2016 / 17:28:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-03-2016 / 22:26:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !CairoGraphicsContext methodsFor:'basic drawing'!
@@ -272,12 +283,23 @@
     gcId isNil ifTrue:[ 
         self initGC.
     ].
-    cr moveToX: x0 y: y0.
-    cr lineToX: x1 y: y1.
+    x0 = x1 ifTrue:[
+        cr moveToX: x0 + 0.5 y: y0.
+        cr lineToX: x1 + 0.5 y: y1.
+    ] ifFalse:[ 
+        y0 = y1 ifTrue:[ 
+            cr moveToX: x0 y: y0 + 0.5.
+            cr lineToX: x1 y: y1 + 0.5.
+        ] ifFalse:[ 
+            cr moveToX: x0 y: y0.
+            cr lineToX: x1 y: y1.
+
+        ].
+    ].
     cr stroke.
 
-    "Modified: / 13-02-2016 / 20:05:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 21-02-2016 / 15:24:52 / jv"
+    "Modified: / 16-03-2016 / 22:40:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 displayPolygon:points
@@ -306,12 +328,12 @@
         self initGC.
     ]. 
     (w > 0 and:[h > 0]) ifTrue:[
-        cr rectangleX: x y: y width: w height: h.
+        cr rectangleX: x + 0.5 y: y + 0.5 width: w - 0.5 height: h - 0.5.
         cr stroke.
     ]
 
     "Modified: / 21-02-2016 / 15:34:34 / jv"
-    "Modified: / 28-02-2016 / 16:41:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-03-2016 / 22:42:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 displayString:string from:index1 to:index2 x:x y:y opaque:opaqueArg maxWidth:maxWidth
@@ -889,17 +911,13 @@
     cr lineWidth: (lineWidth == 0 ifTrue:[ 1 ] ifFalse:[ lineWidth ]).
     cr source: paint.
     cr matrixReset.
-    transformation notNil ifTrue:[    
-        cr
-            scale: transformation scale;
-            translate: transformation translation.
-    ].
+    self transformation: transformation.
     f := font.
     font := nil.
     self basicFont: f.
 
     "Created: / 18-02-2016 / 22:48:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 03-03-2016 / 23:28:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-03-2016 / 21:31:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 initGC
@@ -988,4 +1006,5 @@
 
 version_HG
     ^ '$Changeset: <not expanded> $'
-! !
\ No newline at end of file
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Cairo__CairoGraphicsContextTests.st	Wed Mar 16 19:33:02 2016 +0000
@@ -0,0 +1,180 @@
+"{ Package: 'stx:goodies/libcairo' }"
+
+"{ NameSpace: Cairo }"
+
+TestCase subclass:#CairoGraphicsContextTests
+	instanceVariableNames:'cairoify view'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Cairo-Tests'
+!
+
+
+!CairoGraphicsContextTests methodsFor:'private'!
+
+performTest
+    cairoify := false.
+    self performTestDrawingView: view.
+    cairoify := true.
+    self performTestDrawingView: view.
+    cairoify := nil.
+
+    "Created: / 26-02-2016 / 22:01:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 01-03-2016 / 13:06:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+performTestDrawingView: aView
+    cairoify ifTrue:[ 
+        | dGC cGC |
+
+        dGC := aView instVarNamed: #gc.
+        cGC := CairoGraphicsContext onDeviceGraphicsContext: dGC.
+        [
+            aView topView label: 'Cairo - ', self name.
+            aView instVarNamed: #gc put: cGC.
+            aView paint: Color black on: Color white.
+            aView backgroundColor: Color white.  
+            aView clear.          
+            self perform: testSelector sunitAsSymbol with: aView.
+        ] ensure:[ 
+            aView instVarNamed: #gc put: dGC.    
+            cGC destroyCR.
+        ].                  
+    ] ifFalse:[ 
+        aView topView label: 'Native - ', self name.
+        aView paint: Color black on: Color white.
+        aView backgroundColor: Color white.  
+        aView clear.          
+        self perform: testSelector sunitAsSymbol with: aView.
+    ].
+
+    "Created: / 01-03-2016 / 13:03:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-03-2016 / 19:03:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!CairoGraphicsContextTests methodsFor:'running'!
+
+setUp
+    | top |
+    self assert: Display notNil.
+    top := StandardSystemView new.
+    top label: self name.
+    top origin: 10@10 extent: (32 * 8) @ (32 * 8).       
+    view := SimpleView origin: 0.0 @ 0.0 corner: 1.0 @ 1.0 in: top.
+    top openAndWait.
+
+    "Created: / 26-02-2016 / 22:15:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-03-2016 / 18:57:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+tearDown
+    view notNil ifTrue:[ 
+        view topView close.
+    ].
+
+    "Created: / 26-02-2016 / 22:18:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!CairoGraphicsContextTests methodsFor:'tests'!
+
+test_infrastructure_01
+    self assert: (view colorAtX:5 y:5) = Color white.
+    view fillRectangleX: 1 y: 1 width: 10 height: 10.
+    self assert: (view colorAtX:5 y:5) = Color black.
+
+    "Created: / 16-03-2016 / 18:34:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!CairoGraphicsContextTests methodsFor:'tests - issues'!
+
+test_issue001_01
+    "
+    https://bitbucket.org/janvrany/stx-goodies-libcairo/issues/1
+    "
+    self assert: (view colorAtX: 0 y:0) = Color white.
+    view displayRectangleX: 0 y: 0 width: view width height: view height.
+    self assert: (view colorAtX:  0 y:  0) = Color black.
+    self assert: (view colorAtX:  view width - 1 y:  view height - 1) = Color black.
+
+    "Created: / 16-03-2016 / 18:46:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_issue001_02b
+    "
+    https://bitbucket.org/janvrany/stx-goodies-libcairo/issues/1
+    "
+    self assert: (view colorAtX: 0 y:0) = Color white.
+    view displayLineFromX: 0 y: view height - 1 toX: view width - 2 y: view height - 1.
+    0 to: view width - 3 do:[:x |  
+        self assert: (view colorAtX:  x y: view height - 1) = Color black.
+    ].
+    self assert: (view colorAtX:  view width - 1 y: view height - 1) = Color white.
+
+    "Created: / 16-03-2016 / 19:24:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-03-2016 / 23:24:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_issue001_02l
+    "
+    https://bitbucket.org/janvrany/stx-goodies-libcairo/issues/1
+    "
+    self assert: (view colorAtX: 0 y:0) = Color white.
+    view displayLineFromX: 0 y: 0 toX: 0 y: view height - 2.
+    0 to: view height - 3 do:[:y |  
+        self assert: (view colorAtX: 0 y: y) = Color black.
+    ].
+    self assert: (view colorAtX: 0 y: view height - 1) = Color white.
+
+    "Created: / 16-03-2016 / 19:26:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-03-2016 / 23:24:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_issue001_02r
+    "
+    https://bitbucket.org/janvrany/stx-goodies-libcairo/issues/1
+    "
+    self assert: (view colorAtX: 0 y:0) = Color white.
+    view displayLineFromX: view width - 1 y: 0 toX: view width - 1 y: view height - 2.
+    0 to: view height - 3 do:[:y |  
+        self assert: (view colorAtX: view width - 1 y: y) = Color black.
+    ].
+    self assert: (view colorAtX: view width - 1 y: view height - 1) = Color white.
+
+    "Created: / 16-03-2016 / 19:27:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-03-2016 / 23:24:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_issue001_02t
+    "
+    https://bitbucket.org/janvrany/stx-goodies-libcairo/issues/1
+    "
+    self assert: (view colorAtX: 0 y:0) = Color white.
+    view displayLineFromX: 0 y: 0 toX: view width - 2 y: 0.
+    0 to: view width - 3 do:[:x |  
+        self assert: (view colorAtX: x y:  0) = Color black.
+    ].
+    self assert: (view colorAtX:  view width - 1 y: 0) = Color white.
+
+    "Created: / 16-03-2016 / 19:24:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-03-2016 / 23:25:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_issue001_03
+    "
+    https://bitbucket.org/janvrany/stx-goodies-libcairo/issues/1
+    "
+    self assert: (view colorAtX: 0 y:0) = Color white.
+    view displayRectangleX: 0 y: 0 width: 10 height: 10.
+    self assert: (view colorAtX:  0 y:  0) = Color black.
+    self assert: (view colorAtX:  9 y:  9) = Color black.
+
+    "Created: / 16-03-2016 / 19:30:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!CairoGraphicsContextTests class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/Make.proto	Wed Mar 16 09:56:21 2016 +0000
+++ b/Make.proto	Wed Mar 16 19:33:02 2016 +0000
@@ -34,7 +34,7 @@
 # add the path(es) here:,
 # ********** OPTIONAL: MODIFY the next lines ***
 # LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libview -I$(INCLUDE_TOP)/stx/libview2 -I$(INCLUDE_TOP)/stx/libwidg
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libview -I$(INCLUDE_TOP)/stx/libview2 -I$(INCLUDE_TOP)/stx/libwidg
 
 
 # if you need any additional defines for embedded C code,
@@ -207,8 +207,8 @@
 $(OUTDIR)Cairo__SurfaceWin32.$(O) Cairo__SurfaceWin32.$(H): Cairo__SurfaceWin32.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)
 $(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)
 $(OUTDIR)Cairo__PatternGradientLinear.$(O) Cairo__PatternGradientLinear.$(H): Cairo__PatternGradientLinear.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Pattern.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__PatternGradient.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Cairo__PatternGradientRadial.$(O) Cairo__PatternGradientRadial.$(H): Cairo__PatternGradientRadial.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Pattern.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__PatternGradient.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/stx_libbasic.$(H) $(INCLUDE_TOP)/stx/libview/Depth1Image.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(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/Image.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview2/stx_libview2.$(H) $(STCHDR)
-$(OUTDIR)Cairo__PatternGradientRadial.$(O) Cairo__PatternGradientRadial.$(H): Cairo__PatternGradientRadial.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Pattern.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__PatternGradient.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/abbrev.stc	Wed Mar 16 09:56:21 2016 +0000
+++ b/abbrev.stc	Wed Mar 16 19:33:02 2016 +0000
@@ -1,10 +1,12 @@
 # automagically generated by the project definition
 # 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::AbstractExamples Cairo__AbstractExamples stx:goodies/libcairo 'Cairo-Examples' 1
 Cairo::Antialias Cairo__Antialias stx:goodies/libcairo 'Cairo-Constants' 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::CairoGraphicsContextTests Cairo__CairoGraphicsContextTests stx:goodies/libcairo 'Cairo-Tests' 1
 Cairo::ClockView Cairo__ClockView stx:goodies/libcairo 'Cairo-Examples' 2
 Cairo::Content Cairo__Content stx:goodies/libcairo 'Cairo-Constants' 0
 Cairo::Device Cairo__Device stx:goodies/libcairo 'Cairo-Constants' 0
@@ -41,6 +43,7 @@
 CairoGraphicsContextHandle CairoGraphicsContextHandle stx:goodies/libcairo 'Cairo-Compatibility' 0
 stx_goodies_libcairo stx_goodies_libcairo stx:goodies/libcairo '* Projects & Packages *' 3
 Cairo::CObject Cairo__CObject stx:goodies/libcairo 'Cairo-Objects' 0
+Cairo::Examples2 Cairo__Examples2 stx:goodies/libcairo 'Cairo-Examples' 1
 Cairo::FontExtents Cairo__FontExtents stx:goodies/libcairo 'Cairo-Objects' 1
 Cairo::Glyph Cairo__Glyph stx:goodies/libcairo 'Cairo-Objects' 1
 Cairo::Matrix Cairo__Matrix stx:goodies/libcairo 'Cairo-Objects' 1
@@ -63,9 +66,7 @@
 Cairo::SurfaceXlib Cairo__SurfaceXlib stx:goodies/libcairo 'Cairo-Objects' 0
 Cairo::PatternGradientLinear Cairo__PatternGradientLinear stx:goodies/libcairo 'Cairo-Objects' 0
 Cairo::PatternGradientRadial Cairo__PatternGradientRadial stx:goodies/libcairo 'Cairo-Objects' 0
-Cairo::AbstractExamples Cairo__AbstractExamples stx:goodies/libcairo 'Cairo-Examples' 1
 Cairo::AbstractViewer Cairo__AbstractViewer stx:goodies/libcairo 'Cairo-Examples' 1
 Cairo::Examples1 Cairo__Examples1 stx:goodies/libcairo 'Cairo-Examples' 1
 Cairo::Examples1Viewer Cairo__Examples1Viewer stx:goodies/libcairo 'Cairo-Examples' 1
-Cairo::Examples2 Cairo__Examples2 stx:goodies/libcairo 'Cairo-Examples' 1
 Cairo::Examples2Viewer Cairo__Examples2Viewer stx:goodies/libcairo 'Cairo-Examples' 1
--- a/bc.mak	Wed Mar 16 09:56:21 2016 +0000
+++ b/bc.mak	Wed Mar 16 19:33:02 2016 +0000
@@ -35,7 +35,7 @@
 
 
 
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libview -I$(INCLUDE_TOP)\stx\libview2 -I$(INCLUDE_TOP)\stx\libwidg
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libview -I$(INCLUDE_TOP)\stx\libview2 -I$(INCLUDE_TOP)\stx\libwidg
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
@@ -132,8 +132,8 @@
 $(OUTDIR)Cairo__SurfaceWin32.$(O) Cairo__SurfaceWin32.$(H): Cairo__SurfaceWin32.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)
 $(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)
 $(OUTDIR)Cairo__PatternGradientLinear.$(O) Cairo__PatternGradientLinear.$(H): Cairo__PatternGradientLinear.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Pattern.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__PatternGradient.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Cairo__PatternGradientRadial.$(O) Cairo__PatternGradientRadial.$(H): Cairo__PatternGradientRadial.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Pattern.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__PatternGradient.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\stx_libbasic.$(H) $(INCLUDE_TOP)\stx\libview\Depth1Image.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(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\Image.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview2\stx_libview2.$(H) $(STCHDR)
-$(OUTDIR)Cairo__PatternGradientRadial.$(O) Cairo__PatternGradientRadial.$(H): Cairo__PatternGradientRadial.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Pattern.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__PatternGradient.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/stx_goodies_libcairo.st	Wed Mar 16 09:56:21 2016 +0000
+++ b/stx_goodies_libcairo.st	Wed Mar 16 19:33:02 2016 +0000
@@ -119,6 +119,7 @@
      by searching all classes (and their packages) which are referenced by my classes."
 
     ^ #(
+        #'stx:goodies/sunit'    "TestAsserter - superclass of Cairo::AbstractExamples"
         #'stx:libwidg'    "HVScrollableView - referenced by Cairo::SurfaceImage>>inspector2TabImageCairo"
     )
 !
@@ -143,10 +144,12 @@
 
     ^ #(
         "<className> or (<className> attributes...) in load order"
+        (#'Cairo::AbstractExamples' autoload)
         #'Cairo::Antialias'
         #'Cairo::CError'
         #'Cairo::CPrimitives'
         #'Cairo::CStructure'
+        (#'Cairo::CairoGraphicsContextTests' autoload)
         #'Cairo::ClockView'
         #'Cairo::Content'
         #'Cairo::Device'
@@ -183,6 +186,7 @@
         CairoGraphicsContextHandle
         #'stx_goodies_libcairo'
         #'Cairo::CObject'
+        (#'Cairo::Examples2' autoload)
         #'Cairo::FontExtents'
         #'Cairo::Glyph'
         #'Cairo::Matrix'
@@ -205,11 +209,9 @@
         #'Cairo::SurfaceXlib'
         #'Cairo::PatternGradientLinear'
         #'Cairo::PatternGradientRadial'
-        (#'Cairo::AbstractExamples' autoload)
         (#'Cairo::AbstractViewer' autoload)
         (#'Cairo::Examples1' autoload)
         (#'Cairo::Examples1Viewer' autoload)
-        (#'Cairo::Examples2' autoload)
         (#'Cairo::Examples2Viewer' autoload)
     )
 !