Scroom 0.14-48-ga0fee447
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;
52
53public:
54 static Ptr create(int bitmapWidth, int bitmapHeight, LayerSpec const& ls);
55 static Ptr create(const Layer::Ptr& bottom, const LayerSpec& ls);
56
57 ~TiledBitmap() override;
58 TiledBitmap(const TiledBitmap&) = delete;
62
63private:
65
66 void initialize();
67 void initialize(const Layer::Ptr& bottom);
68
69private:
70 static void drawTile(cairo_t* cr, const CompressedTile::Ptr& tile, const Scroom::Utils::Rectangle<double>& viewArea);
71 void connect(Layer::Ptr const& layer, Layer::Ptr const& prevLayer, const LayerOperations::Ptr& prevLo);
72
73public:
75 // TiledBitmapInterface
76
77public:
78 void setSource(SourcePresentation::Ptr sp) override;
79 Layer::Ptr getBottomLayer() override;
80
81 void open(ViewInterface::WeakPtr viewInterface) override;
82 void close(ViewInterface::WeakPtr vi) override;
83 void redraw(
85 cairo_t* cr,
86 Scroom::Utils::Rectangle<double> const& presentationArea,
87 int zoom
88 ) override;
89 void clearCaches(ViewInterface::Ptr vi) override;
90
92 // TileInitialisationObserver
93
94 void tileCreated(const CompressedTile::Ptr& tile) override;
95 void tileFinished(const CompressedTile::Ptr& tile) override;
96
98 // Helpers
100};
std::shared_ptr< CompressedTile > Ptr
Definition tiledbitmaplayer.hh:107
std::shared_ptr< LayerOperations > Ptr
Definition tiledbitmapinterface.hh:51
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< ProgressInterfaceBroadcaster > Ptr
Definition progressinterfacehelpers.hh:131
Definition rectangle.hh:29
std::shared_ptr< SourcePresentation > Ptr
Definition tiledbitmapinterface.hh:191
Definition tiledbitmaplayer.hh:49
Definition tiledbitmapinterface.hh:230
Definition tiled-bitmap.hh:32
TiledBitmap operator=(TiledBitmap &&)=delete
void initialize()
Definition tiled-bitmap.cc:133
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
void setSource(SourcePresentation::Ptr sp) override
Definition tiled-bitmap.cc:178
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:135
static void drawTile(cairo_t *cr, const CompressedTile::Ptr &tile, const Scroom::Utils::Rectangle< double > &viewArea)
Definition tiled-bitmap.cc:185
void clearCaches(ViewInterface::Ptr vi) override
Definition tiled-bitmap.cc:280
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:183
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:143
boost::mutex tileFinishedMutex
Definition tiled-bitmap.hh:47
void tileFinished(const CompressedTile::Ptr &tile) override
TileInitialisationObserver.
Definition tiled-bitmap.cc:324
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:204
static Ptr create(int bitmapWidth, int bitmapHeight, LayerSpec const &ls)
Definition tiled-bitmap.cc:72
ProgressInterface::Ptr progressInterface()
Definition tiled-bitmap.hh:99
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:304
void tileCreated(const CompressedTile::Ptr &tile) override
Definition tiled-bitmap.cc:322
void open(ViewInterface::WeakPtr viewInterface) override
Definition tiled-bitmap.cc:290
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:183
cairo_t * cr
Definition transformpresentation_test.cc:72