bgfx/examples/common/processevents.h

94 lines
1.8 KiB
C
Raw Normal View History

2013-01-19 00:12:04 -05:00
/*
* Copyright 2011-2013 Branimir Karadzic. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#ifndef __PROCESS_EVENTS_H__
#define __PROCESS_EVENTS_H__
inline bool processEvents(uint32_t& _width, uint32_t& _height, uint32_t& _debug)
{
using namespace entry;
2013-01-19 15:11:24 -05:00
bool resize = false;
2013-01-19 00:12:04 -05:00
const Event* ev;
do
{
struct SE { const Event* m_ev; SE() : m_ev(poll() ) {} ~SE() { if (NULL != m_ev) { release(m_ev); } } } scopeEvent;
ev = scopeEvent.m_ev;
if (NULL != ev)
{
switch (ev->m_type)
{
case Event::Exit:
return true;
case Event::Mouse:
{
// const MouseEvent* mouse = static_cast<const MouseEvent*>(ev);
// if (mouse->m_move)
// {
// }
}
break;
case Event::Key:
{
const KeyEvent* key = static_cast<const KeyEvent*>(ev);
if ( (key->m_key == Key::KeyQ && (key->m_modifiers & (Modifier::LeftCtrl|Modifier::RightCtrl) ) )
2013-01-19 00:12:04 -05:00
|| ( (key->m_key == Key::Esc) ) )
{
return true;
}
else if (key->m_key == Key::F1 && key->m_down)
{
_debug ^= BGFX_DEBUG_STATS;
bgfx::setDebug(_debug);
return false;
}
else if (key->m_key == Key::F9 && key->m_down)
{
setWindowSize(640, 480);
_width = 640;
_height = 480;
}
else if (key->m_key == Key::F10 && key->m_down)
{
setWindowSize(1280, 720);
_width = 1280;
_height = 720;
}
else if (key->m_key == Key::F11 && key->m_down)
{
toggleWindowFrame();
}
}
break;
case Event::Size:
{
const SizeEvent* size = static_cast<const SizeEvent*>(ev);
_width = size->m_width;
_height = size->m_height;
2013-01-19 15:11:24 -05:00
resize = true;
2013-01-19 00:12:04 -05:00
}
break;
default:
break;
}
}
} while (NULL != ev);
2013-01-19 15:11:24 -05:00
if (resize)
{
bgfx::reset(_width, _height);
}
2013-01-19 00:12:04 -05:00
return false;
}
#endif // __PROCESS_EVENTS_H__