| @@ -60,23 +60,20 @@ DllMain(HINSTANCE hInst, DWORD, LPVOID) | |||
| } | |||
| } // extern "C" | |||
| PuglView* | |||
| puglCreateInternals(PuglNativeWindow parent, | |||
| const char* title, | |||
| int width, | |||
| int height, | |||
| bool resizable, | |||
| bool visible) | |||
| PuglInternals* | |||
| puglInitInternals() | |||
| { | |||
| PuglView* view = (PuglView*)calloc(1, sizeof(PuglView)); | |||
| PuglInternals* impl = (PuglInternals*)calloc(1, sizeof(PuglInternals)); | |||
| if (!view || !impl) { | |||
| return NULL; | |||
| } | |||
| return (PuglInternals*)calloc(1, sizeof(PuglInternals)); | |||
| } | |||
| view->impl = impl; | |||
| view->width = width; | |||
| view->height = height; | |||
| int | |||
| puglCreateWindow(PuglView* view, const char* title) | |||
| { | |||
| PuglInternals* impl = view->impl; | |||
| if (!title) { | |||
| title = "Window"; | |||
| } | |||
| // FIXME: This is nasty, and pugl should not have static anything. | |||
| // Should class be a parameter? Does this make sense on other platforms? | |||
| @@ -97,25 +94,25 @@ puglCreateInternals(PuglNativeWindow parent, | |||
| RegisterClass(&impl->wc); | |||
| int winFlags = WS_POPUPWINDOW | WS_CAPTION; | |||
| if (resizable) { | |||
| if (view->resizable) { | |||
| winFlags |= WS_SIZEBOX; | |||
| } | |||
| // Adjust the overall window size to accomodate our requested client size | |||
| RECT wr = { 0, 0, width, height }; | |||
| RECT wr = { 0, 0, view->width, view->height }; | |||
| AdjustWindowRectEx(&wr, winFlags, FALSE, WS_EX_TOPMOST); | |||
| impl->hwnd = CreateWindowEx( | |||
| WS_EX_TOPMOST, | |||
| classNameBuf, title, | |||
| (visible ? WS_VISIBLE : 0) | (parent ? WS_CHILD : winFlags), | |||
| view->parent ? WS_CHILD : winFlags, | |||
| CW_USEDEFAULT, CW_USEDEFAULT, wr.right-wr.left, wr.bottom-wr.top, | |||
| (HWND)parent, NULL, hInstance, NULL); | |||
| (HWND)view->parent, NULL, hInstance, NULL); | |||
| if (!impl->hwnd) { | |||
| free(impl); | |||
| free(view); | |||
| return NULL; | |||
| return 1; | |||
| } | |||
| #ifdef _WIN64 | |||
| @@ -142,10 +139,23 @@ puglCreateInternals(PuglNativeWindow parent, | |||
| impl->hglrc = wglCreateContext(impl->hdc); | |||
| wglMakeCurrent(impl->hdc, impl->hglrc); | |||
| view->width = width; | |||
| view->height = height; | |||
| return 0; | |||
| } | |||
| void | |||
| puglShowWindow(PuglView* view) | |||
| { | |||
| PuglInternals* impl = view->impl; | |||
| ShowWindow(impl->hwnd, SW_SHOWNORMAL); | |||
| } | |||
| void | |||
| puglHideWindow(PuglView* view) | |||
| { | |||
| PuglInternals* impl = view->impl; | |||
| return view; | |||
| ShowWindow(impl->hwnd, SW_HIDE); | |||
| } | |||
| void | |||