Scroom 0.14-48-ga0fee447
Loading...
Searching...
No Matches
Layer Class Reference

#include <tiledbitmaplayer.hh>

Inheritance diagram for Layer:
Inheritance graph
Collaboration diagram for Layer:
Collaboration graph

Public Types

using Ptr = std::shared_ptr< Layer >
 
- Public Types inherited from Viewable
using Ptr = std::shared_ptr< Viewable >
 
using WeakPtr = std::weak_ptr< Viewable >
 

Public Member Functions

int getHorTileCount () const
 
int getVerTileCount () const
 
CompressedTile::Ptr getTile (int i, int j)
 
CompressedTileLinegetTileLine (int j)
 
void fetchData (SourcePresentation::Ptr sp, const ThreadPool::WeakQueue::Ptr &queue, std::function< void()> on_finished)
 
int getWidth () const
 
int getHeight () const
 
int getDepth () const
 
Scroom::Utils::Rectangle< int > getRect () const
 
Scroom::Bookkeeping::Token registerObserver (const TileInitialisationObserver::Ptr &observer)
 
Scroom::MemoryBlobs::PageProvider::Ptr getPageProvider ()
 
void open (ViewInterface::WeakPtr vi) override
 
void close (ViewInterface::WeakPtr vi) override
 
- Public Member Functions inherited from Scroom::Utils::Base
 Base ()=default
 
 Base (const Base &)=delete
 
 Base (Base &&)=delete
 
Baseoperator= (const Base &)=delete
 
Baseoperator= (Base &&)=delete
 
virtual ~Base ()=default
 
template<typename R >
std::shared_ptr< R > shared_from_this ()
 
template<typename R >
std::shared_ptr< R const > shared_from_this () const
 

Static Public Member Functions

static Ptr create (int depth, int layerWidth, int layerHeight, int bpp, Scroom::MemoryBlobs::PageProvider::Ptr provider)
 
static Ptr create (int layerWidth, int layerHeight, int bpp)
 

Private Member Functions

 Layer (int depth, int layerWidth, int layerHeight, int bpp, Scroom::MemoryBlobs::PageProvider::Ptr provider)
 Layer.
 

Private Attributes

int depth
 
int width
 
int height
 
int horTileCount
 
int verTileCount
 
CompressedTileGrid tiles
 
CompressedTile::Ptr outOfBounds
 
CompressedTileLine lineOutOfBounds
 
Scroom::MemoryBlobs::PageProvider::Ptr pageProvider
 
Scroom::Logger logger
 

Member Typedef Documentation

◆ Ptr

using Layer::Ptr = std::shared_ptr<Layer>

Constructor & Destructor Documentation

◆ Layer()

Layer::Layer ( int  depth,
int  layerWidth,
int  layerHeight,
int  bpp,
Scroom::MemoryBlobs::PageProvider::Ptr  provider 
)
private

Layer.

74 : depth(depth_)
75 , width(layerWidth)
76 , height(layerHeight)
79 , pageProvider(std::move(provider))
80{
81 for(int j = 0; j < verTileCount; j++)
82 {
83 tiles.emplace_back();
85 for(int i = 0; i < horTileCount; i++)
86 {
87 CompressedTile::Ptr const tile = CompressedTile::create(depth_, i, j, bpp, pageProvider);
88 tl.push_back(tile);
89 }
90 }
91
93 for(int i = 0; i < horTileCount; i++)
94 {
96 }
97
98 logger->debug("Layer {} ({} bpp), {}*{}, TileCount {}*{}", depth_, bpp, width, height, horTileCount, verTileCount);
99}
PageProvider::Ptr provider
Definition blob-tests.cc:26
static Ptr create(int depth, int x, int y, int bpp, const Scroom::MemoryBlobs::PageProvider::Ptr &provider, TileStateInternal state=TSI_UNINITIALIZED)
Definition compressedtile.cc:33
std::shared_ptr< CompressedTile > Ptr
Definition tiledbitmaplayer.hh:107
int horTileCount
Definition tiledbitmaplayer.hh:256
int depth
Definition tiledbitmaplayer.hh:253
CompressedTileLine lineOutOfBounds
Definition tiledbitmaplayer.hh:260
CompressedTile::Ptr outOfBounds
Definition tiledbitmaplayer.hh:259
int height
Definition tiledbitmaplayer.hh:255
int width
Definition tiledbitmaplayer.hh:254
int verTileCount
Definition tiledbitmaplayer.hh:257
Scroom::Logger logger
Definition tiledbitmaplayer.hh:262
CompressedTileGrid tiles
Definition tiledbitmaplayer.hh:258
Scroom::MemoryBlobs::PageProvider::Ptr pageProvider
Definition tiledbitmaplayer.hh:261
#define TILESIZE
Definition tiledbitmaplayer.hh:27
std::vector< CompressedTile::Ptr > CompressedTileLine
Definition tiledbitmaplayer.hh:240
@ TSI_OUT_OF_BOUNDS
Definition tiledbitmaplayer.hh:37
Here is the call graph for this function:

Member Function Documentation

◆ close()

void Layer::close ( ViewInterface::WeakPtr  vi)
overridevirtual

Gets called just before the View is destroyed

Precondition
Should be called from within a Gdk critical section (i.e. between gdk_threads_enter() and gdk_threads_leave() calls)

Implements Viewable.

178{
179 for(CompressedTileLine const& line: tiles)
180 {
181 for(const CompressedTile::Ptr& tile: line)
182 {
183 tile->close(vi);
184 }
185 }
186 for(const CompressedTile::Ptr& tile: lineOutOfBounds)
187 {
188 tile->close(vi);
189 }
190 outOfBounds->close(vi);
191}
ViewInterface::Ptr const vi
Definition pipette-tests.cc:186

