Scroom 0.14-49-gb7ae7a6d
Loading...
Searching...
No Matches
pipette.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 <atomic>
11#include <mutex>
12#include <optional>
13
14#include <scroom/logger.hh>
17#include <scroom/threadpool.hh>
18#include <scroom/utilities.hh>
20
22 : public ToolStateListener
23 , public PostRenderer
24 , public SelectionListener
25 , virtual public Scroom::Utils::Base
26{
27public:
28 using Ptr = std::shared_ptr<PipetteHandler>;
29
30private:
31 std::optional<Selection> selection;
32 bool enabled{false};
33 std::atomic_flag wasDisabled = ATOMIC_FLAG_INIT;
34 std::mutex jobMutex;
37
38public:
39 static Ptr create();
40
41public:
43 // PostRenderer
44
45 void render(ViewInterface::Ptr const& vi, cairo_t* cr, Scroom::Utils::Rectangle<double> presentationArea, int zoom) override;
46
48 // SelectionListener
49
50 std::string getSelectionType() override;
54
56 // ToolStateListener
57
58 void onEnable() override;
59 void onDisable() override;
60
62
64 virtual void displayValues(
68 );
69
71 // Testing
72
73 std::optional<Selection> getSelection() const { return selection; }
74 bool isEnabled() const { return enabled; }
75};
76
79 , public ViewObserver
80 , virtual public Scroom::Utils::Base
81{
82public:
83 using Ptr = std::shared_ptr<Pipette>;
84
85private:
86 Pipette() = default;
87
88public:
89 static Ptr create();
90
91public:
93 // PluginInformationInterface
94
95 std::string getPluginName() override;
96 std::string getPluginVersion() override;
98
100 // ViewObserver
101
103
105};
Definition pipette.hh:26
std::string getSelectionType() override
Definition pipette.cc:126
void onSelectionUpdate(Selection s, ViewInterface::Ptr view) override
Definition pipette.cc:130
std::shared_ptr< PipetteHandler > Ptr
Definition pipette.hh:28
bool isEnabled() const
Definition pipette.hh:74
bool enabled
Definition pipette.hh:32
std::mutex jobMutex
Definition pipette.hh:34
ThreadPool::Queue::Ptr currentJob
Definition pipette.hh:35
virtual void displayValues(const ViewInterface::Ptr &view, Scroom::Utils::Rectangle< double > rect, const PipetteLayerOperations::PipetteColor &colors)
Definition pipette.cc:94
std::optional< Selection > getSelection() const
Definition pipette.hh:73
void render(ViewInterface::Ptr const &vi, cairo_t *cr, Scroom::Utils::Rectangle< double > presentationArea, int zoom) override
Definition pipette.cc:158
void onSelectionStart(Selection p, ViewInterface::Ptr view) override
Definition pipette.cc:128
std::optional< Selection > selection
Definition pipette.hh:31
void onEnable() override
Definition pipette.cc:193
virtual void computeValues(const ViewInterface::Ptr &view, Scroom::Utils::Rectangle< double > sel_rect)
Definition pipette.cc:62
void onDisable() override
Definition pipette.cc:186
void onSelectionEnd(Selection s, ViewInterface::Ptr view) override
Definition pipette.cc:139
static Ptr create()
Definition pipette.cc:60
std::atomic_flag wasDisabled
Definition pipette.hh:33
Scroom::Logger logger
Definition pipette.hh:36
std::vector< std::pair< std::string, double > > PipetteColor
Definition pipettelayeroperations.hh:25
Definition pipette.hh:81
std::shared_ptr< Pipette > Ptr
Definition pipette.hh:83
std::string getPluginVersion() override
Definition pipette.cc:34
std::string getPluginName() override
Definition pipette.cc:32
static Ptr create()
Definition pipette.cc:26
void registerCapabilities(ScroomPluginInterface::Ptr host) override
Definition pipette.cc:36
Scroom::Bookkeeping::Token viewAdded(ViewInterface::Ptr v) override
Definition pipette.cc:45
Pipette()=default
Definition plugininformationinterface.hh:18
Definition viewinterface.hh:79
std::shared_ptr< ScroomPluginInterface > Ptr
Definition scroominterface.hh:101
Definition bookkeeping.hh:50
Definition logger.hh:49
Definition utilities.hh:34
Definition rectangle.hh:29
Definition viewinterface.hh:116
std::shared_ptr< Queue > Ptr
Definition threadpool.hh:78
static Ptr createAsync()
Definition threadpoolimpl.cc:382
Definition viewinterface.hh:162
std::shared_ptr< ViewInterface > Ptr
Definition viewinterface.hh:193
Definition scroominterface.hh:90
PresentationInterfaceStub::Ptr const p
Definition determine-size-test.cc:172
ViewInterface::Ptr const vi
Definition pipette-tests.cc:186
const auto view
Definition pipette-tests.cc:227
const auto rect
Definition rectangletests.cc:335
Definition viewinterface.hh:37
BitmapSurface::Ptr const s
Definition transformpresentation_test.cc:70
cairo_t * cr
Definition transformpresentation_test.cc:72