Simulant  21.12-1303
A portable game engine for Windows, OSX, Linux, Dreamcast, and PSP
android_window.h
1 #pragma once
2 
3 #include <EGL/egl.h>
4 #include "../../window.h"
5 
6 struct android_app;
7 
8 namespace smlt {
9 
10 class AndroidWindow : public Window {
11 public:
12  static Window::ptr create(Application* app) {
13  return Window::create<AndroidWindow>(app);
14  }
15 
16  AndroidWindow();
17 
18  void set_title(const std::string&) override {} // No-op
19  void cursor_position(int32_t&, int32_t&) override {} // No-op
20  void show_cursor(bool) override {} // No-op
21  void lock_cursor(bool) override {} // No-op
22 
23  void destroy_window() override;
24  void check_events() override;
25 
26  void initialize_input_controller(InputState &controller) override;
27 
28  std::shared_ptr<SoundDriver> create_sound_driver(const std::string& from_config) override;
29 
30 private:
31  void do_swap_buffers() override;
32 
33  EGLDisplay dpy_ = EGL_NO_DISPLAY;
34  EGLSurface surface_ = EGL_NO_SURFACE;
35  EGLContext ctx_ = EGL_NO_CONTEXT;
36  EGLConfig config_ = nullptr;
37 
38  bool _init_window() override;
39  bool _init_renderer(Renderer *renderer) override;
40 
41  void on_application_set(Application* app) override;
42 
43  void create_egl_surface(android_app* aapp);
44 
45  struct FingerState {
46  float x = 0.0f;
47  float y = 0.0f;
48  float pressure = 0.0f;
49  };
50 
51  std::map<int, FingerState> finger_states_;
52 };
53 
54 }
smlt::Application
Definition: application.h:160
smlt
Definition: animation.cpp:25
smlt::Window
Definition: window.h:68
smlt::AndroidWindow
Definition: android_window.h:10
smlt::Renderer
Definition: renderer.h:40
smlt::InputState
Definition: input_state.h:250