QGIS API Documentation  2.8.2-Wien
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
qgsrastercalcnode.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsrastercalcnode.h
3  Node for raster calculator tree
4  --------------------
5  begin : 2010-10-23
6  copyright : (C) 20010 by Marco Hugentobler
7  email : marco dot hugentobler at sourcepole dot ch
8 ***************************************************************************/
9 
10 /***************************************************************************
11  * *
12  * This program is free software; you can redistribute it and/or modify *
13  * it under the terms of the GNU General Public License as published by *
14  * the Free Software Foundation; either version 2 of the License, or *
15  * (at your option) any later version. *
16  * *
17  ***************************************************************************/
18 
19 #ifndef QGSRASTERCALCNODE_H
20 #define QGSRASTERCALCNODE_H
21 
22 #include "qgsrastermatrix.h"
23 #include <QMap>
24 #include <QString>
25 
26 class ANALYSIS_EXPORT QgsRasterCalcNode
27 {
28  public:
30  enum Type
31  {
32  tOperator = 1,
34  tRasterRef
35  };
36 
38  enum Operator
39  {
52  opEQ, // =
53  opNE,
54  opGT, // >
55  opLT, // <
56  opGE, // >=
57  opLE, // <=
60  opSIGN, // change sign
62  };
63 
65  QgsRasterCalcNode( double number );
66  QgsRasterCalcNode( Operator op, QgsRasterCalcNode* left, QgsRasterCalcNode* right );
67  QgsRasterCalcNode( const QString& rasterName );
69 
70  Type type() const { return mType; }
71 
72  //set left node
73  void setLeft( QgsRasterCalcNode* left ) { delete mLeft; mLeft = left; }
74  void setRight( QgsRasterCalcNode* right ) { delete mRight; mRight = right; }
75 
77  bool calculate( QMap<QString, QgsRasterMatrix*>& rasterData, QgsRasterMatrix& result ) const;
78 
79  static QgsRasterCalcNode* parseRasterCalcString( const QString& str, QString& parserErrorMsg );
80 
81  private:
82  Type mType;
83  QgsRasterCalcNode* mLeft;
84  QgsRasterCalcNode* mRight;
85  double mNumber;
86  QString mRasterName;
87  Operator mOperator;
88 };
89 
90 
91 #endif // QGSRASTERCALCNODE_H