Scroom 0.14-49-gb7ae7a6d
Loading...
Searching...
No Matches
Scroom::Pnm::AsciiSource Class Reference

#include <pnmsource.hh>

Inheritance diagram for Scroom::Pnm::AsciiSource:
Inheritance graph
Collaboration diagram for Scroom::Pnm::AsciiSource:
Collaboration graph

Public Types

using Ptr = std::shared_ptr< AsciiSource >
 
- Public Types inherited from Scroom::Pnm::Source
using Ptr = std::shared_ptr< Source >
 
- Public Types inherited from SourcePresentation
using Ptr = std::shared_ptr< SourcePresentation >
 

Public Member Functions

void fillTiles (int startLine, int lineCount, int tileWidth, int firstTile, std::vector< Tile::Ptr > &tiles) override
 
- Public Member Functions inherited from Scroom::Pnm::Source
bool resetPresentation ()
 
void done () override
 
std::string getName () override
 

Static Public Member Functions

static Ptr create (std::string fileName, std::ifstream pnm, BitmapMetaData bmd)
 

Private Member Functions

 Source (std::string fileName, std::ifstream pnm, BitmapMetaData bmd)
 

Additional Inherited Members

- Protected Member Functions inherited from Scroom::Pnm::Source
 Source (std::string fileName, std::ifstream pnm, BitmapMetaData bmd)
 
- Protected Attributes inherited from Scroom::Pnm::Source
std::string m_fileName
 
std::ifstream m_preOpenedPnm
 
std::ifstream m_pnm
 
BitmapMetaData m_bmd
 
Scroom::Logger m_logger
 

Member Typedef Documentation

◆ Ptr

using Scroom::Pnm::AsciiSource::Ptr = std::shared_ptr<AsciiSource>

Member Function Documentation

◆ create()

AsciiSource::Ptr Scroom::Pnm::AsciiSource::create ( std::string  fileName,
std::ifstream  pnm,
BitmapMetaData  bmd 
)
static
236 {
237 return Ptr(new AsciiSource(std::move(fileName), std::move(pnm), std::move(bmd)));
238 }
std::shared_ptr< AsciiSource > Ptr
Definition pnmsource.hh:73

Referenced by Pnm::open().

Here is the caller graph for this function:

◆ fillTiles()

void Scroom::Pnm::AsciiSource::fillTiles ( int  startLine,
int  lineCount,
int  tileWidth,
int  firstTile,
std::vector< Tile::Ptr > &  tiles 
)
overridevirtual

Provide bitmap data

While the TiledBitmap is loaded, this function will be called several times. Each time, this function has to fill the provided tiles with bitmap data.

The given tiles are horizontally adjacent.

Parameters
startLiney coordinate of the first line in the set of tiles
lineCountThe number of lines that are to be filled. This equals the height of the tiles
tileWidthThe width of one tile
firstTileIndex of the first tile provided. This means that the first x coordinate is firsttile * tileWidth
tilesThe tiles that are to be filled.

Implements SourcePresentation.

241 {
242 auto spp = m_bmd.samplesPerPixel;
243 auto bps = m_bmd.bitsPerSample;
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 {
261 int value = 0;
263 m_pnm >> value;
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
unsigned int bitsPerSample
Definition opentiledbitmapinterface.hh:45
unsigned int samplesPerPixel
Definition opentiledbitmapinterface.hh:46
Scroom::Utils::Rectangle< int > rect
Definition opentiledbitmapinterface.hh:47
BitmapSurface::Ptr const s
Definition transformpresentation_test.cc:70
Here is the call graph for this function:

◆ Source()

Scroom::Pnm::Source::Source ( std::string  fileName,
std::ifstream  pnm,
BitmapMetaData  bmd 
)
private
151 : m_fileName(std::move(fileName))
152 , m_preOpenedPnm(std::move(pnm))
153 , m_bmd(std::move(bmd))
154 {
155 }
std::ifstream m_preOpenedPnm
Definition pnmsource.hh:40
std::string m_fileName
Definition pnmsource.hh:39

The documentation for this class was generated from the following files: