First commit
This commit is contained in:
306
MLV/MLV_window.h
Normal file
306
MLV/MLV_window.h
Normal file
@@ -0,0 +1,306 @@
|
||||
/*
|
||||
* This file is part of the MLV Library.
|
||||
*
|
||||
* Copyright (C) 2010,2011,2012 Adrien Boussicault, Marc Zipstein
|
||||
*
|
||||
*
|
||||
* This Library is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This Library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this Library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** \~french
|
||||
* \file MLV_window.h
|
||||
* \brief Ce fichier définit les prototypes des fonctions permettant de créer,
|
||||
* initialiser et fermer des fenêtres.
|
||||
*
|
||||
* \author Adrien Boussicault
|
||||
* \author Marc Zipstein
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __MLV__MLV_WINDOW_H__
|
||||
#define __MLV__MLV_WINDOW_H__
|
||||
|
||||
#include "MLV_color.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** \~french
|
||||
* \brief Créé une fenêtre dont la taille, et les différents noms sont passés en
|
||||
* paramètres.
|
||||
*
|
||||
* Cette fonction initialise la bibliothèque MLV.
|
||||
* Un programme donné ne peut pas ouvrir plus d'une fenêtre à la
|
||||
* fois.
|
||||
* Les paramètres largeur et hauteur peuvent éventuellement prendre des valeurs
|
||||
* négatives. Dans ce cas, la fenêtre est dessinée en plein écran.
|
||||
*
|
||||
* \bug BOGUES WINDOWS ET MACOSX UNIQUEMENT\n\n
|
||||
* Sous Windows uniquement, la fenêtre crée ne peut pas toujours être
|
||||
* fermée à l'aide de la croix. En effet, la bibliothèque MLV implémente
|
||||
* une fermeture automatique de la fenêtre lorsque l'utilisateur utilise
|
||||
* la croix. Or, ce mécanisme utilise les threads SDL qui ne sont
|
||||
* malheureusement pas bien supportés sous Windows et MacOSX.\n\n
|
||||
* En fait, la bibliothèque MLV utilise un second thread pour
|
||||
* récuperer en permanance tous les évènements SDL de la pile et pour les
|
||||
* traiter au fur et à mesure de leurs apparitions. OR, sous Windos et
|
||||
* Mac OS X, comme les threads ne fonctionnent pas, la bibliothèque ne peux
|
||||
* pas lire les évènements systèmes comme ceux de la fermeture de la
|
||||
* fenêtre.
|
||||
* Elle n'est donc plus informée de ce qui ce passe.
|
||||
* Pour permettre à la bibliothèque de récupérer ces informations, il vous
|
||||
* suffit de demander un évènement à l'aide de la fonction :
|
||||
* MLV_get_event().
|
||||
* Cela obligera la bibliothèque MLV à dépiler et à traiter tous les
|
||||
* évènements SDL de la pile. Cela aura pour conséquence de traiter
|
||||
* l'évènement système de la fermeture de la fenêtre.
|
||||
* Dans l'implémentation des fonctions : MLV_wait_keyboard(),
|
||||
* MLV_wait_mouse(), etc ..., nous utilisons la fonction MLV_get_event().
|
||||
* C'est pourquoi, la croix fonctionne correctement lorsque le programme
|
||||
* est en attente d'une information provenant de l'utilisateur.
|
||||
*
|
||||
* \param window_name Le nom de la fenêtre.
|
||||
* \param icone_name Le nom de l'icône de la fenêtre.
|
||||
* \param width La largeur de la fenêtre.
|
||||
* \param height La hauteur de la fenêtre.
|
||||
*/
|
||||
void MLV_create_window(
|
||||
const char* window_name, const char* icone_name,
|
||||
unsigned int width, unsigned int height
|
||||
);
|
||||
|
||||
|
||||
/** \~french
|
||||
* \brief Même chose que MLV_create_window(), mais en utilisant une fonte
|
||||
* de caractères particulière.
|
||||
*
|
||||
* \bug Même bogues que la fonction MLV_create_window().
|
||||
*
|
||||
* \param window_name Le nom de la fenêtre.
|
||||
* \param icone_name Le nom de l'icône de la fenêtre.
|
||||
* \param width La largeur de la fenêtre.
|
||||
* \param height La hauteur de la fenêtre.
|
||||
* \param path_to_font Le chemin d'accès vers une fonte de caratères au standard
|
||||
* 'TrueType' (fichiers d'extension .ttf).
|
||||
* \param size_font La taille de la fonte de caractères. la hauteur de la fenêtre.
|
||||
*/
|
||||
void MLV_create_window_with_default_font(
|
||||
const char* window_name, const char* icone_name,
|
||||
unsigned int width, unsigned int height,
|
||||
const char* path_to_font, unsigned int size_font
|
||||
);
|
||||
|
||||
/** \~french
|
||||
* \brief Change la fonte de caractères par défault de la bibliothèque MLV.
|
||||
*
|
||||
* Cette fonction change la fonte de caractères par défault de la bibliothèque.
|
||||
* Cette fonction ne peux s'exécuter qu'après avoir initialisé la bibliothèque
|
||||
* MLV en créant une fenêtre à l'aide de la fonction MLV_create_window().
|
||||
* Cette fonction n'a pas de sens si vous ne souhaitez pas changer de fontes
|
||||
* plusieurs fois durant l'exécution de votre programme.
|
||||
* Si vous n'utilisez qu'une seule fonte de caractères, il vaut mieux
|
||||
* l'indiquer à la bibliothèque MLV lors de la création de la fenêtre en utilisant
|
||||
* la fonction: MLV_create_window_with_default_font().
|
||||
*
|
||||
* \param path_to_font Le chemin d'accès vers une fonte de caratères au
|
||||
* standard "TrueType" (fichiers d'extension .ttf).
|
||||
* \param size_font La taille de la fonte de caractères.
|
||||
*/
|
||||
void MLV_change_default_font( const char* path_to_font, unsigned int size_font );
|
||||
|
||||
/** \~french
|
||||
* \brief Même chose que MLV_create_window(), mais configure la fenêtre en
|
||||
* mode plein écran.
|
||||
*
|
||||
* \bug Même bogues que MLV_create_window().
|
||||
*
|
||||
* \param window_name Le nom de la fenêtre.
|
||||
* \param icone_name Le nom de l'icône de la fenêtre.
|
||||
* \param width La largeur de la fenêtre ( en mode plein écran, cette valeur
|
||||
* correspond à la coordonnée en X de la résolution de l'image ).
|
||||
* \param height La hauteur de la fenêtre ( en mode plein écran, cela
|
||||
* correspond à la coordonnée en Y de la résolution de l'image ).
|
||||
*/
|
||||
void MLV_create_full_screen_window(
|
||||
const char* window_name, const char* icone_name,
|
||||
unsigned int width, unsigned int height
|
||||
);
|
||||
|
||||
/** \~french
|
||||
* \brief Même chose que MLV_create_window(), mais configure la fenêtre en
|
||||
* mode plein écran.
|
||||
*
|
||||
* \bug Même bogues que MLV_create_window().
|
||||
*
|
||||
* \param window_name Le nom de la fenêtre.
|
||||
* \param icone_name Le nom de l'icône de la fenêtre.
|
||||
* \param width La largeur de la fenêtre ( en mode plein écran, cette valeur
|
||||
* correspond à la coordonnée en X de la résolution de l'image ).
|
||||
* \param height La hauteur de la fenêtre ( en mode plein écran, cela
|
||||
* correspond à la coordonnée en Y de la résolution de l'image ).
|
||||
* \param path_to_font Le chemin d'accès vers une fonte de caratères au
|
||||
* standard "TrueType" (fichiers d'extension .ttf).
|
||||
* \param size_font La taille de la fonte de caractères.
|
||||
*/
|
||||
void MLV_create_full_screen_window_with_default_font(
|
||||
const char* window_name, const char* icone_name,
|
||||
unsigned int width, unsigned int height,
|
||||
const char* path_to_font, unsigned int size_font
|
||||
);
|
||||
|
||||
|
||||
/** \~french
|
||||
* \brief Affiche la fenêtre en plein ecran.
|
||||
*
|
||||
* La résolution de l'image est donnée alors par la taille de l'image.
|
||||
* Pour que l'application soit en plein écran, il faut que la taille de la
|
||||
* fenêtre soit compatible avec la résolution de l'écran.
|
||||
*/
|
||||
void MLV_enable_full_screen();
|
||||
|
||||
/** \~french
|
||||
* \brief Désactve le mode plein écran de la fenêtre.
|
||||
*/
|
||||
void MLV_disable_full_screen();
|
||||
|
||||
/** \~french
|
||||
* \brief Test si l'affichage est en mode plein écran ou en mode fenêtre.
|
||||
*
|
||||
* \return Renvoie 1 si l'affichage est en mode plein écran, 0 sinon.
|
||||
*/
|
||||
int MLV_is_full_screen();
|
||||
|
||||
/** \~french
|
||||
* \brief Change la taille de la fenêtre.
|
||||
*
|
||||
* Si la fenêtre est configurée en mode plein ecran, l'application reste alors
|
||||
* en mode plein écran.
|
||||
* Pour que l'application soit en plein écran, il faut que la taille de la
|
||||
* fenêtre soit compatible avec la résolution de l'écran.
|
||||
* De plus, en mode plein écran, la taille de la fenêtre correspond à la
|
||||
* résolution de l'image sur l'écran.
|
||||
*
|
||||
* \param width la largeur de la fenêtre
|
||||
* \param height la hauteur de la fenêtre
|
||||
*/
|
||||
void MLV_change_window_size( unsigned int width, unsigned int height );
|
||||
|
||||
/** \~french
|
||||
* \brief Change les intitulés de la fenêtre principale.
|
||||
*
|
||||
* \param window_name Intitulé apparaissaissant sur la barre de la fenêtre.
|
||||
* \param icone_name Intitulé apparaissaissant dans la barre des tâches.
|
||||
*/
|
||||
void MLV_change_window_caption(
|
||||
const char* window_name, const char* icone_name
|
||||
);
|
||||
|
||||
/** \~french
|
||||
* \brief Renvoie dans les paramètres, la hauteur et la largeur de la fentre.
|
||||
*
|
||||
* \param width La largeur de la fenêtre.
|
||||
* \param height La hauteur de la fenêtre.
|
||||
*/
|
||||
void MLV_get_window_size( unsigned int* width, unsigned int* height );
|
||||
|
||||
/** \~french
|
||||
* \brief Retourne la hauteur de la fenêtre.
|
||||
*/
|
||||
int MLV_get_window_height( );
|
||||
|
||||
/** \~french
|
||||
* \brief Retourne la largeur de la fenêtre.
|
||||
*/
|
||||
int MLV_get_window_width( );
|
||||
|
||||
/** \~french
|
||||
* \brief Éfface la fenêtre et la remplace par un monochrome de la couleur
|
||||
* donnée en paramètre.
|
||||
*
|
||||
* \param color La couleur du fond de la fênetre.
|
||||
*/
|
||||
void MLV_clear_window( MLV_Color color );
|
||||
|
||||
/** \~french
|
||||
* \brief Ferme la fenêtre de la bibliothèque MLV.
|
||||
*
|
||||
* Cette fonction libère correctement toutes les données qui ont été crées par la
|
||||
* bibliothèque MLV
|
||||
*
|
||||
*/
|
||||
void MLV_free_window();
|
||||
|
||||
/** \~french
|
||||
* \brief Actualise l'affichage de la fenêtre.
|
||||
*
|
||||
* Vois La fonction MLV_update_window
|
||||
*
|
||||
* Lorsque vous utilisez des fonctions de dessins, les différents changements
|
||||
* effectués ne sont pas visibles. Pour les afficher vous devez utiliser cette
|
||||
* fonction.
|
||||
*/
|
||||
void MLV_actualise_window();
|
||||
|
||||
/** \~french
|
||||
* \brief Met à jour l'affichage de la fenêtre.
|
||||
*
|
||||
* Lorsque vous utilisez des fonctions de dessins, les différents changements
|
||||
* effectués ne sont pas visibles. Pour les afficher vous devez utiliser cette
|
||||
* fonction.
|
||||
*/
|
||||
void MLV_update_window();
|
||||
|
||||
/** \~french
|
||||
* \brief Exécute la fonction de call back donnée en paramètre lorsque le système
|
||||
* envoie un signal d'arrêt, ou lorsque l'utilisateur clique sur la croix de la
|
||||
* fenêtre.
|
||||
*
|
||||
* La fonction de call back est alors exécutée avec en
|
||||
* paramêtre un pointeur vers une structure de donnée qui
|
||||
* est aussi donné en paramètre à la fonction
|
||||
* MLV_execute_at_exit().
|
||||
*
|
||||
* \param function Le pointeur de la fonction de call back qui doit être exécutée.
|
||||
* \param data La Donnée à passer en paramètre à la fonction de call back lors de
|
||||
* son exécution.
|
||||
*/
|
||||
void MLV_execute_at_exit( void (*function)(void*), void* data );
|
||||
|
||||
/** \~french
|
||||
* \brief Renvoie dans les paramètres, la hauteur et la largeur de
|
||||
* l'environement de bureau de l'ordinateur.
|
||||
*
|
||||
* \param width La largeur du bureau.
|
||||
* \param height La hauteur du bureau.
|
||||
*/
|
||||
void MLV_get_desktop_size( unsigned int* width, unsigned int* height );
|
||||
|
||||
/** \~french
|
||||
* \brief Renvoie la hauteur de l'environement de bureau de l'ordinateur.
|
||||
*/
|
||||
int MLV_get_desktop_height( );
|
||||
|
||||
/** \~french
|
||||
* \brief Renvoie la largeur de l'environement de bureau de l'ordinateur.
|
||||
*/
|
||||
int MLV_get_desktop_width( );
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user