grafix_toolbox/kit/opengl/context/
event.rs

1use super::*;
2
3#[derive(Debug, Clone)]
4pub enum Event {
5	MouseMove { at: Vec2, state: Mod },
6	MouseButton { button: Click, state: Mod },
7	Scroll { at: Vec2, state: Mod },
8	Keyboard { key: Key, state: Mod },
9	Char { ch: char },
10	OfferFocus,
11	Defocus,
12}
13
14#[derive(Debug, Clone)]
15pub enum EventReply {
16	Accept,
17	Reject,
18	Pass,
19	DropFocus,
20}
21
22bitflags! {
23#[derive(Debug, Clone, Copy, PartialEq, Eq)]
24pub struct Mod: u16 {
25	const PRESS = 0x1;
26	const REPEAT = 0x2;
27	const RELEASE = 0x4;
28	const SHIFT = 0x10;
29	const CTRL = 0x20;
30	const ALT = 0x40;
31	const WIN = 0x80;
32	const LEFT = 0x100;
33	const MID = 0x200;
34	const RIGHT = 0x400;
35}}
36impl Mod {
37	pub fn pressed(&self) -> bool {
38		self.intersects(Mod::PRESS | Mod::REPEAT)
39	}
40	pub fn released(&self) -> bool {
41		self.contains(Mod::RELEASE)
42	}
43	pub fn ctrl(&self) -> bool {
44		self.contains(Mod::CTRL)
45	}
46	pub fn shift(&self) -> bool {
47		self.contains(Mod::SHIFT)
48	}
49	pub fn alt(&self) -> bool {
50		self.contains(Mod::ALT)
51	}
52	pub fn win(&self) -> bool {
53		self.contains(Mod::WIN)
54	}
55	pub fn lmb(&self) -> bool {
56		self.contains(Mod::LEFT)
57	}
58	pub fn mmb(&self) -> bool {
59		self.contains(Mod::MID)
60	}
61	pub fn rmb(&self) -> bool {
62		self.contains(Mod::RIGHT)
63	}
64}
65
66#[derive(Debug, Clone)]
67pub enum Click {
68	Left,
69	Right,
70	Middle,
71}
72
73pub use glfw::Key;