@tty-pt/lamina 0.0.0-stage → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,211 @@
1
+ #ifndef LAM_KEY_HEADER
2
+ #define LAM_KEY_HEADER
3
+
4
+ #define LAM_PRESS 1
5
+ #define LAM_REPEAT 2
6
+
7
+ #define LAM_HAT_CENTERED 0
8
+ #define LAM_HAT_UP 1
9
+ #define LAM_HAT_RIGHT 2
10
+ #define LAM_HAT_DOWN 4
11
+ #define LAM_HAT_LEFT 8
12
+ #define LAM_HAT_RIGHT_UP (LAM_HAT_RIGHT | LAM_HAT_UP)
13
+ #define LAM_HAT_RIGHT_DOWN (LAM_HAT_RIGHT | LAM_HAT_DOWN)
14
+ #define LAM_HAT_LEFT_UP (LAM_HAT_LEFT | LAM_HAT_UP)
15
+ #define LAM_HAT_LEFT_DOWN (LAM_HAT_LEFT | LAM_HAT_DOWN)
16
+
17
+ #define LAM_KEY_UNKNOWN -1
18
+
19
+ #define LAM_KEY_SPACE 32
20
+ #define LAM_KEY_APOSTROPHE 39 /* ' */
21
+ #define LAM_KEY_COMMA 44 /* , */
22
+ #define LAM_KEY_MINUS 45 /* - */
23
+ #define LAM_KEY_PERIOD 46 /* . */
24
+ #define LAM_KEY_SLASH 47 /* / */
25
+ #define LAM_KEY_0 48
26
+ #define LAM_KEY_1 49
27
+ #define LAM_KEY_2 50
28
+ #define LAM_KEY_3 51
29
+ #define LAM_KEY_4 52
30
+ #define LAM_KEY_5 53
31
+ #define LAM_KEY_6 54
32
+ #define LAM_KEY_7 55
33
+ #define LAM_KEY_8 56
34
+ #define LAM_KEY_9 57
35
+ #define LAM_KEY_SEMICOLON 59 /* ; */
36
+ #define LAM_KEY_EQUAL 61 /* = */
37
+ #define LAM_KEY_A 65
38
+ #define LAM_KEY_B 66
39
+ #define LAM_KEY_C 67
40
+ #define LAM_KEY_D 68
41
+ #define LAM_KEY_E 69
42
+ #define LAM_KEY_F 70
43
+ #define LAM_KEY_G 71
44
+ #define LAM_KEY_H 72
45
+ #define LAM_KEY_I 73
46
+ #define LAM_KEY_J 74
47
+ #define LAM_KEY_K 75
48
+ #define LAM_KEY_L 76
49
+ #define LAM_KEY_M 77
50
+ #define LAM_KEY_N 78
51
+ #define LAM_KEY_O 79
52
+ #define LAM_KEY_P 80
53
+ #define LAM_KEY_Q 81
54
+ #define LAM_KEY_R 82
55
+ #define LAM_KEY_S 83
56
+ #define LAM_KEY_T 84
57
+ #define LAM_KEY_U 85
58
+ #define LAM_KEY_V 86
59
+ #define LAM_KEY_W 87
60
+ #define LAM_KEY_X 88
61
+ #define LAM_KEY_Y 89
62
+ #define LAM_KEY_Z 90
63
+ #define LAM_KEY_LEFT_BRACKET 91 /* [ */
64
+ #define LAM_KEY_BACKSLASH 92 /* \ */
65
+ #define LAM_KEY_RIGHT_BRACKET 93 /* ] */
66
+ #define LAM_KEY_GRAVE_ACCENT 96 /* ` */
67
+ #define LAM_KEY_WORLD_1 161 /* non-US #1 */
68
+ #define LAM_KEY_WORLD_2 162 /* non-US #2 */
69
+
70
+ /* Function keys */
71
+ #define LAM_KEY_ESCAPE 256
72
+ #define LAM_KEY_ENTER 257
73
+ #define LAM_KEY_TAB 258
74
+ #define LAM_KEY_BACKSPACE 259
75
+ #define LAM_KEY_INSERT 260
76
+ #define LAM_KEY_DELETE 261
77
+ #define LAM_KEY_RIGHT 262
78
+ #define LAM_KEY_LEFT 263
79
+ #define LAM_KEY_DOWN 264
80
+ #define LAM_KEY_UP 265
81
+ #define LAM_KEY_PAGE_UP 266
82
+ #define LAM_KEY_PAGE_DOWN 267
83
+ #define LAM_KEY_HOME 268
84
+ #define LAM_KEY_END 269
85
+ #define LAM_KEY_CAPS_LOCK 280
86
+ #define LAM_KEY_SCROLL_LOCK 281
87
+ #define LAM_KEY_NUM_LOCK 282
88
+ #define LAM_KEY_PRINT_SCREEN 283
89
+ #define LAM_KEY_PAUSE 284
90
+ #define LAM_KEY_F1 290
91
+ #define LAM_KEY_F2 291
92
+ #define LAM_KEY_F3 292
93
+ #define LAM_KEY_F4 293
94
+ #define LAM_KEY_F5 294
95
+ #define LAM_KEY_F6 295
96
+ #define LAM_KEY_F7 296
97
+ #define LAM_KEY_F8 297
98
+ #define LAM_KEY_F9 298
99
+ #define LAM_KEY_F10 299
100
+ #define LAM_KEY_F11 300
101
+ #define LAM_KEY_F12 301
102
+ #define LAM_KEY_F13 302
103
+ #define LAM_KEY_F14 303
104
+ #define LAM_KEY_F15 304
105
+ #define LAM_KEY_F16 305
106
+ #define LAM_KEY_F17 306
107
+ #define LAM_KEY_F18 307
108
+ #define LAM_KEY_F19 308
109
+ #define LAM_KEY_F20 309
110
+ #define LAM_KEY_F21 310
111
+ #define LAM_KEY_F22 311
112
+ #define LAM_KEY_F23 312
113
+ #define LAM_KEY_F24 313
114
+ #define LAM_KEY_F25 314
115
+ #define LAM_KEY_KP_0 320
116
+ #define LAM_KEY_KP_1 321
117
+ #define LAM_KEY_KP_2 322
118
+ #define LAM_KEY_KP_3 323
119
+ #define LAM_KEY_KP_4 324
120
+ #define LAM_KEY_KP_5 325
121
+ #define LAM_KEY_KP_6 326
122
+ #define LAM_KEY_KP_7 327
123
+ #define LAM_KEY_KP_8 328
124
+ #define LAM_KEY_KP_9 329
125
+ #define LAM_KEY_KP_DECIMAL 330
126
+ #define LAM_KEY_KP_DIVIDE 331
127
+ #define LAM_KEY_KP_MULTIPLY 332
128
+ #define LAM_KEY_KP_SUBTRACT 333
129
+ #define LAM_KEY_KP_ADD 334
130
+ #define LAM_KEY_KP_ENTER 335
131
+ #define LAM_KEY_KP_EQUAL 336
132
+ #define LAM_KEY_LEFT_SHIFT 340
133
+ #define LAM_KEY_LEFT_CONTROL 341
134
+ #define LAM_KEY_LEFT_ALT 342
135
+ #define LAM_KEY_LEFT_SUPER 343
136
+ #define LAM_KEY_RIGHT_SHIFT 344
137
+ #define LAM_KEY_RIGHT_CONTROL 345
138
+ #define LAM_KEY_RIGHT_ALT 346
139
+ #define LAM_KEY_RIGHT_SUPER 347
140
+ #define LAM_KEY_MENU 348
141
+
142
+ #define LAM_KEY_LAST LAM_KEY_MENU
143
+
144
+ #define LAM_MOD_SHIFT 0x0001
145
+ #define LAM_MOD_CONTROL 0x0002
146
+ #define LAM_MOD_SUPER 0x0002
147
+ #define LAM_MOD_CAPS_LOCK 0x0010
148
+ #define LAM_MOD_NUM_LOCK 0x0020
149
+
150
+ #define LAM_MOUSE_BUTTON_1 0
151
+ #define LAM_MOUSE_BUTTON_2 1
152
+ #define LAM_MOUSE_BUTTON_3 2
153
+ #define LAM_MOUSE_BUTTON_4 3
154
+ #define LAM_MOUSE_BUTTON_5 4
155
+ #define LAM_MOUSE_BUTTON_6 5
156
+ #define LAM_MOUSE_BUTTON_7 6
157
+ #define LAM_MOUSE_BUTTON_8 7
158
+ #define LAM_MOUSE_BUTTON_LAST LAM_MOUSE_BUTTON_8
159
+ #define LAM_MOUSE_BUTTON_LEFT LAM_MOUSE_BUTTON_1
160
+ #define LAM_MOUSE_BUTTON_RIGHT LAM_MOUSE_BUTTON_2
161
+ #define LAM_MOUSE_BUTTON_MIDDLE LAM_MOUSE_BUTTON_3
162
+
163
+ #define LAM_JOYSTICK_1 0
164
+ #define LAM_JOYSTICK_2 1
165
+ #define LAM_JOYSTICK_3 2
166
+ #define LAM_JOYSTICK_4 3
167
+ #define LAM_JOYSTICK_5 4
168
+ #define LAM_JOYSTICK_6 5
169
+ #define LAM_JOYSTICK_7 6
170
+ #define LAM_JOYSTICK_8 7
171
+ #define LAM_JOYSTICK_9 8
172
+ #define LAM_JOYSTICK_10 9
173
+ #define LAM_JOYSTICK_11 10
174
+ #define LAM_JOYSTICK_12 11
175
+ #define LAM_JOYSTICK_13 12
176
+ #define LAM_JOYSTICK_14 13
177
+ #define LAM_JOYSTICK_15 14
178
+ #define LAM_JOYSTICK_16 15
179
+ #define LAM_JOYSTICK_LAST LAM_JOYSTICK_16
180
+
181
+ #define LAM_GAMEPAD_BUTTON_A 0
182
+ #define LAM_GAMEPAD_BUTTON_B 1
183
+ #define LAM_GAMEPAD_BUTTON_X 2
184
+ #define LAM_GAMEPAD_BUTTON_Y 3
185
+ #define LAM_GAMEPAD_BUTTON_LEFT_BUMPER 4
186
+ #define LAM_GAMEPAD_BUTTON_RIGHT_BUMPER 5
187
+ #define LAM_GAMEPAD_BUTTON_BACK 6
188
+ #define LAM_GAMEPAD_BUTTON_START 7
189
+ #define LAM_GAMEPAD_BUTTON_GUIDE 8
190
+ #define LAM_GAMEPAD_BUTTON_LEFT_THUMB 9
191
+ #define LAM_GAMEPAD_BUTTON_RIGHT_THUMB 10
192
+ #define LAM_GAMEPAD_BUTTON_DPAD_UP 11
193
+ #define LAM_GAMEPAD_BUTTON_DPAD_RIGHT 12
194
+ #define LAM_GAMEPAD_BUTTON_DPAD_DOWN 13
195
+ #define LAM_GAMEPAD_BUTTON_DPAD_LEFT 14
196
+ #define LAM_GAMEPAD_BUTTON_LAST LAM_GAMEPAD_BUTTON_DPAD_LEFT
197
+
198
+ #define LAM_GAMEPAD_BUTTON_CROSS LAM_GAMEPAD_BUTTON_A
199
+ #define LAM_GAMEPAD_BUTTON_CIRCLE LAM_GAMEPAD_BUTTON_B
200
+ #define LAM_GAMEPAD_BUTTON_SQUARE LAM_GAMEPAD_BUTTON_X
201
+ #define LAM_GAMEPAD_BUTTON_TRIANGLE LAM_GAMEPAD_BUTTON_Y
202
+
203
+ #define LAM_GAMEPAD_AXIS_LEFT_X 0
204
+ #define LAM_GAMEPAD_AXIS_LEFT_Y 1
205
+ #define LAM_GAMEPAD_AXIS_RIGHT_X 2
206
+ #define LAM_GAMEPAD_AXIS_RIGHT_Y 3
207
+ #define LAM_GAMEPAD_AXIS_LEFT_TRIGGER 4
208
+ #define LAM_GAMEPAD_AXIS_RIGHT_TRIGGER 5
209
+ #define LAM_GAMEPAD_AXIS_LAST LAM_GAMEPAD_AXIS_RIGHT_TRIGGER
210
+
211
+ #endif /* LAM_KEY_HEADER */
@@ -0,0 +1,148 @@
1
+ #ifndef LAM_TM_H
2
+ #define LAM_TM_H
3
+
4
+ /**
5
+ * @file lam-tm.h
6
+ * @brief Public header for the liblamina tilemap system.
7
+ *
8
+ * Declares the API for managing and rendering
9
+ * 2D tilemaps in the liblamina rendering layer.
10
+ */
11
+
12
+ #include <stdint.h>
13
+
14
+ #ifdef __cplusplus
15
+ extern "C" {
16
+ #endif
17
+
18
+ /** @defgroup lam_tile_types liblamina tilemap types
19
+ * @brief Type definitions for tilemap handling.
20
+ * @{
21
+ */
22
+
23
+ /**
24
+ * @brief Tilemap descriptor.
25
+ *
26
+ * Represents a subdivided texture atlas used
27
+ * for rendering multiple tiles from a single
28
+ * image reference.
29
+ */
30
+ typedef struct {
31
+ unsigned img;
32
+ uint32_t w;
33
+ uint32_t h;
34
+ uint32_t nx;
35
+ uint32_t ny;
36
+ } lam_tm_t;
37
+
38
+ /** @} */
39
+
40
+ /** @defgroup lam_tile_core liblamina tilemap creation and access
41
+ * @brief Tilemap management functions.
42
+ * @{
43
+ */
44
+
45
+ /**
46
+ * @brief Register a new tilemap.
47
+ *
48
+ * Divides the given image into fixed-size tiles.
49
+ *
50
+ * @param[in] img_ref Image reference (texture ID).
51
+ * @param[in] w Tile width.
52
+ * @param[in] h Tile height.
53
+ * @return Tilemap handle (tm_ref).
54
+ */
55
+ uint32_t lam_tm_new(uint32_t img_ref,
56
+ uint32_t w,
57
+ uint32_t h);
58
+
59
+ /**
60
+ * @brief Retrieve a tilemap descriptor.
61
+ *
62
+ * @param[in] tm_ref Tilemap handle.
63
+ * @return Pointer to descriptor, or NULL if invalid.
64
+ */
65
+ const lam_tm_t *lam_tm_get(uint32_t tm_ref);
66
+
67
+ /** @} */
68
+
69
+ /** @defgroup lam_tile_render liblamina tile rendering
70
+ * @brief Functions for drawing individual tiles.
71
+ * @{
72
+ */
73
+
74
+ /**
75
+ * @brief Draw a single tile from a tilemap.
76
+ *
77
+ * @param[in] ref Tilemap handle.
78
+ * @param[in] idx Tile index (0-based).
79
+ * @param[in] x Destination X position.
80
+ * @param[in] y Destination Y position.
81
+ * @param[in] w Destination width.
82
+ * @param[in] h Destination height.
83
+ * @param[in] rx Optional crop offset X (source space).
84
+ * @param[in] ry Optional crop offset Y (source space).
85
+ */
86
+ void lam_tile_draw(uint32_t ref,
87
+ uint32_t idx,
88
+ uint32_t x,
89
+ uint32_t y,
90
+ uint32_t w,
91
+ uint32_t h,
92
+ uint32_t rx,
93
+ uint32_t ry);
94
+
95
+ /**
96
+ * @brief Render a complete 2D grid map from an array of tile indices.
97
+ *
98
+ * @param[in] ref Tilemap handle.
99
+ * @param[in] tiles Pointer to 2D array of tile indices (row-major, map_w * map_h entries).
100
+ * @param[in] map_w Width of map in tiles.
101
+ * @param[in] map_h Height of map in tiles.
102
+ * @param[in] start_x Destination X coordinate on screen in pixels.
103
+ * @param[in] start_y Destination Y coordinate on screen in pixels.
104
+ * @param[in] scale Integer scale multiplier for each tile (1 = 1x, 2 = 2x, etc.).
105
+ */
106
+ void lam_tile_map_draw(uint32_t ref,
107
+ const uint16_t *tiles,
108
+ uint32_t map_w,
109
+ uint32_t map_h,
110
+ int32_t start_x,
111
+ int32_t start_y,
112
+ uint32_t scale);
113
+
114
+ /**
115
+ * @brief Draw a single tile lying flat on the 3D ground plane (Z = elevation).
116
+ *
117
+ * @param[in] ref Tilemap handle.
118
+ * @param[in] idx Tile index (0-based).
119
+ * @param[in] x,y World coordinates of top-left corner on ground plane.
120
+ * @param[in] z Elevation (Z coordinate).
121
+ * @param[in] w,h Width and height of tile in world units.
122
+ */
123
+ void lam_tile_draw_ground_3d(uint32_t ref,
124
+ uint32_t idx,
125
+ float x, float y, float z,
126
+ float w, float h);
127
+
128
+ /**
129
+ * @brief Draw a billboard sprite standing upright in 3D world space.
130
+ *
131
+ * @param[in] ref Tilemap handle.
132
+ * @param[in] idx Tile index (0-based).
133
+ * @param[in] x,y,z Anchor position in world coordinates (e.g. feet position).
134
+ * @param[in] w,h Sprite width and height in world units.
135
+ * @param[in] anchor_x Horizontal anchor (0.0 = left, 0.5 = center, 1.0 = right).
136
+ * @param[in] anchor_y Vertical anchor (0.0 = bottom/feet, 0.5 = center, 1.0 = top).
137
+ */
138
+ void lam_tile_draw_billboard_3d(uint32_t ref,
139
+ uint32_t idx,
140
+ float x, float y, float z,
141
+ float w, float h,
142
+ float anchor_x, float anchor_y);
143
+
144
+ #ifdef __cplusplus
145
+ }
146
+ #endif
147
+
148
+ #endif /* LAM_TM_H */