Win32 fixes. Now opens up a window and displays the statusbar
This commit is contained in:
parent
bb784965d5
commit
9f5230de8e
@ -156,7 +156,6 @@ void Editor_create()
|
|||||||
int id;
|
int id;
|
||||||
Emgui_create("foo");
|
Emgui_create("foo");
|
||||||
id = Emgui_loadFontBitmap(g_minecraftiaFont, g_minecraftiaFontSize, EMGUI_LOCATION_MEMORY, 32, 128, g_minecraftiaFontLayout);
|
id = Emgui_loadFontBitmap(g_minecraftiaFont, g_minecraftiaFontSize, EMGUI_LOCATION_MEMORY, 32, 128, g_minecraftiaFontLayout);
|
||||||
memset(&s_editorData, 0, sizeof(s_editorData));
|
|
||||||
|
|
||||||
RemoteConnection_createListner();
|
RemoteConnection_createListner();
|
||||||
|
|
||||||
@ -335,7 +334,7 @@ static bool internalUpdate()
|
|||||||
refresh = TrackView_render(&s_editorData.trackViewInfo, &s_editorData.trackData);
|
refresh = TrackView_render(&s_editorData.trackViewInfo, &s_editorData.trackData);
|
||||||
Emgui_end();
|
Emgui_end();
|
||||||
|
|
||||||
return refresh;
|
return !!refresh;
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
38
ogl_editor/src/windows/Dialogs.c
Normal file
38
ogl_editor/src/windows/Dialogs.c
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
int Dialog_open(char* path, int pathSize)
|
||||||
|
{
|
||||||
|
OPENFILENAME ofn;
|
||||||
|
|
||||||
|
ZeroMemory(&ofn, sizeof(ofn));
|
||||||
|
ofn.lStructSize = sizeof(ofn);
|
||||||
|
ofn.lpstrFile = path;
|
||||||
|
ofn.lpstrFile[0] = '\0';
|
||||||
|
ofn.nMaxFile = pathSize;
|
||||||
|
ofn.lpstrFilter = "All\0*.*\0Rocket\0*.Rocket\0";
|
||||||
|
ofn.nFilterIndex = 1;
|
||||||
|
ofn.lpstrFileTitle = NULL;
|
||||||
|
ofn.nMaxFileTitle = 0;
|
||||||
|
ofn.lpstrInitialDir = NULL;
|
||||||
|
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
|
||||||
|
|
||||||
|
return GetOpenFileName(&ofn);
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
int Dialog_save(char* path, int pathSize)
|
||||||
|
{
|
||||||
|
(void)path;
|
||||||
|
(void)pathSize;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void Dialog_showColorPicker(unsigned int* color)
|
||||||
|
{
|
||||||
|
(void)color;
|
||||||
|
}
|
||||||
266
ogl_editor/src/windows/RocketWindow.c
Normal file
266
ogl_editor/src/windows/RocketWindow.c
Normal file
@ -0,0 +1,266 @@
|
|||||||
|
#include <windows.h>
|
||||||
|
#include <windowsx.h>
|
||||||
|
#include <gl/gl.h>
|
||||||
|
#include "../Editor.h"
|
||||||
|
#include <string.h>
|
||||||
|
#include <Emgui.h>
|
||||||
|
#include <GFXBackend.h>
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
static HWND s_window;
|
||||||
|
static HINSTANCE s_instance;
|
||||||
|
static HDC s_dc;
|
||||||
|
static HGLRC s_context;
|
||||||
|
static bool s_active;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
static void closeWindow()
|
||||||
|
{
|
||||||
|
if (s_context)
|
||||||
|
{
|
||||||
|
wglMakeCurrent(0, 0);
|
||||||
|
wglDeleteContext(s_context);
|
||||||
|
s_context = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (s_window)
|
||||||
|
{
|
||||||
|
ReleaseDC(s_window, s_dc);
|
||||||
|
DestroyWindow(s_window);
|
||||||
|
}
|
||||||
|
|
||||||
|
UnregisterClass("GLRocket", s_instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void swapBuffers()
|
||||||
|
{
|
||||||
|
SwapBuffers(s_dc);
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
bool createWindow(const char* title, int width, int height)
|
||||||
|
{
|
||||||
|
GLuint format;
|
||||||
|
WNDCLASS wc;
|
||||||
|
DWORD exStyle;
|
||||||
|
DWORD style;
|
||||||
|
RECT rect;
|
||||||
|
|
||||||
|
static PIXELFORMATDESCRIPTOR pfd =
|
||||||
|
{
|
||||||
|
sizeof(PIXELFORMATDESCRIPTOR),
|
||||||
|
1,
|
||||||
|
PFD_DRAW_TO_WINDOW |
|
||||||
|
PFD_SUPPORT_OPENGL |
|
||||||
|
PFD_DOUBLEBUFFER,
|
||||||
|
PFD_TYPE_RGBA,
|
||||||
|
32,
|
||||||
|
0, 0, 0, 0, 0, 0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0, 0, 0, 0,
|
||||||
|
16,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
PFD_MAIN_PLANE,
|
||||||
|
0,
|
||||||
|
0, 0, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
rect.left = 0;
|
||||||
|
rect.right = width;
|
||||||
|
rect.top = 0;
|
||||||
|
rect.bottom= height;
|
||||||
|
|
||||||
|
s_instance = GetModuleHandle(0);
|
||||||
|
memset(&wc, 0, sizeof(wc));
|
||||||
|
|
||||||
|
wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
|
||||||
|
wc.lpfnWndProc = (WNDPROC)WndProc;
|
||||||
|
wc.hInstance = s_instance;
|
||||||
|
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
|
||||||
|
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||||
|
wc.lpszClassName = "RocketEditor";
|
||||||
|
|
||||||
|
if (!RegisterClass(&wc))
|
||||||
|
{
|
||||||
|
MessageBox(0, "Failed To Register Window Class", "ERROR", MB_OK | MB_ICONEXCLAMATION);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
exStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
|
||||||
|
style = WS_OVERLAPPEDWINDOW;
|
||||||
|
|
||||||
|
AdjustWindowRectEx(&rect, style, FALSE, exStyle);
|
||||||
|
|
||||||
|
// Create The Window
|
||||||
|
if (!(s_window = CreateWindowEx(exStyle, "RocketEditor", title, style | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
|
||||||
|
0, 0, rect.right - rect.left, rect.bottom - rect.top, NULL, NULL, s_instance, NULL)))
|
||||||
|
{
|
||||||
|
closeWindow(); // Reset The Display
|
||||||
|
return FALSE; // Return FALSE
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(s_dc = GetDC(s_window)))
|
||||||
|
{
|
||||||
|
closeWindow();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(format = ChoosePixelFormat(s_dc, &pfd)))
|
||||||
|
{
|
||||||
|
closeWindow();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!SetPixelFormat(s_dc, format,&pfd))
|
||||||
|
{
|
||||||
|
closeWindow();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(s_context = wglCreateContext(s_dc)))
|
||||||
|
{
|
||||||
|
closeWindow();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!wglMakeCurrent(s_dc, s_context))
|
||||||
|
{
|
||||||
|
closeWindow();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ShowWindow(s_window, SW_SHOW);
|
||||||
|
SetForegroundWindow(s_window);
|
||||||
|
SetFocus(s_window);
|
||||||
|
|
||||||
|
EMGFXBackend_create();
|
||||||
|
EMGFXBackend_updateViewPort(width, height);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
LRESULT CALLBACK WndProc(HWND window, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
switch (message)
|
||||||
|
{
|
||||||
|
case WM_ACTIVATE:
|
||||||
|
{
|
||||||
|
if (!HIWORD(wParam))
|
||||||
|
s_active = true;
|
||||||
|
else
|
||||||
|
s_active = true;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
case WM_LBUTTONDOWN:
|
||||||
|
{
|
||||||
|
Emgui_setMouseLmb(1);
|
||||||
|
Editor_update();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case WM_LBUTTONUP:
|
||||||
|
{
|
||||||
|
Emgui_setMouseLmb(0);
|
||||||
|
Editor_update();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case WM_MOUSEMOVE:
|
||||||
|
{
|
||||||
|
const short pos_x = GET_X_LPARAM(lParam);
|
||||||
|
const short pos_y = GET_Y_LPARAM(lParam);
|
||||||
|
Emgui_setMousePos(pos_x, pos_y);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case WM_SYSCOMMAND:
|
||||||
|
{
|
||||||
|
switch (wParam)
|
||||||
|
{
|
||||||
|
// prevent screensaver and power saving
|
||||||
|
case SC_SCREENSAVE:
|
||||||
|
case SC_MONITORPOWER:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case WM_CLOSE:
|
||||||
|
{
|
||||||
|
PostQuitMessage(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
case WM_SIZE:
|
||||||
|
{
|
||||||
|
EMGFXBackend_updateViewPort(LOWORD(lParam), HIWORD(lParam));
|
||||||
|
Editor_setWindowSize(LOWORD(lParam), HIWORD(lParam));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return DefWindowProc(window, message, wParam, lParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
static void CALLBACK timedCallback(HWND hwnd, UINT id, UINT_PTR ptr, DWORD meh)
|
||||||
|
{
|
||||||
|
Editor_timedUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
int WINAPI WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmndLine, int show)
|
||||||
|
{
|
||||||
|
MSG msg;
|
||||||
|
bool done = false;
|
||||||
|
|
||||||
|
memset(&msg, 0, sizeof(MSG));
|
||||||
|
|
||||||
|
if (!createWindow("RocketEditor", 800, 600))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
EMGFXBackend_create();
|
||||||
|
Editor_create();
|
||||||
|
Editor_update();
|
||||||
|
|
||||||
|
// Update timed function every 16 ms
|
||||||
|
|
||||||
|
SetTimer(s_window, 1, 16, timedCallback);
|
||||||
|
|
||||||
|
while (!done)
|
||||||
|
{
|
||||||
|
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
|
||||||
|
{
|
||||||
|
if (msg.message == WM_QUIT)
|
||||||
|
{
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TranslateMessage(&msg);
|
||||||
|
DispatchMessage(&msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
closeWindow();
|
||||||
|
return msg.wParam;
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user