]> git.lizzy.rs Git - nothing.git/blob - src/game/edit_field_ring.c
TODO(#368)
[nothing.git] / src / game / edit_field_ring.c
1 #include <stdio.h>
2 #include <assert.h>
3
4 #include "edit_field_ring.h"
5 #include "edit_field.h"
6 #include "system/lt.h"
7 #include "system/error.h"
8 #include "game/sprite_font.h"
9 #include "game/edit_field.h"
10
11 /* TODO(#368): EditFieldRing is not implemented */
12 struct EditFieldRing
13 {
14     Lt *lt;
15     Edit_field *edit_field;
16 };
17
18 EditFieldRing *create_edit_field_ring(const Sprite_font *font,
19                                       Vec font_size,
20                                       Color font_color,
21                                       size_t capacity)
22 {
23     assert(font);
24     (void) capacity;
25
26     Lt *lt = create_lt();
27     if (lt == NULL) {
28         return NULL;
29     }
30
31     EditFieldRing *edit_field_ring = PUSH_LT(
32         lt,
33         malloc(sizeof(EditFieldRing)),
34         free);
35     if (edit_field_ring == NULL) {
36         throw_error(ERROR_TYPE_LIBC);
37         RETURN_LT(lt, NULL);
38     }
39     edit_field_ring->lt = lt;
40
41     edit_field_ring->edit_field = PUSH_LT(
42         lt,
43         create_edit_field(font, font_size, font_color),
44         destroy_edit_field);
45     if (edit_field_ring->edit_field == NULL) {
46         RETURN_LT(lt, NULL);
47     }
48     edit_field_focus(edit_field_ring->edit_field);
49
50     return edit_field_ring;
51 }
52
53 void destroy_edit_field_ring(EditFieldRing *edit_field_ring)
54 {
55     assert(edit_field_ring);
56     RETURN_LT0(edit_field_ring->lt);
57 }
58
59 void edit_field_ring_push(EditFieldRing *edit_field_ring)
60 {
61     assert(edit_field_ring);
62     edit_field_clean(edit_field_ring->edit_field);
63 }
64
65 size_t edit_field_ring_size(const EditFieldRing *edit_field_ring)
66 {
67     assert(edit_field_ring);
68     return 1;
69 }
70
71 Edit_field *edit_field_ring_get(const EditFieldRing *edit_field_ring, size_t i)
72 {
73     assert(edit_field_ring);
74     (void) i;
75     return edit_field_ring->edit_field;
76 }