Scroom 0.14-49-gb7ae7a6d
Loading...
Searching...
No Matches
pnmsource.hh
Go to the documentation of this file.
1/*
2 * Scroom - Generic viewer for 2D data
3 * Copyright (C) 2009-2026 Kees-Jan Dijkzeul
4 *
5 * SPDX-License-Identifier: LGPL-2.1
6 */
7
8#pragma once
9
10#include <fstream>
11#include <map>
12#include <string>
13
14#include <scroom/logger.hh>
18
19namespace Scroom::Pnm
20{
21 using namespace Scroom::TiledBitmap;
22
23 enum class SourceType
24 {
25 Binary,
26 Ascii,
28 };
29
30 boost::optional<std::tuple<Scroom::TiledBitmap::BitmapMetaData, std::ifstream, SourceType>>
31 open(const Scroom::Logger& logger, const std::string& fileName);
32
34 {
35 public:
36 using Ptr = std::shared_ptr<Source>;
37
38 protected:
39 std::string m_fileName;
40 std::ifstream m_preOpenedPnm;
41 std::ifstream m_pnm;
44
45 public:
46 bool resetPresentation();
47
48 // SourcePresentation
49 void done() override;
50 std::string getName() override { return m_fileName; }
51
52 protected:
53 Source(std::string fileName, std::ifstream pnm, BitmapMetaData bmd);
54 };
55
56 class BinarySource : public Source
57 {
58 public:
59 using Ptr = std::shared_ptr<BinarySource>;
60
61 static Ptr create(std::string fileName, std::ifstream pnm, BitmapMetaData bmd);
62
63 // SourcePresentation
64 void fillTiles(int startLine, int lineCount, int tileWidth, int firstTile, std::vector<Tile::Ptr>& tiles) override;
65
66 private:
67 using Source::Source;
68 };
69
70 class AsciiSource : public Source
71 {
72 public:
73 using Ptr = std::shared_ptr<AsciiSource>;
74
75 static Ptr create(std::string fileName, std::ifstream pnm, BitmapMetaData bmd);
76
77 // SourcePresentation
78 void fillTiles(int startLine, int lineCount, int tileWidth, int firstTile, std::vector<Tile::Ptr>& tiles) override;
79
80 private:
81 using Source::Source;
82 };
83
84 class AsciiSource1bpp : public Source
85 {
86 public:
87 using Ptr = std::shared_ptr<AsciiSource1bpp>;
88
89 static Ptr create(std::string fileName, std::ifstream pnm, BitmapMetaData bmd);
90
91 // SourcePresentation
92 void fillTiles(int startLine, int lineCount, int tileWidth, int firstTile, std::vector<Tile::Ptr>& tiles) override;
93
94 private:
95 using Source::Source;
96 };
97} // namespace Scroom::Pnm
Definition logger.hh:49
Definition pnmsource.hh:85
static Ptr create(std::string fileName, std::ifstream pnm, BitmapMetaData bmd)
Definition pnmsource.cc:285
std::shared_ptr< AsciiSource1bpp > Ptr
Definition pnmsource.hh:87
void fillTiles(int startLine, int lineCount, int tileWidth, int firstTile, std::vector< Tile::Ptr > &tiles) override
Definition pnmsource.cc:290
Definition pnmsource.hh:71
std::shared_ptr< AsciiSource > Ptr
Definition pnmsource.hh:73
void fillTiles(int startLine, int lineCount, int tileWidth, int firstTile, std::vector< Tile::Ptr > &tiles) override
Definition pnmsource.cc:240
static Ptr create(std::string fileName, std::ifstream pnm, BitmapMetaData bmd)
Definition pnmsource.cc:235
Definition pnmsource.hh:57
std::shared_ptr< BinarySource > Ptr
Definition pnmsource.hh:59
void fillTiles(int startLine, int lineCount, int tileWidth, int firstTile, std::vector< Tile::Ptr > &tiles) override
Definition pnmsource.cc:196
static Ptr create(std::string fileName, std::ifstream pnm, BitmapMetaData bmd)
Definition pnmsource.cc:191
Definition pnmsource.hh:34
bool resetPresentation()
Definition pnmsource.cc:157
std::string getName() override
Definition pnmsource.hh:50
Source(std::string fileName, std::ifstream pnm, BitmapMetaData bmd)
Definition pnmsource.cc:150
std::ifstream m_pnm
Definition pnmsource.hh:41
std::ifstream m_preOpenedPnm
Definition pnmsource.hh:40
BitmapMetaData m_bmd
Definition pnmsource.hh:42
std::shared_ptr< Source > Ptr
Definition pnmsource.hh:36
std::string m_fileName
Definition pnmsource.hh:39
Scroom::Logger m_logger
Definition pnmsource.hh:43
void done() override
Definition pnmsource.cc:185
Definition tiledbitmapinterface.hh:190
Definition pnmsource.cc:47
SourceType
Definition pnmsource.hh:24
boost::optional< std::tuple< Scroom::TiledBitmap::BitmapMetaData, std::ifstream, SourceType > > open(const Scroom::Logger &logger, const std::string &fileName)
Definition pnmsource.cc:55
Definition opentiledbitmapinterface.hh:23
Definition opentiledbitmapinterface.hh:43