Scroom  0.14
measure.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 <optional>
11 
13 #include <scroom/point.hh>
14 #include <scroom/utilities.hh>
15 #include <scroom/viewinterface.hh>
16 
18  : public ToolStateListener
19  , public PostRenderer
20  , public SelectionListener
21  , virtual public Scroom::Utils::Base
22 {
23 public:
24  using Ptr = boost::shared_ptr<MeasureHandler>;
25 
26 private:
27  std::optional<Selection> selection;
28  bool enabled{false};
29 
30 public:
31  static Ptr create();
32 
34  // PostRenderer
35 
36  void render(ViewInterface::Ptr const& vi, cairo_t* cr, Scroom::Utils::Rectangle<double> presentationArea, int zoom) override;
37 
39  // SelectionListener
40 
41  void onSelectionStart(Selection p, ViewInterface::Ptr view) override;
42  void onSelectionUpdate(Selection s, ViewInterface::Ptr view) override;
43  void onSelectionEnd(Selection s, ViewInterface::Ptr view) override;
44 
46  // ToolStateListener
47 
48  void onEnable() override;
49  void onDisable() override;
50 
52 
53 private:
54  virtual void displayMeasurement(const ViewInterface::Ptr& view);
55  virtual void drawCross(cairo_t* cr, Scroom::Utils::Point<double> p);
56 };
57 
58 class Measure
60  , public ViewObserver
61  , virtual public Scroom::Utils::Base
62 {
63 public:
64  using Ptr = boost::shared_ptr<Measure>;
65 
66 private:
67  Measure() = default;
68 
69 public:
70  static Ptr create();
71 
72 public:
74  // PluginInformationInterface
75 
76  std::string getPluginName() override;
77  std::string getPluginVersion() override;
79 
81  // ViewObserver
82 
84 
86 };
Selection::width
double width() const
Definition: viewinterface.hh:71
Scroom::Utils::Rectangle::getTopLeft
xy_type getTopLeft() const
Definition: rectangle.hh:133
ViewObserver
Definition: scroominterface.hh:90
MeasureHandler::displayMeasurement
virtual void displayMeasurement(const ViewInterface::Ptr &view)
Definition: measure.cc:63
Measure::Measure
Measure()=default
MeasureHandler::onSelectionEnd
void onSelectionEnd(Selection s, ViewInterface::Ptr view) override
Definition: measure.cc:100
MeasureHandler::create
static Ptr create()
Definition: measure.cc:61
point.hh
presentationinterface.hh
format_stuff.hh
utilities.hh
SelectionListener
Definition: viewinterface.hh:115
MeasureHandler::drawCross
virtual void drawCross(cairo_t *cr, Scroom::Utils::Point< double > p)
Definition: measure.cc:76
Selection::length
double length() const
Definition: viewinterface.hh:73
ViewInterface::Ptr
boost::shared_ptr< ViewInterface > Ptr
Definition: viewinterface.hh:193
MeasureHandler::Ptr
boost::shared_ptr< MeasureHandler > Ptr
Definition: measure.hh:24
Selection
Definition: viewinterface.hh:38
plugininformationinterface.hh
Measure::getPluginName
std::string getPluginName() override
Definition: measure.cc:33
MeasureHandler::onSelectionUpdate
void onSelectionUpdate(Selection s, ViewInterface::Ptr view) override
Definition: measure.cc:91
Scroom::Utils::Point::x
value_type x
Definition: point.hh:111
measure.hh
ToolStateListener
Definition: viewinterface.hh:161
bookkeepingimpl.hh
PluginInformationInterface::Ptr
boost::shared_ptr< PluginInformationInterface > Ptr
Definition: plugininformationinterface.hh:20
Measure::create
static Ptr create()
Definition: measure.cc:27
MeasureHandler
Definition: measure.hh:17
MeasureHandler::onSelectionStart
void onSelectionStart(Selection p, ViewInterface::Ptr view) override
Definition: measure.cc:89
Scroom::Utils::Base
Definition: utilities.hh:30
Selection::start
Point start
Definition: viewinterface.hh:44
Measure::registerCapabilities
void registerCapabilities(ScroomPluginInterface::Ptr host) override
Definition: measure.cc:37
Measure::Ptr
boost::shared_ptr< Measure > Ptr
Definition: measure.hh:64
viewinterface.hh
PluginInformationInterface
Definition: plugininformationinterface.hh:17
Measure::getPluginVersion
std::string getPluginVersion() override
Definition: measure.cc:35
Measure
Definition: measure.hh:58
pixelSizeFromZoom
double pixelSizeFromZoom(int zoom)
Definition: cairo-helpers.cc:112
ScroomPluginInterface::Ptr
boost::shared_ptr< ScroomPluginInterface > Ptr
Definition: scroominterface.hh:102
Scroom::Bookkeeping::Token
Definition: bookkeeping.hh:37
Scroom::Utils::Rectangle< double >
MeasureHandler::enabled
bool enabled
Definition: measure.hh:28
MeasureHandler::selection
std::optional< Selection > selection
Definition: measure.hh:27
Selection::height
double height() const
Definition: viewinterface.hh:72
cairo-helpers.hh
Scroom::Utils::Point::y
value_type y
Definition: point.hh:112
MeasureHandler::render
void render(ViewInterface::Ptr const &vi, cairo_t *cr, Scroom::Utils::Rectangle< double > presentationArea, int zoom) override
Definition: measure.cc:113
Selection::end
Point end
Definition: viewinterface.hh:45
MeasureHandler::onEnable
void onEnable() override
Definition: measure.cc:146
PostRenderer
Definition: viewinterface.hh:80
MeasureHandler::onDisable
void onDisable() override
Definition: measure.cc:140
Scroom::Utils::Point< double >
PostRenderer::Ptr
boost::shared_ptr< PostRenderer > Ptr
Definition: viewinterface.hh:83
Measure::viewAdded
Scroom::Bookkeeping::Token viewAdded(ViewInterface::Ptr v) override
Definition: measure.cc:46