#ifndef TWN_TYPES_H #define TWN_TYPES_H #include /* plain data aggregates that are accepted between public procedure boundaries */ /* a point in some space (integer) */ typedef struct Vec2i { int32_t x; int32_t y; } Vec2i; /* a point in some space (floating point) */ typedef struct Vec2 { float x; float y; } Vec2; /* a point in some three dimension space (floating point) */ /* y goes up, x goes to the right */ typedef struct Vec3 { float x; float y; float z; } Vec3; /* a point in some three dimension space (floating point) */ /* y goes up, x goes to the right */ typedef struct Vec4 { float x; float y; float z; float w; } Vec4; /* 32-bit color data */ typedef struct Color { uint8_t r; uint8_t g; uint8_t b; uint8_t a; } Color; /* a rectangle with the origin at the upper left (integer) */ typedef struct Recti { int32_t x; int32_t y; int32_t w; int32_t h; } Recti; /* a rectangle with the origin at the upper left (floating point) */ typedef struct Rect { float x; float y; float w; float h; } Rect; typedef struct Matrix4 { Vec4 row[4]; } Matrix4; #endif