Forum: Ruby More c friendly interface to FXImage

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Artur M. (Guest)
on 2007-02-23 12:21
(Received via mailing list)
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
Lyle J. (Guest)
on 2007-02-23 18:18
(Received via mailing list)
On 2/23/07 4:20 AM, in article
removed_email_address@domain.invalid, "Artur M."
<removed_email_address@domain.invalid> wrote:

> 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...

>     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=3...

Thanks,

Lyle
This topic is locked and can not be replied to.