API modification -- replaced "Graphics::PixelFormat getBestFormat()" with "Common::List<Graphics::PixelFormat> getSupportedFormats()"

svn-id: r41854
This commit is contained in:
Jody Northup 2009-06-25 08:55:16 +00:00
parent 865129a563
commit 53eb83dc95
3 changed files with 52 additions and 17 deletions

View File

@ -86,21 +86,38 @@ public:
virtual Graphics::PixelFormat getScreenFormat() const { return _screenFormat; }
// Highest supported
virtual Graphics::PixelFormat getBestFormat() const {
//TODO scale down 16/32 bit based on hardware support
{
SDL_PixelFormat *HWFormat = SDL_GetVideoInfo()->vfmt;
virtual Common::List<Graphics::PixelFormat> getSupportedFormats() const {
//TODO determine hardware color component order
Common::List<Graphics::PixelFormat> list;
SDL_PixelFormat *HWFormat = SDL_GetVideoInfo()->vfmt;
#ifdef ENABLE_32BIT
if (HWFormat->BitsPerPixel >= 32)
return Graphics::PixelFormat::createFormatRGBA8888();
if (HWFormat->BitsPerPixel >= 24)
return Graphics::
FormatRGB888();
#endif //ENABLE_32BIT
if (HWFormat->BitsPerPixel >= 16)
return Graphics::PixelFormat::createFormatRGB565();
if (HWFormat->BitsPerPixel >= 32)
{
list.push_back(Graphics::PixelFormat::createFormatRGBA8888());
list.push_back(Graphics::PixelFormat::createFormatARGB8888());
list.push_back(Graphics::PixelFormat::createFormatABGR8888());
list.push_back(Graphics::PixelFormat::createFormatBGRA8888()); }
if (HWFormat->BitsPerPixel >= 24)
{
list.push_back(Graphics::PixelFormat::createFormatRGB888());
list.push_back(Graphics::PixelFormat::createFormatBGR888());
}
return Graphics::PixelFormat::createFormatCLUT8();
#endif //ENABLE_32BIT
if (HWFormat->BitsPerPixel >= 16)
{
list.push_back(Graphics::PixelFormat::createFormatRGB565());
list.push_back(Graphics::PixelFormat::createFormatXRGB1555());
list.push_back(Graphics::PixelFormat::createFormatRGB555());
list.push_back(Graphics::PixelFormat::createFormatRGBA4444());
list.push_back(Graphics::PixelFormat::createFormatARGB4444());
list.push_back(Graphics::PixelFormat::createFormatBGR565());
list.push_back(Graphics::PixelFormat::createFormatXBGR1555());
list.push_back(Graphics::PixelFormat::createFormatBGR555());
list.push_back(Graphics::PixelFormat::createFormatABGR4444());
list.push_back(Graphics::PixelFormat::createFormatBGRA4444());
}
list.push_back(Graphics::PixelFormat::createFormatCLUT8());
return list;
}
#endif

View File

@ -345,16 +345,34 @@ public:
#ifdef ENABLE_RGB_COLOR
/**
* Returns the pixel format of the screen.
* Determine the pixel format currently in use for screen rendering.
* @return the active screen pixel format.
* @see Graphics::PixelFormat
*/
virtual Graphics::PixelFormat getScreenFormat() const = 0;
/**
* Returns the highest color pixel format supported by the backend
* Returns a list of all pixel formats supported by the backend.
* The first item in the list must be directly supported by hardware,
* and provide the largest color space of those formats with direct
* hardware support. It is also strongly recommended that remaining
* formats should be placed in order of descending preference for the
* backend to use.
*
* EG: a backend that supports 32-bit ABGR and 16-bit 555 BGR in hardware
* and provides conversion from equivalent RGB(A) modes should order its list
* 1) Graphics::PixelFormat::createFormatABGR8888()
* 2) Graphics::PixelFormat::createFormatBGR555()
* 3) Graphics::PixelFormat::createFormatRGBA8888()
* 4) Graphics::PixelFormat::createFormatRGB555()
* 5) Graphics::PixelFormat::createFormatCLUT8()
*
* @see Graphics::PixelFormat
*
* @note All backends supporting RGB color must be able to accept game data
* in RGB color order, even if hardware uses BGR or some other color order.
*/
virtual Graphics::PixelFormat getBestFormat() const = 0;
virtual Common::List<Graphics::PixelFormat> getSupportedFormats() const = 0;
#endif
/**

View File

@ -73,7 +73,7 @@ Common::Error GroovieEngine::run() {
switch (_gameDescription->version) {
case kGroovieV2:
#ifdef ENABLE_RGB_COLOR
_pixelFormat = _system->getBestFormat();
_pixelFormat = _system->getSupportedFormats().front();
initGraphics(640, 480, true, _pixelFormat);
break;
#endif