◆ create() [1/2]

Layer::Ptr Layer::create ( int  depth,
int  layerWidth,
int  layerHeight,
int  bpp,
Scroom::MemoryBlobs::PageProvider::Ptr  provider 
)
static
102{
103 return Ptr(new Layer(depth, layerWidth, layerHeight, bpp, std::move(provider)));
104}
Definition tiledbitmaplayer.hh:248
std::shared_ptr< Layer > Ptr
Definition tiledbitmaplayer.hh:250

Referenced by create(), TiledBitmap::initialize(), TiledBitmap::initialize(), Pnm::open(), and Tiff::open().

Here is the caller graph for this function:

◆ create() [2/2]

Layer::Ptr Layer::create ( int  layerWidth,
int  layerHeight,
int  bpp 
)
static
107{
108 Scroom::MemoryBlobs::PageProvider::Ptr const provider = createProvider(layerWidth, layerHeight, bpp);
109
110 return create(0, layerWidth, layerHeight, bpp, provider);
111}
static Ptr create(int depth, int layerWidth, int layerHeight, int bpp, Scroom::MemoryBlobs::PageProvider::Ptr provider)
Definition layer.cc:101
std::shared_ptr< PageProvider > Ptr
Definition memoryblobs.hh:40
static Scroom::MemoryBlobs::PageProvider::Ptr createProvider(double width, double height, int bpp)
Definition layer.cc:25
Here is the call graph for this function:

◆ fetchData()

void Layer::fetchData ( SourcePresentation::Ptr  sp,
const ThreadPool::WeakQueue::Ptr queue,
std::function< void()>  on_finished 
)
152{
153 DataFetcher const df(
154 shared_from_this<Layer>(), height, horTileCount, verTileCount, std::move(sp), queue, std::move(on_finished)
155 );
156 CpuBound()->schedule(df, DATAFETCH_PRIO, queue);
157}
Definition layer.cc:44
#define DATAFETCH_PRIO
Definition local.hh:11
ThreadPool::Ptr CpuBound()
Definition threadpoolimpl.cc:455
Here is the call graph for this function:

◆ getDepth()

int Layer::getDepth ( ) const
inline
282{ return depth; }

◆ getHeight()

int Layer::getHeight ( ) const
inline
280{ return height; }

◆ getHorTileCount()

int Layer::getHorTileCount ( ) const
127{ return horTileCount; }

◆ getPageProvider()

Scroom::MemoryBlobs::PageProvider::Ptr Layer::getPageProvider ( )
inline
288{ return pageProvider; }

◆ getRect()

Scroom::Utils::Rectangle< int > Layer::getRect ( ) const
inline
284{ return {0, 0, width, height}; }

◆ getTile()

CompressedTile::Ptr Layer::getTile ( int  i,
int  j 
)
132{
133 if(0 <= i && i < horTileCount && 0 <= j && j < verTileCount)
134 {
135 return tiles[j][i];
136 }
137
138 return outOfBounds;
139}

◆ getTileLine()

CompressedTileLine & Layer::getTileLine ( int  j)
142{
143 if(0 <= j && j < verTileCount)
144 {
145 return tiles[j];
146 }
147
148 return lineOutOfBounds;
149}

◆ getVerTileCount()

int Layer::getVerTileCount ( ) const
129{ return verTileCount; }

◆ getWidth()

int Layer::getWidth ( ) const
inline
278{ return width; }

◆ open()

void Layer::open ( ViewInterface::WeakPtr  vi)
overridevirtual

Gets called just after the View is created

Precondition
Should be called from within a Gdk critical section (i.e. between gdk_threads_enter() and gdk_threads_leave() calls)

Implements Viewable.

162{
163 for(CompressedTileLine const& line: tiles)
164 {
165 for(const CompressedTile::Ptr& tile: line)
166 {
167 tile->open(vi);
168 }
169 }
170 for(const CompressedTile::Ptr& tile: lineOutOfBounds)
171 {
172 tile->open(vi);
173 }
174 outOfBounds->open(vi);
175}

◆ registerObserver()

Scroom::Bookkeeping::Token Layer::registerObserver ( const TileInitialisationObserver::Ptr observer)
114{
116
117 for(auto& line: tiles)
118 {
119 for(auto& tile: line)
120 {
121 t.add(tile->registerObserver(observer));
122 }
123 }
124 return t;
125}
Definition bookkeeping.hh:50
ThreadPtr add()
Definition threadpoolimpl.cc:241
TestObserver::Ptr observer
Definition observable-tests.cc:91
ThreadPool t(0)
Here is the call graph for this function:

Member Data Documentation

◆ depth

int Layer::depth
private

Referenced by create(), and getDepth().

◆ height

int Layer::height
private

Referenced by fetchData(), getHeight(), getRect(), and Layer().

◆ horTileCount

int Layer::horTileCount
private

◆ lineOutOfBounds

CompressedTileLine Layer::lineOutOfBounds
private

Referenced by close(), getTileLine(), Layer(), and open().

◆ logger

Scroom::Logger Layer::logger
private

Referenced by Layer().

◆ outOfBounds

CompressedTile::Ptr Layer::outOfBounds
private

Referenced by close(), getTile(), Layer(), and open().

◆ pageProvider

Scroom::MemoryBlobs::PageProvider::Ptr Layer::pageProvider
private

Referenced by getPageProvider(), and Layer().

◆ tiles

CompressedTileGrid Layer::tiles
private

◆ verTileCount

int Layer::verTileCount
private

◆ width

int Layer::width
private

Referenced by getRect(), getWidth(), and Layer().


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