Scroom 0.14-48-ga0fee447
Loading...
Searching...
No Matches
transparentoverlayviewinfo.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#include <vector>
14
15#include <gtk/gtk.h>
16
17#include <cairo.h>
18
21#include <scroom/utilities.hh>
23
24#include "sizedeterminer.hh"
25
27
29 : public ViewInterface
30 , virtual public Scroom::Utils::Base
31{
32public:
33 using Ptr = std::shared_ptr<ChildView>;
34
35private:
36 std::shared_ptr<TransparentOverlayViewInfo> parent;
38
39private:
40 explicit ChildView(std::shared_ptr<TransparentOverlayViewInfo> parent);
41
42public:
43 static Ptr create(std::shared_ptr<TransparentOverlayViewInfo> const& parent);
44
45 // ViewInterface ///////////////////////////////////////////////////////
46 void invalidate() override;
48 void addSideWidget(std::string title, GtkWidget* w) override;
49 void removeSideWidget(GtkWidget* w) override;
50 void addToToolbar(GtkToolItem* ti) override;
51 void removeFromToolbar(GtkToolItem* ti) override;
53 void registerPostRenderer(PostRenderer::Ptr renderer) override;
54 void setStatusMessage(const std::string& message) override;
56 void addToolButton(GtkToggleButton* name, ToolStateListener::Ptr callback) override;
57};
58
60{
61public:
62 using Ptr = std::shared_ptr<TransparentOverlayViewInfo>;
63
64private:
65 using ChildMap = std::map<PresentationInterface::Ptr, ChildView::Ptr>;
66
67private:
71 std::vector<GtkWidget*> buttons;
72 std::vector<PresentationInterface::Ptr> children;
74
75private:
78
79public:
81 void addChildren(const std::list<PresentationInterface::Ptr>& children);
82 void addChild(const PresentationInterface::Ptr& child);
84
85 void close();
86
87 void redraw(cairo_t* cr, Scroom::Utils::Rectangle<double> const& presentationArea, int zoom);
88
89 void invalidate() { parentView->invalidate(); }
91
92 // Helpers
93 void toggled(GtkToggleButton* button);
94};
Definition transparentoverlayviewinfo.hh:31
std::shared_ptr< ChildView > Ptr
Definition transparentoverlayviewinfo.hh:33
ProgressInterface::Ptr getProgressInterface() override
Definition transparentoverlayviewinfo.cc:70
void addSideWidget(std::string title, GtkWidget *w) override
Definition transparentoverlayviewinfo.cc:72
void registerPostRenderer(PostRenderer::Ptr renderer) override
Definition transparentoverlayviewinfo.cc:82
void invalidate() override
Definition transparentoverlayviewinfo.cc:68
static Ptr create(std::shared_ptr< TransparentOverlayViewInfo > const &parent)
Definition transparentoverlayviewinfo.cc:66
void removeFromToolbar(GtkToolItem *ti) override
Definition transparentoverlayviewinfo.cc:78
void addToolButton(GtkToggleButton *name, ToolStateListener::Ptr callback) override
Definition transparentoverlayviewinfo.cc:88
void removeSideWidget(GtkWidget *w) override
Definition transparentoverlayviewinfo.cc:74
void registerSelectionListener(SelectionListener::Ptr listener) override
Definition transparentoverlayviewinfo.cc:80
ProgressInterface::Ptr progressInterface
Definition transparentoverlayviewinfo.hh:37
void setStatusMessage(const std::string &message) override
Definition transparentoverlayviewinfo.cc:84
void addToToolbar(GtkToolItem *ti) override
Definition transparentoverlayviewinfo.cc:76
std::shared_ptr< TransparentOverlayViewInfo > parent
Definition transparentoverlayviewinfo.hh:36
PresentationInterface::Ptr getCurrentPresentation() override
Definition transparentoverlayviewinfo.cc:86
std::shared_ptr< PostRenderer > Ptr
Definition viewinterface.hh:81
std::shared_ptr< PresentationInterface > Ptr
Definition presentationinterface.hh:73
std::shared_ptr< ProgressInterface > Ptr
Definition progressinterface.hh:20
Definition utilities.hh:34
std::shared_ptr< ProgressInterfaceMultiplexer > Ptr
Definition progressinterfacehelpers.hh:184
Definition rectangle.hh:29
std::shared_ptr< SelectionListener > Ptr
Definition viewinterface.hh:118
std::shared_ptr< SizeDeterminer > Ptr
Definition sizedeterminer.hh:21
std::shared_ptr< ToolStateListener > Ptr
Definition viewinterface.hh:164
Definition transparentoverlayviewinfo.hh:60
void addChild(const PresentationInterface::Ptr &child)
Definition transparentoverlayviewinfo.cc:140
void close()
Definition transparentoverlayviewinfo.cc:162
ProgressInterface::Ptr getProgressInterface()
Definition transparentoverlayviewinfo.hh:90
void addChildren(const std::list< PresentationInterface::Ptr > &children)
Definition transparentoverlayviewinfo.cc:132
std::shared_ptr< TransparentOverlayViewInfo > Ptr
Definition transparentoverlayviewinfo.hh:62
PresentationInterface::Ptr getChild(const ChildView::Ptr &cv)
Definition transparentoverlayviewinfo.cc:150
ChildMap childViews
Definition transparentoverlayviewinfo.hh:69
ViewInterface::Ptr parentView
Definition transparentoverlayviewinfo.hh:68
std::vector< PresentationInterface::Ptr > children
Definition transparentoverlayviewinfo.hh:72
void toggled(GtkToggleButton *button)
Definition transparentoverlayviewinfo.cc:255
std::vector< GtkWidget * > buttons
Definition transparentoverlayviewinfo.hh:71
Scroom::Utils::ProgressInterfaceMultiplexer::Ptr progressInterfaceMultiplexer
Definition transparentoverlayviewinfo.hh:70
void createToggleToolButton(PresentationInterface::Ptr const &p)
Definition transparentoverlayviewinfo.cc:106
void invalidate()
Definition transparentoverlayviewinfo.hh:89
static Ptr create(const ViewInterface::WeakPtr &vi, SizeDeterminer::Ptr const &sizeDeterminer)
Definition transparentoverlayviewinfo.cc:127
void redraw(cairo_t *cr, Scroom::Utils::Rectangle< double > const &presentationArea, int zoom)
Definition transparentoverlayviewinfo.cc:175
std::map< PresentationInterface::Ptr, ChildView::Ptr > ChildMap
Definition transparentoverlayviewinfo.hh:65
SizeDeterminer::Ptr sizeDeterminer
Definition transparentoverlayviewinfo.hh:73
Definition viewinterface.hh:191
std::weak_ptr< ViewInterface > WeakPtr
Definition viewinterface.hh:194
std::shared_ptr< ViewInterface > Ptr
Definition viewinterface.hh:193
PresentationInterfaceStub::Ptr const p
Definition determine-size-test.cc:172
std::pair< GSourceFunc, gpointer > const w
Definition gtkhelper-tests.cc:42
ViewInterface::Ptr const vi
Definition pipette-tests.cc:186
cairo_t * cr
Definition transformpresentation_test.cc:72