/*
   Fichier modepage.h
   Auteur Bernard Chardonneau
*/



/* taille par defaut d'une fenêtre */

#define defaut_ligne   25
#define defaut_colon   80


/* macros de gestion de l'affichage */

#define putseq(s)   printf ("%c[%s", ESC,s) // affiche séquence d'échappement

#define debpage()   putseq ("H")   // se positionne en haut de page
#define baspage()   putseq ("99B") // se positionne en bas de page
#define effpage()   putseq ("J")   // efface la page à partir du curseur
#define effligne()  putseq ("K")   // efface la ligne à partir du curseur
#define insligne()  putseq ("L")   // insère une ligne au niveau ligne courante
#define montecurs() putseq ("A")   // remonte le curseur d'une ligne
#define clair()     putseq ("1m")  // affichage en surbrillance
#define lumnor()    putseq ("0m")  // affichage en luminosité normale
#define sombre()    putseq ("34m") // affichage en bleu foncé


/* macros de gestion du clavier */

// lecture non bloquante caractère par caractère sans écho
#define mode_raw()  system ("stty -icanon min 0 time 5 -echo")

// lecture en mode normal (ligne par ligne) avec écho
#define mode_normal() system ("stty icanon echo")


/* prototypes des fonctions de la bibliothèque modepage */

void affpage ();
void monte (int n);
void descend (int n);
void lig_col ();
int  leccar ();
void execom (char *outil, char *fichier);


/* variables globales à l'application utilisées par modepage
   (pour éviter des tonnes de passages de paramètres) */


#ifdef modepage
     int nb_lignes;            // nombre de lignes mémorisées
     int lignecour;            // numéro de la ligne courante
     int lignepage, colonpage; // nombre ligne et colonnes de la page d'écran
     int lignecran;            // numéro de ligne du curseur à l'écran
#else
     extern int nb_lignes;
     extern int lignecour;
     extern int lignepage, colonpage;
     extern int lignecran;
#endif