## Class EcranGraphique

- java.lang.Object
- - EcranGraphique

-     public class EcranGraphique
      extends java.lang.Object

  Affichage graphique haute résolution en Java.
  Les fonctionnalites fournies sont les suivantes:
  - Parametrage et ouverture d'une fenetre de dessin
  - Changement de la taille de la fenetre de dessin
  - Activation/desactivation du changement de la taille de la fenetre de dessin par l'utilisateur
  - Choix de la couleur de trace
  - Trace d'un pixel selon la couleur de trace
  - Trace d'un segment de droite selon la couleur de trace
  - Trace d'un rectangle selon la couleur de trace
  - Remplissage d'un rectangle selon la couleur de trace
  - Trace d'un cercle selon la couleur de trace
  - Remplissage d'un cercle selon la couleur de trace
  - Trace d'une chaine de caracteres selon la couleur de trace
  - Trace d'une image
  - Activation/desactivation du mode de trace "ou exclusif"
  - Activation/desactivation du mode de trace "alpha blending" (transparence)
  - Choix de la couleur d'effacement de la zone de trace
  - Effacement de la zone de trace avec la couleur d'effacement
  - Chargement et téléchargement d'une image au format png
  - Temporisation d'exécution pendant une période de temps comptée en milli-secondes
  - Recuperation des touches de clavier frappees
  - Recuperation des boutons de souris utilises
  - Recuperation des positions en x et en y de la souris
  Apres ouverture de la fenetre de dessin, la creation d'une image suit le schema suivant:
  - Effacement de l'image
  - Execution de tous les appels de fonction correspondant aux elements graphiques a tracer
  - Appel a la fonction EcranGraphique.flush() pour afficher l'image obtenue
  La fenetre reste ouverte jusqu'a ce que l'instruction EcranGraphique.exit() soit executee qui entraine sa fermeture et la terminaison de l'application.
  Les coordonnees utilisees sont comptees en pixels.
  Le repere d'affichage est oriente avec l'axe des x en direction de la droite et l'axe des y en direction du bas de la fenetre d'affichage.
  L'origine est situee en haut a gauche de la fenetre.
  Version:
    1.0, 01/01/13
  Author:
    Nicolas JANEY, nicolas.janey@univ-fcomte.fr

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `COLABA8x13` Police de caracteres "Colaba".
    `static int` | `SYMBOL8x13` Police de caracteres "Symbol".

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `EcranGraphique()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `clear()` Effacement de l'image.
    `static int[][]` | `downloadPNGFile(java.lang.String url)` Telechargement d'une image au format PNG.
    `static void` | `drawCircle(int cx, int cy, int r)` Affichage d'un cercle
    `static void` | `drawImage(int px, int py, int[][] img)` Affichage d'un rectangle de pixels dans la fenetre d'affichage.
    `static void` | `drawLine(int xi, int yi, int xf, int yf)` Affichage d'un segment de droite.
    `static void` | `drawPixel(int x, int y)` Affichage d'un pixel.
    `static void` | `drawRect(int xi, int yi, int tx, int ty)` Affichage d'un rectangle.
    `static void` | `drawString(int x, int y, int police, java.lang.String s)` Tracage d'une chaine de caracteres composee uniquement de caracteres non accentues.
    `static void` | `drawText(int x, int y, int police, java.lang.Object... s)` Tracage d'un texte compose uniquement de caracteres non accentues.
    `static void` | `drawText(int x, int y, int police, java.lang.String format, java.lang.Object... s)` Tracage d'un texte compose uniquement de caracteres non accentues.
    `static void` | `exit()` Interruption du fonctionnement de l'application.
    `static void` | `fillCircle(int cx, int cy, int r)` Remplissage d'un cercle
    `static void` | `fillRect(int xi, int yi, int tx, int ty)` Remplissage d'un rectangle.
    `static void` | `flush()` Affichage de l'image.
    `static int` | `getBufferHeight()` Retour de la resolution en y de la surface d'affichage.
    `static int` | `getBufferWidth()` Retour de la resolution en x de la surface d'affichage.
    `static char` | `getKey()` Retour du dernier caractere tape au clavier (caractere de code ASCII 0 si pas de caractere saisi au clavier).
    `static int` | `getMouseButton()` Retour du dernier bouton utilise de la souris (-1 pour pas de bouton utilise, 1 pour bouton gauche, 2 pour bouton central, 3 pour bouton droit).
    `static int` | `getMouseState()` Retour de l'etat actuel de la souris (0 pour bouton non presse, 1 pour bouton presse, 2 pour clic realise).
    `static int` | `getMouseX()` Retour de la position en x de la souris au sein de la fenetre (-1 si en dehors).
    `static int` | `getMouseY()` Retour de la position en y de la souris au sein de la fenetre (-1 si en dehors).
    `static int` | `getSpecialKey()` Retour du code de la derniere touche "speciale" (touche de curseur, touches de fonction, ...) tapee au clavier (0 si pas de touche frappee).
    `static void` | `init(int px, int py, int wx, int wy, int tx, int ty, java.lang.String titre)` Initialisation et ouverture d'une fenetre d'affichage graphique.
    `static int[][]` | `loadPNGFile(java.lang.String filename)` Chargement d'une image au format PNG.
    `static void` | `setAlpha(double a)` Definition de la valeur alpha (transparence).
    `static void` | `setAlphaBlendingMode(boolean state)` Activation/desactivation du mode d'affichage "alpha blendind" (transparence).
    `static void` | `setClearColor(int r, int v, int b)` Choix de la couleur d'effacement de la fenetre de dessin (noir par defaut).
    `static void` | `setColor(int r, int v, int b)` Definition de la couleur de trace (blanc par defaut).
    `static void` | `setWindowResizable(boolean bool)` Activation/desactivation de la possibilite de changer la taille de la fenetre par l'utilisateur.
    `static void` | `setWindowSize(int tx, int ty)` Changement de la taille de la fenetre d'affichage.
    `static void` | `setXorMode(boolean state)` Activation/desactivation du mode d'affichage xor (ou exclusif).
    `static void` | `wait(int ms)` Temporisation.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### SYMBOL8x13

          public static final int SYMBOL8x13

      Police de caracteres "Symbol".
      See Also:
        Constant Field Values

    - #### COLABA8x13

          public static final int COLABA8x13

      Police de caracteres "Colaba".
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### EcranGraphique

          public EcranGraphique()

  - ### Method Detail

    - #### init

          public static void init(int px,
                                  int py,
                                  int wx,
                                  int wy,
                                  int tx,
                                  int ty,
                                  java.lang.String titre)

      Initialisation et ouverture d'une fenetre d'affichage graphique.
      La fenetre est ouverte et affiche initialement une surface vide a fond noir.
      Une fois la fenetre ouverte, l'application peut etre arretee via l'option "Quitter" du menu "Fichier".
      La fonction main peut etre utilisee normalement pour envoyer des ordres a la fenetre.
      Pour quitter, la fonction main devra executer un EcranGraphique.exit() pour fermer la fenetre et s'interrompre.
      Parameters:
        `px` - L'abscisse du coin superieur gauche de la fenetre.
        `py` - L'ordonnee du coin superieur gauche de la fenetre.
        `wx` - La resolution (nombre de pixels) en x de la fenetre.
        `wy` - La resolution (nombre de pixels) en y de la fenetre.
        `tx` - La resolution (nombre de pixels) en x du buffer d'affichage.
        `ty` - La resolution (nombre de pixels) en y du buffer d'affichage.
        `titre` - Le titre donne a la fenetre.

    - #### setColor

          public static void setColor(int r,
                                      int v,
                                      int b)

      Definition de la couleur de trace (blanc par defaut).
      Parameters:
        `r` - La composante de rouge de la couleur de trace ([0,255]).
        `v` - La composante de vert de la couleur de trace ([0,255]).
        `b` - La composante de bleu de la couleur de trace ([0,255]).

    - #### setAlpha

          public static void setAlpha(double a)

      Definition de la valeur alpha (transparence).
      Parameters:
        `a` - La composante alpha ([0.0,1.0] pour [transparent,opaque]).

    - #### drawPixel

          public static void drawPixel(int x,
                                       int y)

      Affichage d'un pixel.
      Parameters:
        `x` - L'abscisse du pixel.
        `y` - L'ordonnee du pixel.

    - #### drawLine

          public static void drawLine(int xi,
                                      int yi,
                                      int xf,
                                      int yf)

      Affichage d'un segment de droite.
      Parameters:
        `xi` - L'abscisse du pixel initial.
        `yi` - L'ordonnee du pixel initial.
        `xf` - L'abscisse du pixel final.
        `yf` - L'ordonnee du pixel final.

    - #### drawRect

          public static void drawRect(int xi,
                                      int yi,
                                      int tx,
                                      int ty)

      Affichage d'un rectangle.
      Parameters:
        `xi` - La coordonnee x du coin superieur gauche.
        `yi` - La coordonnee y du coin superieur gauche.
        `tx` - La longueur en x du rectangle.
        `ty` - La longueur en y du rectangle.

    - #### fillRect

          public static void fillRect(int xi,
                                      int yi,
                                      int tx,
                                      int ty)

      Remplissage d'un rectangle.
      Parameters:
        `xi` - La coordonnee x du coin superieur gauche.
        `yi` - La coordonnee y du coin superieur gauche.
        `tx` - La longueur en x du rectangle.
        `ty` - La longueur en y du rectangle.

    - #### fillCircle

          public static void fillCircle(int cx,
                                        int cy,
                                        int r)

      Remplissage d'un cercle
      Parameters:
        `cx` - L'abscisse du centre du cercle.
        `cy` - L'ordonnee du centre du cercle.
        `r` - Le rayon du cercle.

    - #### drawCircle

          public static void drawCircle(int cx,
                                        int cy,
                                        int r)

      Affichage d'un cercle
      Parameters:
        `cx` - L'abscisse du centre du cercle.
        `cy` - L'ordonnee du centre du cercle.
        `r` - Le rayon du cercle.

    - #### setClearColor

          public static void setClearColor(int r,
                                           int v,
                                           int b)

      Choix de la couleur d'effacement de la fenetre de dessin (noir par defaut).
      Parameters:
        `r` - La composante de rouge de la couleur d'effacement ([0,255]).
        `v` - La composante de vert de la couleur d'effacement ([0,255]).
        `b` - La composante de bleu de la couleur d'effacement ([0,255]).

    - #### drawString

          public static void drawString(int x,
                                        int y,
                                        int police,
                                        java.lang.String s)

      Tracage d'une chaine de caracteres composee uniquement de caracteres non accentues.
      Parameters:
        `x` - L'abscisse de trace.
        `y` - L'ordonnee de trace.
        `police` - La police de caractere de trace.
        `s` - La chaine a tracer.

    - #### drawText

          public static void drawText(int x,
                                      int y,
                                      int police,
                                      java.lang.Object... s)

      Tracage d'un texte compose uniquement de caracteres non accentues.
      Parameters:
        `x` - L'abscisse de trace.
        `y` - L'ordonnee de trace.
        `police` - La police de caractere de trace.
        `s` - La liste a tracer.

    - #### drawText

          public static void drawText(int x,
                                      int y,
                                      int police,
                                      java.lang.String format,
                                      java.lang.Object... s)

      Tracage d'un texte compose uniquement de caracteres non accentues.
      Parameters:
        `x` - L'abscisse de trace.
        `y` - L'ordonnee de trace.
        `police` - La police de caractere de trace.
        `format` - Le format de tracage texte.
        `s` - La liste a tracer.

    - #### drawImage

          public static void drawImage(int px,
                                       int py,
                                       int[][] img)

      Affichage d'un rectangle de pixels dans la fenetre d'affichage.
      Le tableau passe en parametre decrit l'image a afficher.
      Il s'agit d'un tableau à deux indices.
      La taille selon le premier indice est la resolution en x de l'image.
      La taille selon le second indice est la resolution en y de l'image.
      Chaque entier contenu dans le tableau decrit un pixel de l'image code en 24 bits
      au moyen d'une valeur comprise entre 0 et (2^24)-1=16777215.
      Les 8 bits de poids faible code la composante rouge.
      Les 8 bits de poids intermediaire code la composante verte.
      Les 8 bits de poids fort code la composante bleue.
      L'alpha blending et le mode xor ne sont pas geres.
      Parameters:
        `px` - La position en x du pixel superieur gauche de l'image dessinee.
        `py` - La position en y du pixel superieur gauche de l'image dessinee.
        `img` - Le tableau de int décrivant l'image.

    - #### clear

          public static void clear()

      Effacement de l'image.

    - #### flush

          public static void flush()

      Affichage de l'image.

    - #### exit

          public static void exit()

      Interruption du fonctionnement de l'application.

    - #### getKey

          public static char getKey()

      Retour du dernier caractere tape au clavier (caractere de code ASCII 0 si pas de caractere saisi au clavier).
      Returns:
        Le caractere lu.

    - #### getSpecialKey

          public static int getSpecialKey()

      Retour du code de la derniere touche "speciale" (touche de curseur, touches de fonction, ...) tapee au clavier (0 si pas de touche frappee).
      Returns:
        Le code de la touche frappee.

    - #### getMouseState

          public static int getMouseState()

      Retour de l'etat actuel de la souris (0 pour bouton non presse, 1 pour bouton presse, 2 pour clic realise).
      Returns:
        L'etat.

    - #### getMouseButton

          public static int getMouseButton()

      Retour du dernier bouton utilise de la souris (-1 pour pas de bouton utilise, 1 pour bouton gauche, 2 pour bouton central, 3 pour bouton droit).
      Returns:
        Le bouton utilise.

    - #### getMouseX

          public static int getMouseX()

      Retour de la position en x de la souris au sein de la fenetre (-1 si en dehors).
      Returns:
        La position en x de la souris.

    - #### getMouseY

          public static int getMouseY()

      Retour de la position en y de la souris au sein de la fenetre (-1 si en dehors).
      Returns:
        La position en y de la souris.

    - #### setXorMode

          public static void setXorMode(boolean state)

      Activation/desactivation du mode d'affichage xor (ou exclusif).
      Si activation du mode xor, desactivation automatique du mode alpha blending.
      Parameters:
        `state` - La valeur d'activation/desactivation.

    - #### setAlphaBlendingMode

          public static void setAlphaBlendingMode(boolean state)

      Activation/desactivation du mode d'affichage "alpha blendind" (transparence).
      Si activation du mode alphaBlending, desactivation automatique du mode xor.
      Parameters:
        `state` - La valeur d'activation/desactivation.

    - #### getBufferWidth

          public static int getBufferWidth()

      Retour de la resolution en x de la surface d'affichage.
      Returns:
        La resolution en x de la surface d'affichage.

    - #### getBufferHeight

          public static int getBufferHeight()

      Retour de la resolution en y de la surface d'affichage.
      Returns:
        La resolution en y de la surface d'affichage.

    - #### wait

          public static void wait(int ms)

      Temporisation.
      Parameters:
        `ms` - Le nombre de millisecondes de temporisation.

    - #### loadPNGFile

          public static int[][] loadPNGFile(java.lang.String filename)

      Chargement d'une image au format PNG.
      Parameters:
        `filename` - Le nom du fichier PNG.
      Returns:
        La matrice de pixels lue, null si la lecture echoue.

    - #### downloadPNGFile

          public static int[][] downloadPNGFile(java.lang.String url)

      Telechargement d'une image au format PNG.
      Parameters:
        `url` - L'adresse internet (url) sur laquelle effectuer le telechargement.
      Returns:
        La matrice de pixels lue, null si la lecture echoue.

    - #### setWindowSize

          public static void setWindowSize(int tx,
                                           int ty)

      Changement de la taille de la fenetre d'affichage.
      Parameters:
        `tx` - La nouvelle taille en x.
        `ty` - La nouvelle taille en y.

    - #### setWindowResizable

          public static void setWindowResizable(boolean bool)

      Activation/desactivation de la possibilite de changer la taille de la fenetre par l'utilisateur.
      Parameters:
        `bool` - Le booleen indiquant si la fenetre est ajustable ou non.