This repository was archived by the owner on Jan 19, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsortie.h
63 lines (48 loc) · 1.87 KB
/
sortie.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
57
58
59
60
61
62
63
/**
* Le projet n'est censé utiliser que du PostScript en sortie en pratique, mais ce fichier est "neutre" vis-à-vis du
* format de sortie, si bien qu'on pourrait supporter du SVG (par exemple) en changeant uniquement le fichier C utilisé
* pour générer sortie.o dans le Makefile.
*
* Dit autrement, ce fichier ("sortie.h") ne fais aucun a-priori sur le format de fichier vers lequel on écrit, seule
* la/les implémentation(s) le détermineront.
*/
#ifndef _SORTIE_H_
#define _SORTIE_H_
#include <stdio.h>
#include "contour.h"
#include "liste_bezier3.h"
typedef enum {
/* Mode 1 : tracé du contour avec des segments */
MODE_STROKED,
/* Mode 2 : tracé du contour avec segments et points */
MODE_STROKED_POINTS,
/* Mode 3 : remplissage du contour */
MODE_FILLED,
} SortieMode;
/**
* Stocke un fichier de sortie en cours de création. Contient suffisemment d'informations pour ne pas avoir à passer
* d'arguments redondants dans les appels à `sortie_ecrire_contours`.
*/
typedef struct {
FILE* out;
SortieMode mode;
unsigned int h;
} FichierSortie;
/**
* Ouvre un fichier de sortie au chemin donné pour une image de taille w x h et écrit l'en-tête.
* Normalement, une structure crée avec cette fonction doit toujours être libérée/détruite avec `sortie_close`.
*/
FichierSortie sortie_open(char* path, int w, int h, SortieMode mode);
/**
* Écrit un contour de type segment dans le fichier. Peut être apellé plusieurs fois jusqu'à la fermeture du fichier.
*/
void sortie_ecrire_contour(FichierSortie self, TableauPoints contour);
/**
* Écrit un contour de type Bezier3 dans le fichier. Peut être apellé plusieurs fois jusqu'à la fermeture du fichier.
*/
void sortie_ecrire_contour_bezier(FichierSortie self, ListeBezier3* contour);
/**
* Ferme un fichier précédemment ouvert
*/
void sortie_close(FichierSortie self);
#endif