blob: 6a02c0bacd518aa5056645848285ecfde5d05d56 [file] [log] [blame]
#include "ANGLETest.h"
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CLOSE:
PostQuitMessage(0);
return 1;
default:
break;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
static const PTCHAR GetTestWindowName()
{
return TEXT("ANGLE_TEST");
}
bool ANGLETest::InitTestWindow()
{
WNDCLASS sWC;
sWC.style = CS_OWNDC;
sWC.lpfnWndProc = WndProc;
sWC.cbClsExtra = 0;
sWC.cbWndExtra = 0;
sWC.hInstance = NULL;
sWC.hIcon = NULL;
sWC.hCursor = LoadCursor(NULL, IDC_ARROW);
sWC.lpszMenuName = NULL;
sWC.hbrBackground = NULL;
sWC.lpszClassName = GetTestWindowName();
if (!RegisterClass(&sWC))
{
return false;
}
mNativeWindow = CreateWindow(GetTestWindowName(), NULL, WS_BORDER, 128, 128, 128, 128, NULL, NULL, NULL, NULL);
SetWindowLong(mNativeWindow, GWL_STYLE, 0);
ShowWindow(mNativeWindow, SW_SHOW);
mNativeDisplay = GetDC(mNativeWindow);
if (!mNativeDisplay)
{
DestroyTestWindow();
return false;
}
mDisplay = eglGetDisplay(mNativeDisplay);
if(mDisplay == EGL_NO_DISPLAY)
{
mDisplay = eglGetDisplay((EGLNativeDisplayType)EGL_DEFAULT_DISPLAY);
}
EGLint majorVersion, minorVersion;
if (!eglInitialize(mDisplay, &majorVersion, &minorVersion))
{
DestroyTestWindow();
return false;
}
eglBindAPI(EGL_OPENGL_ES_API);
if (eglGetError() != EGL_SUCCESS)
{
DestroyTestWindow();
return false;
}
return true;
}
bool ANGLETest::DestroyTestWindow()
{
eglMakeCurrent(mDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
eglTerminate(mDisplay);
if (mNativeDisplay)
{
ReleaseDC(mNativeWindow, mNativeDisplay);
mNativeDisplay = 0;
}
if (mNativeWindow)
{
DestroyWindow(mNativeWindow);
mNativeWindow = 0;
}
UnregisterClass(GetTestWindowName(), NULL);
return true;
}
bool ANGLETest::ReizeWindow(int width, int height)
{
RECT windowRect;
if (!GetWindowRect(mNativeWindow, &windowRect))
{
return false;
}
if (!MoveWindow(mNativeWindow, windowRect.left, windowRect.top, width, height, FALSE))
{
return false;
}
return true;
}