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
|