File: 04_texts_and_boxes.c

package info (click to toggle)
mlv 3.1.0-8
  • links: PTS
  • area: main
  • in suites: bookworm
  • size: 10,596 kB
  • sloc: ansic: 18,982; sh: 4,760; makefile: 381; objc: 246; xml: 92
file content (226 lines) | stat: -rw-r--r-- 8,985 bytes parent folder | download | duplicates (3)
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
/**
 * Ce programme montre comment il est possible d'utiliser deux types de boîte de
 * texte.
 *
 * La première est une boîte dont la taille s'adapte à celle du texte.
 * Cette boîte se créé à l'aide de la fonction MLV_draw_adapted_text_box.
 *
 * La deuxième est une boîte dont la taille est fixée par l'utilisateur.
 * Cette boîte s'obtient à l'aide de la fonction MLV_draw_text_box.
 *
 *------------------------------------------------------------------------------
 * MLV_draw_adapted_text_box : Dessine une boîte contenant du texte.
 *                             La taille de la boîte dessinée s'adapte à la
 *                             taille du texte.
 *                             Les différentes couleurs de la boîte et du texte,
 *                             ainsi que la taille des interlignes sont
 *                             paramétrables.
 *
 *                             Il est possible de préciser la justiifcation du
 *                             texte à l'aide du champs : text_justification
 *                             
 * void MLV_draw_adapted_text_box(
 *     int            x,                 Coordonnée en X de la position du coin
 *                                       Nord-Ouest de la boîte
 *     int            y,                 Coordonnée en X de la position du coin
 *                                       Nord-Ouest de la boîte
 *     const char*    message,           Texte à afficher
 *     int            sizeInterligne,    Taille de l'interligne
 *     MLV_Color      borderColor,       Couleur des bordures
 *     MLV_Color      textColor,         Couleur du texte
 *     MLV_Color      backgroundColor,   Couleur du fond de la boîte
 *     MLV_Text_justification    text_justification,    Justification du texte.
 *                                                      Valeurs possibles : 
 *                                                          MLV_TEXT_CENTER
 *                                                          MLV_TEXT_LEFT
 *                                                          MLV_TEXT_RIGHT 
 * );
 *
 *------------------------------------------------------------------------------
 * MLV_draw_text_box : Dessine une boîte de taille donnée par l'utilisateur et 
 *                     contenant un texte donné par l'utilisateur.
 *
 *                     Les différentes couleurs de la boîte et du texte,
 *                     ainsi que la taille de l'interligne sont paramétrables.
 *
 *                     Il est possible de préciser la justification du
 *                     texte contenu dans la boîte.
 *
 *                     De même , il est possible de préciser la position du 
 *                     texte à l'intérieur de la boîte.
 *                     
 *                     Cette fonction ne remet pas en forme le texte. Cela 
 *                     veux dire que si le texte est trop grand alors il 
 *                     depassera de la boîte et les parties qui depassent ne 
 *                     seront pas affichées.
 *
 * void MLV_draw_text_box( 
 *    int            x,                  Coordonnée en X de la position du coin
 *                                       Nord-Ouest de la boîte
 *    int            y,                  Coordonnée en Y de la position du coin
 *                                       Nord-Ouest de la boîte
 *    int            width,              Hauteur de la boîte
 *    int            height,             Largeur de la boîte
 *    const char*    message,            Texte à afficher
 *    int            sizeInterligne,     Taille de l'interligne
 *    MLV_Color      borderColor,        Couleur des bordures
 *    MLV_Color      textColor,          Couleur du texte
 *    MLV_Color      backgroundColor,    Couleur du fond de la boîte.
 *    MLV_Text_justification     text_justification,    Justification du texte.
 *                                                      Valeurs possibles : 
 *                                                          MLV_TEXT_CENTER
 *                                                          MLV_TEXT_LEFT
 *                                                          MLV_TEXT_RIGHT 
 *    MLV_Horizontal_position    horizontal_position,   Position horizontale du 
 *                                                      texte dans la boîte.
 *                                                      Valeurs possibles : 
 *                                                         MLV_HORIZONTAL_CENTER
 *                                                         MLV_HORIZONTAL_LEFT
 *                                                         MLV_HORIZONTAL_RIGHT
 *    MLV_Vertical_position      vertical_position      Position verticale du 
 *                                                      texte dans la boîte.
 *                                                      Valeurs possibles : 
 *                                                          MLV_VERTICAL_CENTER
 *                                                          MLV_VERTICAL_TOP
 *                                                          MLV_VERTICAL_BOTTOM 
 * );
 *
 *------------------------------------------------------------------------------
 *
 * Il existe d'autres fonctions pour mettre en forme du texte. 
 * Vous trouverez une documentation de ces fonctions en tapant sur le terminal 
 * la commande suivante :
 *
 * man MLV_text.h
 *
 */

