triskele/include/triskeleBase.hpp
Git Merciol 2683beda1a modifié : CMakeLists.txt
modifié :         CMakeListsOTB.txt
	modifié :         LICENSE
	modifié :         MakefileNoOTB
	modifié :         Readme.html
	modifié :         Readme.txt
	modifié :         data/10m.tif
	modifié :         data/areaThresholds.txt
	modifié :         data/moiThresholds.txt
	modifié :         data/sdThresholds.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-03-29 09:34:28 +02:00

105 lines
3.2 KiB
C++
Executable File

#ifndef _OTB_TRISKELE_BASE_HPP
#define _OTB_TRISKELE_BASE_HPP
#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <functional>
#include <cstdint>
#include "triskeleDebug.hpp"
#define DimImg_MAX UINT32_MAX
namespace triskele {
using namespace std;
/*! Image band type */
typedef uint16_t DimChanel; // hyperspectral > 256
/*! Image size type */
typedef uint32_t DimSideImg;
/*! Number of pixels */
typedef uint32_t DimImg;
/*! Number of nodes */
typedef uint32_t DimNodeId;
/*! Compte le nombre de bits utilisés pour chaque nombre : bitCount[nombre] = nombre de bits*/
extern int bitCount[];
struct Size {
DimSideImg width, height;
inline Size ();
inline Size (const Size &size);
inline Size (const DimSideImg &w, const DimSideImg &h);
};
inline bool operator== (const Size &s1, const Size &s2);
inline ostream &operator << (ostream &out, const Size &s);
extern Size NullSize;
struct Point {
DimSideImg x, y;
inline Point ();
inline Point (const DimSideImg &abs, const DimSideImg &ord);
inline Point (const Size &size, const DimImg &idx);
};
inline bool operator== (const Point &p1, const Point &p2);
inline ostream &operator << (ostream &out, const Point &p);
extern Point NullPoint;
/*! Convertit un point d'un tableau (on peut imaginer une image à 2 dimension) en un index */
inline DimImg point2idx (const Size &size, const Point &p);
inline DimImg point2idx (const Size &size, const Point &tileOrig, const Point &p);
inline DimImg idxTile2idxRect (const Size &tileSize, const DimImg &tileIdx, const Size &rectSize, const DimImg tileOrig);
struct Rect {
DimSideImg x, y, width, height;
inline Rect ();
inline Rect (const Rect &rect);
inline Rect (const Point &orig, const Size &size);
inline Rect (const DimSideImg &abs, const DimSideImg &ord, const DimSideImg &w, const DimSideImg &h);
inline DimImg relIdx (const Point &absPos) const;
inline DimImg absIdx (const DimImg &relIdx, const Size &rectSize) const;
template<typename T>
inline void cpToTile (const Size &size, const T *src, vector<T> &dst) const;
template<typename T>
inline void cpFromTile (const Size &size, const vector<T> &src, T *dst) const;
template<typename T>
inline void cpFromTileMove (const Size &size, const vector<T> &src, T *dst, const T &move) const;
};
inline bool operator== (const Rect &r1, const Rect &r2);
inline ostream &operator << (ostream &out, const Rect &r);
extern Rect NullRect;
static const DimSideImg printMapMaxSide = 25;
/*! Affiche le contenu d'un tableau en spécifiant sa taille */
template <typename T>
struct CPrintMap {
const T *map;
const Size &size;
DimNodeId maxValues;
inline CPrintMap (const T *map, const Size &size, DimNodeId maxValues = 0);
inline ostream &print (ostream &out) const;
};
template <typename T>
inline CPrintMap<T> printMap (const T *map, const Size &size, DimNodeId maxValues);
template <typename T>
inline ostream &operator << (ostream& out, const CPrintMap<T> &cpm) { return cpm.print (out); }
#include "triskeleBase.tpp"
} // namespace triskele
#endif // _OTB_TRISKELE_BASE_HPP