genode/repos/demo/include/scout/event.h
Norman Feske b44f0554bd Adapt high-level components to new parent API
This patch adjusts the various users of the 'Child' API to the changes
on the account of the new non-blocking parent interface. It also removes
the use of the no-longer-available 'Connection::KEEP_OPEN' feature.

With the adjustment, we took the opportunity to redesign several
components to fit the non-blocking execution model much better, in
particular the demo applications.

Issue #2120
2016-11-30 13:37:03 +01:00

83 lines
1.6 KiB
C++

/*
* \brief User event representation
* \date 2005-10-24
* \author Norman Feske <norman.feske@genode-labs.com>
*/
/*
* Copyright (C) 2005-2013 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2.
*/
#ifndef _INCLUDE__SCOUT__EVENT_H_
#define _INCLUDE__SCOUT__EVENT_H_
#include <scout/types.h>
namespace Scout {
class Event;
class Event_handler;
}
/**
* Event structure
*
* This event structure covers timer events as well as user input events.
*/
class Scout::Event
{
public:
/**
* Some sensibly choosen key and button codes
*/
enum code {
BTN_LEFT = 0x110,
KEY_Q = 16,
};
enum ev_type {
UNDEFINED = 0,
MOTION = 1, /* mouse moved */
PRESS = 2, /* button/key pressed */
RELEASE = 3, /* button/key released */
TIMER = 4, /* timer event */
QUIT = 5, /* quit application */
WHEEL = 6, /* mouse wheel */
};
ev_type type;
Point mouse_position;
Point wheel_movement;
int code; /* key code */
/**
* Assign new event information to event structure
*/
inline void assign(ev_type new_type, int new_mx, int new_my, int new_code)
{
type = new_type;
mouse_position = Point(new_mx, new_my);
wheel_movement = Point(0, 0);
code = new_code;
}
};
class Scout::Event_handler
{
public:
virtual ~Event_handler() { }
/**
* Handle event
*/
virtual void handle_event(Event const &e) = 0;
};
#endif /* _INCLUDE__SCOUT__EVENT_H_ */