76 int32_t numSubStripesPerStripe);
78 bool operator==(
Chunker const & c)
const {
79 return _numStripes == c._numStripes &&
80 _numSubStripesPerStripe == c._numSubStripesPerStripe;
83 bool operator!=(
Chunker const & c)
const {
84 return _numStripes != c._numStripes ||
85 _numSubStripesPerStripe != c._numSubStripesPerStripe;
97 return _numSubStripesPerStripe;
117 bool valid(int32_t chunkId)
const;
119 Box getChunkBoundingBox(int32_t stripe, int32_t chunk)
const;
120 Box getSubChunkBoundingBox(int32_t subStripe, int32_t subChunk)
const;
124 return chunkId / (2 * _numStripes);
128 int32_t
getChunk(int32_t chunkId, int32_t stripe)
const {
129 return chunkId - stripe*2*_numStripes;
135 int32_t numChunksPerStripe;
136 int32_t numSubChunksPerChunk;
140 numChunksPerStripe(0),
141 numSubChunksPerChunk(0)
147 int32_t numSubChunksPerChunk;
149 SubStripe() : subChunkWidth(), numSubChunksPerChunk(0) {}
152 int32_t _getChunkId(int32_t stripe, int32_t chunk)
const {
153 return stripe * 2 * _numStripes + chunk;
156 int32_t _getSubChunkId(int32_t stripe, int32_t subStripe,
157 int32_t chunk, int32_t subChunk)
const {
158 int32_t y = subStripe - stripe * _numSubStripesPerStripe;
159 int32_t x = subChunk -
160 chunk * _subStripes[subStripe].numSubChunksPerChunk;
161 return y * _maxSubChunksPerSubStripeChunk + x;
164 void _getSubChunks(std::vector<SubChunks> & subChunks,
166 NormalizedAngleInterval
const & lon,
170 int32_t maxSS)
const;
173 int32_t _numSubStripesPerStripe;
174 int32_t _numSubStripes;
175 int32_t _maxSubChunksPerSubStripeChunk;
176 Angle _subStripeHeight;
177 std::vector<Stripe> _stripes;
178 std::vector<SubStripe> _subStripes;