1 /*
2 * Copyright 2017 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7 
8 #ifndef Window_ios_DEFINED
9 #define Window_ios_DEFINED
10 
11 #include "../Window.h"
12 #include "SkChecksum.h"
13 #include "SkTDynamicHash.h"
14 
15 #include "SDL.h"
16 
17 namespace sk_app {
18 
19 class Window_ios : public Window {
20 public:
Window_ios()21     Window_ios()
22             : INHERITED()
23             , fWindow(nullptr)
24             , fWindowID(0)
25             , fGLContext(nullptr)
26             , fMSAASampleCount(1) {}
~Window_ios()27     ~Window_ios() override { this->closeWindow(); }
28 
29     bool initWindow();
30 
31     void setTitle(const char*) override;
32     void show() override;
33 
34     bool attach(BackendType) override;
35 
36     void onInval() override;
37 
38     static bool HandleWindowEvent(const SDL_Event& event);
39 
GetKey(const Window_ios & w)40     static const Uint32& GetKey(const Window_ios& w) {
41         return w.fWindowID;
42     }
43 
Hash(const Uint32 & winID)44     static uint32_t Hash(const Uint32& winID) {
45         return winID;
46     }
47 
48 private:
49     bool handleEvent(const SDL_Event& event);
50 
51     void closeWindow();
52 
53     static SkTDynamicHash<Window_ios, Uint32> gWindowMap;
54 
55     SDL_Window*   fWindow;
56     Uint32        fWindowID;
57     SDL_GLContext fGLContext;
58 
59     int          fMSAASampleCount;
60 
61     typedef Window INHERITED;
62 };
63 
64 }   // namespace sk_app
65 
66 #endif
67