From daa54abdc5109740a1d90ef39293649e5a68a631 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Wed, 30 Mar 2005 08:16:19 +0000 Subject: [PATCH] Added a test for BDirectWindow, with even fewer requirements than the one already in the tree. Basically this only prints some info to stdout. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12155 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kits/game/direct_window_info_test/Jamfile | 7 ++ .../game/direct_window_info_test/dwinfo.cpp | 106 ++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 src/tests/kits/game/direct_window_info_test/Jamfile create mode 100644 src/tests/kits/game/direct_window_info_test/dwinfo.cpp diff --git a/src/tests/kits/game/direct_window_info_test/Jamfile b/src/tests/kits/game/direct_window_info_test/Jamfile new file mode 100644 index 0000000000..984ee7a6eb --- /dev/null +++ b/src/tests/kits/game/direct_window_info_test/Jamfile @@ -0,0 +1,7 @@ +SubDir OBOS_TOP src tests kits game direct_window_info_test ; + +SimpleTest dw_info + : dwinfo.cpp + : game be root +; + diff --git a/src/tests/kits/game/direct_window_info_test/dwinfo.cpp b/src/tests/kits/game/direct_window_info_test/dwinfo.cpp new file mode 100644 index 0000000000..89664549a5 --- /dev/null +++ b/src/tests/kits/game/direct_window_info_test/dwinfo.cpp @@ -0,0 +1,106 @@ +#include +#include + +#include + +static const char * +state_to_string(direct_buffer_state state) +{ + //TODO: Return more info like B_CLIPPING_MODIFIED, etc. + + switch (state & B_DIRECT_MODE_MASK) { + case B_DIRECT_START: + return "B_DIRECT_START"; + case B_DIRECT_STOP: + return "B_DIRECT_STOP"; + case B_DIRECT_MODIFY: + return "B_DIRECT_MODIFY"; + default: + return "other state"; + } +} + + +static const char * +layout_to_string(buffer_layout layout) +{ + switch (layout) { + case B_BUFFER_NONINTERLEAVED: + return "B_BUFFER_NONINTERLEAVED"; + default: + return "unknown buffer_layout"; + } +} + + +static const char * +orientation_to_string(buffer_orientation orientation) +{ + switch (orientation) { + case B_BUFFER_TOP_TO_BOTTOM: + return "B_BUFFER_TOP_TO_BOTTOM"; + case B_BUFFER_BOTTOM_TO_TOP: + return "B_BUFFER_BOTTOM_TO_TOP"; + default: + return "unknown buffer_orientation"; + } +} + +class TestWindow : public BDirectWindow { +public: + TestWindow() : BDirectWindow(BRect(100, 100, 400, 300), "DWInfo", B_DOCUMENT_WINDOW, 0) + { + + } + + virtual void DirectConnected(direct_buffer_info *info) + { + BRegion region; + + printf("\n\n*** DirectConnected() ***\n"); + area_id areaId = area_for(info); + area_info areaInfo; + if (areaId >= 0 && get_area_info(areaId, &areaInfo) == B_OK) + printf("area size: %ld\n", areaInfo.size); + + printf("buffer state: %s\n", state_to_string(info->buffer_state)); + printf("bits: %p\n", info->bits); + printf("pci_bits: %p\n", info->pci_bits); + printf("bytes_per_row: %ld\n", info->bytes_per_row); + printf("bits_per_pixel: %lu\n", info->bits_per_pixel); + printf("pixel_format: %d\n", info->pixel_format); + printf("buffer_layout: %s\n", layout_to_string(info->layout)); + printf("buffer_orientation: %s\n", orientation_to_string(info->orientation)); + + printf("\nCLIPPING INFO:\n"); + printf("clipping_rects count: %ld\n", info->clip_list_count); + + printf("- window_bounds:\n"); + region.Set(info->window_bounds); + region.PrintToStream(); + + region.MakeEmpty(); + for (uint32 i = 0; i < info->clip_list_count; i++) + region.Include(info->clip_list[i]); + + printf("- clip_list:\n"); + region.PrintToStream(); + } + + virtual bool QuitRequested() + { + be_app->PostMessage(B_QUIT_REQUESTED); + return BDirectWindow::QuitRequested(); + } +}; + + + +int main() +{ + BApplication app("application/x-vnd.DWInfo"); + + (new TestWindow())->Show(); + + app.Run(); +}