1#ifndef ProcessRubberSheet_h
2#define ProcessRubberSheet_h
12#include "Interpolator.h"
14#include "TileManager.h"
120 virtual void BandChange(
void (*funct)(
const int band));
122 virtual void ForceTile(
double Samp,
double Line) {
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]);
178 bool useLastTileMap);
181 int eline,
int increment);
183 void (*p_bandChangeFunct)(
const int band);
185 void transformPatch (
double startingSample,
double endingSample,
186 double startingLine,
double endingLine,
189 void splitPatch (
double startingSample,
double endingSample,
190 double startingLine,
double endingLine,
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;
Buffer for containing a three dimensional section of an image.
Buffer for containing a two dimensional section of an image.
Base class for all cube processing derivatives.
virtual void StartProcess(void funct())
In the base class, this method will invoked a user-specified function exactly one time.
Derivative of Process, designed for geometric transformations.
virtual void StartProcess(Transform &trans, Interpolator &interp)
Applies a Transform and an Interpolator to every pixel in the output cube.
virtual void processPatchTransform(Transform &trans, Interpolator &interp)
Applies a Transform and an Interpolator to small patches.
virtual ~ProcessRubberSheet()
Destroys the RubberSheet object.
ProcessRubberSheet(int startSize=128, int endSize=8)
Constructs a ProcessRubberSheet class with the default tile size range.
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...
virtual void BandChange(void(*funct)(const int band))
Registers a function to be called when the current output cube band number changes.
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...
bool TestLine(Transform &trans, int ssamp, int esamp, int sline, int eline, int increment)
This function walks a line (or rectangle) and tests a point every increment pixels.
Buffer manager, for moving through a cube in tiles.
This is free and unencumbered software released into the public domain.