grafix_toolbox/kit/opengl/context/
event.rs1use 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;