LCOV - code coverage report
Current view: top level - analysis/raster - qgsrastermatrix.h (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 0 12 0.0 %
Date: 2021-04-10 08:29:14 Functions: 0 0 -
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /***************************************************************************
       2                 :            :                           qgsrastermatrix.h
       3                 :            :                           -----------------
       4                 :            :     begin                : 2010-10-23
       5                 :            :     copyright            : (C) 20010 by Marco Hugentobler
       6                 :            :     email                : marco dot hugentobler at sourcepole dot ch
       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 QGSRASTERMATRIX_H
      19                 :            : #define QGSRASTERMATRIX_H
      20                 :            : 
      21                 :            : #include "qgis_analysis.h"
      22                 :            : #include "qgis_sip.h"
      23                 :            : 
      24                 :            : /**
      25                 :            :  * \ingroup analysis
      26                 :            :  * \class QgsRasterMatrix
      27                 :            :  * \brief Represents a matrix in a raster calculator operation.
      28                 :            :  */
      29                 :            : class ANALYSIS_EXPORT QgsRasterMatrix
      30                 :            : {
      31                 :            :   public:
      32                 :            : 
      33                 :            :     enum TwoArgOperator
      34                 :            :     {
      35                 :            :       opPLUS,
      36                 :            :       opMINUS,
      37                 :            :       opMUL,
      38                 :            :       opDIV,
      39                 :            :       opPOW,
      40                 :            :       opEQ,         // =
      41                 :            :       opNE,         // != resp. <>
      42                 :            :       opGT,         // >
      43                 :            :       opLT,         // <
      44                 :            :       opGE,         // >=
      45                 :            :       opLE,         // <=
      46                 :            :       opAND,
      47                 :            :       opOR,
      48                 :            :       opMIN,
      49                 :            :       opMAX
      50                 :            :     };
      51                 :            : 
      52                 :            :     enum OneArgOperator
      53                 :            :     {
      54                 :            :       opSQRT,
      55                 :            :       opSIN,
      56                 :            :       opCOS,
      57                 :            :       opTAN,
      58                 :            :       opASIN,
      59                 :            :       opACOS,
      60                 :            :       opATAN,
      61                 :            :       opSIGN,
      62                 :            :       opLOG,
      63                 :            :       opLOG10,
      64                 :            :       opABS,
      65                 :            :     };
      66                 :            : 
      67                 :            :     //! Takes ownership of data array
      68                 :          0 :     QgsRasterMatrix() = default;
      69                 :            : 
      70                 :            :     //! \note note available in Python bindings
      71                 :            :     QgsRasterMatrix( int nCols, int nRows, double *data, double nodataValue ) SIP_SKIP;
      72                 :            :     QgsRasterMatrix( const QgsRasterMatrix &m );
      73                 :            :     ~QgsRasterMatrix();
      74                 :            : 
      75                 :            :     //! Returns TRUE if matrix is 1x1 (=scalar number)
      76                 :          0 :     bool isNumber() const { return ( mColumns == 1 && mRows == 1 ); }
      77                 :          0 :     double number() const { return mData[0]; }
      78                 :            : 
      79                 :            :     /**
      80                 :            :      * Returns data array (but not ownership)
      81                 :            :      * \note not available in Python bindings
      82                 :            :      */
      83                 :          0 :     double *data() { return mData; } SIP_SKIP
      84                 :            : 
      85                 :            :     /**
      86                 :            :      * Returns data and ownership. Sets data and nrows, ncols of this matrix to 0
      87                 :            :      * \note not available in Python bindings
      88                 :            :      */
      89                 :            :     double *takeData() SIP_SKIP;
      90                 :            : 
      91                 :            :     void setData( int cols, int rows, double *data, double nodataValue );
      92                 :            : 
      93                 :          0 :     int nColumns() const { return mColumns; }
      94                 :          0 :     int nRows() const { return mRows; }
      95                 :            : 
      96                 :          0 :     double nodataValue() const { return mNodataValue; }
      97                 :          0 :     void setNodataValue( double d ) { mNodataValue = d; }
      98                 :            : 
      99                 :            :     QgsRasterMatrix &operator=( const QgsRasterMatrix &m );
     100                 :            :     //! Adds another matrix to this one
     101                 :            :     bool add( const QgsRasterMatrix &other );
     102                 :            :     //! Subtracts another matrix from this one
     103                 :            :     bool subtract( const QgsRasterMatrix &other );
     104                 :            :     bool multiply( const QgsRasterMatrix &other );
     105                 :            :     bool divide( const QgsRasterMatrix &other );
     106                 :            :     bool power( const QgsRasterMatrix &other );
     107                 :            :     bool equal( const QgsRasterMatrix &other );
     108                 :            :     bool notEqual( const QgsRasterMatrix &other );
     109                 :            :     bool greaterThan( const QgsRasterMatrix &other );
     110                 :            :     bool lesserThan( const QgsRasterMatrix &other );
     111                 :            :     bool greaterEqual( const QgsRasterMatrix &other );
     112                 :            :     bool lesserEqual( const QgsRasterMatrix &other );
     113                 :            :     bool logicalAnd( const QgsRasterMatrix &other );
     114                 :            :     bool logicalOr( const QgsRasterMatrix &other );
     115                 :            : 
     116                 :            :     /**
     117                 :            :      * Calculates the maximum value between two matrices
     118                 :            :      * \return TRUE on success
     119                 :            :      * \since QGIS 3.10
     120                 :            :      */
     121                 :            :     bool max( const QgsRasterMatrix &other );
     122                 :            : 
     123                 :            :     /**
     124                 :            :      * Calculates the minimum value between two matrices
     125                 :            :      * \return TRUE on success
     126                 :            :      * \since QGIS 3.10
     127                 :            :      */
     128                 :            :     bool min( const QgsRasterMatrix &other );
     129                 :            : 
     130                 :            :     bool squareRoot();
     131                 :            :     bool sinus();
     132                 :            :     bool asinus();
     133                 :            :     bool cosinus();
     134                 :            :     bool acosinus();
     135                 :            :     bool tangens();
     136                 :            :     bool atangens();
     137                 :            :     bool changeSign();
     138                 :            :     bool log();
     139                 :            :     bool log10();
     140                 :            : 
     141                 :            :     /**
     142                 :            :      * Calculates the absolute value
     143                 :            :      * \return TRUE on success
     144                 :            :      * \since QGIS 3.10
     145                 :            :      */
     146                 :            :     bool absoluteValue();
     147                 :            : 
     148                 :            :   private:
     149                 :          0 :     int mColumns = 0;
     150                 :          0 :     int mRows = 0;
     151                 :          0 :     double *mData = nullptr;
     152                 :          0 :     double mNodataValue = -1;
     153                 :            : 
     154                 :            :     //! +,-,*,/,^,<,>,<=,>=,=,!=, and, or
     155                 :            :     bool twoArgumentOperation( TwoArgOperator op, const QgsRasterMatrix &other );
     156                 :            :     double calculateTwoArgumentOp( TwoArgOperator op, double arg1, double arg2 ) const;
     157                 :            : 
     158                 :            :     /*sqrt, std::sin, std::cos, tan, asin, acos, atan*/
     159                 :            :     bool oneArgumentOperation( OneArgOperator op );
     160                 :            :     bool testPowerValidity( double base, double power ) const;
     161                 :            : };
     162                 :            : 
     163                 :            : #endif // QGSRASTERMATRIX_H

Generated by: LCOV version 1.14