Scroom 0.14-49-gb7ae7a6d
Loading...
Searching...
No Matches
rulerstrategies.hh
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4
5#include <gtk/gtk.h>
6
7#include <scroom/interface.hh>
8
15{
16public:
17 using Ptr = std::shared_ptr<RulerDrawStrategy>;
18
26 virtual double getMajorTickLength(double percentage) = 0;
27
36 virtual double getDrawAreaSize() = 0;
37
38
44 virtual void drawOutline(cairo_t* cr, double lineWidth) = 0;
45
55 virtual void drawTickLine(cairo_t* cr, double linePosition, double lineWidth, double lineLength) = 0;
56
68 virtual void drawTickText(
69 cairo_t* cr,
70 const std::string& label,
71 double linePosition,
72 double labelOffset,
73 double labelAlign,
74 double lineLength
75 ) = 0;
76
82 void setAllocatedSize(int newWidth, int height);
83
88 [[nodiscard]] int getWidth() const;
89
94 [[nodiscard]] int getHeight() const;
95
96protected:
97 static constexpr double LINE_COORD_OFFSET{0.5};
98 static constexpr double TEXT_ANCHOR{0.5};
99
100private:
102 int width{};
104 int height{};
105};
106
111{
112public:
118
119 double getMajorTickLength(double percentage) override;
120 double getDrawAreaSize() override;
121
122 void drawOutline(cairo_t* cr, double lineWidth) override;
123 void drawTickLine(cairo_t* cr, double linePosition, double lineWidth, double lineLength) override;
124 void drawTickText(
125 cairo_t* cr,
126 const std::string& label,
127 double linePosition,
128 double labelOffset,
129 double labelAlign,
130 double lineLength
131 ) override;
132};
133
138{
139public:
145
146 double getMajorTickLength(double percentage) override;
147 double getDrawAreaSize() override;
148
149 void drawOutline(cairo_t* cr, double lineWidth) override;
150 void drawTickLine(cairo_t* cr, double linePosition, double lineWidth, double lineLength) override;
151 void drawTickText(
152 cairo_t* cr,
153 const std::string& label,
154 double linePosition,
155 double labelOffset,
156 double labelAlign,
157 double lineLength
158 ) override;
159};
Definition rulerstrategies.hh:111
double getDrawAreaSize() override
Definition rulerstrategies.cc:24
static RulerDrawStrategy::Ptr create()
Definition rulerstrategies.cc:16
double getMajorTickLength(double percentage) override
Definition rulerstrategies.cc:20
void drawOutline(cairo_t *cr, double lineWidth) override
Definition rulerstrategies.cc:28
void drawTickText(cairo_t *cr, const std::string &label, double linePosition, double labelOffset, double labelAlign, double lineLength) override
Definition rulerstrategies.cc:102
void drawTickLine(cairo_t *cr, double linePosition, double lineWidth, double lineLength) override
Definition rulerstrategies.cc:76
Definition interface.hh:11
Definition rulerstrategies.hh:15
static constexpr double LINE_COORD_OFFSET
Definition rulerstrategies.hh:97
virtual double getMajorTickLength(double percentage)=0
int height
Definition rulerstrategies.hh:104
virtual void drawTickLine(cairo_t *cr, double linePosition, double lineWidth, double lineLength)=0
int width
Definition rulerstrategies.hh:102
int getWidth() const
Definition rulerstrategies.cc:12
virtual double getDrawAreaSize()=0
virtual void drawOutline(cairo_t *cr, double lineWidth)=0
virtual void drawTickText(cairo_t *cr, const std::string &label, double linePosition, double labelOffset, double labelAlign, double lineLength)=0
void setAllocatedSize(int newWidth, int height)
Definition rulerstrategies.cc:6
int getHeight() const
Definition rulerstrategies.cc:14
static constexpr double TEXT_ANCHOR
Definition rulerstrategies.hh:98
std::shared_ptr< RulerDrawStrategy > Ptr
Definition rulerstrategies.hh:17
Definition rulerstrategies.hh:138
void drawTickLine(cairo_t *cr, double linePosition, double lineWidth, double lineLength) override
Definition rulerstrategies.cc:89
static RulerDrawStrategy::Ptr create()
Definition rulerstrategies.cc:18
double getMajorTickLength(double percentage) override
Definition rulerstrategies.cc:22
void drawTickText(cairo_t *cr, const std::string &label, double linePosition, double labelOffset, double labelAlign, double lineLength) override
Definition rulerstrategies.cc:121
void drawOutline(cairo_t *cr, double lineWidth) override
Definition rulerstrategies.cc:52
double getDrawAreaSize() override
Definition rulerstrategies.cc:26
cairo_t * cr
Definition transformpresentation_test.cc:72