1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
/****************************************************************************** * * Name: gdal_rasterband.h * Project: GDAL Core * Purpose: Declaration of GDALRasterBand class * Author: Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 1998, Frank Warmerdam * Copyright (c) 2007-2014, Even Rouault * * SPDX-License-Identifier: MIT ****************************************************************************/ #ifndef GDALRASTERBAND_H_INCLUDED #define GDALRASTERBAND_H_INCLUDED #include "cpl_port.h" #include "gdal.h" #include "gdal_majorobject.h" #include #include #include #include #include #if __cplusplus >= 202002L #include #endif #include //! @cond Doxygen_Suppress #if !defined(OPTIONAL_OUTSIDE_GDAL) #if defined(GDAL_COMPILATION) #define OPTIONAL_OUTSIDE_GDAL(val) #else #define OPTIONAL_OUTSIDE_GDAL(val) = val #endif #endif //! @endcond /* ******************************************************************** */ /* GDALRasterBand */ /* ******************************************************************** */ class GDALAbstractBandBlockCache; class GDALColorTable; class GDALDataset; class GDALDoublePointsCache; class GDALRasterAttributeTable; class GDALRasterBlock; class GDALMDArray; class OGRSpatialReference; /** Range of values found in a mask band */ typedef enum { GMVR_UNKNOWN, /*! Unknown (can also be used for any values between 0 and 255 for a Byte band) */ GMVR_0_AND_1_ONLY, /*! Only 0 and 1 */ GMVR_0_AND_255_ONLY, /*! Only 0 and 255 */ } GDALMaskValueRange; /** Suggested/most efficient access pattern to blocks. */ typedef int GDALSuggestedBlockAccessPattern; /** Unknown, or no particular read order is suggested. */ constexpr GDALSuggestedBlockAccessPattern GSBAP_UNKNOWN = 0; /** Random access to blocks is efficient. */ constexpr GDALSuggestedBlockAccessPattern GSBAP_RANDOM = 1; /** Reading by strips from top to bottom is the most efficient. */ constexpr GDALSuggestedBlockAccessPattern GSBAP_TOP_TO_BOTTOM = 2; /** Reading by strips from bottom to top is the most efficient. */ constexpr GDALSuggestedBlockAccessPattern GSBAP_BOTTOM_TO_TOP = 3; /** Reading the largest chunk from the raster is the most efficient (can be * combined with above values). */ constexpr GDALSuggestedBlockAccessPattern GSBAP_LARGEST_CHUNK_POSSIBLE = 0x100; class GDALComputedRasterBand; /** A rectangular subset of pixels within a raster */ class GDALRasterWindow { public: /** left offset of the window */ int nXOff; /** top offset of the window */ int nYOff; /** window width */ int nXSize; /** window height */ int nYSize; }; /** A single raster band (or channel). */ class CPL_DLL GDALRasterBand : public GDALMajorObject { private: friend class GDALArrayBandBlockCache; friend class GDALHashSetBandBlockCache; friend class GDALRasterBlock; friend class GDALDataset; CPLErr eFlushBlockErr = CE_None; GDALAbstractBandBlockCache *poBandBlockCache = nullptr; CPL_INTERNAL void SetFlushBlockErr(CPLErr eErr); CPL_INTERNAL CPLErr UnreferenceBlock(GDALRasterBlock *poBlock); CPL_INTERNAL void IncDirtyBlocks(int nInc); CPL_INTERNAL CPLErr RasterIOInternal( GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize, int nYSize, void *pData, int nBufXSize, int nBufYSize, GDALDataType eBufType, GSpacing nPixelSpace, GSpacing nLineSpace, GDALRasterIOExtraArg *psExtraArg) CPL_WARN_UNUSED_RESULT; protected: GDALRasterBand(); explicit GDALRasterBand(int bForceCachedIO); //! @cond Doxygen_Suppress GDALRasterBand(GDALRasterBand &&) = default; //! @endcond //! @cond Doxygen_Suppress GDALDataset *poDS = nullptr; int nBand = 0; /* 1 based */ int nRasterXSize = 0; int nRasterYSize = 0; GDALDataType eDataType = GDT_Byte; GDALAccess eAccess = GA_ReadOnly; /* stuff related to blocking, and raster cache */ int nBlockXSize = -1; int nBlockYSize = -1; int nBlocksPerRow = 0; int nBlocksPerColumn = 0; int nBlockReads = 0; int bForceCachedIO = 0; friend class GDALComputedRasterBand; friend class GDALComputedDataset; class GDALRasterBandOwnedOrNot { public: GDALRasterBandOwnedOrNot() = default; GDALRasterBandOwnedOrNot(GDALRasterBandOwnedOrNot &&) = default; void reset() { m_poBandOwned.reset(); m_poBandRef = nullptr; } void resetNotOwned(GDALRasterBand *poBand) { m_poBandOwned.reset(); m_poBandRef = poBand; } void reset(std::unique_ptr poBand) { m_poBandOwned = std::move(poBand); m_poBandRef = nullptr; } const GDALRasterBand *get() const { return static_cast(*this); } GDALRasterBand *get() { return static_cast(*this); } bool IsOwned() const { return m_poBandOwned != nullptr; } operator const GDALRasterBand *() const { return m_poBandOwned ? m_poBandOwned.get() : m_poBandRef; } operator GDALRasterBand *() { return m_poBandOwned ? m_poBandOwned.get() : m_poBandRef; } private: CPL_DISALLOW_COPY_ASSIGN(GDALRasterBandOwnedOrNot) std::unique_ptr m_poBandOwned{}; GDALRasterBand *m_poBandRef = nullptr; }; GDALRasterBandOwnedOrNot poMask{}; bool m_bEnablePixelTypeSignedByteWarning = true; // Remove me in GDAL 4.0. See GetMetadataItem() implementation int nMaskFlags = 0; void InvalidateMaskBand(); friend class GDALProxyRasterBand; friend class GDALDefaultOverviews; CPLErr RasterIOResampled(GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize, int nYSize, void *pData, int nBufXSize, int nBufYSize, GDALDataType eBufType, GSpacing nPixelSpace, GSpacing nLineSpace, GDALRasterIOExtraArg *psExtraArg) CPL_WARN_UNUSED_RESULT; int EnterReadWrite(GDALRWFlag eRWFlag); void LeaveReadWrite(); void InitRWLock(); void SetValidPercent(GUIntBig nSampleCount, GUIntBig nValidCount); mutable GDALDoublePointsCache *m_poPointsCache = nullptr; //! @endcond protected: virtual CPLErr IReadBlock(int nBlockXOff, int nBlockYOff, void *pData) = 0; virtual CPLErr IWriteBlock(int nBlockXOff, int nBlockYOff, void *pData); virtual CPLErr IRasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize, int nYSize, void *pData, int nBufXSize, int nBufYSize, GDALDataType eBufType, GSpacing nPixelSpace, GSpacing nLineSpace, GDALRasterIOExtraArg *psExtraArg) CPL_WARN_UNUSED_RESULT; virtual int IGetDataCoverageStatus(int nXOff, int nYOff, int nXSize, int nYSize, int nMaskFlagStop, double *pdfDataPct); virtual bool EmitErrorMessageIfWriteNotSupported(const char *pszCaller) const; //! @cond Doxygen_Suppress CPLErr OverviewRasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize, int nYSize, void *pData, int nBufXSize, int nBufYSize, GDALDataType eBufType, GSpacing nPixelSpace, GSpacing nLineSpace, GDALRasterIOExtraArg *psExtraArg) CPL_WARN_UNUSED_RESULT; CPLErr TryOverviewRasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize, int nYSize, void *pData, int nBufXSize, int nBufYSize, GDALDataType eBufType, GSpacing nPixelSpace, GSpacing nLineSpace, GDALRasterIOExtraArg *psExtraArg, int *pbTried); CPLErr SplitRasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize, int nYSize, void *pData, int nBufXSize, int nBufYSize, GDALDataType eBufType, GSpacing nPixelSpace, GSpacing nLineSpace, GDALRasterIOExtraArg *psExtraArg) CPL_WARN_UNUSED_RESULT; int InitBlockInfo(); void AddBlockToFreeList(GDALRasterBlock *); bool HasBlockCache() const { return poBandBlockCache != nullptr; } bool HasDirtyBlocks() const; //! @endcond public: ~GDALRasterBand() override; int GetXSize() const; int GetYSize() const; int GetBand() const; GDALDataset *GetDataset() const; GDALDataType GetRasterDataType(void) const; void GetBlockSize(int *pnXSize, int *pnYSize) const; CPLErr GetActualBlockSize(int nXBlockOff, int nYBlockOff, int *pnXValid, int *pnYValid) const; virtual GDALSuggestedBlockAccessPattern GetSuggestedBlockAccessPattern() const; GDALAccess GetAccess(); #ifndef DOXYGEN_SKIP CPLErr RasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize, int nYSize, void *pData, int nBufXSize, int nBufYSize, GDALDataType eBufType, GSpacing nPixelSpace, GSpacing nLineSpace, GDALRasterIOExtraArg *psExtraArg OPTIONAL_OUTSIDE_GDAL(nullptr)) CPL_WARN_UNUSED_RESULT; #else CPLErr RasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize, int nYSize, void *pData, int nBufXSize, int nBufYSize, GDALDataType eBufType, GSpacing nPixelSpace, GSpacing nLineSpace, GDALRasterIOExtraArg *psExtraArg) CPL_WARN_UNUSED_RESULT; #endif template CPLErr ReadRaster(T *pData, size_t nArrayEltCount = 0, double dfXOff = 0, double dfYOff = 0, double dfXSize = 0, double dfYSize = 0, size_t nBufXSize = 0, size_t nBufYSize = 0, GDALRIOResampleAlg eResampleAlg = GRIORA_NearestNeighbour, GDALProgressFunc pfnProgress = nullptr, void *pProgressData = nullptr) const; template CPLErr ReadRaster(std::vector &vData, double dfXOff = 0, double dfYOff = 0, double dfXSize = 0, double dfYSize = 0, size_t nBufXSize = 0, size_t nBufYSize = 0, GDALRIOResampleAlg eResampleAlg = GRIORA_NearestNeighbour, GDALProgressFunc pfnProgress = nullptr, void *pProgressData = nullptr) const; #if __cplusplus >= 202002L //! @cond Doxygen_Suppress template inline CPLErr ReadRaster(std::span pData, double dfXOff = 0, double dfYOff = 0, double dfXSize = 0, double dfYSize = 0, size_t nBufXSize = 0, size_t nBufYSize = 0, GDALRIOResampleAlg eResampleAlg = GRIORA_NearestNeighbour, GDALProgressFunc pfnProgress = nullptr, void *pProgressData = nullptr) const { return ReadRaster(pData.data(), pData.size(), dfXOff, dfYOff, dfXSize, dfYSize, nBufXSize, nBufYSize, eResampleAlg, pfnProgress, pProgressData); } //! @endcond #endif GDALComputedRasterBand operator+(const GDALRasterBand &other) const CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator+(double cst) const CPL_WARN_UNUSED_RESULT; friend GDALComputedRasterBand CPL_DLL operator+(double cst, const GDALRasterBand &other) CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator-(const GDALRasterBand &other) const CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator-(double cst) const CPL_WARN_UNUSED_RESULT; friend GDALComputedRasterBand CPL_DLL operator-(double cst, const GDALRasterBand &other) CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator*(const GDALRasterBand &other) const CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator*(double cst) const CPL_WARN_UNUSED_RESULT; friend GDALComputedRasterBand CPL_DLL operator*(double cst, const GDALRasterBand &other) CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator/(const GDALRasterBand &other) const CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator/(double cst) const CPL_WARN_UNUSED_RESULT; friend GDALComputedRasterBand CPL_DLL operator/(double cst, const GDALRasterBand &other) CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator>(const GDALRasterBand &other) const CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator>(double cst) const CPL_WARN_UNUSED_RESULT; friend GDALComputedRasterBand CPL_DLL operator>(double cst, const GDALRasterBand &other) CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator>=(const GDALRasterBand &other) const CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator>=(double cst) const CPL_WARN_UNUSED_RESULT; friend GDALComputedRasterBand CPL_DLL operator>=(double cst, const GDALRasterBand &other) CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator<(const GDALRasterBand &other) const CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator<(double cst) const CPL_WARN_UNUSED_RESULT; friend GDALComputedRasterBand CPL_DLL operator<(double cst, const GDALRasterBand &other) CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator<=(const GDALRasterBand &other) const CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator<=(double cst) const CPL_WARN_UNUSED_RESULT; friend GDALComputedRasterBand CPL_DLL operator<=(double cst, const GDALRasterBand &other) CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator==(const GDALRasterBand &other) const CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator==(double cst) const CPL_WARN_UNUSED_RESULT; friend GDALComputedRasterBand CPL_DLL operator==(double cst, const GDALRasterBand &other) CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator!=(const GDALRasterBand &other) const CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator!=(double cst) const CPL_WARN_UNUSED_RESULT; friend GDALComputedRasterBand CPL_DLL operator!=(double cst, const GDALRasterBand &other) CPL_WARN_UNUSED_RESULT; #if defined(__GNUC__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Weffc++" #endif GDALComputedRasterBand operator&&(const GDALRasterBand &other) const CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator&&(bool cst) const CPL_WARN_UNUSED_RESULT; friend GDALComputedRasterBand CPL_DLL operator&&(bool cst, const GDALRasterBand &other) CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator||(const GDALRasterBand &other) const CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator||(bool cst) const CPL_WARN_UNUSED_RESULT; friend GDALComputedRasterBand CPL_DLL operator||(bool cst, const GDALRasterBand &other) CPL_WARN_UNUSED_RESULT; #if defined(__GNUC__) #pragma GCC diagnostic pop #endif GDALComputedRasterBand operator!() const CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand operator-() const CPL_WARN_UNUSED_RESULT; GDALComputedRasterBand AsType(GDALDataType) const CPL_WARN_UNUSED_RESULT; CPLErr ReadBlock(int nXBlockOff, int nYBlockOff, void *pImage) CPL_WARN_UNUSED_RESULT; CPLErr WriteBlock(int nXBlockOff, int nYBlockOff, void *pImage) CPL_WARN_UNUSED_RESULT; // This method should only be overloaded by GDALProxyRasterBand virtual GDALRasterBlock * GetLockedBlockRef(int nXBlockOff, int nYBlockOff, int bJustInitialize = FALSE) CPL_WARN_UNUSED_RESULT; // This method should only be overloaded by GDALProxyRasterBand virtual GDALRasterBlock * TryGetLockedBlockRef(int nXBlockOff, int nYBlockYOff) CPL_WARN_UNUSED_RESULT; // This method should only be overloaded by GDALProxyRasterBand virtual CPLErr FlushBlock(int nXBlockOff, int nYBlockOff, int bWriteDirtyBlock = TRUE); unsigned char * GetIndexColorTranslationTo(/* const */ GDALRasterBand *poReferenceBand, unsigned char *pTranslationTable = nullptr, int *pApproximateMatching = nullptr); // New OpengIS CV_SampleDimension stuff. virtual CPLErr FlushCache(bool bAtClosing = false); virtual CPLErr DropCache(); virtual char **GetCategoryNames(); virtual double GetNoDataValue(int *pbSuccess = nullptr); virtual int64_t GetNoDataValueAsInt64(int *pbSuccess = nullptr); virtual uint64_t GetNoDataValueAsUInt64(int *pbSuccess = nullptr); virtual double GetMinimum(int *pbSuccess = nullptr); virtual double GetMaximum(int *pbSuccess = nullptr); virtual double GetOffset(int *pbSuccess = nullptr); virtual double GetScale(int *pbSuccess = nullptr); virtual const char *GetUnitType(); virtual GDALColorInterp GetColorInterpretation(); virtual GDALColorTable *GetColorTable(); virtual CPLErr Fill(double dfRealValue, double dfImaginaryValue = 0); virtual CPLErr SetCategoryNames(char **papszNames); virtual CPLErr SetNoDataValue(double dfNoData); virtual CPLErr SetNoDataValueAsInt64(int64_t nNoData); virtual CPLErr SetNoDataValueAsUInt64(uint64_t nNoData); CPLErr SetNoDataValueAsString(const char *pszNoData, bool *pbCannotBeExactlyRepresented = nullptr); virtual CPLErr DeleteNoDataValue(); virtual CPLErr SetColorTable(GDALColorTable *poCT); virtual CPLErr SetColorInterpretation(GDALColorInterp eColorInterp); virtual CPLErr SetOffset(double dfNewOffset); virtual CPLErr SetScale(double dfNewScale); virtual CPLErr SetUnitType(const char *pszNewValue); virtual CPLErr GetStatistics(int bApproxOK, int bForce, double *pdfMin, double *pdfMax, double *pdfMean, double *padfStdDev); virtual CPLErr ComputeStatistics(int bApproxOK, double *pdfMin, double *pdfMax, double *pdfMean, double *pdfStdDev, GDALProgressFunc, void *pProgressData); virtual CPLErr SetStatistics(double dfMin, double dfMax, double dfMean, double dfStdDev); virtual CPLErr ComputeRasterMinMax(int bApproxOK, double *adfMinMax); virtual CPLErr ComputeRasterMinMaxLocation(double *pdfMin, double *pdfMax, int *pnMinX, int *pnMinY, int *pnMaxX, int *pnMaxY); // Only defined when Doxygen enabled #ifdef DOXYGEN_SKIP CPLErr SetMetadata(char **papszMetadata, const char *pszDomain) override; CPLErr SetMetadataItem(const char *pszName, const char *pszValue, const char *pszDomain) override; #endif virtual const char *GetMetadataItem(const char *pszName, const char *pszDomain = "") override; virtual int HasArbitraryOverviews(); virtual int GetOverviewCount(); virtual GDALRasterBand *GetOverview(int i); virtual GDALRasterBand *GetRasterSampleOverview(GUIntBig); virtual CPLErr BuildOverviews(const char *pszResampling, int nOverviews, const int *panOverviewList, GDALProgressFunc pfnProgress, void *pProgressData, CSLConstList papszOptions); virtual CPLErr AdviseRead(int nXOff, int nYOff, int nXSize, int nYSize, int nBufXSize, int nBufYSize, GDALDataType eBufType, char **papszOptions); virtual CPLErr GetHistogram(double dfMin, double dfMax, int nBuckets, GUIntBig *panHistogram, int bIncludeOutOfRange, int bApproxOK, GDALProgressFunc, void *pProgressData); virtual CPLErr GetDefaultHistogram(double *pdfMin, double *pdfMax, int *pnBuckets, GUIntBig **ppanHistogram, int bForce, GDALProgressFunc, void *pProgressData); virtual CPLErr SetDefaultHistogram(double dfMin, double dfMax, int nBuckets, GUIntBig *panHistogram); virtual GDALRasterAttributeTable *GetDefaultRAT(); virtual CPLErr SetDefaultRAT(const GDALRasterAttributeTable *poRAT); virtual GDALRasterBand *GetMaskBand(); virtual int GetMaskFlags(); virtual CPLErr CreateMaskBand(int nFlagsIn); virtual bool IsMaskBand() const; virtual GDALMaskValueRange GetMaskValueRange() const; virtual CPLVirtualMem * GetVirtualMemAuto(GDALRWFlag eRWFlag, int *pnPixelSpace, GIntBig *pnLineSpace, char **papszOptions) CPL_WARN_UNUSED_RESULT; int GetDataCoverageStatus(int nXOff, int nYOff, int nXSize, int nYSize, int nMaskFlagStop = 0, double *pdfDataPct = nullptr); std::shared_ptr AsMDArray() const; CPLErr InterpolateAtGeolocation( double dfGeolocX, double dfGeolocY, const OGRSpatialReference *poSRS, GDALRIOResampleAlg eInterpolation, double *pdfRealValue, double *pdfImagValue = nullptr, CSLConstList papszTransformerOptions = nullptr) const; virtual CPLErr InterpolateAtPoint(double dfPixel, double dfLine, GDALRIOResampleAlg eInterpolation, double *pdfRealValue, double *pdfImagValue = nullptr) const; //! @cond Doxygen_Suppress class CPL_DLL WindowIterator { public: using iterator_category = std::input_iterator_tag; using difference_type = std::ptrdiff_t; using value_type = GDALRasterWindow; using pointer = value_type *; using reference = value_type &; WindowIterator(int nRasterXSize, int nRasterYSize, int nBlockXSize, int nBlockYSize, int nRow, int nCol); bool operator==(const WindowIterator &other) const; bool operator!=(const WindowIterator &other) const; value_type operator*() const; WindowIterator &operator++(); private: int m_nRasterXSize; int m_nRasterYSize; int m_nBlockXSize; int m_nBlockYSize; int m_row; int m_col; }; class CPL_DLL WindowIteratorWrapper { public: explicit WindowIteratorWrapper(const GDALRasterBand &band, size_t maxSize); uint64_t count() const; WindowIterator begin() const; WindowIterator end() const; private: const int m_nRasterXSize; const int m_nRasterYSize; int m_nBlockXSize; int m_nBlockYSize; }; //! @endcond WindowIteratorWrapper IterateWindows(size_t maxSize = 0) const; #ifndef DOXYGEN_XML void ReportError(CPLErr eErrClass, CPLErrorNum err_no, const char *fmt, ...) const CPL_PRINT_FUNC_FORMAT(4, 5); #endif //! @cond Doxygen_Suppress static void ThrowIfNotSameDimensions(const GDALRasterBand &first, const GDALRasterBand &second); //! @endcond /** Convert a GDALRasterBand* to a GDALRasterBandH. */ static inline GDALRasterBandH ToHandle(GDALRasterBand *poBand) { return static_cast(poBand); } /** Convert a GDALRasterBandH to a GDALRasterBand*. */ static inline GDALRasterBand *FromHandle(GDALRasterBandH hBand) { return static_cast(hBand); } //! @cond Doxygen_Suppress // Remove me in GDAL 4.0. See GetMetadataItem() implementation // Internal use in GDAL only ! virtual void EnablePixelTypeSignedByteWarning(bool b) #ifndef GDAL_COMPILATION CPL_WARN_DEPRECATED("Do not use that method outside of GDAL!") #endif ; //! @endcond private: CPL_DISALLOW_COPY_ASSIGN(GDALRasterBand) }; //! @cond Doxygen_Suppress #define GDAL_EXTERN_TEMPLATE_READ_RASTER(T) \ extern template CPLErr GDALRasterBand::ReadRaster( \ T * pData, size_t nArrayEltCount, double dfXOff, double dfYOff, \ double dfXSize, double dfYSize, size_t nBufXSize, size_t nBufYSize, \ GDALRIOResampleAlg eResampleAlg, GDALProgressFunc pfnProgress, \ void *pProgressData) const; GDAL_EXTERN_TEMPLATE_READ_RASTER(uint8_t) GDAL_EXTERN_TEMPLATE_READ_RASTER(int8_t) GDAL_EXTERN_TEMPLATE_READ_RASTER(uint16_t) GDAL_EXTERN_TEMPLATE_READ_RASTER(int16_t) GDAL_EXTERN_TEMPLATE_READ_RASTER(uint32_t) GDAL_EXTERN_TEMPLATE_READ_RASTER(int32_t) GDAL_EXTERN_TEMPLATE_READ_RASTER(uint64_t) GDAL_EXTERN_TEMPLATE_READ_RASTER(int64_t) #ifdef CPL_FLOAT_H_INCLUDED GDAL_EXTERN_TEMPLATE_READ_RASTER(GFloat16) #endif GDAL_EXTERN_TEMPLATE_READ_RASTER(float) GDAL_EXTERN_TEMPLATE_READ_RASTER(double) // Not allowed by C++ standard // GDAL_EXTERN_TEMPLATE_READ_RASTER(std::complex) // GDAL_EXTERN_TEMPLATE_READ_RASTER(std::complex) GDAL_EXTERN_TEMPLATE_READ_RASTER(std::complex) GDAL_EXTERN_TEMPLATE_READ_RASTER(std::complex) #define GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(T) \ extern template CPLErr GDALRasterBand::ReadRaster( \ std::vector & vData, double dfXOff, double dfYOff, double dfXSize, \ double dfYSize, size_t nBufXSize, size_t nBufYSize, \ GDALRIOResampleAlg eResampleAlg, GDALProgressFunc pfnProgress, \ void *pProgressData) const; GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(uint8_t) GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(int8_t) GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(uint16_t) GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(int16_t) GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(uint32_t) GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(int32_t) GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(uint64_t) GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(int64_t) #ifdef CPL_FLOAT_H_INCLUDED GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(GFloat16) #endif GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(float) GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(double) // Not allowed by C++ standard // GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(std::complex) // GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(std::complex) GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(std::complex) GDAL_EXTERN_TEMPLATE_READ_RASTER_VECTOR(std::complex) //! @endcond #include "gdal_computedrasterband.h" #endif