The given tiles are horizontally adjacent.
241 {
244
245 const auto firstTile = static_cast<size_t>(firstTile_);
246 const auto rowSamples =
static_cast<size_t>(
m_bmd.
rect.
width() * spp * bps / 8);
247 const auto tileStride = static_cast<size_t>(tileWidth * spp * bps / 8);
248 std::vector<byte> row(rowSamples);
249
250 const size_t tileCount = tiles.size();
251 auto dataPtr = std::vector<byte*>(tileCount);
252 for(size_t tile = 0; tile < tileCount; tile++)
253 {
254 dataPtr[tile] = tiles[tile]->data.get();
255 }
256
257 for(size_t i = 0; i < static_cast<size_t>(lineCount); i++)
258 {
259 for(
size_t s = 0;
s < rowSamples;
s++)
260 {
264 row[
s] =
static_cast<byte>(
value);
265 }
266
267 for(size_t tile = 0; tile < tileCount - 1; tile++)
268 {
269 memcpy(dataPtr[tile], row.data() + (firstTile + tile) * tileStride, tileStride);
270 dataPtr[tile] += tileStride;
271 }
272 memcpy(
273 dataPtr[tileCount - 1],
274 row.data() + (firstTile + tileCount - 1) * tileStride,
275 rowSamples - (firstTile + tileCount - 1) * tileStride
276 );
277 dataPtr[tileCount - 1] += tileStride;
278 }
279 }
const uint8_t value
Definition blob-tests.cc:114
std::ifstream m_pnm
Definition pnmsource.hh:41
BitmapMetaData m_bmd
Definition pnmsource.hh:42
value_type width() const
Definition rectangle.hh:129
void skipComments(std::istream &s)
Definition pnmsource.cc:27