On 01/09/2011 11:31 PM, Mathieu Suen wrote:
> When I was playing with cairo I thought there was no other way than this to
> write
> on a surface:
> cpngSurface := Cairo.CairoPngSurface on: 'test.png' extent: wi...@height.
> data := Cairo.Cairo imageSurfaceGetData: cpngSurface cairoSurface.
> ..
> data at: (i*4) + (j*stride) + 3 put: (CChar value: 255) type: CChar.
>
> #imageSurfaceGetData: returns an instance of CObject.
> How to make #imageSurfaceGetData: returns a CCharArray to do something like:
> data at: (i*4) + (j*stride) + 3 put: 255 ?
Something like this?
diff --git a/packages/cairo/CairoFuncs.st b/packages/cairo/CairoFuncs.st
index e3af859..e0316c0 100644
--- a/packages/cairo/CairoFuncs.st
+++ b/packages/cairo/CairoFuncs.st
@@ -96,7 +96,7 @@ CairoContext.'>
]
Cairo class >> imageSurfaceGetData: surface [
- <cCall: 'cairo_image_surface_get_data' returning: #cObject args:
#(#cObject)>
+ <cCall: 'cairo_image_surface_get_data' returning: #{CByte} args:
#(#cObject)>
]
Cairo class >> imageSurfaceGetHeight: filename [
diff --git a/packages/cairo/CairoSurface.st b/packages/cairo/CairoSurface.st
index ba82e5e..097dcfd 100644
--- a/packages/cairo/CairoSurface.st
+++ b/packages/cairo/CairoSurface.st
@@ -296,6 +296,11 @@ CairoLoadableFileSurface subclass: CairoPngSurface [
^Cairo imageSurfaceCreateFromPng: filename
]
+ data [
+ <category: 'C interface'>
+ ^Cairo imageSurfaceGetData: self cairoSurface
+ ]
+
save [
"Save the contents of the surface to the PNG file specified by
#filename."
Paolo
_______________________________________________
help-smalltalk mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-smalltalk