Format code
Francesco Pasa 2 weeks ago
Francesco Pasa 2 weeks ago
examples/shapes.c M +3 -5
1 #include "alba.h"
2
3-int main()
4-{
5+int main() {
6 AlbaWindowOptions options = {0};
7 options.clear_color.r = 0.02;
8 options.clear_color.g = 0.02;
9 options.clear_color.b = 0.02;
10- AlbaWindow* window = alba_create_window(&options);
11+ AlbaWindow *window = alba_create_window(&options);
12
13 const AlbaVector tri_vertices[] = {
14 100, 100,
42
43 alba_draw_rounded_rect_aa(window, 350, 30, 500, 80, 10, blue);
44
45- while (!alba_window_should_close(window))
46- {
47+ while (!alba_window_should_close(window)) {
48 alba_window_render(window);
49 }
50
include/alba.h M +75 -61
6 #include FT_FREETYPE_H
7
8 // Dynamic arrays
9-typedef struct
10-{
11+typedef struct {
12 uint64_t element_size;
13 uint64_t length;
14 uint64_t capacity;
15- void* data;
16+ void *data;
17 } AlbaArray;
18
19 AlbaArray alba_create_array(uint64_t element_size, uint64_t capacity);
20-void alba_array_reserve(AlbaArray* array, uint64_t request);
21-void alba_array_append(AlbaArray* array, const void* value);
22-void alba_array_extend(AlbaArray* array, uint64_t size, const void* data);
23-void alba_array_release(const AlbaArray* array);
24-void alba_array_clear(AlbaArray* array);
25-void alba_array_sort(const AlbaArray* array, uint32_t (*is_before_pivot)(void* pivot, void* elem));
26-void* alba_array_last(const AlbaArray* array);
27-void alba_array_print(const AlbaArray* array, void (*print_element)(void* element));
28+
29+void alba_array_reserve(AlbaArray *array, uint64_t request);
30+
31+void alba_array_append(AlbaArray *array, const void *value);
32+
33+void alba_array_extend(AlbaArray *array, uint64_t size, const void *data);
34+
35+void alba_array_release(const AlbaArray *array);
36+
37+void alba_array_clear(AlbaArray *array);
38+
39+void alba_array_sort(const AlbaArray *array, uint32_t (*is_before_pivot)(void *pivot, void *elem));
40+
41+void *alba_array_last(const AlbaArray *array);
42+
43+void alba_array_print(const AlbaArray *array, void (*print_element)(void *element));
44
45 // String
46 typedef AlbaArray AlbaString;
47
48-AlbaString alba_create_string(const char* text, uint64_t length);
49-char* alba_string_to_char(const AlbaString* string);
50-void alba_string_extend(AlbaString* string, const char* text, uint64_t length);
51-static void alba_string_release(const AlbaString* string) { alba_array_release(string); }
52+AlbaString alba_create_string(const char *text, uint64_t length);
53+
54+char *alba_string_to_char(const AlbaString *string);
55+
56+void alba_string_extend(AlbaString *string, const char *text, uint64_t length);
57+
58+static void alba_string_release(const AlbaString *string) { alba_array_release(string); }
59
60 // Helper structures
61-typedef struct
62-{
63+typedef struct {
64 float r, g, b, a;
65 } AlbaColor;
66
57 #define MAGENTA {1, 0, 1, 1}
58 #define CYAN {0, 1, 1, 1}
59
60-void alba_color_print(const AlbaColor* color);
61-int alba_color_is_transparent(const AlbaColor* color);
62+void alba_color_print(const AlbaColor *color);
63+
64+int alba_color_is_transparent(const AlbaColor *color);
65
66-typedef struct
67-{
68+typedef struct {
69 float x, y;
70 } AlbaVector;
71
72-void alba_vector_print(const AlbaVector* vector);
73+void alba_vector_print(const AlbaVector *vector);
74
75-inline AlbaVector alba_vector_add(const AlbaVector a, const AlbaVector b)
76-{
77+inline AlbaVector alba_vector_add(const AlbaVector a, const AlbaVector b) {
78 return (AlbaVector){a.x + b.x, a.y + b.y};
79 }
80
81-inline AlbaVector alba_vector_sub(const AlbaVector a, const AlbaVector b)
82-{
83+inline AlbaVector alba_vector_sub(const AlbaVector a, const AlbaVector b) {
84 return (AlbaVector){a.x - b.x, a.y - b.y};
85 }
86
87-inline AlbaVector alba_vector_mul(const AlbaVector a, const AlbaVector b)
88-{
89+inline AlbaVector alba_vector_mul(const AlbaVector a, const AlbaVector b) {
90 return (AlbaVector){a.x * b.x, a.y * b.y};
91 }
92
93-inline AlbaVector alba_vector_div(const AlbaVector a, const AlbaVector b)
94-{
95+inline AlbaVector alba_vector_div(const AlbaVector a, const AlbaVector b) {
96 return (AlbaVector){a.x / b.x, a.y / b.y};
97 }
98
99-typedef struct
100-{
101+typedef struct {
102 AlbaColor color;
103 AlbaVector uv;
104 } AlbaAttribute;
105
106-void alba_attribute_print(const AlbaAttribute* attribute);
107+void alba_attribute_print(const AlbaAttribute *attribute);
108
109 // Window
110-typedef struct
111-{
112- char* title;
113+typedef struct {
114+ char *title;
115 uint32_t initial_width;
116 uint32_t initial_height;
117 AlbaColor clear_color;
100
101 typedef struct AlbaWindowImpl AlbaWindow;
102
103-AlbaWindow* alba_create_window(const AlbaWindowOptions* options);
104-uint32_t alba_window_should_close(const AlbaWindow* window);
105+AlbaWindow *alba_create_window(const AlbaWindowOptions *options);
106+
107+uint32_t alba_window_should_close(const AlbaWindow *window);
108+
109 // TODO: think about API here, use AlbaVector
110 // Returns window size, in scaled coordinates (e.g. will honor
111 // the windowing system scaling). The point at this coordinate
112 // is at the bottom right of the window.
113-void alba_window_get_size(const AlbaWindow* window, float* width, float* height);
114-void alba_window_render(AlbaWindow* window);
115-void alba_window_release(AlbaWindow* window);
116+void alba_window_get_size(const AlbaWindow *window, float *width, float *height);
117+
118+void alba_window_render(AlbaWindow *window);
119+
120+void alba_window_release(AlbaWindow *window);
121
122 void alba_release();
123
124 // Low level drawing
125 void alba_draw_triangles_indexed(
126- AlbaWindow* window,
127+ AlbaWindow *window,
128 uint32_t num_vertices,
129- const AlbaVector* vertices,
130- const AlbaAttribute* attributes,
131+ const AlbaVector *vertices,
132+ const AlbaAttribute *attributes,
133 uint32_t num_indices,
134- uint32_t* indices
135+ uint32_t *indices
136 );
137+
138 void alba_draw_triangles(
139- AlbaWindow* window,
140+ AlbaWindow *window,
141 uint32_t num_vertices,
142- const AlbaVector* vertices,
143- const AlbaAttribute* attributes
144+ const AlbaVector *vertices,
145+ const AlbaAttribute *attributes
146 );
147
148 // Higher level drawing
149-void alba_draw_triangle(AlbaWindow* window, const AlbaVector vertices[3], AlbaColor color);
150-void alba_draw_quad(AlbaWindow* window, const AlbaVector vertices[4], AlbaColor color);
151-void alba_draw_rect_aa(AlbaWindow* window, float x0, float y0, float x1, float y1, AlbaColor color);
152+void alba_draw_triangle(AlbaWindow *window, const AlbaVector vertices[3], AlbaColor color);
153+
154+void alba_draw_quad(AlbaWindow *window, const AlbaVector vertices[4], AlbaColor color);
155+
156+void alba_draw_rect_aa(AlbaWindow *window, float x0, float y0, float x1, float y1, AlbaColor color);
157+
158+void alba_generate_regular_polygon(AlbaArray *array, uint32_t num_sides, float x, float y, float r);
159+
160+void alba_generate_circle(AlbaArray *array, float x, float y, float r);
161+
162+void alba_generate_rounded_rect_aa(AlbaArray *array, float x0, float y0, float x1, float y1, float r);
163+
164+void alba_draw_concave_polygon(AlbaWindow *window, float x, float y, const AlbaArray *contour, AlbaColor color);
165+
166+void alba_draw_regular_polygon(AlbaWindow *window, uint32_t num_sides, float x, float y, float r, AlbaColor color);
167
168-void alba_generate_regular_polygon(AlbaArray* array, uint32_t num_sides, float x, float y, float r);
169-void alba_generate_circle(AlbaArray* array, float x, float y, float r);
170-void alba_generate_rounded_rect_aa(AlbaArray* array, float x0, float y0, float x1, float y1, float r);
171+void alba_draw_circle(AlbaWindow *window, float x, float y, float r, AlbaColor color);
172
173-void alba_draw_concave_polygon(AlbaWindow* window, float x, float y, const AlbaArray* contour, AlbaColor color);
174-void alba_draw_regular_polygon(AlbaWindow* window, uint32_t num_sides, float x, float y, float r, AlbaColor color);
175-void alba_draw_circle(AlbaWindow* window, float x, float y, float r, AlbaColor color);
176-void alba_draw_rounded_rect_aa(AlbaWindow* window, float x0, float y0, float x1, float y1, float r, AlbaColor color);
177+void alba_draw_rounded_rect_aa(AlbaWindow *window, float x0, float y0, float x1, float y1, float r, AlbaColor color);
178
179 // Text drawing
180-typedef struct
181-{
182+typedef struct {
183 AlbaColor color;
184 uint64_t font_size;
185 } AlbaTextStyle;
186
187 void alba_draw_text(
188- AlbaWindow* window,
189+ AlbaWindow *window,
190 AlbaVector pos,
191 AlbaString string,
192 AlbaTextStyle style