#ifndef _OTB_TRISKELE_ARRAY_TREE_BASE_HPP #define _OTB_TRISKELE_ARRAY_TREE_BASE_HPP #include #include #include #include #include #include "triskeleBase.hpp" namespace otb { namespace triskele { namespace arrayTree { class GraphWalker; using namespace ::triskele; /*! Nombre de voisins */ typedef uint32_t DimEdge; // ~4*nbPixels (8-connectivity) /*! Type de connectivité possible pour le voisinage */ enum Connectivity { C4 = 0, C6P = 1, C6N = 2, C8 = C6P | C6N }; /*! Définit de quel type est la "sélection" */ enum TileItem { Surface, Horizontal, Vertical }; /* Définit le type d'arbre à construire */ enum TreeType { MIN, MAX, TOS, /*ALPHA*/}; enum treeType { minE, maxE, tosE, treeTypeCount }; /*! Définit les noms des connectivités (utile pour le debug) */ extern std::string connectivityName[]; /*! Définit les noms des tileItem (utile pour le debug) */ extern std::string tileItemName[]; /*! Définit les noms des arbres (utile pour le debug) */ extern std::string treeName[]; /*! * Opérateur de flux sur les connectivités */ inline std::ostream &operator << (std::ostream &out, const Connectivity &c); /*! * Opérateur de flux sur les TileItem */ inline std::ostream &operator << (std::ostream &out, const TileItem &t); template struct Edge { Point points[2]; WeightT weight; }; /*! Effectue l'échange entre 2 Edge */ template inline void swapEdge (Edge &a, Edge &b); /*! Opérateur de flux sur les voisins */ template inline std::ostream &operator << (std::ostream &out, const Edge &edge); template inline std::ostream &printEdge (std::ostream &out, const Edge &edge, const Size &size); /*! Affiche tous les voisins d'un ensemble */ template inline std::ostream &printEdges (std::ostream &out, const std::vector &edges); template inline std::ostream &printEdges (std::ostream &out, const Edge edges[], const Size &size, const DimEdge edgesCount); /*! Affiche tous les voisins d'un ensembles à l'aide de leurs coordonnées */ template inline std::ostream &printEdges (std::ostream &out, const std::vector &edges, const Size &size); #include "triskeleArrayTreeBase.tpp" } // arrayTree } // triskele } // otb #endif // _OTB_TRISKELE_ARRAY_TREE_BASE_HPP