Format code

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