1#ifndef ProcessRubberSheet_h
2#define ProcessRubberSheet_h
120 virtual void BandChange(
void (*funct)(
const int band));
135 virtual void SetTiling(
long long start,
long long end) {
136 p_startQuadSize = start;
141 int samples,
int lines,
142 int sampleIncrement,
int lineIncrement);
162 void ProcessQuad(std::vector<Quad *> &quadTree, Transform &trans,
163 std::vector< std::vector<double> > &lineMap,
164 std::vector< std::vector<double> > &sampMap);
166 void SplitQuad(std::vector<Quad *> &quadTree);
167 void SlowQuad(std::vector<Quad *> &quadTree, Transform &trans,
168 std::vector< std::vector<double> > &lineMap,
169 std::vector< std::vector<double> > &sampMap);
170 double Det4x4(
double m[4][4]);
171 double Det3x3(
double m[3][3]);
174 void SlowGeom(TileManager &otile, Portal &iportal,
175 Transform &trans, Interpolator &interp);
176 void QuadTree(TileManager &otile, Portal &iportal,
177 Transform &trans, Interpolator &interp,
178 bool useLastTileMap);
180 bool TestLine(Transform &trans,
int ssamp,
int esamp,
int sline,
181 int eline,
int increment);
183 void (*p_bandChangeFunct)(
const int band);
185 void transformPatch (
double startingSample,
double endingSample,
186 double startingLine,
double endingLine,
187 Portal &iportal, Transform &trans, Interpolator &interp);
189 void splitPatch (
double startingSample,
double endingSample,
190 double startingLine,
double endingLine,
191 Portal &iportal, Transform &trans, Interpolator &interp);
193 void transformPatch (
double startingSample,
double endingSample,
194 double startingLine,
double endingLine);
196 void splitPatch (
double startingSample,
double endingSample,
197 double startingLine,
double endingLine);
200 std::vector< std::vector<double> > p_sampMap;
201 std::vector< std::vector<double> > p_lineMap;
206 long long p_startQuadSize;
207 long long p_endQuadSize;
209 int m_patchStartSample;
210 int m_patchStartLine;
213 int m_patchSampleIncrement;
214 int m_patchLineIncrement;
219 Transform *m_transform;
220 Interpolator *m_interpolator;
Pixel interpolator.
Definition Interpolator.h:34
Base class for all cube processing derivatives.
Definition Process.h:143
virtual void StartProcess(void funct())
In the base class, this method will invoked a user-specified function exactly one time.
Definition Process.h:213
Derivative of Process, designed for geometric transformations.
Definition ProcessRubberSheet.h:104
virtual void StartProcess(Transform &trans, Interpolator &interp)
Applies a Transform and an Interpolator to every pixel in the output cube.
Definition ProcessRubberSheet.cpp:132
virtual void processPatchTransform(Transform &trans, Interpolator &interp)
Applies a Transform and an Interpolator to small patches.
Definition ProcessRubberSheet.cpp:787
virtual void ForceTile(double Samp, double Line)
Definition ProcessRubberSheet.h:122
virtual ~ProcessRubberSheet()
Destroys the RubberSheet object.
Definition ProcessRubberSheet.h:110
ProcessRubberSheet(int startSize=128, int endSize=8)
Constructs a ProcessRubberSheet class with the default tile size range.
Definition ProcessRubberSheet.cpp:35
virtual void SetTiling(long long start, long long end)
This sets the start and end tile sizes for the rubber sheet; numbers are inclusive and must be powers...
Definition ProcessRubberSheet.h:135
virtual void BandChange(void(*funct)(const int band))
Registers a function to be called when the current output cube band number changes.
Definition ProcessRubberSheet.cpp:232
virtual void setPatchParameters(int startSample, int startLine, int samples, int lines, int sampleIncrement, int lineIncrement)
This method allows the programmer to override the default values for patch parameters used in the pat...
Definition ProcessRubberSheet.cpp:102
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16