Newer
Older
Import / research / 3d-experiments / Platform / Window.h
//
//  Window.h
//  Platform
//
//  Created by John Ryland on 5/10/17.
//  Copyright © 2017 John Ryland. All rights reserved.
//

#pragma once


#include <functional>
#include "../Framework/Window.h"  // FIXME: seems to break the layering - needed for MouseEvent struct


void* CreateWindow();
void DestroyWindow(void* a_platformHandle);
void SetWindowStyle(void* a_platformHandle, int a_styleFlags);
void SetWindowGeometry(void* a_platformHandle, int a_x, int a_y, int a_width, int a_height);
void SetWindowTitle(void* a_platformHandle, const char* a_title);
void ShowWindow(void* a_platformHandle);

void* CreateView(void* a_platformHandle);
void DestroyView(void* a_platformHandle);
void SetViewGeometry(void* a_platformHandle, int a_x, int a_y, int a_width, int a_height);
void SetViewColor(void* a_platformHandle, float a_red, float a_green, float a_blue, float a_alpha);
void SetViewOnMouseEvent(void* a_platformHandle, std::function<void(const MouseEvent&)> a_callback);

void* CreateGLView(void* a_platformHandle);
void DestroyGLView(void* a_platformHandle);
void SetGLViewGeometry(void* a_platformHandle, int a_x, int a_y, int a_width, int a_height);
void SetGLViewOnPrepare(void* a_platformHandle, std::function<void()> a_callback);
void SetGLViewOnUpdate(void* a_platformHandle, std::function<void()> a_callback);
void SetGLViewOnDraw(void* a_platformHandle, std::function<void()> a_callback);
void SetGLViewOnClose(void* a_platformHandle, std::function<void()> a_callback);
void SetGLViewOnResize(void* a_platformHandle, std::function<void(float a_width, float a_height)> a_callback);
void SetGLViewOnMouseEvent(void* a_platformHandle, std::function<void(const MouseEvent&)> a_callback);

void* CreateWindowLabel(void* a_platformHandle);
void* CreateViewLabel(void* a_platformHandle);
void DestroyLabel(void* a_platformHandle);
void SetLabelGeometry(void* a_platformHandle, int a_x, int a_y, int a_width, int a_height);
void SetLabelColor(void* a_platformHandle, float a_red, float a_green, float a_blue, float a_alpha);
void SetLabelText(void* a_platformHandle, const char* a_text);
void SetLabelFontSize(void* a_platformHandle, int a_size);
void SetLabelOnMouseEvent(void* a_platformHandle, std::function<void(const MouseEvent&)> a_callback);