Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsrasterhistogram.h 3 : : ------------------- 4 : : begin : July 2012 5 : : copyright : (C) 2012 by Radim Blazek 6 : : email : radim dot blazek at gmail dot com 7 : : ***************************************************************************/ 8 : : 9 : : /*************************************************************************** 10 : : * * 11 : : * This program is free software; you can redistribute it and/or modify * 12 : : * it under the terms of the GNU General Public License as published by * 13 : : * the Free Software Foundation; either version 2 of the License, or * 14 : : * (at your option) any later version. * 15 : : * * 16 : : ***************************************************************************/ 17 : : 18 : : #ifndef QGSRASTERHISTOGRAM 19 : : #define QGSRASTERHISTOGRAM 20 : : 21 : : #include "qgis_core.h" 22 : : #include "qgsrectangle.h" 23 : : #include <QString> 24 : : #include <QVector> 25 : : 26 : : #include <limits> 27 : : 28 : : /** 29 : : * \ingroup core 30 : : * \brief The QgsRasterHistogram is a container for histogram of a single raster band. 31 : : * It is used to cache computed histograms in raster providers. 32 : : */ 33 : 0 : class CORE_EXPORT QgsRasterHistogram 34 : : { 35 : : public: 36 : : typedef QVector<int> HistogramVector; 37 : : 38 : : /** 39 : : * Constructor for an invalid QgsRasterHistogram. 40 : : */ 41 : 0 : QgsRasterHistogram() = default; 42 : : 43 : : //! Compares region, size etc. not histogram itself 44 : 0 : bool operator==( const QgsRasterHistogram &h ) const 45 : : { 46 : 0 : return ( h.bandNumber == bandNumber && 47 : 0 : h.binCount == binCount && 48 : 0 : h.includeOutOfRange == includeOutOfRange && 49 : 0 : qgsDoubleNear( h.maximum, maximum ) && 50 : 0 : qgsDoubleNear( h.minimum, minimum ) && 51 : 0 : h.extent == extent && 52 : 0 : h.width == width && 53 : 0 : h.height == height ); 54 : : } 55 : : 56 : : //! \brief The gdal band number (starts at 1) 57 : 0 : int bandNumber = 0; 58 : : 59 : : //! \brief Number of bins (intervals,buckets) in histogram. 60 : 0 : int binCount = 0; 61 : : 62 : : //! \brief The number of non NULL cells used to calculate histogram. 63 : 0 : int nonNullCount = 0; 64 : : 65 : : //! \brief Whether histogram includes out of range values (in first and last bin) 66 : 0 : bool includeOutOfRange = false; 67 : : 68 : : /** 69 : : * Stores the histogram for a given layer 70 : : */ 71 : : QgsRasterHistogram::HistogramVector histogramVector; 72 : : 73 : : //! \brief The maximum histogram value. 74 : 0 : double maximum = 0; 75 : : 76 : : //! \brief The minimum histogram value. 77 : 0 : double minimum = 0; 78 : : 79 : : //! \brief Number of columns used to calc histogram 80 : 0 : int width = 0; 81 : : 82 : : //! \brief Number of rows used to calc histogram 83 : 0 : int height = 0; 84 : : 85 : : //! \brief Extent used to calc histogram 86 : : QgsRectangle extent; 87 : : 88 : : //! \brief Histogram is valid 89 : 0 : bool valid = false; 90 : : }; 91 : : #endif