I'm using MacRuby to work with CoreGraphics and having some trouble with pointers.
My first attempt was to create the data for a bitmap context using NSMutableData: bitmap_data = NSMutableData.alloc.initWithLength(image_data_size) bitmap_context = CGBitmapContextCreate( bitmap_data.mutableBytes(), image_width, image_height, 8, image_width, gray_color_space, KCGImageAlphaNone) If I do this, I get an error that "expected instance of Pointer of type 'v', got 'C' (TypeError)" I gather from this that CGBitmapContextCreate was expecting a (void *) and got a (UInt8 *). In C I would just type the difference away, but Ruby doesn't like ti. I tried something like: bitmap_data_ptr = Pointer.new_of_type('v') bitmap_data_ptr.assign(bitmap_data.mutableBytes()) This didn't work very well either. I get an error that the system can't do a "sizeof" of an unsized type (presumably void *) I also tried doing similar using CFDataRef (not much difference really). It looked like: bitmap_data = CFDataCreateMutable(nil, image_data_size) CFDataSetLength(bitmap_data, image_data_size) bitmap_data_ptr = CFDataGetMutableBytePtr(bitmap_data) bitmap_context = CGBitmapContextCreate( CFDataGetMutableBytePtr(bitmap_data), image_width, image_height, 8, image_width, gray_color_space, KCGImageAlphaNone) In this case, I get an error that "expected instance of Pointer, got '""' (NSMutableString) (TypeError) Evidently MacRuby sees the return value of CFDataGetMutableBytePtr as being a string, subsequently typecasts it as such, and goes on. Is there anything I can do to typecast the pointers to a type that MacRuby will accept? Scott
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel