Scroom 0.14-49-gb7ae7a6d
Loading...
Searching...
No Matches
tweak-view.hh
Go to the documentation of this file.
1/*
2 * Scroom - Generic viewer for 2D data
3 * Copyright (C) 2009-2023 Kees-Jan Dijkzeul
4 *
5 * SPDX-License-Identifier: LGPL-2.1
6 */
7
8#pragma once
9
10#include <map>
11#include <memory>
12#include <string>
13#include <string_view>
14#include <utility>
15
16#include <scroom/interface.hh>
17#include <scroom/point.hh>
18#include <scroom/rectangle.hh>
20
22{
24 {
25 public:
26 using Ptr = std::shared_ptr<ITweakPresentationPosition>;
27
28 [[nodiscard]] virtual Point<double>
29 tweakPosition(const Point<double>& currentPosition, const Point<int>& drawingAreaSize, int zoom) const = 0;
30 };
31
32 class ITweakRulers : public Interface
33 {
34 public:
35 using Ptr = std::shared_ptr<ITweakRulers>;
36
37 [[nodiscard]] virtual Rectangle<double>
38 tweakRulers(const Point<double>& currentPosition, const Point<int>& drawingAreaSize, int zoom) const = 0;
39 };
40
42 {
43 public:
44 using Ptr = std::shared_ptr<ITweakSelection>;
45 using Map = std::map<std::string, ITweakSelection::Ptr>;
46
47 [[nodiscard]] virtual Selection tweakSelection(const Selection& selection) const = 0;
48 };
49
51 {
52 public:
53 using Ptr = std::shared_ptr<ITweakPositionTextBox>;
54
55 [[nodiscard]] virtual Point<double>
56 parse(std::string_view x, std::string_view y, const Point<int>& drawingAreaSize, int zoom) const = 0;
57
58 [[nodiscard]] virtual std::pair<std::string, std::string>
59 display(const Point<double>& position, const Point<int>& drawingAreaSize, int zoom) const = 0;
60 };
61
67
69
71 {
72 public:
73 using Ptr = std::shared_ptr<TweakPresentationPosition>;
74
75 static ITweakPresentationPosition::Ptr create(const Point<double>& aspectRatio_ = {1.0, 1.0});
76
77 [[nodiscard]] Point<double>
78 tweakPosition(const Point<double>& currentPosition, const Point<int>& drawingAreaSize, int zoom) const override;
79
80 private:
81 explicit TweakPresentationPosition(const Point<double>& aspectRatio_);
82
83 private:
85 };
86
88 {
89 public:
90 using Ptr = std::shared_ptr<TweakRulers>;
91
92 static ITweakRulers::Ptr create(const Point<double>& aspectRatio_ = {1.0, 1.0});
93
94 [[nodiscard]] Rectangle<double>
95 tweakRulers(const Point<double>& currentPosition, const Point<int>& drawingAreaSize, int zoom) const override;
96
97 private:
98 explicit TweakRulers(const Point<double>& aspectRatio_);
99
100 private:
102 };
103
105 {
106 public:
107 using Ptr = std::shared_ptr<TweakSelection>;
108
109 [[nodiscard]] virtual Rectangle<double> tweakSelection(const Rectangle<double>& selection) const = 0;
110
111 [[nodiscard]] Selection tweakSelection(const Selection& selection) const override;
112
113 protected:
114 explicit TweakSelection(const Point<double>& aspectRatio_);
115
116 protected:
118 };
119
121 {
122 public:
123 static ITweakSelection::Ptr create(const Point<double>& aspectRatio_ = {1.0, 1.0});
124
125 [[nodiscard]] Rectangle<double> tweakSelection(const Rectangle<double>& selection) const override;
126
129 };
130
132 {
133 public:
134 static ITweakSelection::Ptr create(const Point<double>& aspectRatio_ = {1.0, 1.0});
135
136 [[nodiscard]] Rectangle<double> tweakSelection(const Rectangle<double>& selection) const override;
137
140 };
141
143 {
144 public:
145 using Ptr = std::shared_ptr<TweakPositionTextBox>;
146
147 static ITweakPositionTextBox::Ptr create(const Point<double>& aspectRatio_ = {1.0, 1.0});
148
149 [[nodiscard]] Point<double>
150 parse(std::string_view x, std::string_view y, const Point<int>& drawingAreaSize, int zoom) const override;
151
152 [[nodiscard]] std::pair<std::string, std::string>
153 display(const Point<double>& position, const Point<int>& drawingAreaSize, int zoom) const override;
154
155 private:
156 explicit TweakPositionTextBox(const Point<double>& aspectRatio_);
157
158 private:
160 };
161
162} // namespace Scroom::Utils
Definition interface.hh:11
Definition tweak-view.hh:51
virtual std::pair< std::string, std::string > display(const Point< double > &position, const Point< int > &drawingAreaSize, int zoom) const =0
std::shared_ptr< ITweakPositionTextBox > Ptr
Definition tweak-view.hh:53
virtual Point< double > parse(std::string_view x, std::string_view y, const Point< int > &drawingAreaSize, int zoom) const =0
std::shared_ptr< ITweakPresentationPosition > Ptr
Definition tweak-view.hh:26
virtual Point< double > tweakPosition(const Point< double > &currentPosition, const Point< int > &drawingAreaSize, int zoom) const =0
Definition tweak-view.hh:33
std::shared_ptr< ITweakRulers > Ptr
Definition tweak-view.hh:35
virtual Rectangle< double > tweakRulers(const Point< double > &currentPosition, const Point< int > &drawingAreaSize, int zoom) const =0
Definition tweak-view.hh:42
virtual Selection tweakSelection(const Selection &selection) const =0
std::shared_ptr< ITweakSelection > Ptr
Definition tweak-view.hh:44
std::map< std::string, ITweakSelection::Ptr > Map
Definition tweak-view.hh:45
Definition point.hh:28
Definition rectangle.hh:29
Definition tweak-view.hh:121
Rectangle< double > tweakSelection(const Rectangle< double > &selection) const override
Definition tweak-view.cc:158
static ITweakSelection::Ptr create(const Point< double > &aspectRatio_={1.0, 1.0})
Definition tweak-view.cc:153
Definition tweak-view.hh:132
static ITweakSelection::Ptr create(const Point< double > &aspectRatio_={1.0, 1.0})
Definition tweak-view.cc:165
Rectangle< double > tweakSelection(const Rectangle< double > &selection) const override
Definition tweak-view.cc:170
Definition tweak-view.hh:143
Point< double > parse(std::string_view x, std::string_view y, const Point< int > &drawingAreaSize, int zoom) const override
Definition tweak-view.cc:188
Point< double > aspectRatio
Definition tweak-view.hh:159
std::pair< std::string, std::string > display(const Point< double > &position, const Point< int > &drawingAreaSize, int zoom) const override
Definition tweak-view.cc:196
std::shared_ptr< TweakPositionTextBox > Ptr
Definition tweak-view.hh:145
static ITweakPositionTextBox::Ptr create(const Point< double > &aspectRatio_={1.0, 1.0})
Definition tweak-view.cc:182
Definition tweak-view.hh:71
Point< double > tweakPosition(const Point< double > &currentPosition, const Point< int > &drawingAreaSize, int zoom) const override
Definition tweak-view.cc:106
std::shared_ptr< TweakPresentationPosition > Ptr
Definition tweak-view.hh:73
Point< double > aspectRatio
Definition tweak-view.hh:84
static ITweakPresentationPosition::Ptr create(const Point< double > &aspectRatio_={1.0, 1.0})
Definition tweak-view.cc:101
Definition tweak-view.hh:88
Rectangle< double > tweakRulers(const Point< double > &currentPosition, const Point< int > &drawingAreaSize, int zoom) const override
Definition tweak-view.cc:125
std::shared_ptr< TweakRulers > Ptr
Definition tweak-view.hh:90
Point< double > aspectRatio
Definition tweak-view.hh:101
static ITweakRulers::Ptr create(const Point< double > &aspectRatio_={1.0, 1.0})
Definition tweak-view.cc:122
Definition tweak-view.hh:105
std::shared_ptr< TweakSelection > Ptr
Definition tweak-view.hh:107
virtual Rectangle< double > tweakSelection(const Rectangle< double > &selection) const =0
TweakSelection(const Point< double > &aspectRatio_)
Definition tweak-view.cc:132
Point< double > aspectRatio
Definition tweak-view.hh:117
Definition tweak-view.hh:22
ITweakRulers::Ptr getDefaultTweakRulers()
Definition tweak-view.cc:209
ITweakSelection::Map getDefaultTweakSelectionMap()
Definition tweak-view.cc:211
ITweakPositionTextBox::Ptr getDefaultTweakPositionTextBox()
Definition tweak-view.cc:215
ITweakPresentationPosition::Ptr getDefaultTweakPresentationPosition()
Definition tweak-view.cc:205
ITweakSelection::Ptr getDefaultTweakSelection()
Definition tweak-view.cc:210
auto selection
Definition pipette-tests.cc:157
Definition viewinterface.hh:37