Floorplan Object Exchange

From LinuxMCE
Revision as of 22:22, 22 February 2010 by Uplink (Talk | contribs)

Jump to: navigation, search

Notes on how Orbiter exchanges the color of objects in the floorplan

File: src/Orbiter/Orbiter.cpp Function: Orbiter::RenderFloorplan

DCE::CMD_Get_Current_Floorplan is used to retrieve the Floorplan data: Color, Status, OSD, PK_DesignObj_Toolbar

Color is stored as "int" (which happens to be 32 bit on 32 bit platforms)

If Color is non-zero, OrbiterRenderer::ReplaceColorInRectangle is called to replace the magenta pixers with the new color. Somehow, sometimes the red and blue channels in RGB are flipped, resulting in wrong colors on the floorplan. This method is overridden in OrbiterRenderer_OpenGL and OrbiterRenderer_SDL.

In OrbiterRenderer_SDL, there are ifdefs to change behavior on the Nokia N8xx, which uses 16 bits of color, not 32.

The values for rshift, gshift, bshift are defined in src/SDL_Helpers/SDL_Defs.h based on what SDL claims the byte order is.