140 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| /**
 | |
|  *
 | |
|  * @file    triangle.h
 | |
|  * @author  Alexandre Sollier
 | |
|  * @date    Janvier 2020
 | |
|  * @version 1.0
 | |
|  * @brief   Représente un triangle
 | |
|  *
 | |
|  **/
 | |
| 
 | |
| #ifndef TRIANGLE_H
 | |
| #define TRIANGLE_H
 | |
| 
 | |
| #include "shape.h"
 | |
| 
 | |
| #include "../transition/itransitionable.h"
 | |
| 
 | |
| namespace nsShape
 | |
| {
 | |
| 
 | |
| /**
 | |
|  * @class Triangle
 | |
|  * @brief Classe représentant un triangle
 | |
|  */
 | |
| class Triangle : public Shape, public nsTransition::ITransitionable
 | |
| {
 | |
| 
 | |
| public:
 | |
|     /**
 | |
|      * @brief TransitionIds : Liste de toutes les transitions que cet élément peut exécuter
 | |
|      */
 | |
|     enum TransitionIds {
 | |
|         TRANSITION_FILL_COLOR_RGB, /**< Transition pour la couleur de remplissage */
 | |
|         TRANSITION_FILL_COLOR_ALPHA, /**< Transition pour la transparence de remplissage */
 | |
|         TRANSITION_BORDER_COLOR_RGB, /**< Transition pour la couleur de bord */
 | |
|         TRANSITION_BORDER_COLOR_ALPHA, /**< Transition pour la transparence de bord */
 | |
|         TRANSITION_FIRST_POSITION, /**< Transition pour la Position du premier sommet */
 | |
|         TRANSITION_SECOND_POSITION, /**< Transition pour la Position du second sommet */
 | |
|         TRANSITION_THIRD_POSITION, /**< Transition pour la Position du troisième sommet */
 | |
|     };
 | |
| 
 | |
|     /**
 | |
|      * @brief Constructeur pour la classe Triangle
 | |
|      * @param[in] firstPosition : Position du premier sommet
 | |
|      * @param[in] secondPosition : Position du second sommet
 | |
|      * @param[in] thirdPosition : Position du troisième sommet
 | |
|      * @param[in] fillColor : Couleur de remplissage
 | |
|      * @param[in] borderColor : Couleur de bord
 | |
|      * @fn Triangle(const nsGraphics::Vec2D& firstPosition, const nsGraphics::Vec2D& secondPosition, const nsGraphics::Vec2D& thirdPosition,
 | |
|              const nsGraphics::RGBAcolor& fillColor, const nsGraphics::RGBAcolor& borderColor = nsGraphics::KTransparent);
 | |
|      */
 | |
|     Triangle(const nsGraphics::Vec2D& firstPosition, const nsGraphics::Vec2D& secondPosition, const nsGraphics::Vec2D& thirdPosition,
 | |
|              const nsGraphics::RGBAcolor& fillColor, const nsGraphics::RGBAcolor& borderColor = nsGraphics::KTransparent);
 | |
| 
 | |
|     /**
 | |
|      * @brief Destructeur virtuel pour la classe Triangle
 | |
|      * @fn virtual ~Triangle() override = default;
 | |
|      */
 | |
|     virtual ~Triangle() override = default;
 | |
| 
 | |
|     virtual void draw(MinGL& window) const override;
 | |
| 
 | |
|     virtual void getValues(const int &id, std::vector<float> &values) override;
 | |
|     virtual void setValues(const int &id, const std::vector<float> &values) override;
 | |
| 
 | |
|     /**
 | |
|      * @brief Opérateur de décalage
 | |
|      * @param[in] position : Position a additionner
 | |
|      * @fn Triangle operator+(const nsGraphics::Vec2D& Position) const
 | |
|      */
 | |
|     Triangle operator+(const nsGraphics::Vec2D& position) const;
 | |
| 
 | |
|     /**
 | |
|      * @brief Opérateur de réduction
 | |
|      * @param[in] f : Nombre avec lequel multiplier la Position actuelle
 | |
|      * @fn Triangle operator*(const float& f) const
 | |
|      */
 | |
|     Triangle operator*(const float& f) const;
 | |
| 
 | |
|     /**
 | |
|      * @brief Récupère la Position du premier sommet du triangle
 | |
|      * @fn const nsGraphics::Vec2D& getFirstPosition() const;
 | |
|      */
 | |
|     const nsGraphics::Vec2D& getFirstPosition() const;
 | |
| 
 | |
|     /**
 | |
|      * @brief Définit la nouvelle Position du premier sommet du triangle
 | |
|      * @param[in] firstPosition : Nouvelle Position du premier sommet
 | |
|      * @fn void setFirstPosition(const nsGraphics::Vec2D &firstPosition);
 | |
|      */
 | |
|     void setFirstPosition(const nsGraphics::Vec2D &firstPosition);
 | |
| 
 | |
|     /**
 | |
|      * @brief Récupère la Position du second sommet du triangle
 | |
|      * @fn const nsGraphics::Vec2D& getSecondPosition() const;
 | |
|      */
 | |
|     const nsGraphics::Vec2D& getSecondPosition() const;
 | |
| 
 | |
|     /**
 | |
|      * @brief Définit la nouvelle Position du second sommet du triangle
 | |
|      * @param[in] secondPosition : Nouvelle Position du second sommet
 | |
|      * @fn void setSecondPosition(const nsGraphics::Vec2D &secondPosition);
 | |
|      */
 | |
|     void setSecondPosition(const nsGraphics::Vec2D &secondPosition);
 | |
| 
 | |
|     /**
 | |
|      * @brief Récupère la Position du troisième sommet du triangle
 | |
|      * @fn const nsGraphics::Vec2D& getThirdPosition() const;
 | |
|      */
 | |
|     const nsGraphics::Vec2D& getThirdPosition() const;
 | |
| 
 | |
|     /**
 | |
|      * @brief Définit la nouvelle Position du troisième sommet du triangle
 | |
|      * @param[in] thirdPosition : Nouvelle Position du troisième sommet
 | |
|      * @fn void setThirdPosition(const nsGraphics::Vec2D &thirdPosition);
 | |
|      */
 | |
|     void setThirdPosition(const nsGraphics::Vec2D &thirdPosition);
 | |
| 
 | |
| private:
 | |
|     /**
 | |
|      * @brief m_firstPosition : Position du premier sommet
 | |
|      */
 | |
|     nsGraphics::Vec2D m_firstPosition;
 | |
| 
 | |
|     /**
 | |
|      * @brief m_secondPosition : Position du second sommet
 | |
|      */
 | |
|     nsGraphics::Vec2D m_secondPosition;
 | |
| 
 | |
|     /**
 | |
|      * @brief m_thirdPosition : Position du troisième sommet
 | |
|      */
 | |
|     nsGraphics::Vec2D m_thirdPosition;
 | |
| 
 | |
| }; // class Triangle
 | |
| 
 | |
| } // namespace nsShape
 | |
| 
 | |
| #endif // TRIANGLE_H
 |