Scroom 0.14-49-gb7ae7a6d
Loading...
Searching...
No Matches
tiled-bitmap.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 <list>
11#include <map>
12#include <memory>
13
14#include <boost/thread/mutex.hpp>
15
16#include <scroom/interface.hh>
17#include <scroom/logger.hh>
21#include <scroom/threadpool.hh>
24
25#include "layercoordinator.hh"
27
31 , public virtual Scroom::Utils::Base
32{
33public:
34 using Ptr = std::shared_ptr<TiledBitmap>;
35 using WeakPtr = std::weak_ptr<TiledBitmap>;
37
38private:
42 std::vector<Layer::Ptr> layers;
43 std::list<LayerCoordinator::Ptr> coordinators;
44 boost::mutex viewDataMutex;
46 int tileCount{0};
47 boost::mutex tileFinishedMutex;
53
54public:
55 static Ptr create(int bitmapWidth, int bitmapHeight, LayerSpec const& ls);
56 static Ptr create(const Layer::Ptr& bottom, const LayerSpec& ls);
57
58 ~TiledBitmap() override;
59 TiledBitmap(const TiledBitmap&) = delete;
63
64private:
66
67 void initialize();
68 void initialize(const Layer::Ptr& bottom);
69
70private:
71 static void drawTile(cairo_t* cr, const CompressedTile::Ptr& tile, const Scroom::Utils::Rectangle<double>& viewArea);
72 void connect(Layer::Ptr const& layer, Layer::Ptr const& prevLayer, const LayerOperations::Ptr& prevLo);
73
74public:
76 // TiledBitmapInterface
77
78public:
79 void setSource(SourcePresentation::Ptr sp) override;
80 Layer::Ptr getBottomLayer() override;
81
82 void open(ViewInterface::WeakPtr viewInterface) override;
83 void close(ViewInterface::WeakPtr vi) override;
84 void redraw(
86 cairo_t* cr,
87 Scroom::Utils::Rectangle<double> const& presentationArea,
88 int zoom
89 ) override;
90 void clearCaches(ViewInterface::Ptr vi) override;
91
92 [[nodiscard]] Scroom::Utils::Context::ConstPtr getContext() const override;
93
95 // TileInitialisationObserver
96
97 void tileCreated(const CompressedTile::Ptr& tile) override;
98 void tileFinished(const CompressedTile::Ptr& tile) override;
99
101 // Helpers
103};
std::shared_ptr< CompressedTile > Ptr
Definition tiledbitmaplayer.hh:107
std::shared_ptr< LayerOperations > Ptr
Definition tiledbitmapinterface.hh:52
std::shared_ptr< Layer > Ptr
Definition tiledbitmaplayer.hh:250
std::shared_ptr< ProgressInterface > Ptr
Definition progressinterface.hh:20
Definition logger.hh:49
Definition utilities.hh:34
std::shared_ptr< const Context > ConstPtr
Definition context.hh:27
std::shared_ptr< Context > Ptr
Definition context.hh:26
std::shared_ptr< ProgressInterfaceBroadcaster > Ptr
Definition progressinterfacehelpers.hh:131
Definition rectangle.hh:29
std::shared_ptr< SourcePresentation > Ptr
Definition tiledbitmapinterface.hh:192
Definition tiledbitmaplayer.hh:49
Definition tiledbitmapinterface.hh:231
Definition tiled-bitmap.hh:32
TiledBitmap operator=(TiledBitmap &&)=delete
void initialize()
Definition tiled-bitmap.cc:145
TiledBitmap(TiledBitmap &&)=delete
std::shared_ptr< TiledBitmap > Ptr
Definition tiled-bitmap.hh:34
ViewDataMap viewData
Definition tiled-bitmap.hh:45
std::weak_ptr< TiledBitmap > WeakPtr
Definition tiled-bitmap.hh:35
Scroom::Utils::StuffList registrations
Definition tiled-bitmap.hh:50
Scroom::Utils::Context::ConstPtr getContext() const override
Definition tiled-bitmap.cc:302
void setSource(SourcePresentation::Ptr sp) override
Definition tiled-bitmap.cc:190
int bitmapHeight
Definition tiled-bitmap.hh:40
std::vector< Layer::Ptr > layers
Definition tiled-bitmap.hh:42
Scroom::Utils::ProgressInterfaceBroadcaster::Ptr progressBroadcaster
Definition tiled-bitmap.hh:49
Scroom::Utils::WeakKeyMap< ViewInterface::WeakPtr, TiledBitmapViewData::Ptr > ViewDataMap
Definition tiled-bitmap.hh:36
~TiledBitmap() override
Definition tiled-bitmap.cc:147
static void drawTile(cairo_t *cr, const CompressedTile::Ptr &tile, const Scroom::Utils::Rectangle< double > &viewArea)
Definition tiled-bitmap.cc:197
void clearCaches(ViewInterface::Ptr vi) override
Definition tiled-bitmap.cc:292
Scroom::Logger logger
Definition tiled-bitmap.hh:51
std::list< LayerCoordinator::Ptr > coordinators
Definition tiled-bitmap.hh:43
Layer::Ptr getBottomLayer() override
Definition tiled-bitmap.cc:195
int bitmapWidth
Definition tiled-bitmap.hh:39
void connect(Layer::Ptr const &layer, Layer::Ptr const &prevLayer, const LayerOperations::Ptr &prevLo)
Definition tiled-bitmap.cc:155
boost::mutex tileFinishedMutex
Definition tiled-bitmap.hh:47
Scroom::Utils::Context::Ptr context
Definition tiled-bitmap.hh:52
void tileFinished(const CompressedTile::Ptr &tile) override
TileInitialisationObserver.
Definition tiled-bitmap.cc:338
boost::mutex viewDataMutex
Definition tiled-bitmap.hh:44
TiledBitmap operator=(const TiledBitmap &)=delete
void redraw(ViewInterface::Ptr const &vi, cairo_t *cr, Scroom::Utils::Rectangle< double > const &presentationArea, int zoom) override
Definition tiled-bitmap.cc:216
static Ptr create(int bitmapWidth, int bitmapHeight, LayerSpec const &ls)
Definition tiled-bitmap.cc:73
ProgressInterface::Ptr progressInterface()
Definition tiled-bitmap.hh:102
int tileCount
Definition tiled-bitmap.hh:46
LayerSpec ls
Definition tiled-bitmap.hh:41
TiledBitmap(const TiledBitmap &)=delete
void close(ViewInterface::WeakPtr vi) override
Definition tiled-bitmap.cc:318
void tileCreated(const CompressedTile::Ptr &tile) override
Definition tiled-bitmap.cc:336
void open(ViewInterface::WeakPtr viewInterface) override
Definition tiled-bitmap.cc:304
int tileFinishedCount
Definition tiled-bitmap.hh:48
std::weak_ptr< ViewInterface > WeakPtr
Definition viewinterface.hh:194
std::shared_ptr< ViewInterface > Ptr
Definition viewinterface.hh:193
std::map< K, V, std::owner_less< K > > WeakKeyMap
Definition utilities.hh:118
std::list< Stuff > StuffList
Definition stuff.hh:19
ViewInterface::Ptr const vi
Definition pipette-tests.cc:186
std::vector< LayerOperations::Ptr > LayerSpec
Definition tiledbitmapinterface.hh:184
cairo_t * cr
Definition transformpresentation_test.cc:72