-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathguitraildot.c
43 lines (35 loc) · 1.03 KB
/
guitraildot.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdlib.h>
#include <stdbool.h>
#include "guitraildot.h"
#define TRAIL_DOTS_INITIAL_SIZE 512
#define TRAIL_DOTS_MAX_SIZE 512*40
bool trail = false;
i_vec_t* trail_dots;
int n_trail_dots = 0;
static int trail_dots_size = 0;
void insert_trail_dot(i_vec_t trail_dot) {
static int i = 0;
if (!(n_trail_dots+1 < trail_dots_size)) {
if (trail_dots_size == 0) {
i = 0;
trail_dots_size = TRAIL_DOTS_INITIAL_SIZE;
} else {
trail_dots_size *= 2;
if (trail_dots_size > TRAIL_DOTS_MAX_SIZE) {
trail_dots_size = TRAIL_DOTS_MAX_SIZE;
}
}
trail_dots = (i_vec_t*) realloc(trail_dots, sizeof(i_vec_t) * trail_dots_size);
}
if (n_trail_dots+1 < TRAIL_DOTS_MAX_SIZE) {
n_trail_dots++;
}
trail_dots[i] = trail_dot;
i = i+1 < TRAIL_DOTS_MAX_SIZE? i+1 : 0;
}
void clear_trail_dots() {
n_trail_dots = 0;
trail_dots_size = 0;
free(trail_dots);
trail_dots = NULL;
}