#ifndef _OTB_TRISKELE_I_IMAGE_HPP #define _OTB_TRISKELE_I_IMAGE_HPP #include #include #include #include #include "triskeleBase.hpp" #include "triskeleDebug.hpp" #include "triskeleGdalGetType.hpp" namespace triskele { using namespace std; template class Raster { private: Size size; vector pixels; public: inline void setSize (const Size &size); inline const Size &getSize () const; inline const PixelT *getPixels () const; inline PixelT *getPixels (); inline vector &getPixelsVector (); inline DimNodeId pointIdx (const Point &p) const; inline PixelT getValue (const DimImg &idx) const; inline PixelT getValue (const Point &point) const; inline Raster (const Size &size = NullSize); inline Raster (const Raster &raster, const Rect &tile); inline ~Raster (); }; // ======================================== /** Interface Image */ class IImage { public: void setFileName (string fileName); inline void getGeo (string& projectionRef, vector &geoTransform) const; inline void setGeo (const string& projectionRef, vector geoTransform, const Point &topLeft); inline const string &getFileName () const; inline const Size &getSize () const; inline const DimChanel &getBandCount () const; inline GDALDataType getDataType () const; inline const bool isRead () const; inline const bool isEmpty () const; IImage (const std::string &imageFileName = ""); ~IImage (); void readImage (); void createImage (const Size &size, const GDALDataType &dataType, const DimChanel &nbOutputBands); void createImage (const Size &size, const GDALDataType &dataType, const DimChanel &nbOutputBands, const IImage &inputImage, const Point &topLeft); void close (); template inline void readBand (Raster &raster, const DimChanel &band) const; template inline void readBand (Raster &raster, DimChanel band, const Point &cropOrig, const Size &cropSize) const; template inline void writeBand (PixelT *pixels, DimChanel band) const; private: IImage (const IImage &o) = delete; IImage &operator= (const IImage&) = delete; private: static size_t gdalCount; string projectionRef; vector geoTransform; string fileName; Size size; DimChanel bandCount; GDALDataType dataType; GDALDataset *gdalInputDataset; GDALDataset *gdalOutputDataset; bool read; }; #include "IImage.tpp" } // triskele #endif // _OTB_TRISKELE_I_IMAGE_HPP