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.