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/>.
*/
|