Scroom  0.14
pipette.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 <atomic>
11 #include <mutex>
12 #include <optional>
13 
16 #include <scroom/threadpool.hh>
17 #include <scroom/utilities.hh>
18 #include <scroom/viewinterface.hh>
19 
21  : public ToolStateListener
22  , public PostRenderer
23  , public SelectionListener
24  , virtual public Scroom::Utils::Base
25 {
26 public:
27  using Ptr = boost::shared_ptr<PipetteHandler>;
28 
29 private:
30  std::optional<Selection> selection;
31  bool enabled{false};
32  std::atomic_flag wasDisabled = ATOMIC_FLAG_INIT;
33  std::mutex jobMutex;
35 
36 public:
37  static Ptr create();
38 
39 public:
41  // PostRenderer
42 
43  void render(ViewInterface::Ptr const& vi, cairo_t* cr, Scroom::Utils::Rectangle<double> presentationArea, int zoom) override;
44 
46  // SelectionListener
47 
48  std::string getSelectionType() override;
49  void onSelectionStart(Selection p, ViewInterface::Ptr view) override;
50  void onSelectionUpdate(Selection s, ViewInterface::Ptr view) override;
51  void onSelectionEnd(Selection s, ViewInterface::Ptr view) override;
52 
54  // ToolStateListener
55 
56  void onEnable() override;
57  void onDisable() override;
58 
60 
61  virtual void computeValues(const ViewInterface::Ptr& view, Scroom::Utils::Rectangle<double> sel_rect);
62  virtual void displayValues(const ViewInterface::Ptr& view,
65 
67  // Testing
68 
69  std::optional<Selection> getSelection() const { return selection; }
70  bool isEnabled() const { return enabled; }
71 };
72 
73 class Pipette
75  , public ViewObserver
76  , virtual public Scroom::Utils::Base
77 {
78 public:
79  using Ptr = boost::shared_ptr<Pipette>;
80 
81 private:
82  Pipette() = default;
83 
84 public:
85  static Ptr create();
86 
87 public:
89  // PluginInformationInterface
90 
91  std::string getPluginName() override;
92  std::string getPluginVersion() override;
94 
96  // ViewObserver
97 
99 
101 };
PipetteHandler::Ptr
boost::shared_ptr< PipetteHandler > Ptr
Definition: pipette.hh:27
UNUSED
#define UNUSED(x)
Definition: unused.hh:10
Pipette::viewAdded
Scroom::Bookkeeping::Token viewAdded(ViewInterface::Ptr v) override
Definition: pipette.cc:43
Scroom::Utils::Rectangle::getTopLeft
xy_type getTopLeft() const
Definition: rectangle.hh:133
PipetteHandler::getSelection
std::optional< Selection > getSelection() const
Definition: pipette.hh:69
PipetteHandler::computeValues
virtual void computeValues(const ViewInterface::Ptr &view, Scroom::Utils::Rectangle< double > sel_rect)
Definition: pipette.cc:60
ThreadPool::Queue::Ptr
boost::shared_ptr< Queue > Ptr
Definition: threadpool.hh:82
PipetteLayerOperations::PipetteColor
std::vector< std::pair< std::string, double > > PipetteColor
Definition: pipettelayeroperations.hh:22
threadpool.hh
PipetteHandler::displayValues
virtual void displayValues(const ViewInterface::Ptr &view, Scroom::Utils::Rectangle< double > rect, const PipetteLayerOperations::PipetteColor &colors)
Definition: pipette.cc:92
PipetteHandler::create
static Ptr create()
Definition: pipette.cc:58
ViewObserver
Definition: scroominterface.hh:90
PipetteHandler::onSelectionEnd
void onSelectionEnd(Selection s, ViewInterface::Ptr view) override
Definition: pipette.cc:134
PipetteHandler::selection
std::optional< Selection > selection
Definition: pipette.hh:30
anonymous_namespace{transparentoverlaypresentation.cc}::colors
const std::list< Color > colors
Definition: transparentoverlaypresentation.cc:21
ThreadPool::Queue::createAsync
static Ptr createAsync()
Definition: threadpoolimpl.cc:379
format_stuff.hh
utilities.hh
Pipette::registerCapabilities
void registerCapabilities(ScroomPluginInterface::Ptr host) override
Definition: pipette.cc:34
SelectionListener
Definition: viewinterface.hh:115
Scroom::Utils::Rectangle::intersection
Rectangle intersection(const Rectangle &other) const
Definition: rectangle.hh:95
ViewInterface::Ptr
boost::shared_ptr< ViewInterface > Ptr
Definition: viewinterface.hh:193
Sequentially
ThreadPool::Ptr Sequentially()
Definition: threadpoolimpl.cc:459
pipetteviewinterface.hh
Selection
Definition: viewinterface.hh:38
plugininformationinterface.hh
SelectionType::PIXEL
const std::string PIXEL("PixelSelection")
PipetteHandler::onSelectionStart
void onSelectionStart(Selection p, ViewInterface::Ptr view) override
Definition: pipette.cc:122
Scroom::Utils::Rectangle::getHeight
value_type getHeight() const
Definition: rectangle.hh:123
PIPETTE_PROPERTY_NAME
const std::string PIPETTE_PROPERTY_NAME
Definition: pipetteviewinterface.hh:14
PipetteHandler::onDisable
void onDisable() override
Definition: pipette.cc:178
Scroom::GtkHelpers::sync_on_ui_thread
void sync_on_ui_thread(T f)
Definition: gtk-helpers.hh:59
ToolStateListener
Definition: viewinterface.hh:161
Pipette
Definition: pipette.hh:73
pipette.hh
PluginInformationInterface::Ptr
boost::shared_ptr< PluginInformationInterface > Ptr
Definition: plugininformationinterface.hh:20
PipetteHandler::wasDisabled
std::atomic_flag wasDisabled
Definition: pipette.hh:32
Pipette::getPluginVersion
std::string getPluginVersion() override
Definition: pipette.cc:32
PipetteHandler::jobMutex
std::mutex jobMutex
Definition: pipette.hh:33
Scroom::Utils::Rectangle::getBottomRight
xy_type getBottomRight() const
Definition: rectangle.hh:139
Pipette::Pipette
Pipette()=default
PresentationInterface::Ptr
boost::shared_ptr< PresentationInterface > Ptr
Definition: presentationinterface.hh:74
Scroom::Utils::Rectangle::getWidth
value_type getWidth() const
Definition: rectangle.hh:121
Pipette::getPluginName
std::string getPluginName() override
Definition: pipette.cc:30
PipetteHandler::onSelectionUpdate
void onSelectionUpdate(Selection s, ViewInterface::Ptr view) override
Definition: pipette.cc:124
Pipette::create
static Ptr create()
Definition: pipette.cc:24
PipetteHandler::render
void render(ViewInterface::Ptr const &vi, cairo_t *cr, Scroom::Utils::Rectangle< double > presentationArea, int zoom) override
Definition: pipette.cc:152
Scroom::Utils::Base
Definition: utilities.hh:30
PipetteHandler::currentJob
ThreadPool::Queue::Ptr currentJob
Definition: pipette.hh:34
Scroom::Utils::make_rect_from_start_end
Rectangle< T > make_rect_from_start_end(Point< T > start, Point< T > end)
Definition: rectangle.hh:296
viewinterface.hh
Pipette::Ptr
boost::shared_ptr< Pipette > Ptr
Definition: pipette.hh:79
PluginInformationInterface
Definition: plugininformationinterface.hh:17
pixelSizeFromZoom
double pixelSizeFromZoom(int zoom)
Definition: cairo-helpers.cc:112
ScroomPluginInterface::Ptr
boost::shared_ptr< ScroomPluginInterface > Ptr
Definition: scroominterface.hh:102
PipetteHandler::isEnabled
bool isEnabled() const
Definition: pipette.hh:70
PipetteHandler::onEnable
void onEnable() override
Definition: pipette.cc:185
PipetteHandler
Definition: pipette.hh:20
Scroom::Bookkeeping::Token
Definition: bookkeeping.hh:37
unused.hh
Scroom::Utils::Rectangle< double >
Scroom::Utils::roundOutward
Segment< double > roundOutward(Segment< double > s)
Definition: linearsegment.hh:240
cairo-helpers.hh
PipetteHandler::getSelectionType
std::string getSelectionType() override
Definition: pipette.cc:120
PipetteHandler::enabled
bool enabled
Definition: pipette.hh:31
PostRenderer
Definition: viewinterface.hh:80
PostRenderer::Ptr
boost::shared_ptr< PostRenderer > Ptr
Definition: viewinterface.hh:83