triskele/include/ArrayTree/triskeleArrayTreeBase.hpp
Git Merciol f687310939 modifié : CMakeLists.txt
modifié :         CMakeListsOTB.txt
	modifié :         LICENSE
	modifié :         MakefileNoOTB
	modifié :         Readme.html
	modifié :         Readme.txt
	modifié :         include/Appli/Option.hpp
	modifié :         include/Appli/Selected.hpp
	modifié :         include/Appli/Selected.tpp
	modifié :         include/ArrayTree/ArrayTreeBuilder.hpp
	modifié :         include/ArrayTree/ArrayTreeBuilder.tpp
	modifié :         include/ArrayTree/Border.hpp
	modifié :         include/ArrayTree/Border.tpp
	modifié :         include/ArrayTree/GraphWalker.hpp
	modifié :         include/ArrayTree/GraphWalker.tpp
	modifié :         include/ArrayTree/Leader.hpp
	modifié :         include/ArrayTree/Leader.tpp
	modifié :         include/ArrayTree/Weight.hpp
	modifié :         include/ArrayTree/Weight.tpp
	modifié :         include/ArrayTree/triskeleArrayTreeBase.hpp
	modifié :         include/ArrayTree/triskeleArrayTreeBase.tpp
	modifié :         include/ArrayTree/triskeleSort.hpp
	modifié :         include/ArrayTree/triskeleSort.tpp
	modifié :         include/AttributeProfiles.hpp
	modifié :         include/AttributeProfiles.tpp
	modifié :         include/Attributes/AreaAttributes.hpp
	modifié :         include/Attributes/AreaAttributes.tpp
	modifié :         include/Attributes/AverageAttributes.hpp
	modifié :         include/Attributes/AverageAttributes.tpp
	modifié :         include/Attributes/MoIAttributes.hpp
	modifié :         include/Attributes/MoIAttributes.tpp
	modifié :         include/Attributes/SDAttributes.hpp
	modifié :         include/Attributes/SDAttributes.tpp
	modifié :         include/Attributes/WeightAttributes.hpp
	modifié :         include/Attributes/WeightAttributes.tpp
	modifié :         include/Attributes/XYAttributes.hpp
	modifié :         include/Attributes/XYAttributes.tpp
	modifié :         include/CompAttribute.hpp
	modifié :         include/CompAttribute.tpp
	modifié :         include/IImage.hpp
	modifié :         include/IImage.tpp
	modifié :         include/QuadTree/QuadTreeBuilder.hpp
	modifié :         include/Tree.hpp
	modifié :         include/Tree.tpp
	modifié :         include/TreeBuilder.hpp
	modifié :         include/TreeBuilder.tpp
	modifié :         include/TreeStats.hpp
	modifié :         include/TreeStats.tpp
	modifié :         include/XMLTree/XMLTreeBuilder.hpp
	modifié :         include/triskeleBase.hpp
	modifié :         include/triskeleBase.tpp
	modifié :         include/triskeleDealThreads.hpp
	modifié :         include/triskeleDealThreads.tpp
	modifié :         include/triskeleDebug.hpp
	modifié :         include/triskeleGdalGetType.hpp
	modifié :         otb-module.cmake
	modifié :         src/Appli/Option.cpp
	modifié :         src/Appli/Selected.cpp
	modifié :         src/ArrayTree/triskeleArrayTreeBase.cpp
	modifié :         src/CMakeLists.txt
	modifié :         src/IImage.cpp
	modifié :         src/PerfArrayTreeBuilder.cpp
	modifié :         src/QuadTree/QuadTreeBuilder.cpp
	modifié :         src/TestArrayTreeBuilder.cpp
	modifié :         src/Tree.cpp
	modifié :         src/TreeStats.cpp
	modifié :         src/XMLTree/XMLTreeBuilder.cpp
	modifié :         src/apGenerator.cpp
	modifié :         src/triskeleBase.cpp
	modifié :         src/triskeleDebug.cpp
2018-04-02 19:25:37 +02:00

96 lines
2.9 KiB
C++

#ifndef _OTB_TRISKELE_ARRAY_TREE_BASE_HPP
#define _OTB_TRISKELE_ARRAY_TREE_BASE_HPP
#include <iostream>
#include <string>
#include <vector>
#include <boost/assert.hpp>
#include <climits>
#include "triskeleBase.hpp"
namespace otb {
namespace triskele {
namespace arrayTree {
class GraphWalker;
using namespace ::triskele;
using namespace std;
/*! 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, TreeTypeCard};
/*! Définit les noms des connectivités (utile pour le debug) */
extern string connectivityName[];
/*! Définit les noms des tileItem (utile pour le debug) */
extern string tileItemName[];
/*! Définit les noms des arbres (utile pour le debug) */
extern string treeTypeLabels[];
/*!
* Opérateur de flux sur les connectivités
*/
inline ostream &operator << (ostream &out, const Connectivity &c);
/*!
* Opérateur de flux sur les TileItem
*/
inline ostream &operator << (ostream &out, const TileItem &t);
template <typename WeightT> struct Edge {
Point points[2];
WeightT weight;
};
/*! Effectue l'échange entre 2 Edge */
template <typename WeightT>
inline void swapEdge (Edge<WeightT> &a, Edge<WeightT> &b);
/*! Opérateur de flux sur les voisins */
template <typename WeightT>
struct CPrintEdge {
const Edge<WeightT> &edge;
const Size &size;
inline CPrintEdge (const Edge<WeightT> &edge, const Size &size);
inline ostream &print (ostream &out) const;
};
template <typename WeightT>
inline CPrintEdge<WeightT> printEdge (const Edge<WeightT> &edge, const Size &size);
template <typename WeightT>
inline ostream &operator << (ostream& out, const CPrintEdge<WeightT> &cpe) { return cpe.print (out); }
template <typename WeightT>
struct CPrintEdges {
const Edge<WeightT> *edges;
const Size &size;
const DimEdge edgesCount;
inline CPrintEdges (const Edge<WeightT> edges[], const Size &size, const DimEdge edgesCount);
inline ostream &print (ostream &out) const;
};
template <typename WeightT>
inline CPrintEdges<WeightT> printEdges (const Edge<WeightT> edges[], const Size &size, const DimEdge edgesCount);
template <typename WeightT>
inline ostream &operator << (ostream& out, const CPrintEdges<WeightT> &cpe) { return cpe.print (out); }
#include "triskeleArrayTreeBase.tpp"
} // arrayTree
} // triskele
} // otb
#endif // _OTB_TRISKELE_ARRAY_TREE_BASE_HPP