/****************************************************************************/
/*  Nom du fichier    : SpiderDraw.h                                        */
/*                                                                          */
/*  Auteur(s)         : Philippe Girardet, de l'Ecole d'ingenieurs du       */
/*                      canton de Vaud (eivd).                              */
/*                                                                          */
/*  A l'aide des                                                            */
/*  travaux de        : L.Righetti, G.Corba, P.Breguet, P.Girardet,         */
/*                      M.Salamin, A.Jossevel, H.Roethlisberger             */
/*                      de l'Ecole d'ingenieurs du canton de Vaud (eivd)    */
/*                                                                          */
/*  Version           : 3.0                                                 */
/*  Date de creation  : 31 mars 2000                                        */
/*                                                                          */
/*  But               : Outils graphiques completant Spider.                */
/*                                                                          */
/*                                                                          */
/*  Date de modif.    :                                                     */
/*  Raison            :                                                     */
/*                                                                          */
/*                                                                          */
/*  Modules appeles   : Spider.h et dependant de l'implementation           */
/*  Mat. particulier  : Dependant de l'implementation                       */
/*                                                                          */
/*  Compilation       : Dependant de l'implementation                  .    */
/*  Edition de liens  : Dependant de l'implementation                       */
/*                                                                          */
/****************************************************************************/


/* ATTENTION : Pour l'implementation UNIX (XWindows) plusieurs procedures   */
/*             ou fonctions de la librairie Spider envoient des requetes    */
/*             au serveur X actif, mais leur terminaison ne signifie pas    */
/*             que la ou les requêtes ont abouti.                           */

/* Remarque: Attention la barre de titre de la fenetre fait partie de la    */
/*           zone couverte par le systeme d'axes                            */

#include "Spider.h"

namespace Spider
{
  namespace Draw
  {
    /* Type de remplissage pour les formes */
    enum Fill {fill, noFill};
    
    /* Type pour les couleur */
    struct Color
    {
      int r;
      int g;
      int b;
    };
    
    const Color black        = {  0,  0,  0};
    const Color blue         = {  0,  0,255};
    const Color green        = {  0,255,  0};
    const Color cyan         = {  0,255,255};
    const Color red          = {255,  0,  0};
    const Color magenta      = {255,  0,255};
    const Color brown        = {128, 64,  0};
    const Color lightGray    = {192,192,192};
    const Color darkGray     = {128,128,128};
    const Color lightBlue    = {128,128,255};
    const Color lightGreen   = {128,255,128};
    const Color lightCyan    = {128,255,255};
    const Color lightRed     = {255,128,128};
    const Color lightMagenta = {255,128,255};
    const Color yellow       = {255,255,  0};
    const Color white        = {255,255,255};

    /*--------------------------------------------------------------------------*/
    /* Nom     : getColorPen                                                    */
    /* But     : Indique la couleur utilisee pour les dessins.                  */
    /* Entrees : -                                                              */
    /* Sorties : - la couleur utilisee.                                         */
    /*--------------------------------------------------------------------------*/
    extern "C" Color getColorPen(void);

    /*--------------------------------------------------------------------------*/
    /* Nom     : getColorBackground                                             */
    /* But     : Indique la couleur de l'arriere plan.                          */
    /* Entrees : -                                                              */
    /* Sorties : - la couleur de l'arriere plan.                                */
    /*--------------------------------------------------------------------------*/
    extern "C" Color getColorBackground(void);

    /*--------------------------------------------------------------------------*/
    /* Nom     : getColorText                                                   */
    /* But     : Indique la couleur du texte.                                   */
    /* Entrees : -                                                              */
    /* Sorties : - la couleur du texte.                                         */
    /*--------------------------------------------------------------------------*/
    extern "C" Color getColorText(void);

