# Documentation de la bibliothèque MLV-0.6.705

- Presentation
- Téléchargement
- Installation
- Compilation
- Exemples
- API
- Liste des fonctions
- bogues
- contacts

# advanced/01_texts_and_boxes.c

Ce programme explique comment récupérer la taille des boîtes de textes avant de les afficher.

    #include <MLV/MLV_all.h>

    //
    // Fonction affichant les côtes d'une boîte de texte. Les paramètres sont
    // la position du sommet Nord-Ouest ( paramètres x et y ) et la taille de la
    // boîte de texte ( paramètres width et height ).
    //
    void print_cote( int O, int N, int width, int height, MLV_Color color ){
            int espace = 3;
            int sizeLine = 10;
            int S = N + height -1;
            int E = O + width - 1;

            MLV_draw_line(O, N - espace, O, N - espace - sizeLine , color);
            MLV_draw_line(E, N - espace, E, N - espace - sizeLine , color);
            MLV_draw_line(O, S + espace, O, S + espace + sizeLine , color);
            MLV_draw_line(E, S + espace, E, S + espace + sizeLine , color);

            MLV_draw_line(O - espace, N, O - espace - sizeLine, N, color);
            MLV_draw_line(O - espace, S, O - espace - sizeLine, S, color);
            MLV_draw_line(E + espace, N, E + espace + sizeLine, N, color);
            MLV_draw_line(E + espace, S, E + espace + sizeLine, S, color);
    }

    //
    // 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[] ){
            int width = 640, height = 480;
            //
            // Créé et affiche la fenêtre
            //
            MLV_create_window(
                    "advanced - 1 - texts and boxes", "texts and boxes", width, height );

            // texte à afficher dans une boîte
            const char* text = "Voici une boite de texte, centré par rapport à la fenetre.";
            // Taille de la future boite qui affichera le texte.
            int width_text, height_text;
            //
            // Récupère la taile de la boite de texte qui affichera le texte
            // contenu dans la variable text.
            //
            MLV_get_size_of_text( text, &width_text, &height_text );
            int positionX = (width-width_text)/2, positionY = 100;

            //
            // Affichage du texte
            //
            MLV_draw_text( positionX, positionY, text, MLV_COLOR_GREEN );
            //
            // Affichage les côtes du texte.
            //
            print_cote( positionX, positionY, width_text, height_text, MLV_COLOR_GREEN );

            //
            // Second texte à afficher
            //
            const char *text_box = "Voici une boîte de texte.\nCette Boîte de texte est elle aussi centré horizontalement dans la fenetre.";

            int width_box = 0 , height_box = 0, size_interligne = 9;

            //
            // Récupère la taille de la boite de texte qui affichera le texte
            // contenu dans la variable text_box.
            //
            MLV_get_size_of_adapted_text_box(
                    text_box,
                    size_interligne,
                    &width_box, &height_box
            );
            //
            // Calcul la position idéale pour la boîte de texte
            //
            int positionBoxX = (width-width_box)/2, positionBoxY = 300;

            //
            // Affiche la boîte de texte.
            //
            MLV_draw_adapted_text_box(
                    positionBoxX, positionBoxY,
                    text_box,
                    size_interligne,
                    MLV_COLOR_RED, MLV_COLOR_GREEN, MLV_COLOR_BLACK,
                    MLV_TEXT_CENTER
            );
            //
            // Affiche les côtes de la boîte de texte.
            //
            print_cote(
                    positionBoxX, positionBoxY, width_box, height_box, MLV_COLOR_GREEN
            );

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

            //
            // Attend 15 secondes
            //
            MLV_wait_seconds( 15 );

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