Scroom  0.14
transformpresentation.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 <boost/shared_ptr.hpp>
11 
12 #include <scroom/bitmap-helpers.hh>
13 #include <scroom/colormappable.hh>
15 #include <scroom/point.hh>
17 #include <scroom/rectangle.hh>
19 
21 {
22 private:
24 
25 public:
26  using Ptr = boost::shared_ptr<TransformationData>;
27 
28  static Ptr create(Scroom::Utils::Point<double> aspectRatio_);
29  static Ptr create();
30 
31  void setAspectRatio(double x, double y);
33  [[nodiscard]] Scroom::Utils::Point<double> getAspectRatio() const;
34 
35 private:
37  explicit TransformationData(Scroom::Utils::Point<double> aspectRatio_);
38 };
39 
40 namespace Detail
41 {
42  class ViewData : public ViewInterface
43  {
44  public:
45  using Ptr = boost::shared_ptr<ViewData>;
46 
47  public:
49  int zoom{0};
52 
53  public:
54  [[nodiscard]] ViewInterface::Ptr parent() const;
56 
57  // ViewInterface
58  void invalidate() override;
60  void addSideWidget(std::string title, GtkWidget* w) override;
61  void removeSideWidget(GtkWidget* w) override;
62  void addToToolbar(GtkToolItem* ti) override;
63  void removeFromToolbar(GtkToolItem* ti) override;
65  void registerPostRenderer(PostRenderer::Ptr ptr) override;
66  void setStatusMessage(const std::string& string) override;
67  boost::shared_ptr<PresentationInterface> getCurrentPresentation() override;
68  void addToolButton(GtkToggleButton* button, ToolStateListener::Ptr ptr) override;
69 
70  private:
71  explicit ViewData(ViewInterface::WeakPtr parent_);
72  };
73 
74 } // namespace Detail
75 
77  : public PresentationBaseSimple
78  , public Colormappable
79  , public PipetteViewInterface
80  , public ShowMetadataInterface
81 {
82 public:
83  using Ptr = boost::shared_ptr<TransformPresentation>;
84 
85 private:
90  std::map<ViewInterface::WeakPtr, Detail::ViewData::Ptr> viewData;
91 
92 private:
94 
95 public:
97 
98  // Viewable
99  void open(ViewInterface::WeakPtr vi) override;
100  void close(ViewInterface::WeakPtr vi) override;
101 
102  // PresentationInterface
104  void redraw(ViewInterface::Ptr const& vi, cairo_t* cr, Scroom::Utils::Rectangle<double> presentationArea, int zoom) override;
105  bool getProperty(const std::string& name, std::string& value) override;
106  bool isPropertyDefined(const std::string& name) override;
107  std::string getTitle() override;
109 
110  // PipetteViewInterface
112 
113  // Colormappable
114  void setColormap(Colormap::Ptr colormap) override;
116  int getNumberOfColors() override;
117  Color getMonochromeColor() override;
118  void setMonochromeColor(const Color& c) override;
119  void setTransparentBackground() override;
120  void disableTransparentBackground() override;
121  bool getTransparentBackground() override;
122  void showMetadata(GtkWindow* parent) override;
123 };
TransformPresentation::disableTransparentBackground
void disableTransparentBackground() override
Definition: transformpresentation.cc:136
TransformationData::Ptr
boost::shared_ptr< TransformationData > Ptr
Definition: transformpresentation.hh:26
Detail::ViewData::weakParent
ViewInterface::WeakPtr weakParent
Definition: transformpresentation.hh:51
TransformPresentation::setMonochromeColor
void setMonochromeColor(const Color &c) override
Definition: transformpresentation.cc:132
TransformPresentation::isPropertyDefined
bool isPropertyDefined(const std::string &name) override
Definition: transformpresentation.cc:120
TransformationData::aspectRatio
Scroom::Utils::Point< double > aspectRatio
Definition: transformpresentation.hh:23
TransformPresentation::setColormap
void setColormap(Colormap::Ptr colormap) override
Definition: transformpresentation.cc:124
TransformPresentation::getNumberOfColors
int getNumberOfColors() override
Definition: transformpresentation.cc:128
PipetteLayerOperations::PipetteColor
std::vector< std::pair< std::string, double > > PipetteColor
Definition: pipettelayeroperations.hh:22
TransformationData
Definition: transformpresentation.hh:20
ShowMetadataInterface::Ptr
boost::shared_ptr< ShowMetadataInterface > Ptr
Definition: showmetadatainterface.hh:21
TransformPresentation
Definition: transformpresentation.hh:76
point.hh
Detail::ViewData::ViewData
ViewData(ViewInterface::WeakPtr parent_)
Definition: transformpresentation.cc:153
presentationinterface.hh
TransformPresentation::getRect
Scroom::Utils::Rectangle< double > getRect() override
Definition: transformpresentation.cc:57
TransformPresentation::getTitle
std::string getTitle() override
Definition: transformpresentation.cc:122
TransformPresentation::setTransparentBackground
void setTransparentBackground() override
Definition: transformpresentation.cc:134
Scroom::Bitmap::BitmapSurface::Ptr
boost::shared_ptr< BitmapSurface > Ptr
Definition: bitmap-helpers.hh:25
ProgressInterface::Ptr
boost::shared_ptr< ProgressInterface > Ptr
Definition: progressinterface.hh:20
PipetteViewInterface
Definition: pipetteviewinterface.hh:16
ViewInterface::Ptr
boost::shared_ptr< ViewInterface > Ptr
Definition: viewinterface.hh:193
TransformPresentation::getPixelAverages
PipetteLayerOperations::PipetteColor getPixelAverages(Scroom::Utils::Rectangle< double > area) override
Definition: transformpresentation.cc:142
showmetadatainterface.hh
TransformPresentation::getTransparentBackground
bool getTransparentBackground() override
Definition: transformpresentation.cc:138
colormappable.hh
pipetteviewinterface.hh
Detail::ViewData::setStatusMessage
void setStatusMessage(const std::string &string) override
Definition: transformpresentation.cc:173
TransformPresentation::getAspectRatio
Scroom::Utils::Point< double > getAspectRatio() const override
Definition: transformpresentation.cc:149
Detail::ViewData::addSideWidget
void addSideWidget(std::string title, GtkWidget *w) override
Definition: transformpresentation.cc:167
TransformationData::getAspectRatio
Scroom::Utils::Point< double > getAspectRatio() const
Definition: transformpresentation.cc:38
Detail::ViewData::addToToolbar
void addToToolbar(GtkToolItem *ti) override
Definition: transformpresentation.cc:169
bitmap-helpers.hh
TransformationData::create
static Ptr create()
Definition: transformpresentation.cc:28
TransformationData::setAspectRatio
void setAspectRatio(double x, double y)
Definition: transformpresentation.cc:35
SelectionListener::Ptr
boost::shared_ptr< SelectionListener > Ptr
Definition: viewinterface.hh:118
Detail::ViewData::getProgressInterface
ProgressInterface::Ptr getProgressInterface() override
Definition: transformpresentation.cc:166
Detail::ViewData::getCurrentPresentation
boost::shared_ptr< PresentationInterface > getCurrentPresentation() override
Definition: transformpresentation.cc:174
Detail::ViewData::addToolButton
void addToolButton(GtkToggleButton *button, ToolStateListener::Ptr ptr) override
Definition: transformpresentation.cc:175
TransformPresentation::getProperty
bool getProperty(const std::string &name, std::string &value) override
Definition: transformpresentation.cc:115
Colormappable
Definition: colormappable.hh:113
Detail::ViewData::registerSelectionListener
void registerSelectionListener(SelectionListener::Ptr ptr) override
Definition: transformpresentation.cc:171
Detail::ViewData::registerPostRenderer
void registerPostRenderer(PostRenderer::Ptr ptr) override
Definition: transformpresentation.cc:172
PresentationInterface::Ptr
boost::shared_ptr< PresentationInterface > Ptr
Definition: presentationinterface.hh:74
ViewInterface::WeakPtr
boost::weak_ptr< ViewInterface > WeakPtr
Definition: viewinterface.hh:194
Colormap::Ptr
boost::shared_ptr< Colormap > Ptr
Definition: colormappable.hh:31
colormap
const Colormap::Ptr colormap
Definition: colormaphelpers_test.cc:54
TransformPresentation::showMetaDataInterface
ShowMetadataInterface::Ptr showMetaDataInterface
Definition: transformpresentation.hh:89
TransformPresentation::getMonochromeColor
Color getMonochromeColor() override
Definition: transformpresentation.cc:130
TransformPresentation::create
static Ptr create(PresentationInterface::Ptr const &presentation, TransformationData::Ptr const &transformationData)
Definition: transformpresentation.cc:51
TransformPresentation::getOriginalColormap
Colormap::Ptr getOriginalColormap() override
Definition: transformpresentation.cc:126
Detail::ViewData::Ptr
boost::shared_ptr< ViewData > Ptr
Definition: transformpresentation.hh:45
Detail::ViewData::image
Scroom::Bitmap::BitmapSurface::Ptr image
Definition: transformpresentation.hh:50
Detail::ViewData
Definition: transformpresentation.hh:42
TransformPresentation::presentation
PresentationInterface::Ptr presentation
Definition: transformpresentation.hh:87
TransformPresentation::redraw
void redraw(ViewInterface::Ptr const &vi, cairo_t *cr, Scroom::Utils::Rectangle< double > presentationArea, int zoom) override
Definition: transformpresentation.cc:81
Detail::ViewData::invalidate
void invalidate() override
Definition: transformpresentation.cc:160
TransformPresentation::colormappable
Colormappable::Ptr colormappable
Definition: transformpresentation.hh:88
Detail::ViewData::create
static ViewData::Ptr create(const ViewInterface::WeakPtr &parent)
Definition: transformpresentation.cc:176
Colormappable::Ptr
boost::shared_ptr< Colormappable > Ptr
Definition: colormappable.hh:116
TransformPresentation::open
void open(ViewInterface::WeakPtr vi) override
Definition: transformpresentation.cc:62
PresentationBaseSimple
Definition: presentationinterface.hh:130
Detail
Definition: async-deleter.hh:12
Detail::ViewData::removeSideWidget
void removeSideWidget(GtkWidget *w) override
Definition: transformpresentation.cc:168
TransformPresentation::close
void close(ViewInterface::WeakPtr vi) override
Definition: transformpresentation.cc:72
Scroom::Utils::Rectangle< double >
ShowMetadataInterface
Definition: showmetadatainterface.hh:18
Detail::ViewData::parent
ViewInterface::Ptr parent() const
Definition: transformpresentation.cc:158
Color
Definition: color.hh:34
TransformPresentation::viewData
std::map< ViewInterface::WeakPtr, Detail::ViewData::Ptr > viewData
Definition: transformpresentation.hh:90
rectangle.hh
ToolStateListener::Ptr
boost::shared_ptr< ToolStateListener > Ptr
Definition: viewinterface.hh:164
ViewInterface
Definition: viewinterface.hh:190
TransformPresentation::TransformPresentation
TransformPresentation(PresentationInterface::Ptr const &presentation, TransformationData::Ptr transformationData)
Definition: transformpresentation.cc:42
TransformPresentation::showMetadata
void showMetadata(GtkWindow *parent) override
Definition: transformpresentation.cc:140
TransformPresentation::transformationData
TransformationData::Ptr transformationData
Definition: transformpresentation.hh:86
Detail::ViewData::zoom
int zoom
Definition: transformpresentation.hh:49
Detail::ViewData::presentationArea
Scroom::Utils::Rectangle< double > presentationArea
Definition: transformpresentation.hh:48
Scroom::Utils::Point< double >
PostRenderer::Ptr
boost::shared_ptr< PostRenderer > Ptr
Definition: viewinterface.hh:83
Detail::ViewData::removeFromToolbar
void removeFromToolbar(GtkToolItem *ti) override
Definition: transformpresentation.cc:170
TransformationData::TransformationData
TransformationData()
Definition: transformpresentation.cc:18