mirror of
https://github.com/godotengine/godot-angle-static.git
synced 2026-01-02 09:48:25 +03:00
WindowTest.cpp was missing <algorithm> for std::min and std::max. BUG=angleproject:892 Change-Id: I9bf6e7b8e66cd4ffc34ee639f495b469dabde91a Reviewed-on: https://chromium-review.googlesource.com/284590 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
137 lines
4.2 KiB
C++
137 lines
4.2 KiB
C++
//
|
|
// Copyright The ANGLE Project Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
//
|
|
|
|
// WindowTest.cpp: Sample used to test various function of OSWindow
|
|
|
|
#include <algorithm>
|
|
#include <iostream>
|
|
|
|
#include "OSWindow.h"
|
|
#include "system_utils.h"
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
OSWindow *window = CreateOSWindow();
|
|
int width = 400;
|
|
int height = 400;
|
|
int x = 0;
|
|
int y = 0;
|
|
|
|
if (!window->initialize("Window Test", width, height))
|
|
{
|
|
return -1;
|
|
}
|
|
window->setVisible(true);
|
|
window->setPosition(x, y);
|
|
|
|
bool running = true;
|
|
while (running)
|
|
{
|
|
Event event;
|
|
while (window->popEvent(&event))
|
|
{
|
|
if (event.Type == Event::EVENT_CLOSED)
|
|
{
|
|
running = false;
|
|
break;
|
|
}
|
|
|
|
if (event.Type == Event::EVENT_KEY_PRESSED)
|
|
{
|
|
int newWidth = width;
|
|
int newHeight = height;
|
|
int newX = x;
|
|
int newY = y;
|
|
switch (event.Key.Code)
|
|
{
|
|
case KEY_ESCAPE:
|
|
running = false;
|
|
break;
|
|
|
|
case KEY_W:
|
|
newWidth = std::max(0, width + (event.Key.Shift ? -20 : 20));
|
|
break;
|
|
case KEY_H:
|
|
newHeight = std::max(0, height + (event.Key.Shift ? -20 : 20));
|
|
break;
|
|
|
|
case KEY_LEFT:
|
|
newX = x - 20;
|
|
break;
|
|
case KEY_RIGHT:
|
|
newX = x + 20;
|
|
break;
|
|
case KEY_UP:
|
|
newY = y - 20;
|
|
break;
|
|
case KEY_DOWN:
|
|
newY = y + 20;
|
|
break;
|
|
|
|
case KEY_C:
|
|
window->setMousePosition(width / 2, height / 2);
|
|
break;
|
|
case KEY_T:
|
|
window->signalTestEvent();
|
|
window->messageLoop();
|
|
if (window->didTestEventFire())
|
|
{
|
|
std::cout << "Test event did fire" << std::endl;
|
|
}
|
|
else
|
|
{
|
|
std::cout << "Test event did not fire" << std::endl;
|
|
}
|
|
break;
|
|
case KEY_S:
|
|
window->setVisible(false);
|
|
window->messageLoop();
|
|
angle::Sleep(1000);
|
|
window->setVisible(true);
|
|
window->messageLoop();
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if (newWidth != width || newHeight != height)
|
|
{
|
|
width = newWidth;
|
|
height = newHeight;
|
|
window->resize(width, height);
|
|
}
|
|
if (newX != x || newY != y)
|
|
{
|
|
x = newX;
|
|
y = newY;
|
|
window->setPosition(x, y);
|
|
}
|
|
|
|
angle::Sleep(0);
|
|
window->messageLoop();
|
|
if (window->getWidth() != width || window->getHeight() != height)
|
|
{
|
|
std::cout << "Discrepancy between set dimensions and retrieved dimensions" << std::endl;
|
|
std::cout << "Width: " << window->getWidth() << " vs. " << width << std::endl;
|
|
std::cout << "Height: " << window->getHeight() << " vs. " << height << std::endl;
|
|
}
|
|
if (window->getX() != x || window->getY() != y)
|
|
{
|
|
std::cout << "Discrepancy between set position and retrieved position" << std::endl;
|
|
std::cout << "X: " << window->getX() << " vs. " << x << std::endl;
|
|
std::cout << "Y: " << window->getY() << " vs. " << y << std::endl;
|
|
}
|
|
}
|
|
}
|
|
|
|
angle::Sleep(0);
|
|
window->messageLoop();
|
|
}
|
|
|
|
window->destroy();
|
|
}
|