Isis 3 Programmer Reference
ProcessByLine.cpp
1
6/* SPDX-License-Identifier: CC0-1.0 */
7
8#include "ProcessByLine.h"
9
10#include "Buffer.h"
11#include "Cube.h"
12#include "IException.h"
13#include "Process.h"
14#include "ProcessByBrick.h"
15
16
17using namespace std;
18namespace Isis {
41 Isis::Cube *ProcessByLine::SetInputCube(const QString &parameter,
42 const int requirements) {
43 int allRequirements = Isis::SpatialMatch | Isis::BandMatchOrOne;
44 allRequirements |= requirements;
45 return Process::SetInputCube(parameter, allRequirements);
46 }
47
48
66 const int requirements) {
67 int allRequirements = Isis::SpatialMatch | Isis::BandMatchOrOne;
68 allRequirements |= requirements;
69 return Process::SetInputCube(file, att, allRequirements);
70 }
71
72
73 void ProcessByLine::SetBricks(IOCubes cn) {
74
75 switch(cn){
76
77 case InPlace:
78
79 if (InputCubes.size() == 1) {
80 SetBrickSize(InputCubes[0]->sampleCount(), 1, 1);
81 }
82
83 else {
84 SetBrickSize(OutputCubes[0]->sampleCount(), 1, 1);
85 }
86
87 break;
88
89 case InputOutput:
90
91 SetInputBrickSize(InputCubes[0]->sampleCount(), 1, 1);
92 SetOutputBrickSize(OutputCubes[0]->sampleCount(), 1, 1);
93
94 break;
95
96 case InputOutputList:
97
98 for (unsigned int i = 0; i < InputCubes.size(); i++) {
99 SetInputBrickSize(InputCubes[i]->sampleCount(), 1, 1, i + 1);
100 }
101 for (unsigned int i = 0; i < OutputCubes.size(); i++) {
102 SetOutputBrickSize(OutputCubes[i]->sampleCount(), 1, 1, i + 1);
103 }
104
105 break;
106 }
107 }
108
109
110
130 void ProcessByLine::StartProcess(void funct(Isis::Buffer &inout)) {
131 VerifyCubes(InPlace);
132 SetBricks(InPlace);
134 }
135
136
156 void ProcessByLine::StartProcess(std::function<void(Isis::Buffer &in)> funct ) {
157 VerifyCubes(InPlace);
158 SetBricks(InPlace);
160 }
161
162 void ProcessByLine::StartProcess(std::function<void(Buffer &in, Buffer &out)> funct ) {
163 VerifyCubes(InputOutput);
164 SetBricks(InputOutput);
166 }
167
168
182 VerifyCubes(InputOutput);
183 SetBricks(InputOutput);
185 }
186
187
199 void ProcessByLine::StartProcess(void funct(std::vector<Isis::Buffer *> &in,
200 std::vector<Isis::Buffer *> &out)) {
201 VerifyCubes(InputOutputList);
202 SetBricks(InputOutputList);
204 }
205}
Buffer for reading and writing cube data.
Definition Buffer.h:53
Manipulate and parse attributes of input cube filenames.
IO Handler for Isis Cubes.
Definition Cube.h:168
void SetOutputBrickSize(int ns, int nl, int nb)
Sets the size of all output bricks.
void VerifyCubes(IOCubes cn)
Verifies the dimensions of the input/output cubes.
void SetInputBrickSize(int ns, int nl, int nb)
Sets the size of all input bricks.
virtual void StartProcess(void funct(Buffer &in))
Starts the systematic processing of the input cube by moving an arbitrarily-shaped brick through the ...
void SetBrickSize(int ns, int nl, int nb)
Sets the input and output bricks sizes to the given number of samples, lines, and bands.
Isis::Cube * SetInputCube(const QString &parameter, const int requirements=0)
Opens an input cube specified by the user and verifies requirements are met.
void StartProcess(void funct(Isis::Buffer &inout))
This method invokes the process by line operation over a single input or output cube.
std::vector< Isis::Cube * > InputCubes
A vector of pointers to opened Cube objects.
Definition Process.h:185
std::vector< Isis::Cube * > OutputCubes
A vector of pointers to allocated Cube objects.
Definition Process.h:191
virtual Isis::Cube * SetInputCube(const QString &parameter, const int requirements=0)
Opens an input cube specified by the user and verifies requirements are met.
Definition Process.cpp:139
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
Namespace for the standard library.