Hi Alex,
Have you tried something like this?
class Imlib2::Image
def rgba_data
self.data[1..3] << self.data[0]
end
end
Hope that helps...
Matthew
AlexG wrote:
>Hi,
>
>I'm using Imlib2 to load textures for openGL. Imlib2's raw data output
>seems to be four unsigned bytes for each pixel in the order: ARGB
>(where A=alpha), whilst OpenGL expects RGBA. The code below adds a new
>method to Imlib2::Image to move the alpha byte to the end of each pixel
>(i.e. it turns 255 100 100 100 into 100 100 100 255) and seems to work
>OK. My question is: Is there a more elegant (and/or quicker) way to do
>this byte swapping? How do other people do this conversion?
>
>class Imlib2::Image
> def rgba_data
> new_data = ""
> i = 0
> a = ""
> self.data.each_byte do |byte|
> i += 1
> if i % 3 == 0
> new_data << a
> a = byte
> else
> new_data << byte
> end
> end
> new_data << a
> end
>end
>
>Alex Gutteridge
>
>[1]: http://www.pablotron.org/software/imlib2-ruby/doc/
>
>
>
>
>