#ifndef _OTB_TRISKELE_BORDER_HPP #define _OTB_TRISKELE_BORDER_HPP #include #include "triskeleBase.hpp" //#include "triskeleArrayTreeBase.hpp" namespace triskele { /** Border */ class Border { public: /*! Retourne le nombre de pixels à l'aide de la taille */ static inline DimImg getPixelsCount (const Size &size); /*! Retourne la taille que doit faire le tableau simplifié */ static inline DimImg getMapLength (DimImg pixelsCount); /*! Indique qu'une carte de borfure est présente (donc potentiellement des pixels de bordures). */ inline bool exists () const; /*! Vérifie si un index est sur la map ou une bordure, en se basant sur le bit de l'index idx de la map */ inline bool isBorder (DimImg idx) const; /*! Vérifie si un point est sur la map ou une bordure en appelant la méthode précédente après avoir converti le point en index */ inline bool isBorder (const Point &p) const; /*! Supprime toutes les occurences de bordure à l'index idx */ inline void clearBorder (DimImg idx); /*! Supprime toutes les occurences de bordure en appelant la méthode précédente après avoir converti le point en index */ inline void clearBorder (const Point &p); /*! Rajoute une occurence de bordure à l'index indiqué */ inline void setBorder (DimImg idx); /*! Rajoute une occurence de bordure en appelant la méthode précédente après avoir converti le point en index */ inline void setBorder (const Point &p); /*! Construit par défault sans aucune bordure */ inline Border (); /*! Construit Border, les valeurs de map dépendent de defaultVal */ inline Border (const Size &size, bool defaultVal); inline Border (const Border &border, const Rect &tile); inline ~Border (); inline void reset (bool defaultVal); inline const Size &getSize () const; /*! Compte le nombre de pixels considérés comme de la bordure */ inline DimImg borderCount (); private: /*! Nombre de pixels dans l'image */ DimImg pixelsCount; /*! Taille du tableau "simplifié" des pixels */ DimImg mapLength; /*! Dimensions de l'image */ Size size; /*! Tableau "simplifié" des pixels */ vector map; bool defaultVal; inline void createMap (); friend inline ostream &operator << (ostream &out, const Border &border); }; #include "Border.tpp" } // triskele #endif // _OTB_TRISKELE_BORDER_HPP