1 #include "ANGLETest.h"
2
3 #include <windows.h>
4
WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)5 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
6 {
7 switch (message)
8 {
9 case WM_CLOSE:
10 PostQuitMessage(0);
11 return 1;
12
13 default:
14 break;
15 }
16
17 return DefWindowProc(hWnd, message, wParam, lParam);
18 }
19
GetTestWindowName()20 static const PTCHAR GetTestWindowName()
21 {
22 return TEXT("ANGLE_TEST");
23 }
24
InitTestWindow()25 bool ANGLETest::InitTestWindow()
26 {
27 WNDCLASS sWC;
28 sWC.style = CS_OWNDC;
29 sWC.lpfnWndProc = WndProc;
30 sWC.cbClsExtra = 0;
31 sWC.cbWndExtra = 0;
32 sWC.hInstance = NULL;
33 sWC.hIcon = NULL;
34 sWC.hCursor = LoadCursor(NULL, IDC_ARROW);
35 sWC.lpszMenuName = NULL;
36 sWC.hbrBackground = NULL;
37 sWC.lpszClassName = GetTestWindowName();
38
39 if (!RegisterClass(&sWC))
40 {
41 return false;
42 }
43
44 mNativeWindow = CreateWindow(GetTestWindowName(), NULL, WS_BORDER, 128, 128, 128, 128, NULL, NULL, NULL, NULL);
45
46 SetWindowLong(mNativeWindow, GWL_STYLE, 0);
47 ShowWindow(mNativeWindow, SW_SHOW);
48
49 mNativeDisplay = GetDC(mNativeWindow);
50 if (!mNativeDisplay)
51 {
52 DestroyTestWindow();
53 return false;
54 }
55
56 mDisplay = eglGetDisplay(mNativeDisplay);
57 if(mDisplay == EGL_NO_DISPLAY)
58 {
59 mDisplay = eglGetDisplay((EGLNativeDisplayType)EGL_DEFAULT_DISPLAY);
60 }
61
62 EGLint majorVersion, minorVersion;
63 if (!eglInitialize(mDisplay, &majorVersion, &minorVersion))
64 {
65 DestroyTestWindow();
66 return false;
67 }
68
69 eglBindAPI(EGL_OPENGL_ES_API);
70 if (eglGetError() != EGL_SUCCESS)
71 {
72 DestroyTestWindow();
73 return false;
74 }
75
76 return true;
77 }
78
DestroyTestWindow()79 bool ANGLETest::DestroyTestWindow()
80 {
81 eglMakeCurrent(mDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
82 eglTerminate(mDisplay);
83
84 if (mNativeDisplay)
85 {
86 ReleaseDC(mNativeWindow, mNativeDisplay);
87 mNativeDisplay = 0;
88 }
89
90 if (mNativeWindow)
91 {
92 DestroyWindow(mNativeWindow);
93 mNativeWindow = 0;
94 }
95
96 UnregisterClass(GetTestWindowName(), NULL);
97
98 return true;
99 }
100
ReizeWindow(int width,int height)101 bool ANGLETest::ReizeWindow(int width, int height)
102 {
103 RECT windowRect;
104 if (!GetWindowRect(mNativeWindow, &windowRect))
105 {
106 return false;
107 }
108
109 if (!MoveWindow(mNativeWindow, windowRect.left, windowRect.top, width, height, FALSE))
110 {
111 return false;
112 }
113
114 return true;
115 }
116