1//============================================================================
2//
3// SSSS tt lll lll
4// SS SS tt ll ll
5// SS tttttt eeee ll ll aaaa
6// SSSS tt ee ee ll ll aa
7// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
8// SS SS tt ee ll ll aa aa
9// SSSS ttt eeeee llll llll aaaaa
10//
11// Copyright (c) 1995-2019 by Bradford W. Mott, Stephen Anthony
12// and the Stella Team
13//
14// See the file "License.txt" for information on usage and redistribution of
15// this file, and for a DISCLAIMER OF ALL WARRANTIES.
16//============================================================================
17
18#ifndef EVENTHANDLER_SDL2_HXX
19#define EVENTHANDLER_SDL2_HXX
20
21#include "SDL_lib.hxx"
22#include "EventHandler.hxx"
23#include "PhysicalJoystick.hxx"
24
25/**
26 This class handles event collection from the point of view of the specific
27 backend toolkit (SDL2). It converts from SDL2-specific events into events
28 that the Stella core can understand.
29
30 @author Stephen Anthony
31*/
32class EventHandlerSDL2 : public EventHandler
33{
34 public:
35 /**
36 Create a new SDL2 event handler object
37 */
38 explicit EventHandlerSDL2(OSystem& osystem);
39 virtual ~EventHandlerSDL2();
40
41 private:
42 /**
43 Enable/disable text events (distinct from single-key events).
44 */
45 void enableTextEvents(bool enable) override;
46
47 /**
48 Collects and dispatches any pending SDL2 events.
49 */
50 void pollEvent() override;
51
52 private:
53 SDL_Event myEvent;
54
55 // A thin wrapper around a basic PhysicalJoystick, holding the pointer to
56 // the underlying SDL joystick device.
57 class JoystickSDL2 : public PhysicalJoystick
58 {
59 public:
60 explicit JoystickSDL2(int idx);
61 virtual ~JoystickSDL2();
62
63 private:
64 SDL_Joystick* myStick;
65 };
66
67 private:
68 // Following constructors and assignment operators not supported
69 EventHandlerSDL2() = delete;
70 EventHandlerSDL2(const EventHandlerSDL2&) = delete;
71 EventHandlerSDL2(EventHandlerSDL2&&) = delete;
72 EventHandlerSDL2& operator=(const EventHandlerSDL2&) = delete;
73 EventHandlerSDL2& operator=(EventHandlerSDL2&&) = delete;
74};
75
76#endif
77