#include <MLV/MLV_all.h>


//
// Attention ! 
// Pour pouvoir compiler ce programme sous windows et sous macintosh,
// il faut, pour la déclaration du main, respecter strictement la syntaxe
// suivante :
//
int main(int argc, char *argv[]){
	//
	// Déclaration et initialisation de la variable qui codera
	// la distance entre deux lignes dans un texte
	//
	int taille_interlinge = 9;

	//
	// Créé et affiche la fenêtre
	//
	MLV_create_window(
		"beginner - 4 - texts and boxes", "texts and boxes", 640, 480
	);

	//
	// Affiche du texte sans boîte
	//
	MLV_draw_text(
		10, 10, 
		"Simple texte. Avec draw_text() vous ne devez pas utiliser de retour à la ligne.",
		MLV_COLOR_MAGENTA
	);

	//
	// Affiche le contenu des variables. 
	//
	// Le format utilisé par la chaîne de 
	// caractère est le même que celui de printf de stdio.h.
	// On rapelle que le .2 du %f signifie que l'on affiche que les 2 premiers
	// chiffres après la virgurle du réel 'reel'.
	// Dans MLV, ce mécanisme existe dans toute les fonctions qui travaille 
	// avec une une chaîne de caractère. :)
	// Il suffit d'ajouter les variables à insérer dans le texte à la fin de la
	// fonction.
	//
	int entier = 42;
	double reel = 3.14;
	const char* texte = "Combinatoire";
	MLV_draw_text(
		10, 50, 
		"entier = %d, reel = %.2f, texte = %s",
		MLV_COLOR_MAGENTA,
		entier, reel, texte
	);

	//
	// Affiche du texte dans une boîte dont la taille s'adapte au texte
	// Le texte est justifié au centre dans la boîte
	//
	MLV_draw_adapted_text_box(
		10,100,
		"Exemple de boîte dont le contour\ns'adapte\nà la taille du texte.",
		taille_interlinge,
		MLV_COLOR_RED, MLV_COLOR_GREEN, MLV_COLOR_BLACK,
		MLV_TEXT_CENTER
	);

	//
	// Affiche du texte dans une boîte dont la taille s'adapte au texte
	// Le texte est justifié à gauche dans la boîte
	//
	MLV_draw_adapted_text_box(
		10,190,
		"Même chose,\nmais le texte\nest justifié à gauche\nde la fenêtre.",
		taille_interlinge,
		MLV_COLOR_RED, MLV_COLOR_GREEN, MLV_COLOR_BLACK,
		MLV_TEXT_LEFT
	);

	//
	// Affiche du texte dans une boîte de taille fixe.
	// Le texte est justifié à gauche, horizontalement et verticalement
	// centré.
	//
	MLV_draw_text_box(
		10,310,
		600,150,
		"Cette fois-ci,\nla taille de la boîte ne correspond pas à l'espace couvert par le texte.\nLa boîte est ici plus grande.",
		taille_interlinge,
		MLV_COLOR_RED, MLV_COLOR_GREEN, MLV_COLOR_BLACK,
		MLV_TEXT_LEFT,
		MLV_HORIZONTAL_CENTER, MLV_VERTICAL_CENTER
	);

	//
	// Met à jour l'affichage de la fenêtre.
	//
	MLV_update_window();

	//
	// Attend 15 seconde avant la fin du programme.
	//
	MLV_wait_seconds( 15 );

	//
	// Ferme la fenêtre
	//
	MLV_free_window();
	return 0;
}

/*
 *   This file is part of the MLV Library.
 *
 *   Copyright (C) 2010,2011,2012,2013 Adrien Boussicault, Marc Zipstein
 *
 *
 *    This Library is free software: you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation, either version 3 of the License, or
 *    (at your option) any later version.
 *
 *    This Library is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with this Library.  If not, see <http://www.gnu.org/licenses/>.
 */