OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimScaleFilter.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: ossimScaleFilter.h 22874 2014-08-26 10:21:34Z dburken $
12 #ifndef ossimScaleFilter_HEADER
13 #define ossimScaleFilter_HEADER
14 #include <vector>
16 #include <ossim/matrix/newmat.h>
17 #include <ossim/matrix/newmatio.h>
19 
23 {
24 public:
26  {
27  ossimScaleFilter_NEAREST_NEIGHBOR = 0,
28  ossimScaleFilter_BOX = 1,
29  ossimScaleFilter_GAUSSIAN = 2,
30  ossimScaleFilter_CUBIC = 3,
31  ossimScaleFilter_HANNING = 4,
32  ossimScaleFilter_HAMMING = 5,
33  ossimScaleFilter_LANCZOS = 6,
34  ossimScaleFilter_MITCHELL = 7,
35  ossimScaleFilter_CATROM = 8,
36  ossimScaleFilter_BLACKMAN = 9,
37  ossimScaleFilter_BLACKMAN_SINC = 10,
38  ossimScaleFilter_BLACKMAN_BESSEL = 11,
39  ossimScaleFilter_QUADRATIC = 12,
40  ossimScaleFilter_TRIANGLE = 13,
41  ossimScaleFilter_HERMITE = 14
42  };
43 
46  const ossimDpt& scaleFactor);
47 
48  virtual ossimRefPtr<ossimImageData> getTile(const ossimIrect& tileRect,
49  ossim_uint32 resLevel=0);
50 
51  virtual ossimIrect getBoundingRect(ossim_uint32 resLevel=0)const;
52 
54  virtual void initialize();
55  virtual void getDecimationFactor(ossim_uint32 resLevel,
56  ossimDpt& result)const
57  {
58  result.makeNan();
59 
60  if(resLevel == 0)
61  {
62  result.x = 1.0;
63  result.y = 1.0;
64  }
65  }
66  virtual void getDecimationFactors(vector<ossimDpt>& decimations)const
67  {
68  decimations.push_back(ossimDpt(1.0, 1.0));
69  }
71  {
72  // only full res output since we are scaling
73  //
74  return 1;
75  }
76  void setFilterType(ossimScaleFilterType filterType);
77  void setFilterType(ossimScaleFilterType minifyFilterType,
78  ossimScaleFilterType magnifyFilterType);
79 
80  void setFilterType(const ossimString& minifyType,
81  const ossimString& magnifyType)
82  {
83  setFilterType(getFilterType(minifyType),
84  getFilterType(magnifyType));
85  }
86  void setMinifyFilterType(const ossimString& minifyType)
87  {
88  setMinifyFilterType(getFilterType(minifyType));
89  }
90  void setMagnifyFilterType(const ossimString& magnifyType)
91  {
92  setMagnifyFilterType(getFilterType(magnifyType));
93  }
95  {
96  setFilterType(filterType,
97  m_MagnifyFilterType);
98  }
100  {
101  setFilterType(m_MinifyFilterType,filterType);
102  }
104  {
105  return getFilterTypeAsString(m_MinifyFilterType);
106  }
108  {
109  return getFilterTypeAsString(m_MagnifyFilterType);
110  }
111  void setScaleFactor(const ossimDpt& scale);
113  {
114  m_BlurFactor = blur;
115  }
117  {
118  return m_BlurFactor;
119  }
120  const ossimDpt& getScaleFactor()const
121  {
122  return m_ScaleFactor;
123  }
127  virtual bool saveState(ossimKeywordlist& kwl, const char* prefix=0)const;
128 
132  virtual bool loadState(const ossimKeywordlist& kwl, const char* prefix=0);
133 
134 protected:
135  virtual ~ossimScaleFilter();
136  void allocate();
137 
140  void updateGeometry();
141 
154 
155  template <class T>
156  void runFilterTemplate(T dummy,
157  const ossimIrect& imageRect,
158  const ossimIrect& viewRect);
159  template <class T>
160  void runHorizontalFilterTemplate(T dummy,
161  const ossimRefPtr<ossimImageData>& input,
163  template <class T>
164  void runVerticalFilterTemplate(T dummy,
165  const ossimRefPtr<ossimImageData>& input,
167  void runFilter(const ossimIrect& imageRect,
168  const ossimIrect& viewRect);
169 
170  void getSupport(double& x, double& y);
171  const ossimFilter* getHorizontalFilter()const;
172  const ossimFilter* getVerticalFilter()const;
173 
174  ossimString getFilterTypeAsString(ossimScaleFilterType type)const;
175  ossimScaleFilterType getFilterType(const ossimString& type)const;
176 
177  ossimIrect scaleRect(const ossimIrect input,
178  const ossimDpt& scaleFactor)const;
179  ossimFilter* createNewFilter(ossimScaleFilterType filterType,
180  ossimScaleFilterType& result);
181 TYPE_DATA
182 };
183 
184 #endif
ossim_uint32 x
virtual ossimIrect getBoundingRect(ossim_uint32 resLevel=0) const
This will return the bounding rect of the source.
virtual void getDecimationFactor(ossim_uint32 resLevel, ossimDpt &result) const
Will return the decimation factor for the given resolution level.
ossimRefPtr< ossimImageData > m_Tile
ossimString getMagnifyFilterTypeAsString() const
Represents serializable keyword/value map.
void setFilterType(const ossimString &minifyType, const ossimString &magnifyType)
ossim_uint32 y
void setBlurFactor(ossim_float64 blur)
double y
Definition: ossimDpt.h:165
const ossimDpt & getScaleFactor() const
ossimString getMinifyFilterTypeAsString() const
virtual void getDecimationFactors(vector< ossimDpt > &decimations) const
ossimIrect m_InputRect
virtual ossim_uint32 getNumberOfDecimationLevels() const
Will return the number of resolution levels.
ossimFilter * m_MinifyFilter
void setMinifyFilterType(ossimScaleFilterType filterType)
ossim_float64 getBlurFactor() const
double ossim_float64
ossimFilter * m_MagnifyFilter
#define TYPE_DATA
Definition: ossimRtti.h:339
unsigned int ossim_uint32
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
ossim_float64 m_BlurFactor
ossimRefPtr< ossimImageData > m_BlankTile
virtual ossimRefPtr< ossimImageGeometry > getImageGeometry()
Returns the image geometry object associated with this tile source or NULL if not defined...
ossimDpt m_InverseScaleFactor
void setMagnifyFilterType(const ossimString &magnifyType)
ossimRefPtr< ossimImageGeometry > m_ScaledGeometry
The input image geometry, altered by the scale.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
#define OSSIM_DLL
void setMinifyFilterType(const ossimString &minifyType)
double x
Definition: ossimDpt.h:164
ossimScaleFilterType m_MinifyFilterType
ossimScaleFilterType m_MagnifyFilterType
void makeNan()
Definition: ossimDpt.h:65
void setMagnifyFilterType(ossimScaleFilterType filterType)
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)