blob: 7d25a1ea61397bdbc572aedad73a0874f569d793 [file] [log] [blame]
Geoff Lang49be2ad2014-02-28 13:05:51 -05001//
2// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6
7#ifndef SAMPLE_UTIL_WINDOW_H
8#define SAMPLE_UTIL_WINDOW_H
9
10#include "Event.h"
11
12#include <EGL/egl.h>
13#include <EGL/eglext.h>
14#include <list>
15
Jamie Madill1cfaaf82014-08-21 10:04:04 -040016class OSWindow
Geoff Lang49be2ad2014-02-28 13:05:51 -050017{
18 public:
Jamie Madill1cfaaf82014-08-21 10:04:04 -040019 OSWindow();
Jamie Madill44771092014-08-28 09:21:35 -040020 virtual ~OSWindow();
Geoff Lang49be2ad2014-02-28 13:05:51 -050021
Geoff Langf0955f12014-06-20 16:07:07 -040022 virtual bool initialize(const std::string &name, size_t width, size_t height) = 0;
Geoff Lang49be2ad2014-02-28 13:05:51 -050023 virtual void destroy() = 0;
24
25 int getWidth() const;
26 int getHeight() const;
Geoff Lang49be2ad2014-02-28 13:05:51 -050027
Geoff Lang49be2ad2014-02-28 13:05:51 -050028 virtual EGLNativeWindowType getNativeWindow() const = 0;
29 virtual EGLNativeDisplayType getNativeDisplay() const = 0;
30
31 virtual void messageLoop() = 0;
32
33 bool popEvent(Event *event);
Jamie Madill9e16d402014-09-08 17:36:33 -040034 virtual void pushEvent(Event event);
Geoff Lang49be2ad2014-02-28 13:05:51 -050035
Jamie Madill1cfaaf82014-08-21 10:04:04 -040036 virtual void setMousePosition(int x, int y) = 0;
Jamie Madill25f0e5e2014-08-22 14:50:41 -040037 virtual bool resize(int width, int height) = 0;
Jamie Madill83da0ec2014-08-22 14:50:42 -040038 virtual bool setVisible(bool isVisible) = 0;
Jamie Madill1cfaaf82014-08-21 10:04:04 -040039
Jamie Madill25f0e5e2014-08-22 14:50:41 -040040 protected:
Geoff Lang49be2ad2014-02-28 13:05:51 -050041 int mWidth;
42 int mHeight;
43
44 std::list<Event> mEvents;
45};
46
Jamie Madill1cfaaf82014-08-21 10:04:04 -040047OSWindow *CreateOSWindow();
Geoff Lang8def9aa2014-08-05 11:39:15 -040048
Geoff Lang49be2ad2014-02-28 13:05:51 -050049#endif // SAMPLE_UTIL_WINDOW_H