Inverting colors?

Blitz3D Forums/Blitz3D Programming/Inverting colors?

hi.
I wonder if you could help me with this. First I'll explain what it is. In MSpaint, if you select something and then press CTRL+I you can invert the colors. I was wondering if anyone knew how to do this in Blitz3D? ie. The all the colors on the screen are inverted? Thanks in advance.

I don't know of any built-in commands to do such a thing but you could write your own routine to do it although it most likely would not be a very fast routine.

I think all you have to do is for R, G, and B each just subtract the current color from 255 for every pixel in the image.

All pixel routines written in blitz will never get fast. That's because there are always many pixels to write (long loops). Like, if you have a screen at 800x600, then it have to loop 800*600 = 480 000 times a mainloop to invert them (which would result <2 frames a second). Anyway, if it's a onetime operation (like if you're coding some sort of image editor), then it should work out fine.

yeh as your exspected to wait in things like taht

If you want *all* the pixels on the screen inverted, then the answer is yes, you can, very easily and quickly - simply invert all the values in the gamma table.

I haven't checked it but something along these lines:

for lp=0 to 255
  setgamma lp,lp,lp,255-lp,255-lp,255-lp
next
updategamma()


now that's indeed an easy way to do it!!! ;-)

Wow, thanks!