Isis 3 Programmer Reference
BufferManager.h
1#ifndef BufferManager_h
2#define BufferManager_h
8/* SPDX-License-Identifier: CC0-1.0 */
9
10#include "Constants.h"
11#include "PixelType.h"
12#include "Buffer.h"
13
14namespace Isis {
52 class BufferManager : public Isis::Buffer {
53
54 public:
55 // Constructors and Destructors
57 BufferManager(int maxsamps, int maxlines, int maxbands,
58 int bufsamps, int buflines, int bufbands,
59 Isis::PixelType type, bool reverse = false);
60 BufferManager(const BufferManager &other);
61
64
65 // Traversal Methods
66
73 bool operator++(int) {
74 return (next());
75 }
76
77
88 return *this;
89 }
90
96 bool begin() {
97 return (setpos(0));
98 }
99
106 bool next() {
107 return (setpos(p_currentMap + 1));
108 }
109
115 bool end() const {
116 return (p_currentMap >= p_nmaps);
117 }
118
119 bool setpos(BigInt map);
120
121 void swap(BufferManager &other);
122
124
125 protected:
126
127 // Methods visable to deriving classes
128
134 int MaxSamples() const {
135 return (p_maxSamps);
136 }
137
143 int MaxLines() const {
144 return (p_maxLines);
145 }
146
152 int MaxBands() const {
153 return (p_maxBands);
154 }
155
162 BigInt MaxMaps() const {
163 return (p_nmaps);
164 }
165
166 void SetIncrements(const int sinc, const int linc, const int binc);
167 void SetOffsets(const int soff, const int loff, const int boff);
168
169 private:
173
174 int p_sinc;
175 int p_linc;
176 int p_binc;
177
178 int p_soff;
179 int p_loff;
180 int p_boff;
181
185
188
195 };
196};
197
198#endif
199
Buffer for reading and writing cube data.
Definition Buffer.h:53
Manages a Buffer over a cube.
BufferManager & operator=(const BufferManager &rhs)
Creates a new BufferManager with the same values as another.
int p_currentSample
Current sample.
void swap(BufferManager &other)
Swaps the values of this BufferManager with that of another.
bool begin()
Moves the shape buffer to the first position.
int p_currentBand
Current band.
int p_linc
Line increment.
int p_maxBands
Maximum bands to map.
int p_currentLine
Current line.
void SetOffsets(const int soff, const int loff, const int boff)
Sets the offset of the buffer.
int MaxSamples() const
Returns the number of samples in the cube.
int p_maxSamps
Maximum samples to map.
int p_boff
Band offset.
bool p_reverse
If true the axies are processed in Band, Line, Sample order (e.g., BIL).
int p_sinc
Sample increment.
int p_soff
Sample offset.
BufferManager & operator+=(int i)
Moves the shape buffer by a certain amount.
int MaxLines() const
Returns the number of lines in the cube.
bool setpos(BigInt map)
Sets the position of the shape in the cube.
int MaxBands() const
Returns the number of bands in the cube.
~BufferManager()
Destroys the BufferManager object.
int p_loff
Line offset.
bool end() const
Returns true if the shape buffer has accessed the end of the cube.
BigInt p_currentMap
Current buffer map position.
bool next()
Moves the shape buffer to the next position.
BigInt MaxMaps() const
Returns the maximum number of positions the shape buffer needs to cover the entire image (see setpos ...
void SetIncrements(const int sinc, const int linc, const int binc)
Sets how the shape is incremented through the cube.
bool operator++(int)
Moves the shape buffer to the next position.
int p_maxLines
Maximum lines to map.
BigInt p_nmaps
Total number of objects to map.
int p_binc
Band increment.
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
long long int BigInt
Big int.
Definition Constants.h:49
PixelType
Enumerations for Isis Pixel Types.
Definition PixelType.h:27