69 lines
1.6 KiB
C
69 lines
1.6 KiB
C
#ifndef _PTK_PTK_H
|
|
#define _PTK_PTK_H
|
|
|
|
#include <ptk_vec.h>
|
|
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
#include <stddef.h>
|
|
|
|
typedef struct {
|
|
uint32_t major;
|
|
uint32_t minor;
|
|
uint32_t patch;
|
|
} PtkVersion;
|
|
|
|
bool ptk_init(size_t width, size_t height, const char *title, PtkVersion application_version);
|
|
|
|
typedef struct PtkComponent *PtkHandle;
|
|
#define PTK_NULL_HANDLE (void *)0
|
|
|
|
typedef enum {
|
|
PTK_COMPONENT_TYPE_BOX = 0,
|
|
PTK_COMPONENT_TYPE_TRIANGLE = 1,
|
|
PTK_COMPONENT_TYPE_RECT = 2,
|
|
PTK_COMPONENT_TYPE_ELLIPSE = 3,
|
|
} PtkComponentType;
|
|
|
|
typedef struct PtkComponent {
|
|
PtkComponentType type;
|
|
} PtkComponent;
|
|
|
|
typedef struct PtkBox {
|
|
PtkComponentType type;
|
|
size_t child_count;
|
|
PtkHandle *children;
|
|
} PtkBox;
|
|
|
|
typedef struct PtkTriangle {
|
|
PtkComponentType type;
|
|
PtkPos vertices[3];
|
|
PtkColor color;
|
|
} PtkTriangle;
|
|
|
|
typedef struct PtkRect {
|
|
PtkComponentType type;
|
|
PtkPos top_left;
|
|
PtkSize size;
|
|
PtkColor color;
|
|
} PtkRect;
|
|
|
|
typedef struct PtkEllipse {
|
|
PtkComponentType type;
|
|
PtkPos center;
|
|
PtkSize radii;
|
|
PtkColor color;
|
|
} PtkEllipse;
|
|
|
|
PtkHandle ptk_box(size_t child_count, PtkHandle *children);
|
|
PtkHandle ptk_triangle(PtkPos vertices[3], PtkColor color);
|
|
PtkHandle ptk_rect(PtkPos top_left, PtkSize size, PtkColor color);
|
|
PtkHandle ptk_square(PtkPos top_left, float size, PtkColor color);
|
|
PtkHandle ptk_ellipse(PtkPos center, PtkSize radii, PtkColor color);
|
|
PtkHandle ptk_circle(PtkPos center, float radius, PtkColor color);
|
|
|
|
#define PTK_BOX(...) ptk_box(sizeof((PtkHandle []){ __VA_ARGS__ }) / sizeof(PtkHandle), (PtkHandle []) { __VA_ARGS__ })
|
|
|
|
int ptk_run(PtkHandle root);
|
|
|
|
#endif // _PTK_PTK_H
|