-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpatchwork.h
56 lines (45 loc) · 1.63 KB
/
patchwork.h
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#ifndef PATCHWORK_H
#define PATCHWORK_H
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
enum nature_primitif {
CARRE,
TRIANGLE,
NB_NAT_PRIMITIFS /* sentinelle */
};
enum orientation_primitif {
EST,
NORD,
OUEST,
SUD,
NB_ORIENTATIONS /* sentinelle */
};
struct primitif {
enum nature_primitif nature;
enum orientation_primitif orientation;
};
struct patchwork {
uint16_t hauteur, largeur;
struct primitif **primitifs; /* tableau de hauteur pointeurs
vers des tableaux de largeur primitifs */
};
/* Cree et retourne un patchwork compose d'une image primitive,
* de taille 1x1, de nature nat et d'orientation EST. */
extern struct patchwork *creer_primitif(const enum nature_primitif nat);
/* Cree et retourne un nouveau patchwork en appliquant a p une rotation
* de 90 degres dans le sens direct. */
extern struct patchwork *creer_rotation(const struct patchwork *p);
/* Cree et retourne un nouveau patchwork par juxtaposition de p_g et
* p_d (p_g a gauche de p_d).
* Si les tailles ne sont par concordantes, retourne NULL. */
extern struct patchwork *creer_juxtaposition(const struct patchwork *p_g,
const struct patchwork *p_d);
/* Cree et retourne un nouveau patchwork par superposition de p_h et
* p_b (p_h au dessus de p_b).
* Si les tailles ne sont par concordantes, retourne NULL. */
extern struct patchwork *creer_superposition(const struct patchwork *p_h,
const struct patchwork *p_b);
/* Libere toute la memoire allouee pour le patchwork p. */
extern void liberer_patchwork(struct patchwork *p);
#endif /* PATCHWORK_H */