More c friendly interface to FXImage

Hi all,

I'm looking for an efficient way of image manipulation/rerendering
using fximage from fxruby:

To initialize a FXImage with a persistent pixel buffer one has to:

image = FXImage.new(getApp(), buf, IMAGE_OWNED|IMAGE_KEEP, width,
height)

where buf is an array of FXColor of size=width*height

after initialization

image.data.data

is a pointer to this buffer.

As image processing is quite computational expensive I would
appriciate a more c language friendly interface ...

so for example

buf= MyPic.new

where MyPic is implemented in c using e.g.

typedef struct {
    int w,h;

   //let it be the 4 bytes/ rgba pixel as required by fxruby
   unsiged char * pixels;
   ...
} MyPic;

This would solve the problem that after changing the MyPic buffer
pixels the rerendering of the picture requires converting it to an
array of FXColor first ...

[*
Other solution would be to access the values of a ruby array in c as
an
memory block without copying it (didn't look into the implementation
of the ruby array if it's implemented this way at all ...)
*]

Any suggestions? Is it already implemented somehow and I just don't
see
it?

Any help would be appreciated

Artur

I'm looking for an efficient way of image manipulation/rerendering
using fximage from fxruby:

This discussion really, *really* belongs on the FXRuby mailing list. But
anyways...

As image processing is quite computational expensive I would
appriciate a more c language friendly interface ...

so for example

buf= MyPic.new

where MyPic is implemented in c using e.g.

typedef struct {
    int w,h;

   //let it be the 4 bytes/ rgba pixel as required by fxruby
   unsiged char * pixels;
   ...
} MyPic;

So instead of (or as alternative to) manipulating an array of FXColor, you'd
manipulate a Ruby string of bytes which has size 4*w*h? OK, I get it.

This would solve the problem that after changing the MyPic buffer
pixels the rerendering of the picture requires converting it to an
array of FXColor first ...

True, but that pixels "array" (really, a String) would still need to be
converted to an array of FXColor in the C++ wrapper layer, because the FOX
library expects an array of FXColor values.

Any suggestions? Is it already implemented somehow and I just don't
see it?

No, you've got it right concerning the current approach. I would suggest
that you file a feature request about this, and we'll see if it can be added
in a future release of FXRuby:

    http://rubyforge.org/tracker/?atid=1226&group_id=300&func=browse

Thanks,

Lyle

···

On 2/23/07 4:20 AM, in article 1172225881.431564.188960@v33g2000cwv.googlegroups.com, "Artur Merke" <am@artbot.de> wrote: