Scroom  0.14
transparentoverlayviewinfo.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 <list>
11 #include <map>
12 #include <vector>
13 
14 #include <boost/shared_ptr.hpp>
15 
16 #include <gtk/gtk.h>
17 
18 #include <cairo.h>
19 
22 #include <scroom/utilities.hh>
23 #include <scroom/viewinterface.hh>
24 
25 #include "sizedeterminer.hh"
26 
28 
29 class ChildView
30  : public ViewInterface
31  , virtual public Scroom::Utils::Base
32 {
33 public:
34  using Ptr = boost::shared_ptr<ChildView>;
35 
36 private:
37  boost::shared_ptr<TransparentOverlayViewInfo> parent;
39 
40 private:
41  explicit ChildView(boost::shared_ptr<TransparentOverlayViewInfo> parent);
42 
43 public:
44  static Ptr create(boost::shared_ptr<TransparentOverlayViewInfo> const& parent);
45 
46  // ViewInterface ///////////////////////////////////////////////////////
47  void invalidate() override;
49  void addSideWidget(std::string title, GtkWidget* w) override;
50  void removeSideWidget(GtkWidget* w) override;
51  void addToToolbar(GtkToolItem* ti) override;
52  void removeFromToolbar(GtkToolItem* ti) override;
53  void registerSelectionListener(SelectionListener::Ptr listener) override;
54  void registerPostRenderer(PostRenderer::Ptr renderer) override;
55  void setStatusMessage(const std::string& message) override;
57  void addToolButton(GtkToggleButton* name, ToolStateListener::Ptr callback) override;
58 };
59 
61 {
62 public:
63  using Ptr = boost::shared_ptr<TransparentOverlayViewInfo>;
64 
65 private:
66  using ChildMap = std::map<PresentationInterface::Ptr, ChildView::Ptr>;
67 
68 private:
72  std::vector<GtkWidget*> buttons;
73  std::vector<PresentationInterface::Ptr> children;
75 
76 private:
79 
80 public:
82  void addChildren(const std::list<PresentationInterface::Ptr>& children);
83  void addChild(const PresentationInterface::Ptr& child);
85 
86  void close();
87 
88  void redraw(cairo_t* cr, Scroom::Utils::Rectangle<double> const& presentationArea, int zoom);
89 
90  void invalidate() { parentView->invalidate(); }
92 
93  // Helpers
94  void toggled(GtkToggleButton* button);
95 };
ChildView::create
static Ptr create(boost::shared_ptr< TransparentOverlayViewInfo > const &parent)
Definition: transparentoverlayviewinfo.cc:70
ChildView::invalidate
void invalidate() override
Definition: transparentoverlayviewinfo.cc:72
ChildView
Definition: transparentoverlayviewinfo.hh:29
sizedeterminer.hh
ChildView::addToToolbar
void addToToolbar(GtkToolItem *ti) override
Definition: transparentoverlayviewinfo.cc:80
ChildView::ChildView
ChildView(boost::shared_ptr< TransparentOverlayViewInfo > parent)
Definition: transparentoverlayviewinfo.cc:64
TransparentOverlayViewInfo::getProgressInterface
ProgressInterface::Ptr getProgressInterface()
Definition: transparentoverlayviewinfo.hh:91
progressinterfacehelpers.hh
MONOCHROME_COLORMAPPABLE_PROPERTY_NAME
const std::string MONOCHROME_COLORMAPPABLE_PROPERTY_NAME
Definition: colormappable.hh:22
Scroom
Definition: assertions.hh:14
presentationinterface.hh
Scroom::MemoryBlocks::RawPageData::Ptr
boost::shared_ptr< uint8_t > Ptr
Definition: blockallocator.hh:23
utilities.hh
ProgressInterface::Ptr
boost::shared_ptr< ProgressInterface > Ptr
Definition: progressinterface.hh:20
ViewInterface::Ptr
boost::shared_ptr< ViewInterface > Ptr
Definition: viewinterface.hh:193
ChildView::addToolButton
void addToolButton(GtkToggleButton *name, ToolStateListener::Ptr callback) override
Definition: transparentoverlayviewinfo.cc:92
TransparentOverlayViewInfo::buttons
std::vector< GtkWidget * > buttons
Definition: transparentoverlayviewinfo.hh:72
TransparentOverlayViewInfo::createToggleToolButton
void createToggleToolButton(PresentationInterface::Ptr const &p)
Definition: transparentoverlayviewinfo.cc:110
ChildView::progressInterface
ProgressInterface::Ptr progressInterface
Definition: transparentoverlayviewinfo.hh:38
colormappable.hh
Scroom::Utils::ProgressInterfaceMultiplexer::Ptr
boost::shared_ptr< ProgressInterfaceMultiplexer > Ptr
Definition: progressinterfacehelpers.hh:184
TransparentOverlayViewInfo::ChildMap
std::map< PresentationInterface::Ptr, ChildView::Ptr > ChildMap
Definition: transparentoverlayviewinfo.hh:66
ChildView::addSideWidget
void addSideWidget(std::string title, GtkWidget *w) override
Definition: transparentoverlayviewinfo.cc:76
transparentoverlayviewinfo.hh
TransparentOverlayViewInfo::close
void close()
Definition: transparentoverlayviewinfo.cc:166
bitmap-helpers.hh
SelectionListener::Ptr
boost::shared_ptr< SelectionListener > Ptr
Definition: viewinterface.hh:118
TransparentOverlayViewInfo::Ptr
boost::shared_ptr< TransparentOverlayViewInfo > Ptr
Definition: transparentoverlayviewinfo.hh:63
TransparentOverlayViewInfo::addChild
void addChild(const PresentationInterface::Ptr &child)
Definition: transparentoverlayviewinfo.cc:144
anonymous_namespace{transparentoverlayviewinfo.cc}::setToggleButtonColor
void setToggleButtonColor(GtkWidget *w, PresentationInterface::Ptr const &p)
Definition: transparentoverlayviewinfo.cc:25
TransparentOverlayViewInfo::getChild
PresentationInterface::Ptr getChild(const ChildView::Ptr &cv)
Definition: transparentoverlayviewinfo.cc:154
TransparentOverlayViewInfo
Definition: transparentoverlayviewinfo.hh:60
PresentationInterface::Ptr
boost::shared_ptr< PresentationInterface > Ptr
Definition: presentationinterface.hh:74
ViewInterface::WeakPtr
boost::weak_ptr< ViewInterface > WeakPtr
Definition: viewinterface.hh:194
ChildView::removeFromToolbar
void removeFromToolbar(GtkToolItem *ti) override
Definition: transparentoverlayviewinfo.cc:82
TransparentOverlayViewInfo::progressInterfaceMultiplexer
Scroom::Utils::ProgressInterfaceMultiplexer::Ptr progressInterfaceMultiplexer
Definition: transparentoverlayviewinfo.hh:71
TransparentOverlayViewInfo::redraw
void redraw(cairo_t *cr, Scroom::Utils::Rectangle< double > const &presentationArea, int zoom)
Definition: transparentoverlayviewinfo.cc:179
Color::getHex
std::string getHex() const
Definition: color.hh:93
Scroom::Utils::Base
Definition: utilities.hh:30
ChildView::getCurrentPresentation
PresentationInterface::Ptr getCurrentPresentation() override
Definition: transparentoverlayviewinfo.cc:90
TransparentOverlayViewInfo::invalidate
void invalidate()
Definition: transparentoverlayviewinfo.hh:90
ChildView::registerSelectionListener
void registerSelectionListener(SelectionListener::Ptr listener) override
Definition: transparentoverlayviewinfo.cc:84
TransparentOverlayViewInfo::sizeDeterminer
SizeDeterminer::Ptr sizeDeterminer
Definition: transparentoverlayviewinfo.hh:74
viewinterface.hh
ChildView::removeSideWidget
void removeSideWidget(GtkWidget *w) override
Definition: transparentoverlayviewinfo.cc:78
TransparentOverlayViewInfo::create
static Ptr create(const ViewInterface::WeakPtr &vi, SizeDeterminer::Ptr const &sizeDeterminer)
Definition: transparentoverlayviewinfo.cc:130
on_toggled
static void on_toggled(GtkToggleButton *button, gpointer data)
Definition: transparentoverlayviewinfo.cc:105
TransparentOverlayViewInfo::TransparentOverlayViewInfo
TransparentOverlayViewInfo(const ViewInterface::WeakPtr &vi, SizeDeterminer::Ptr sizeDeterminer)
Definition: transparentoverlayviewinfo.cc:98
SizeDeterminer::Ptr
boost::shared_ptr< SizeDeterminer > Ptr
Definition: sizedeterminer.hh:22
ChildView::parent
boost::shared_ptr< TransparentOverlayViewInfo > parent
Definition: transparentoverlayviewinfo.hh:37
ChildView::registerPostRenderer
void registerPostRenderer(PostRenderer::Ptr renderer) override
Definition: transparentoverlayviewinfo.cc:86
Colormappable::Ptr
boost::shared_ptr< Colormappable > Ptr
Definition: colormappable.hh:116
Scroom::Utils::Rectangle::toGdkRectangle
cairo_rectangle_int_t toGdkRectangle() const
Definition: rectangle.hh:62
TransparentOverlayViewInfo::addChildren
void addChildren(const std::list< PresentationInterface::Ptr > &children)
Definition: transparentoverlayviewinfo.cc:136
TransparentOverlayViewInfo::parentView
ViewInterface::Ptr parentView
Definition: transparentoverlayviewinfo.hh:69
Scroom::Bitmap::BitmapSurface
Definition: bitmap-helpers.hh:22
Color::getContrastingBlackOrWhite
Color getContrastingBlackOrWhite() const
Definition: color.hh:121
TransparentOverlayViewInfo::toggled
void toggled(GtkToggleButton *button)
Definition: transparentoverlayviewinfo.cc:259
ChildView::Ptr
boost::shared_ptr< ChildView > Ptr
Definition: transparentoverlayviewinfo.hh:34
unused.hh
Scroom::Utils::Rectangle< double >
TransparentOverlayViewInfo::children
std::vector< PresentationInterface::Ptr > children
Definition: transparentoverlayviewinfo.hh:73
TRANSPARENT_BACKGROUND_PROPERTY_NAME
const std::string TRANSPARENT_BACKGROUND_PROPERTY_NAME
Definition: colormappable.hh:23
Color
Definition: color.hh:34
ToolStateListener::Ptr
boost::shared_ptr< ToolStateListener > Ptr
Definition: viewinterface.hh:164
ViewInterface
Definition: viewinterface.hh:190
ChildView::setStatusMessage
void setStatusMessage(const std::string &message) override
Definition: transparentoverlayviewinfo.cc:88
create
void create(NewPresentationInterface *interface)
Definition: loader.cc:175
TransparentOverlayViewInfo::childViews
ChildMap childViews
Definition: transparentoverlayviewinfo.hh:70
ChildView::getProgressInterface
ProgressInterface::Ptr getProgressInterface() override
Definition: transparentoverlayviewinfo.cc:74
PostRenderer::Ptr
boost::shared_ptr< PostRenderer > Ptr
Definition: viewinterface.hh:83