attributs everywhere ?

This commit is contained in:
tth 2021-09-10 10:17:33 +02:00
parent 9fd7a01bee
commit 3437173612
1 changed files with 38 additions and 9 deletions

View File

@ -7,17 +7,23 @@
En fait, nous allons plutôt parler de \textbf{ncurses} qui est
l'implémentation actuelle de l'ancêtre \texttt{curses}. Voic ce
qu'en dit une page de man :
qu'en dit une page de man~:
\begin{quote}
The ncurses library routines give the user a terminal-independent
method of updating character screens with reasonable optimization.
This implementation is ``new curses'' (ncurses) and is the approved
replacement for 4.4BSD classic curses, which has been discontinued.
The ncurses library routines give the user a terminal-independent
method of updating character screens with reasonable optimization.
This implementation is ``new curses'' (ncurses) and is the approved
replacement for 4.4BSD classic curses, which ha been discontinued.
\end{quote}
Plus concrètement, Curses est un moyen optimisé de gestion des
écrans textes (Rappellez-vous notre ami le \textsc{Minitel}) afin
de créer des interfaces 'full-screen'. Vous pouvez adresser
chaque cellule de votre écran (la case où l'on peut mettre
un caractère) pour y écrire quelque chose, en gérant des
attributs tels que gras ou souligné.
\section{premier exemple}
\section{Premier exemple}
Bien entendu, nous commencerons par l'ECM traditionnel de rigueur.
@ -28,12 +34,35 @@ interne de ncurses, et à régler l'interaction clavier/écran.
Ensuite, avec \texttt{mvaddstr}, nous écrivons le texte passé
en paramètre à une position fixée ligne,colonne
dans un écran virtuel
qui sera ensuite transféré dans l'écran réel
dans un écran virtuel (qui n'existe qu'en mémoire)
qui sera ensuite transféré dans l'écran réel (celui qui est affiché)
par le \texttt{refresh()}.
Dans ma grande mansuétude, je n'aurais pas l'audace de vous montrer
une capture d'écran, puisque je me permet de supposer que vous
avez pris le temps de compiler l'exemple, et de voir par vous même
ce que ça donne.
\section{astuces}
\section{Bell and whistles}
Voici comment centrer sur la ligne du haut
un texte écrit en \textbf{gras} grace à l'attribut
\texttt{A\_BOLD} :
\begin{verbatim}
attron(A_BOLD);
mvaddstr(0, (COLS / 2) - (strlen(text) / 2), text);
attroff(A_BOLD);
\end{verbatim}
Il existe tout un tas d'autres attributs:
\texttt{A\_UNDERLINE} pour le soulignement ou
\texttt{A\_BLINK} pour clignoter, par exemple.
La liste complète est dans le man~: \texttt{attr(3NCURSES)},
avec plein
de fonctions spécialisées dans le traitement des attributs.
\section{Astuces}
Dans une boucle interactive, on va utiliser \texttt{getch()}, qui va
bloquer tant qu'on n'a pas tapé sur une touche. Mais que faire si