    /*--------------------------------------------------------------------------*/
    /* Nom     : getWidthChar                                                   */
    /* But     : Indique la largeur max en pixel des caracteres de la font      */
    /*           utilisee.                                                      */
    /* Entrees : -                                                              */
    /* Sorties : -  la largeur max                                              */
    /*--------------------------------------------------------------------------*/
    extern "C" int getWidthChar(void);

    /*--------------------------------------------------------------------------*/
    /* Nom     : getHeightChar                                                  */
    /* But     : Indique la hauteur max en pixel des caracteres de la font      */
    /*           utilisee.                                                      */
    /* Entrees : -                                                              */
    /* Sorties : -  la hauteur max                                              */
    /*--------------------------------------------------------------------------*/
    extern "C" int getHeightChar(void);

    /*--------------------------------------------------------------------------*/
    /* Nom     : setColorPen                                                    */
    /* But     : Defini la couleur pour les dessins.                            */
    /* Entrees : - color: la couleur a appliquer                                */
    /* Sorties : -                                                              */
    /*--------------------------------------------------------------------------*/
    extern "C" void setColorPen(Color color);

    /*--------------------------------------------------------------------------*/
    /* Nom     : setColorBackground                                             */
    /* But     : Defini la couleur de l'arriere plan.                           */
    /* Entrees : - color: la couleur a appliquer                                */
    /* Sorties : -                                                              */
    /*--------------------------------------------------------------------------*/
    extern "C" void setColorBackground(Color color);

    /*--------------------------------------------------------------------------*/
    /* Nom     : setColorText                                                   */
    /* But     : Defini la couleur du texte.                                    */
    /* Entrees : - color: la couleur a appliquer                                */
    /* Sorties : -                                                              */
    /*--------------------------------------------------------------------------*/
    extern "C" void setColorText(Color color);

    /*--------------------------------------------------------------------------*/
    /* Nom     : displayText                                                    */
    /* But     : Affiche un texte dans la fenetre graphique a partir de la      */
    /*           position courante.                                             */
    /* Entrees : - text: chaine de caracteres a afficher                        */
    /* Sorties : -                                                              */
    /*--------------------------------------------------------------------------*/
    extern "C" void displayText(char *text);

    /*--------------------------------------------------------------------------*/
    /* Nom     : circle                                                         */
    /* But     : Dessine un cercle dans la fenetre graphique dont le centre     */
    /*           est a la position courante.                                    */
    /* Entrees : radius : Rayon du cercle                                       */
    /*           filled : Indique si il est plein ou si il n'y a que le         */
    /*                    contour                                               */
    /* Sorties :                                                                */
    /*--------------------------------------------------------------------------*/
    extern "C" void circle(int radius, Fill filled = noFill);

    /*--------------------------------------------------------------------------*/
    /* Nom     : box                                                            */
    /* But     : Dessine un rectangle dans la fenetre graphique dont le coin    */
    /*           superieur gauche est a la position courante                    */
    /* Entrees : - width  : Longueur du rectangle                               */
    /*           - height : Largeur du rectangle                                */
    /*           - filled : Indique si il est plein ou si il n'y a que le       */
    /*                      contour                                             */
    /* Sorties :                                                                */
    /*--------------------------------------------------------------------------*/
    extern "C" void box(int width, int height, Fill filled = noFill);

    /*--------------------------------------------------------------------------*/
    /* Nom     : putPixel                                                       */
    /* But     : Dessine un point dans la fenetre graphique a la position       */
    /*           courante.                                                      */
    /* Entrees :                                                                */
    /* Sorties :                                                                */
    /*--------------------------------------------------------------------------*/
    extern "C" void putPixel(void);

    /*--------------------------------------------------------------------------*/
    /* Nom     : getPixel                                                       */
    /* But     : Indique la couleur du point dans la fenetre graphique a la     */
    /*           position courante.                                             */
    /* Entrees :                                                                */
    /* Sorties : la couleur du pixel                                            */
    /*--------------------------------------------------------------------------*/
    extern "C" Color getPixel(void);
  };
};

