1/*
2* Copyright 2016 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_mac_DEFINED
9#define Window_mac_DEFINED
10
11#include "../Window.h"
12#include "SkChecksum.h"
13#include "SkTDynamicHash.h"
14
15#include "SDL.h"
16
17namespace sk_app {
18
19class Window_mac : public Window {
20public:
21    Window_mac()
22        : INHERITED()
23        , fWindow(nullptr)
24        , fWindowID(0)
25        , fMSAASampleCount(0) {}
26    ~Window_mac() override { this->closeWindow(); }
27
28    bool initWindow();
29
30    void setTitle(const char*) override;
31    void show() override;
32
33    bool attach(BackendType) override;
34
35    void onInval() override;
36
37    static bool HandleWindowEvent(const SDL_Event& event);
38
39    static const Uint32& GetKey(const Window_mac& w) {
40        return w.fWindowID;
41    }
42
43    static uint32_t Hash(const Uint32& winID) {
44        return winID;
45    }
46
47private:
48    bool handleEvent(const SDL_Event& event);
49
50    void closeWindow();
51
52    static SkTDynamicHash<Window_mac, Uint32> gWindowMap;
53
54    SDL_Window*  fWindow;
55    Uint32       fWindowID;
56
57    int          fMSAASampleCount;
58
59    typedef Window INHERITED;
60};
61
62}   // namespace sk_app
63
64#endif
65