Scroom  0.14
tileviewstate.hh
Go to the documentation of this file.
1 /*
2  * Scroom - Generic viewer for 2D data
3  * Copyright (C) 2009-2022 Kees-Jan Dijkzeul
4  *
5  * SPDX-License-Identifier: LGPL-2.1
6  */
7 
8 #pragma once
9 
10 #include <boost/shared_ptr.hpp>
11 #include <boost/thread.hpp>
12 #include <boost/weak_ptr.hpp>
13 
14 #include <scroom/observable.hh>
15 #include <scroom/stuff.hh>
16 #include <scroom/threadpool.hh>
19 
21 
23  : public Scroom::Utils::Observable<TileLoadingObserver>
24  , public TileLoadingObserver
25 {
26 public:
27  using Ptr = boost::shared_ptr<TileViewState>;
28  using WeakPtr = boost::weak_ptr<TileViewState>;
29 
30  enum State
31  {
39  };
40 
41 private:
42  boost::shared_ptr<CompressedTile> parent;
43  boost::mutex mut;
50  boost::weak_ptr<TiledBitmapViewData> tbvd;
52  int zoom{0};
57 
58 public:
59  ~TileViewState() override;
60  TileViewState(const TileViewState&) = delete;
61  TileViewState(TileViewState&&) = delete;
62  TileViewState operator=(const TileViewState&) = delete;
64 
65  static Ptr create(const boost::shared_ptr<CompressedTile>& parent);
66 
68  void setViewData(const boost::shared_ptr<TiledBitmapViewData>& tbvd);
70 
71  // TileLoadingObserver /////////////////////////////////////////////////
72  void tileLoaded(ConstTile::Ptr tile) override;
73 
74 private:
75  explicit TileViewState(boost::shared_ptr<CompressedTile> parent);
76 
80  void kick();
81 
85  void process(const ThreadPool::WeakQueue::Ptr& wq);
86 
87  void computeBase(const ThreadPool::WeakQueue::Ptr& wq, const ConstTile::Ptr& tile_, const LayerOperations::Ptr& lo_);
89  const ConstTile::Ptr& tile,
90  const LayerOperations::Ptr& lo,
92  int zoom);
94  void clear();
95 };
local.hh
TileLoadingObserver::Ptr
boost::shared_ptr< TileLoadingObserver > Ptr
Definition: tiledbitmaplayer.hh:83
TileViewState::TileViewState
TileViewState(const TileViewState &)=delete
TileViewState::cpuBound
ThreadPool::Ptr cpuBound
Definition: tileviewstate.hh:56
tiledbitmapviewdata.hh
UNUSED
#define UNUSED(x)
Definition: unused.hh:10
ThreadPool::Ptr
boost::shared_ptr< ThreadPool > Ptr
Definition: threadpool.hh:169
ThreadPool::Queue::Ptr
boost::shared_ptr< Queue > Ptr
Definition: threadpool.hh:82
Scroom::Utils::StuffWeak
boost::weak_ptr< void > StuffWeak
Definition: stuff.hh:19
TileViewState::INIT
@ INIT
Definition: tileviewstate.hh:32
threadpool.hh
ThreadPool::WeakQueue::Ptr
boost::shared_ptr< WeakQueue > Ptr
Definition: threadpool.hh:137
ThreadPool::Queue::createAsync
static Ptr createAsync()
Definition: threadpoolimpl.cc:379
TileViewState::computeBase
void computeBase(const ThreadPool::WeakQueue::Ptr &wq, const ConstTile::Ptr &tile_, const LayerOperations::Ptr &lo_)
Definition: tileviewstate.cc:185
TileViewState::desiredState
State desiredState
Definition: tileviewstate.hh:45
ConstTile::Ptr
boost::shared_ptr< ConstTile > Ptr
Definition: tile.hh:47
TiledBitmapViewData::Ptr
boost::shared_ptr< TiledBitmapViewData > Ptr
Definition: tiledbitmapviewdata.hh:25
TileViewState::tile
ConstTile::Ptr tile
Definition: tileviewstate.hh:49
observable.hh
TileViewState::State
State
Definition: tileviewstate.hh:30
TileViewState::Ptr
boost::shared_ptr< TileViewState > Ptr
Definition: tileviewstate.hh:27
TileViewState::r
Scroom::Utils::Stuff r
Definition: tileviewstate.hh:48
TileViewState::kick
void kick()
Definition: tileviewstate.cc:111
TileViewState::COMPUTING_ZOOM
@ COMPUTING_ZOOM
Definition: tileviewstate.hh:36
TileViewState::zoom
int zoom
Definition: tileviewstate.hh:52
TileViewState::getCacheResult
Scroom::Utils::Stuff getCacheResult()
Definition: tileviewstate.cc:60
TileViewState::mut
boost::mutex mut
Definition: tileviewstate.hh:43
TileViewState::operator=
TileViewState operator=(const TileViewState &)=delete
TileViewState::setZoom
void setZoom(LayerOperations::Ptr lo, int zoom)
Definition: tileviewstate.cc:83
TileViewState::setViewData
void setViewData(const boost::shared_ptr< TiledBitmapViewData > &tbvd)
Definition: tileviewstate.cc:66
TileViewState::baseCache
Scroom::Utils::Stuff baseCache
Definition: tileviewstate.hh:54
TileViewState::process
void process(const ThreadPool::WeakQueue::Ptr &wq)
Definition: tileviewstate.cc:129
TileViewState::queue
ThreadPool::Queue::Ptr queue
Definition: tileviewstate.hh:46
TileViewState::parent
boost::shared_ptr< CompressedTile > parent
Definition: tileviewstate.hh:42
TileViewState::~TileViewState
~TileViewState() override
Definition: tileviewstate.cc:25
CpuBound
ThreadPool::Ptr CpuBound()
Definition: threadpoolimpl.cc:452
TileViewState::LOADED
@ LOADED
Definition: tileviewstate.hh:33
TileViewState::COMPUTING_BASE
@ COMPUTING_BASE
Definition: tileviewstate.hh:34
TileViewState::lifeTimeManager
Scroom::Utils::StuffWeak lifeTimeManager
Definition: tileviewstate.hh:53
TileViewState::BASE_COMPUTED
@ BASE_COMPUTED
Definition: tileviewstate.hh:35
TileViewState::clear
void clear()
Definition: tileviewstate.cc:228
tiledbitmaplayer.hh
tiledbitmapinterface.hh
TileViewState::reportDone
void reportDone(const ThreadPool::WeakQueue::Ptr &wq, const ConstTile::Ptr &tile)
Definition: tileviewstate.cc:218
TileLoadingObserver::WeakPtr
boost::weak_ptr< TileLoadingObserver > WeakPtr
Definition: tiledbitmaplayer.hh:84
stuff.hh
Scroom::Utils::Stuff
boost::shared_ptr< void > Stuff
Definition: stuff.hh:18
Scroom::Utils::Observable
Definition: observable.hh:24
TileViewState::computeZoom
void computeZoom(const ThreadPool::WeakQueue::Ptr &wq, const ConstTile::Ptr &tile, const LayerOperations::Ptr &lo, Scroom::Utils::Stuff baseCache, int zoom)
Definition: tileviewstate.cc:201
TileViewState::tileLoaded
void tileLoaded(ConstTile::Ptr tile) override
Definition: tileviewstate.cc:42
TileViewState::weakQueue
ThreadPool::WeakQueue::Ptr weakQueue
Definition: tileviewstate.hh:47
TileViewState::DONE
@ DONE
Definition: tileviewstate.hh:38
TileViewState::create
static Ptr create(const boost::shared_ptr< CompressedTile > &parent)
Definition: tileviewstate.cc:27
LayerOperations::Ptr
boost::shared_ptr< LayerOperations > Ptr
Definition: tiledbitmapinterface.hh:53
TileViewState::tbvd
boost::weak_ptr< TiledBitmapViewData > tbvd
Definition: tileviewstate.hh:50
defect_message
#define defect_message(m)
Definition: assertions.hh:43
TileViewState::zoomCache
Scroom::Utils::Stuff zoomCache
Definition: tileviewstate.hh:55
TileViewState::lo
LayerOperations::Ptr lo
Definition: tileviewstate.hh:51
TileViewState
Definition: tileviewstate.hh:22
TiledBitmapViewData
Definition: tiledbitmapviewdata.hh:19
unused.hh
TileViewState::state
State state
Definition: tileviewstate.hh:44
LOAD_PRIO
#define LOAD_PRIO
Definition: local.hh:10
tileviewstate.hh
TileLoadingObserver
Definition: tiledbitmaplayer.hh:80
TileViewState::ZOOM_COMPUTED
@ ZOOM_COMPUTED
Definition: tileviewstate.hh:37