Files
snake2025/MLV/MLV_shape.h
2025-03-26 09:05:12 +01:00

415 lines
14 KiB
C

/*
* 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_shape.h
*
* \author Adrien Boussicault
* \author Marc Zipstein
*
* \brief Ce fichier définit tout les prototypes des fonctions permettant de
* dessiner des figures.
*
*
*/
#ifndef __MLV__MLV_FIGURES_H__
#define __MLV__MLV_FIGURES_H__
#include "MLV_color.h"
#include "MLV_image.h"
#ifdef __cplusplus
extern "C" {
#endif
/** \~french
* \brief Dessine un cercle à une position et un rayon spécifiés en paramètres.
**
* \param x La coordonnée en X du centre.
* \param y La coordonnée en Y du centre.
* \param radius Le rayon du cercle.
* \param color La couleur du tracé.
*/
void MLV_draw_circle(int x, int y, int radius, MLV_Color color);
/** \~french
* \brief Dessine un disque plein dont le centre et le rayon sont passés en
* paramètres.
*
* \param x La coordonnée en X du centre.
* \param y La coordonnée en Y du centre.
* \param radius Le rayon du cercle.
* \param color La couleur du tracé.
*/
void MLV_draw_filled_circle(int x, int y, int radius, MLV_Color color);
/** \~french
* \brief Dessine une ellipse.
*
* \param x La coordonnée en X du centre de l'ellipse.
* \param y La coordonnée en Y du centre de l'ellipse.
* \param radius_x Le rayon en X de l'ellipse.
* \param radius_y Le rayon en Y de l'ellipse.
* \param color La couleur du tracé.
*/
void MLV_draw_ellipse(
int x, int y, int radius_x, int radius_y, MLV_Color color
);
/** \~french
* \brief Dessine une ellipse pleine.
*
* \param x La coordonnée en X du centre de l'ellipse.
* \param y La coordonnée en Y du centre de l'ellipse.
* \param radius_x Le rayon en X de l'ellipse.
* \param radius_y Le rayon en Y de l'ellipse.
* \param color La couleur du tracé.
*/
void MLV_draw_filled_ellipse(
int x, int y, int radius_x, int radius_y, MLV_Color color
);
/** \~french
* \brief Dessine un polygone à partir d'une liste de sommets.
*
* \param vx La liste des coordonnées en X des différents sommets du polygone.
* \param vy La liste des coordonnées en Y des différents sommets du polygone.
* \param nb_points Le nombre de sommets du polygone.
* \param color La couleur du tracé.
*/
void MLV_draw_polygon(
const int* vx, const int* vy, int nb_points, MLV_Color color
);
/** \~french
* \brief Dessine un polygone plein à partir d'une liste de sommets.
*
* \param vx La liste des coordonnées en X des différents sommets du polygone.
* \param vy La liste des coordonnées en Y des différents sommets du polygone.
* \param nb_points Le nombre de sommets du polygone.
* \param color La couleur du tracé.
*/
void MLV_draw_filled_polygon(
const int* vx, const int* vy, int nb_points, MLV_Color color
);
/** \~french
* \brief Dessine une courbe de Bézier à partir d'une liste de sommets.
*
* \param vx La liste des coordonnées en X des différents sommets de la courbe.
* \param vy La liste des coordonnées en Y des différents sommets de la courbe.
* \param nb_points Le nombre de sommets disponibles pour dessiner la courbe de
* Bézier.
* \param color La couleur du tracé.
*/
void MLV_draw_bezier_curve(
const int* vx, const int* vy, int nb_points, MLV_Color color
);
/** \~french
* \brief Dessine un polygone plein à partir d'une liste de sommets.
*
* \param vx La liste des coordonnées en X des différents sommets du polygone.
* \param vy La liste des coordonnées en Y des différents sommets du polygone.
* \param nb_points Le nombre de sommets du polygone.
* \param color La couleur du tracé.
*/
void MLV_draw_filled_polygon(
const int* vx, const int* vy, int nb_points, MLV_Color color
);
/** \~french
* \brief Dessine un rectangle dont la taille, la couleur et la position du
* sommet Nord-Ouest sont données en paramètres.
*
* \param x La coordonnée en X du sommet Nord-Ouest du rectangle.
* \param y La coordonnée en Y du sommet Nord-Ouest du rectangle.
* \param width La largeur du rectangle.
* \param height La hauteur du rectangle.
* \param color La couleur du tracé.
*/
void MLV_draw_rectangle(int x, int y, int width, int height, MLV_Color color);
/** \~french
* \brief Dessine un rectangle dont la taille, la couleur et la position du
* sommet Nord-Ouest sont données en paramètres.
*
* \param x La coordonnée en X du sommet Nord-Ouest du rectangle.
* \param y La coordonnée en Y du sommet Nord-Ouest du rectangle.
* \param width La largeur du rectangle.
* \param height La hauteur du rectangle.
* \param color La couleur du tracé.
*/
void MLV_draw_rectangle(int x, int y, int width, int height, MLV_Color color);
/** \~french
* \brief Dessine un rectangle plein dont la taille, la couleur et la position
* du sommet Nord-Ouest sont données en paramètres.
*
* \param x La coordonnée en X du sommet Nord-Ouest du rectangle.
* \param y La coordonnée en Y du sommet Nord-Ouest du rectangle.
* \param width La largeur du rectangle.
* \param height La hauteur du rectangle.
* \param color La couleur du tracé.
*/
void MLV_draw_filled_rectangle(
int x, int y, int width, int height, MLV_Color color
);
/** \~french
* \brief Dessine une ligne.
*
* \param x1 La coordonnée en X de la première extrémité de la ligne.
* \param y1 La coordonnée en Y de la première extrémité de la ligne.
* \param x2 La coordonnée en X de la deuxième extrémité de la ligne.
* \param y2 La coordonnée en Y de la deuxième extrémité de la ligne.
* \param color La couleur du tracé.
*/
void MLV_draw_line(int x1, int y1, int x2, int y2, MLV_Color color);
/** \~french
* \brief Dessine un pixel dont les coordonnées sont passées en paramètres.
*
* \param x La coordonnée en X du pixel.
* \param y La coordonnée en Y du pixel.
* \param color La couleur du tracé.
*/
void MLV_draw_pixel(int x, int y, MLV_Color color);
/** \~french
* \brief Dessine un point dont les coordonnées sont passées en paramètres.
* Cette fonction est identique à MLV_draw_pixel.
*
* \param x La coordonnée en X du point.
* \param y La coordonnée en Y du point.
* \param color La couleur du tracé.
*/
void MLV_draw_point(int x, int y, MLV_Color color);
///////////////////////////////////////////////////////////////////////////////
// Drawing operation on images //
///////////////////////////////////////////////////////////////////////////////
/** \~french
* \brief Dessine un cercle à une position et un rayon spécifiés en paramètres
* dans une image.
*
* \param x La coordonnée en X du centre.
* \param y La coordonnée en Y du centre.
* \param radius Le rayon du cercle.
* \param color La couleur du tracé.
* \param image L'image dans laquelle la figure est dessinée.
*/
void MLV_draw_circle_on_image(
int x, int y, int radius, MLV_Color color, MLV_Image* image
);
/** \~french
* \brief Dessine un disque plein dont le centre et le rayon sont passés en
* parametres dans une image.
*
* \param x La coordonnée en X du centre.
* \param y La coordonnée en Y du centre.
* \param radius Le rayon du cercle.
* \param color La couleur du tracé.
* \param image L'image dans laquelle la figure est dessinée.
*/
void MLV_draw_filled_circle_on_image(
int x, int y, int radius, MLV_Color color, MLV_Image* image
);
/** \~french
* \brief Dessine une ellipse dans une image.
*
* \param x La coordonnée en X du centre de l'ellipse.
* \param y La coordonnée en Y du centre de l'ellipse.
* \param radius_x Le rayon en X de l'ellipse.
* \param radius_y Le rayon en Y de l'ellipse.
* \param color La couleur du tracé.
* \param image L'image dans laquelle la figure est dessinée.
*/
void MLV_draw_ellipse_on_image(
int x, int y, int radius_x, int radius_y, MLV_Color color, MLV_Image* image
);
/** \~french
* \brief Dessine une ellipse pleine dans une image.
*
* \param x La coordonnée en X du centre de l'ellipse.
* \param y La coordonnée en Y du centre de l'ellipse.
* \param radius_x Le rayon en X de l'ellipse.
* \param radius_y Le rayon en Y de l'ellipse.
* \param color La couleur du tracé.
* \param image L'image dans laquelle la figure est dessinée.
*/
void MLV_draw_filled_ellipse_on_image(
int x, int y, int radius_x, int radius_y, MLV_Color color, MLV_Image* image
);
/** \~french
* \brief Dessine un polygone à partir d'une liste de sommets dans une image.
*
* \param vx La liste des coordonnées en X des différents sommets du polygone.
* \param vy La liste des coordonnées en Y des différents sommets du polygone.
* \param nb_points Le nombre de sommets du polygone.
* \param color La couleur du tracé.
* \param image L'image dans laquelle la figure est dessinée.
*/
void MLV_draw_polygon_on_image(
const int* vx, const int* vy, int nb_points, MLV_Color color, MLV_Image* image
);
/** \~french
* \brief Dessine un polygone plein à partir d'une liste de sommets dans une
* image.
*
* \param vx La liste des coordonnées en X des différents sommets du polygone.
* \param vy La liste des coordonnées en Y des différents sommets du polygone.
* \param nb_points Le nombre de sommets du polygone.
* \param color La couleur du tracé.
* \param image L'image dans laquelle la figure est dessinée.
*/
void MLV_draw_filled_polygon_on_image(
const int* vx, const int* vy, int nb_points, MLV_Color color, MLV_Image* image
);
/** \~french
* \brief Dessine une courbe de Bézier à partir d'une liste de sommets dans une
* image.
*
* \param vx La liste des coordonnées en X des différents sommets de la courbe.
* \param vy La liste des coordonnées en Y des différents sommets de la courbe.
* \param nb_points Le nombre de sommets disponibles pour dessiner la courbe de
* Bézier.
* \param color La couleur du tracé.
* \param image image dans laquelle la figure est dessinée
*/
void MLV_draw_bezier_curve_on_image(
const int* vx, const int* vy, int nb_points, MLV_Color color, MLV_Image* image
);
/** \~french
* \brief Dessine un polygone plein à partir d'une liste de sommets dans une
* image.
*
* \param vx La liste des coordonnées en X des différents sommets du polygone.
* \param vy La liste des coordonnées en Y des différents sommets du polygone.
* \param nb_points Le nombre de sommets du polygone.
* \param color La couleur du tracé.
* \param image L'image dans laquelle la figure est dessinée
*/
void MLV_draw_filled_polygon_on_image(
const int* vx, const int* vy, int nb_points, MLV_Color color, MLV_Image* image
);
/** \~french
* \brief Dessine un rectangle dont la taille, la couleur et la position du
* sommet Nord-Ouest sont données en paramètres dans une image.
*
* \param x La coordonnée en X du sommet Nord-Ouest du rectangle.
* \param y La coordonnée en Y du sommet Nord-Ouest du rectangle.
* \param width La largeur du rectangle.
* \param height La hauteur du rectangle.
* \param color La couleur du rectangle.
* \param image L'image dans laquelle la figure est dessinée .
*/
void MLV_draw_rectangle_on_image(
int x, int y, int width, int height, MLV_Color color, MLV_Image* image
);
/** \~french
* \brief Dessine un rectangle dont la taille, la couleur et la position du
* sommet Nord-Ouest sont données en paramètres dans une image.
*
* \param x La coordonnée en X du sommet Nord-Ouest du rectangle.
* \param y La coordonnée en Y du sommet Nord-Ouest du rectangle.
* \param width La largeur du rectangle.
* \param height La hauteur du rectangle.
* \param color La couleur du rectangle.
* \param image L'image dans laquelle la figure est dessinée.
*/
void MLV_draw_rectangle_on_image(
int x, int y, int width, int height, MLV_Color color, MLV_Image* image
);
/** \~french
* \brief Dessine un rectangle plein dont la taille, la couleur et la position
* du sommet Nord-Ouest sont données en paramètres dans une image.
*
* \param x La coordonnée en X du sommet Nord-Ouest du rectangle.
* \param y La coordonnée en Y du sommet Nord-Ouest du rectangle.
* \param width La largeur du rectangle.
* \param height La hauteur du rectangle.
* \param color La couleur du rectangle.
* \param image L'image dans laquelle la figure est dessinée.
*/
void MLV_draw_filled_rectangle_on_image(
int x, int y, int width, int height, MLV_Color color, MLV_Image* image
);
/** \~french
* \brief Dessine une ligne dans une image.
*
* \param x1 La coordonnée en X de la première extrémité de la ligne.
* \param y1 La coordonnée en Y de la première extrémité de la ligne.
* \param x2 La coordonnée en X de la deuxième extrémité de la ligne.
* \param y2 La coordonnée en Y de la deuxième extrémité de la ligne.
* \param color La couleur du tracé.
* \param image L'image dans laquelle la figure est dessinée.
*/
void MLV_draw_line_on_image(
int x1, int y1, int x2, int y2, MLV_Color color, MLV_Image* image
);
/** \~french
* \brief Dessine un pixel dont les coordonnées sont passées en paramètres dans
* une image.
*
* \param x Coordonnée en X du pixel
* \param y Coordonnée en Y du pixel
* \param color Couleur du tracé
* \param image image dans laquelle la figure est dessinée
*/
void MLV_draw_pixel_on_image(int x, int y, MLV_Color color, MLV_Image* image);
/** \~french
* \brief Dessine un point dont les coordonnées sont passées en paramètres.
* Cette fonction est identique à MLV_draw_pixel dans une image.
*
* \param x La coordonnée en X du point.
* \param y La coordonnée en Y du point.
* \param color La couleur du tracé.
* \param image L'image dans laquelle la figure est dessinée.
*/
void MLV_draw_point_on_image(int x, int y, MLV_Color color, MLV_Image* image);
#ifdef __cplusplus
}
#endif
#endif