sdl_texture.cpp: Rewrite the optimize() function.
authorFlorian Forster <supertux@octo.it>
Mon, 1 Mar 2010 11:26:20 +0000 (11:26 +0000)
committerFlorian Forster <supertux@octo.it>
Mon, 1 Mar 2010 11:26:20 +0000 (11:26 +0000)
commit11adc6e199ca90265268d90298d8238b34844008
treeb43c22dd94babecc297265bdd46f7064f3b11bbf
parent1380eb0f1903777c29b0298afd7bad40d26b1e47
sdl_texture.cpp: Rewrite the optimize() function.

The changes made by tuxdev in revision 6192 broke alpha handling in the SDL
renderer for me (SDL 1.2.7). This commit fixes handling of semi-transparent
surfaces / pixels and improves the function towards readability.

It starts by categorizing pixels into three categories: transparent,
semi-transparent and opaque.
* If semi-transparent pixels are present, "SDL_DisplayFormatAlpha" is used.
* If only opaque pixels are present, "SDL_DisplayFormat" is used.
* If only opaque and transparent pixels are present, "SDL_SetColorKey" is used
  for 1-bit alpha.

SVN-Revision: 6485
src/video/sdl/sdl_texture.cpp