1 /*
2  *  BSD 3-Clause License
3  *  
4  *  Copyright (c) 2016, Mango-Engine Team
5  *  All rights reserved.
6  *  
7  *  Redistribution and use in source and binary forms, with or without
8  *  modification, are permitted provided that the following conditions are met:
9  *  
10  *  * Redistributions of source code must retain the above copyright notice, this
11  *    list of conditions and the following disclaimer.
12  *  
13  *  * Redistributions in binary form must reproduce the above copyright notice,
14  *    this list of conditions and the following disclaimer in the documentation
15  *    and/or other materials provided with the distribution.
16  *  
17  *  * Neither the name of the copyright holder nor the names of its
18  *    contributors may be used to endorse or promote products derived from
19  *    this software without specific prior written permission.
20  *  
21  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24  *  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25  *  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26  *  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27  *  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28  *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29  *  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32 /// Graphics related events
33 module mango_engine.event.graphics;
34 
35 import mango_engine.event.core;
36 
37 import mango_engine.graphics.window;
38 
39 /// Base class for an event related to graphics.
40 abstract class GraphicsEvent : Event {
41 
42 }
43 
44 /// Base class for an event related to a Window.
45 class WindowEvent : GraphicsEvent {
46     private shared Window _window;
47 
48     @property Window window() @trusted nothrow { return cast(Window) this._window; }
49 
50     this(Window window) @trusted nothrow {
51         this._window = cast(shared) window;
52     }
53 }
54 
55 class WindowShowEvent : WindowEvent {
56     this(Window window) @safe nothrow {
57         super(window);
58     }
59 }
60 
61 class WindowHideEvent : WindowEvent {
62     this(Window window) @safe nothrow {
63         super(window);
64     }
65 }
66 
67 class WindowTitleChangeEvent : WindowEvent {
68     immutable string name;
69 
70     this(in string name, Window window) @safe nothrow {
71         super(window);
72         
73         this.name = name;
74     }
75 }
76 
77 deprecated("Use InputManager instead") 
78 class WindowKeyPressedEvent : WindowEvent {
79     /++
80         The key which was pressed. The values
81         are found in derelict.glfw3.glfw3.
82 
83         For example, the A key's value is
84         GLFW_KEY_A.
85     +/
86     immutable int key;
87     
88     this(in int key, Window window) @safe nothrow {
89         super(window);
90         
91         this.key = key;
92     }
93 }