Scroom  0.14
rulerstrategies.hh
Go to the documentation of this file.
1 #pragma once
2 
3 #include <boost/shared_ptr.hpp>
4 
5 #include <gtk/gtk.h>
6 
7 #include <scroom/interface.hh>
8 
15 {
16 public:
17  using Ptr = boost::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(cairo_t* cr,
69  const std::string& label,
70  double linePosition,
71  double labelOffset,
72  double labelAlign,
73  double lineLength) = 0;
74 
80  void setAllocatedSize(int newWidth, int height);
81 
86  [[nodiscard]] int getWidth() const;
87 
92  [[nodiscard]] int getHeight() const;
93 
94 protected:
95  static constexpr double LINE_COORD_OFFSET{0.5};
96  static constexpr double TEXT_ANCHOR{0.5};
97 
98 private:
100  int width{};
102  int height{};
103 };
104 
109 {
110 public:
116 
117  double getMajorTickLength(double percentage) override;
118  double getDrawAreaSize() override;
119 
120  void drawOutline(cairo_t* cr, double lineWidth) override;
121  void drawTickLine(cairo_t* cr, double linePosition, double lineWidth, double lineLength) override;
122  void drawTickText(cairo_t* cr,
123  const std::string& label,
124  double linePosition,
125  double labelOffset,
126  double labelAlign,
127  double lineLength) override;
128 };
129 
134 {
135 public:
141 
142  double getMajorTickLength(double percentage) override;
143  double getDrawAreaSize() override;
144 
145  void drawOutline(cairo_t* cr, double lineWidth) override;
146  void drawTickLine(cairo_t* cr, double linePosition, double lineWidth, double lineLength) override;
147  void drawTickText(cairo_t* cr,
148  const std::string& label,
149  double linePosition,
150  double labelOffset,
151  double labelAlign,
152  double lineLength) override;
153 };
VerticalDrawStrategy::getMajorTickLength
double getMajorTickLength(double percentage) override
Definition: rulerstrategies.cc:22
RulerDrawStrategy::LINE_COORD_OFFSET
static constexpr double LINE_COORD_OFFSET
Definition: rulerstrategies.hh:95
RulerDrawStrategy::getHeight
int getHeight() const
Definition: rulerstrategies.cc:14
RulerDrawStrategy::drawTickText
virtual void drawTickText(cairo_t *cr, const std::string &label, double linePosition, double labelOffset, double labelAlign, double lineLength)=0
VerticalDrawStrategy::drawTickText
void drawTickText(cairo_t *cr, const std::string &label, double linePosition, double labelOffset, double labelAlign, double lineLength) override
Definition: rulerstrategies.cc:119
VerticalDrawStrategy::drawOutline
void drawOutline(cairo_t *cr, double lineWidth) override
Definition: rulerstrategies.cc:52
RulerDrawStrategy::getMajorTickLength
virtual double getMajorTickLength(double percentage)=0
HorizontalDrawStrategy::drawTickLine
void drawTickLine(cairo_t *cr, double linePosition, double lineWidth, double lineLength) override
Definition: rulerstrategies.cc:76
HorizontalDrawStrategy::getMajorTickLength
double getMajorTickLength(double percentage) override
Definition: rulerstrategies.cc:20
VerticalDrawStrategy::getDrawAreaSize
double getDrawAreaSize() override
Definition: rulerstrategies.cc:26
VerticalDrawStrategy::create
static RulerDrawStrategy::Ptr create()
Definition: rulerstrategies.cc:18
RulerDrawStrategy::drawTickLine
virtual void drawTickLine(cairo_t *cr, double linePosition, double lineWidth, double lineLength)=0
RulerDrawStrategy::TEXT_ANCHOR
static constexpr double TEXT_ANCHOR
Definition: rulerstrategies.hh:96
HorizontalDrawStrategy::drawTickText
void drawTickText(cairo_t *cr, const std::string &label, double linePosition, double labelOffset, double labelAlign, double lineLength) override
Definition: rulerstrategies.cc:102
RulerDrawStrategy::Ptr
boost::shared_ptr< RulerDrawStrategy > Ptr
Definition: rulerstrategies.hh:17
HorizontalDrawStrategy::getDrawAreaSize
double getDrawAreaSize() override
Definition: rulerstrategies.cc:24
RulerDrawStrategy::height
int height
Definition: rulerstrategies.hh:102
HorizontalDrawStrategy
Definition: rulerstrategies.hh:108
RulerDrawStrategy::getDrawAreaSize
virtual double getDrawAreaSize()=0
VerticalDrawStrategy::drawTickLine
void drawTickLine(cairo_t *cr, double linePosition, double lineWidth, double lineLength) override
Definition: rulerstrategies.cc:89
Interface
Definition: interface.hh:10
RulerDrawStrategy::setAllocatedSize
void setAllocatedSize(int newWidth, int height)
Definition: rulerstrategies.cc:6
HorizontalDrawStrategy::drawOutline
void drawOutline(cairo_t *cr, double lineWidth) override
Definition: rulerstrategies.cc:28
RulerDrawStrategy::width
int width
Definition: rulerstrategies.hh:100
VerticalDrawStrategy
Definition: rulerstrategies.hh:133
interface.hh
RulerDrawStrategy
Definition: rulerstrategies.hh:14
HorizontalDrawStrategy::create
static RulerDrawStrategy::Ptr create()
Definition: rulerstrategies.cc:16
RulerDrawStrategy::drawOutline
virtual void drawOutline(cairo_t *cr, double lineWidth)=0
RulerDrawStrategy::getWidth
int getWidth() const
Definition: rulerstrategies.cc:12