Scroom 0.14-48-ga0fee447
Loading...
Searching...
No Matches
tiledbitmapinterface.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 <memory>
11#include <vector>
12
13#include <gdk/gdk.h>
14#include <gtk/gtk.h>
15
16#include <cairo.h>
17
18#include <scroom/interface.hh>
20#include <scroom/rectangle.hh>
22#include <scroom/stuff.hh>
23#include <scroom/tile.hh>
25
37
49{
50public:
51 using Ptr = std::shared_ptr<LayerOperations>;
52
53public:
60 virtual int getBpp() = 0;
61
73 virtual void initializeCairo(cairo_t* cr) = 0;
74
89 virtual void draw(
90 cairo_t* cr,
91 const ConstTile::Ptr& tile,
94 int zoom,
96 ) = 0;
97
109 virtual void drawState(cairo_t* cr, TileState s, Scroom::Utils::Rectangle<double> viewArea) = 0;
110
126 virtual Scroom::Utils::Stuff cache(const ConstTile::Ptr& /*tile*/) { return {}; }
127
146 virtual Scroom::Utils::Stuff cacheZoom(const ConstTile::Ptr& /*tile*/, int /*zoom*/, Scroom::Utils::Stuff& /*cache*/)
147 {
148 return {};
149 }
150
168 virtual void reduce(Tile::Ptr target, ConstTile::Ptr source, int x, int y) = 0;
169};
170
183using LayerSpec = std::vector<LayerOperations::Ptr>;
184
189{
190public:
191 using Ptr = std::shared_ptr<SourcePresentation>;
192
193public:
212 virtual void fillTiles(int startLine, int lineCount, int tileWidth, int firstTile, std::vector<Tile::Ptr>& tiles) = 0;
213
219 virtual void done() = 0;
220
221 virtual std::string getName() = 0;
222};
223
224class Layer;
225
230{
231public:
232 using Ptr = std::shared_ptr<TiledBitmapInterface>;
233
242 virtual void setSource(SourcePresentation::Ptr sp) = 0;
243
251 virtual std::shared_ptr<Layer> getBottomLayer() = 0;
252
260 virtual void
261 redraw(ViewInterface::Ptr const& vi, cairo_t* cr, const Scroom::Utils::Rectangle<double>& presentationArea, int zoom) = 0;
262
272};
273
313TiledBitmapInterface::Ptr createTiledBitmap(int bitmapWidth, int bitmapHeight, LayerSpec const& ls);
std::shared_ptr< ConstTile > Ptr
Definition tile.hh:45
Definition interface.hh:11
Definition tiledbitmapinterface.hh:49
virtual void initializeCairo(cairo_t *cr)=0
virtual void draw(cairo_t *cr, const ConstTile::Ptr &tile, Scroom::Utils::Rectangle< double > tileArea, Scroom::Utils::Rectangle< double > viewArea, int zoom, Scroom::Utils::Stuff cache)=0
virtual void reduce(Tile::Ptr target, ConstTile::Ptr source, int x, int y)=0
virtual Scroom::Utils::Stuff cacheZoom(const ConstTile::Ptr &, int, Scroom::Utils::Stuff &)
Definition tiledbitmapinterface.hh:146
virtual Scroom::Utils::Stuff cache(const ConstTile::Ptr &)
Definition tiledbitmapinterface.hh:126
virtual int getBpp()=0
virtual void drawState(cairo_t *cr, TileState s, Scroom::Utils::Rectangle< double > viewArea)=0
std::shared_ptr< LayerOperations > Ptr
Definition tiledbitmapinterface.hh:51
Definition tiledbitmaplayer.hh:248
Definition rectangle.hh:29
Definition tiledbitmapinterface.hh:189
virtual void fillTiles(int startLine, int lineCount, int tileWidth, int firstTile, std::vector< Tile::Ptr > &tiles)=0
virtual std::string getName()=0
std::shared_ptr< SourcePresentation > Ptr
Definition tiledbitmapinterface.hh:191
virtual void done()=0
std::shared_ptr< Tile > Ptr
Definition tile.hh:19
Definition tiledbitmapinterface.hh:230
virtual std::shared_ptr< Layer > getBottomLayer()=0
virtual void redraw(ViewInterface::Ptr const &vi, cairo_t *cr, const Scroom::Utils::Rectangle< double > &presentationArea, int zoom)=0
virtual void setSource(SourcePresentation::Ptr sp)=0
virtual void clearCaches(ViewInterface::Ptr vi)=0
std::shared_ptr< TiledBitmapInterface > Ptr
Definition tiledbitmapinterface.hh:232
std::shared_ptr< ViewInterface > Ptr
Definition viewinterface.hh:193
Definition presentationinterface.hh:32
std::shared_ptr< void > Stuff
Definition stuff.hh:17
ViewInterface::Ptr const vi
Definition pipette-tests.cc:186
std::vector< LayerOperations::Ptr > LayerSpec
Definition tiledbitmapinterface.hh:183
TileState
Definition tiledbitmapinterface.hh:31
@ TILE_UNLOADED
Definition tiledbitmapinterface.hh:33
@ TILE_LOADED
Definition tiledbitmapinterface.hh:34
@ TILE_UNINITIALIZED
Definition tiledbitmapinterface.hh:32
@ TILE_OUT_OF_BOUNDS
Definition tiledbitmapinterface.hh:35
TiledBitmapInterface::Ptr createTiledBitmap(int bitmapWidth, int bitmapHeight, LayerSpec const &ls)
Definition tiled-bitmap.cc:27
BitmapSurface::Ptr const s
Definition transformpresentation_test.cc:70
cairo_t * cr
Definition transformpresentation_test.cc:72