* Copyright 2013-2014 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Alexander von Gluck IV <kallisti5@unixzen.com>
*/
#include <Application.h>
#include <Screen.h>
#include <stdio.h>
#define M(x) { B_##x, #x }
struct ColorSpace {
color_space space;
const char* name;
};
ColorSpace table[] =
{
M(RGB32),
M(RGB32),
M(RGBA32),
M(RGB24),
M(RGB16),
M(RGB15),
M(RGBA15),
M(CMAP8),
M(GRAY8),
M(GRAY1),
M(RGB32_BIG),
M(RGBA32_BIG),
M(RGB24_BIG),
M(RGB16_BIG),
M(RGB15_BIG),
M(RGBA15_BIG),
M(YCbCr422),
M(YCbCr411),
M(YCbCr444),
M(YCbCr420),
M(YUV422),
M(YUV411),
M(YUV444),
M(YUV420),
M(YUV9),
M(YUV12),
M(UVL24),
M(UVL32),
M(UVLA32),
M(LAB24),
M(LAB32),
M(LABA32),
M(HSI24),
M(HSI32),
M(HSIA32),
M(HSV24),
M(HSV32),
M(HSVA32),
M(HLS24),
M(HLS32),
M(HLSA32),
M(CMY24),
M(CMY32),
M(CMYA32),
M(CMYK32),
M(CMYA32),
M(CMYK32)
};
void
print_supported_overlays()
{
for (int32 i = 0; i < sizeof(table) / sizeof(table[0]); i++)
{
uint32 supportFlags = 0;
if (bitmaps_support_space(table[i].space, &supportFlags)
&& (supportFlags & B_BITMAPS_SUPPORT_OVERLAY))
printf("\t%s\n", table[i].name);
}
}
int
main()
{
BApplication app("application/x-vnd.Haiku-screen_info");
BScreen screen(B_MAIN_SCREEN_ID);
do {
screen_id screenIndex = screen.ID();
accelerant_device_info info;
printf("Screen %" B_PRId32 ":", screen.ID().id);
if (screen.GetDeviceInfo(&info) != B_OK) {
printf(" unavailable\n");
} else {
printf(" attached\n");
printf(" version: %" B_PRId32 "\n", info.version);
printf(" name: %s\n", info.name);
printf(" chipset: %s\n", info.chipset);
printf(" serial: %s\n", info.serial_no);
printf(" bitmap overlay colorspaces supported:\n");
print_supported_overlays();
}
} while (screen.SetToNext() == B_OK);
return 0;
}