USGS

Isis 3.0 Developer's Reference (API)

Home

Calculator.h

Go to the documentation of this file.
00001 
00023 // Calculator.h
00024 #ifndef CALCULATOR_H_
00025 #define CALCULATOR_H_
00026 
00027 #include "Buffer.h"
00028 
00029 // I'm not sure how to forward declare the iterators
00030 #include <QVector>
00031 
00032 template<class T> class QStack;
00033 template<class T> class QVector;
00034 
00035 namespace Isis {
00066   class Calculator {
00067     public:
00068       Calculator();   // Constructor
00070       virtual ~Calculator();
00071 
00072       // Math methods
00073       void Negative();
00074       void Multiply();
00075       void Add();
00076       void Subtract();
00077       void Divide();
00078       void Modulus();
00079 
00080       void Exponent();
00081       void SquareRoot();
00082       void AbsoluteValue();
00083       void Log();
00084       void Log10();
00085 
00086       void LeftShift();
00087       void RightShift();
00088       void MinimumPixel();
00089       void MaximumPixel();
00090       void MinimumLine();
00091       void MaximumLine();
00092       void Minimum2();
00093       void Maximum2();
00094       void GreaterThan();
00095       void LessThan();
00096       void Equal();
00097       void LessThanOrEqual();
00098       void GreaterThanOrEqual();
00099       void NotEqual();
00100       void And();
00101       void Or();
00102 
00103       void Sine();
00104       void Cosine();
00105       void Tangent();
00106       void Secant();
00107       void Cosecant();
00108       void Cotangent();
00109       void Arcsine();
00110       void Arccosine();
00111       void Arctangent();
00112       void Arctangent2();
00113       void SineH();
00114       void CosineH();
00115       void TangentH();
00116       void ArcsineH();
00117       void ArccosineH();
00118       void ArctangentH();
00119 
00120       // Stack methods
00121       void Push(double scalar);
00122       void Push(Buffer &buff);
00123       void Push(QVector<double> &vect);
00124       QVector<double> Pop(bool keepSpecials = false);
00125       void PrintTop();
00126       bool Empty();
00127       virtual void Clear();
00128 
00129     protected:
00130       void PerformOperation(QVector<double> &results,
00131                             QVector<double>::iterator arg1Start,
00132                             QVector<double>::iterator arg1End,
00133                             double operation(double));
00134       void PerformOperation(QVector<double> &results,
00135                             QVector<double>::iterator arg1Start,
00136                             QVector<double>::iterator arg1End,
00137                             QVector<double>::iterator arg2Start,
00138                             QVector<double>::iterator arg2End,
00139                             double operation(double, double));
00140 
00142       int StackSize();
00143 
00144     private:
00146       QStack< QVector<double> > * p_valStack;
00147   };
00148 };
00149 
00150 #endif