[wip] adding missing impl for win32 version of orca

This commit is contained in:
martinfouilleul 2023-06-17 20:09:25 +02:00
parent e93bf76adc
commit d2c4acf6e2
4 changed files with 110 additions and 84 deletions

View File

@ -180,7 +180,7 @@ MP_API bool mg_canvas_is_nil(mg_canvas canvas);
MP_API mg_canvas mg_canvas_create(void); MP_API mg_canvas mg_canvas_create(void);
MP_API void mg_canvas_destroy(mg_canvas canvas); MP_API void mg_canvas_destroy(mg_canvas canvas);
mg_canvas mg_canvas_set_current(mg_canvas canvas); MP_API mg_canvas mg_canvas_set_current(mg_canvas canvas);
MP_API void mg_render(mg_surface surface, mg_canvas canvas); MP_API void mg_render(mg_surface surface, mg_canvas canvas);
//------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------

View File

@ -1,82 +1,82 @@
/************************************************************//** /************************************************************//**
* *
* @file: graphics_common.h * @file: graphics_common.h
* @author: Martin Fouilleul * @author: Martin Fouilleul
* @date: 26/04/2023 * @date: 26/04/2023
* *
*****************************************************************/ *****************************************************************/
#ifndef __GRAPHICS_COMMON_H_ #ifndef __GRAPHICS_COMMON_H_
#define __GRAPHICS_COMMON_H_ #define __GRAPHICS_COMMON_H_
#include"graphics.h" #include"graphics.h"
//------------------------------------------------------------------------ //------------------------------------------------------------------------
// canvas structs // canvas structs
//------------------------------------------------------------------------ //------------------------------------------------------------------------
typedef enum { MG_PATH_MOVE, typedef enum { MG_PATH_MOVE,
MG_PATH_LINE, MG_PATH_LINE,
MG_PATH_QUADRATIC, MG_PATH_QUADRATIC,
MG_PATH_CUBIC } mg_path_elt_type; MG_PATH_CUBIC } mg_path_elt_type;
typedef struct mg_path_elt typedef struct mg_path_elt
{ {
mg_path_elt_type type; mg_path_elt_type type;
vec2 p[3]; vec2 p[3];
} mg_path_elt; } mg_path_elt;
typedef struct mg_path_descriptor typedef struct mg_path_descriptor
{ {
u32 startIndex; u32 startIndex;
u32 count; u32 count;
vec2 startPoint; vec2 startPoint;
} mg_path_descriptor; } mg_path_descriptor;
typedef struct mg_attributes typedef struct mg_attributes
{ {
f32 width; f32 width;
f32 tolerance; f32 tolerance;
mg_color color; mg_color color;
mg_joint_type joint; mg_joint_type joint;
f32 maxJointExcursion; f32 maxJointExcursion;
mg_cap_type cap; mg_cap_type cap;
mg_font font; mg_font font;
f32 fontSize; f32 fontSize;
mg_image image; mg_image image;
mp_rect srcRegion; mp_rect srcRegion;
mg_mat2x3 transform; mg_mat2x3 transform;
mp_rect clip; mp_rect clip;
} mg_attributes; } mg_attributes;
typedef enum { MG_CMD_FILL, typedef enum { MG_CMD_FILL,
MG_CMD_STROKE, MG_CMD_STROKE,
MG_CMD_JUMP MG_CMD_JUMP
} mg_primitive_cmd; } mg_primitive_cmd;
typedef struct mg_primitive typedef struct mg_primitive
{ {
mg_primitive_cmd cmd; mg_primitive_cmd cmd;
mg_attributes attributes; mg_attributes attributes;
union union
{ {
mg_path_descriptor path; mg_path_descriptor path;
mp_rect rect; mp_rect rect;
u32 jump; u32 jump;
}; };
} mg_primitive; } mg_primitive;
void mg_surface_render_commands(mg_surface surface, MP_API void mg_surface_render_commands(mg_surface surface,
mg_color clearColor, mg_color clearColor,
u32 primitiveCount, u32 primitiveCount,
mg_primitive* primitives, mg_primitive* primitives,
u32 eltCount, u32 eltCount,
mg_path_elt* elements); mg_path_elt* elements);
#endif //__GRAPHICS_COMMON_H_ #endif //__GRAPHICS_COMMON_H_

View File

@ -51,7 +51,7 @@ void file_slot_recycle(file_table* table, file_slot* slot);
file_handle file_handle_from_slot(file_table* table, file_slot* slot); file_handle file_handle_from_slot(file_table* table, file_slot* slot);
file_slot* file_slot_from_handle(file_table* table, file_handle handle); file_slot* file_slot_from_handle(file_table* table, file_handle handle);
io_cmp io_wait_single_req_with_table(io_req* req, file_table* table); MP_API io_cmp io_wait_single_req_with_table(io_req* req, file_table* table);
//----------------------------------------------------------------------- //-----------------------------------------------------------------------

View File

@ -771,6 +771,32 @@ mp_rect mp_window_get_content_rect(mp_window window)
return(rect); return(rect);
} }
//TODO: set content rect, center
void mp_window_center(mp_window window)
{
mp_window_data* windowData = mp_window_ptr_from_handle(window);
if(windowData)
{
RECT winRect;
GetWindowRect(windowData->win32.hWnd, &winRect);
HMONITOR monitor = MonitorFromPoint((POINT){winRect.left, winRect.top}, MONITOR_DEFAULTTOPRIMARY);
MONITORINFO monitorInfo = {.cbSize = sizeof(MONITORINFO)};
GetMonitorInfoW(monitor, &monitorInfo);
int monW = monitorInfo.rcWork.right - monitorInfo.rcWork.left;
int monH = monitorInfo.rcWork.bottom - monitorInfo.rcWork.top;
int winW = winRect.right - winRect.left;
int winH = winRect.bottom - winRect.top;
int winX = 0.5*(monW-winW);
int winY = 0.5*(monW-winW);
SetWindowPos(windowData->win32.hWnd, NULL, winX, winY, winW, winH, SWP_NOZORDER|SWP_NOACTIVATE);
}
}
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
// clipboard functions // clipboard functions
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------