Mercurial > public > algo-animator
annotate src/utils.h @ 30:f945bcc3571f
refactor
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Thu, 29 Jun 2023 17:48:36 +0100 |
parents | dae463bbf5ca |
children | 61104b22a25d |
rev | line source |
---|---|
29
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
1 #ifndef UTILS_H |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
2 #define UTILS_H |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
3 |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
4 #include <stdio.h> |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
5 #include <stdlib.h> |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
6 #include <time.h> |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
7 #include <stdbool.h> |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
8 #include <unistd.h> |
30 | 9 #include <GL/glut.h> |
10 #include <pthread.h> | |
11 #include <ft2build.h> | |
12 #include <signal.h> | |
13 #include FT_FREETYPE_H | |
29
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
14 |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
15 |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
16 struct Element { |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
17 float value; |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
18 bool current; |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
19 }; |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
20 |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
21 struct Algo { |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
22 char name[50]; |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
23 void *(*function)(void *); |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
24 }; |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
25 |
30 | 26 struct AlgoArgs { |
27 struct Element *arr; | |
28 int arr_size; | |
29 int comparisons; | |
30 bool pause; | |
31 bool sequentially; | |
32 useconds_t delay; | |
33 }; | |
34 | |
35 | |
36 struct ThreadState { | |
37 bool running; | |
38 pthread_t thread; | |
39 }; | |
40 | |
29
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
41 void create_array(struct Element *arr, int arr_size, int window_height, int vpadding); |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
42 void swap_elements(int x, int y, struct Element *arr); |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
43 void randomize_array(struct Element *arr, int arr_size); |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
44 bool array_sorted(struct Element *arr, int arr_size); |
30 | 45 void algorithm_selector(struct Algo *algos, int algos_size, int direction, int *selected_algo); |
46 void change_speed(struct AlgoArgs *algo_args, int change); | |
47 void control_flow(useconds_t delay, bool sequentially, bool *pause); | |
48 void reset_state(struct AlgoArgs *algo_args, struct ThreadState *thread_state); | |
49 void run(struct AlgoArgs *algo_args, struct Algo *algos, int selected_algo, | |
50 struct ThreadState *thread_state); | |
29
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
51 |
dae463bbf5ca
implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff
changeset
|
52 |
30 | 53 #endif // UTILS_H |