OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimEquationCombiner.h
Go to the documentation of this file.
1 //*******************************************************************
2 // Copyright (C) 2000 ImageLinks Inc.
3 //
4 // License: MIT
5 //
6 // See LICENSE.txt file in the top level directory for more details.
7 //
8 // Author: Garrett Potts
9 //
10 //*************************************************************************
11 // $Id: ossimEquationCombiner.h 23649 2015-12-08 15:00:50Z gpotts $
12 #ifndef ossimEquationCombiner_HEADER
13 #define ossimEquationCombiner_HEADER
17 #include <stack>
18 
19 //class ossimCastTileSourceFilter;
20 
172 {
173 public:
176 
177  virtual ossimRefPtr<ossimImageData> getTile(const ossimIrect& origin,
178  ossim_uint32 resLevel=0);
179 
180  virtual void initialize();
181 
182  virtual void setEquation(const ossimString& equ)
183  {
184  theEquation = equ;
185  }
186  virtual ossimString getEquation()const
187  {
188  return theEquation;
189  }
190 
191  virtual double getNullPixelValue(ossim_uint32 band=0)const;
192  virtual double getMinPixelValue(ossim_uint32 band=0)const;
193  virtual double getMaxPixelValue(ossim_uint32 band=0)const;
194  virtual ossimScalarType getOutputScalarType() const;
195 
196  virtual void setProperty(ossimRefPtr<ossimProperty> property);
197  virtual ossimRefPtr<ossimProperty> getProperty(const ossimString& name)const;
198  virtual void getPropertyNames(std::vector<ossimString>& propertyNames)const;
199 
200 
201  virtual void setOutputScalarType(ossimScalarType scalarType);
206  virtual bool saveState(ossimKeywordlist& kwl,
207  const char* prefix=0)const;
208 
213  virtual bool loadState(const ossimKeywordlist& kwl,
214  const char* prefix=0);
215 
217  {
218  public:
219  virtual ~ossimBinaryOp(){}
220  virtual double apply(double v1, double v2)const=0;
221  };
223  {
224  public:
225  virtual ~ossimUnaryOp(){}
226  virtual double apply(double v)const=0;
227  };
228 
229 protected:
231  {
232  OSSIM_EQU_TYPE_UNKNOWN = 0,
233  OSSIM_EQU_DOUBLE_TYPE = 1,
234  OSSIM_EQU_IMAGE_DATA_TYPE = 2
235  };
236 
238  {
239  double doubleValue;
241  };
242 
244  {
245  int type;
247  };
248 
249  virtual ~ossimEquationCombiner();
250 
251 
258 
259  mutable int theCurrentId;
260  mutable std::stack<ossimEquValue> theValueStack;
262  virtual void assignValue();
263  virtual void clearStacks();
264  virtual void clearArgList(vector<ossimEquValue>& argList);
265 
266  virtual ossimRefPtr<ossimImageData> getImageData(ossim_uint32 index);
267  virtual ossimRefPtr<ossimImageData> getNewImageData(ossim_uint32 index);
268 
269  virtual void deleteArgList(vector<ossimEquValue>& args);
270  virtual bool parseArgList(vector<ossimEquValue>& args,
271  bool popValueStack = true);
272 
273  virtual ossimRefPtr<ossimImageData> parseEquation();
274 
275  virtual bool parseAssignBand();
276  virtual bool parseExpression();
277  virtual bool parseRestOfExp();
278  virtual bool parseTerm();
279  virtual bool parseRestOfTerm();
280  virtual bool parseFactor();
281  virtual bool parseStdFuncs();
282  virtual bool parseUnaryFactor();
283 
284  virtual bool applyClamp(ossimImageData* &result,
285  const vector<ossimEquValue>& argList);
286 
287  virtual bool applyConvolution(ossimImageData* &result,
288  const vector<ossimEquValue>& argList);
289 
290  virtual bool applyBlurr(ossimImageData* &result,
291  const vector<ossimEquValue>& argList);
292 
293  virtual bool applyShift(ossimImageData* &result,
294  const vector<ossimEquValue>& argList);
295 
296  virtual bool applyOp(const ossimBinaryOp& op,
297  ossimEquValue& result,
298  ossimEquValue& v1,
299  ossimEquValue& v2);
300 
301  virtual bool applyOp(const ossimBinaryOp& op,
302  ossimImageData* v1,
303  double v2);
304 
305  virtual bool applyOp(const ossimBinaryOp& op,
306  double v1,
307  ossimImageData* v2);
308 
309  virtual bool applyOp(const ossimBinaryOp& op,
310  ossimImageData* v1,
311  ossimImageData* v2);
312 
313 
314  virtual bool applyOp(const ossimUnaryOp& op,
315  ossimEquValue& result,
316  ossimEquValue& v1);
317 
318  virtual bool applyOp(const ossimUnaryOp& op,
319  ossimImageData* v);
320 
321 TYPE_DATA
322 };
323 #endif
#define OSSIMDLLEXPORT
This will be a base for all combiners.
Represents serializable keyword/value map.
virtual double getMinPixelValue(ossim_uint32 band=0) const
Returns the min pixel of the band.
Will combine the input data based on a supplied equation.
ossimRefPtr< ossimImageData > theTile
virtual void setEquation(const ossimString &equ)
virtual ossimString getEquation() const
virtual void setProperty(ossimRefPtr< ossimProperty > property)
std::vector< ossimRefPtr< ossimConnectableObject > > ConnectableObjectList
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
virtual double getMaxPixelValue(ossim_uint32 band=0) const
Returns the max pixel of the band.
#define TYPE_DATA
Definition: ossimRtti.h:339
unsigned int ossim_uint32
virtual double getNullPixelValue(ossim_uint32 band=0) const
Each band has a null pixel associated with it.
ossimScalarType
ossimEquTokenizer * theLexer
ossimEquTokenizerFlexLexer ossimEquTokenizer
ossimRefPtr< ossimCastTileSourceFilter > theCastOutputFilter
std::stack< ossimEquValue > theValueStack
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
virtual ossimScalarType getOutputScalarType() const
This will be used to query the output pixel type of the tile source.
ossimRefPtr< ossimCastTileSourceFilter > theCastFilter
ossimScalarType theOutputScalarType
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=NULL)
Method to the load (recreate) the state of an object from a keyword list.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=NULL) const
Method to save the state of an object to a keyword list.
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)