Skip to content

Commit d1302e5

Browse files
committed
Padding style parameters turned to Gfx::Length.
1 parent 091b214 commit d1302e5

File tree

6 files changed

+65
-66
lines changed

6 files changed

+65
-66
lines changed

src/chart/main/style.cpp

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ Chart Chart::def()
1414
{
1515
return {
1616
{
17-
.paddingTop = 0,
18-
.paddingRight = 0,
19-
.paddingBottom = 0,
20-
.paddingLeft = 0
17+
.paddingTop = Gfx::Length(),
18+
.paddingRight = Gfx::Length(),
19+
.paddingBottom = Gfx::Length(),
20+
.paddingLeft = Gfx::Length()
2121
},
2222
{
2323
.backgroundColor = Gfx::Color::White(),
@@ -32,10 +32,10 @@ Chart Chart::def()
3232
},
3333
.plot = {
3434
{
35-
.paddingTop = 50,
36-
.paddingRight = 50,
37-
.paddingBottom = 70,
38-
.paddingLeft = 70
35+
.paddingTop = Gfx::Length::Absolute(50),
36+
.paddingRight = Gfx::Length::Absolute(50),
37+
.paddingBottom = Gfx::Length::Absolute(70),
38+
.paddingLeft = Gfx::Length::Absolute(70)
3939
},
4040
{
4141
.backgroundColor = Gfx::Color(),
@@ -56,10 +56,10 @@ Chart Chart::def()
5656
.label = {
5757
{
5858
{
59-
.paddingTop = 5,
60-
.paddingRight = 5,
61-
.paddingBottom = 5,
62-
.paddingLeft = 5
59+
.paddingTop = Gfx::Length::Absolute(5),
60+
.paddingRight = Gfx::Length::Absolute(5),
61+
.paddingBottom = Gfx::Length::Absolute(5),
62+
.paddingLeft = Gfx::Length::Absolute(5)
6363
},
6464
{
6565
.fontFamily = ::Anim::String("Roboto, sans-serif"),
@@ -87,10 +87,10 @@ Chart Chart::def()
8787
.color = Gfx::Color::Gray(0.8),
8888
.title = {
8989
{
90-
.paddingTop = 22,
91-
.paddingRight = 0,
92-
.paddingBottom = 20,
93-
.paddingLeft = 0
90+
.paddingTop = Gfx::Length::Absolute(22),
91+
.paddingRight = Gfx::Length::Absolute(0),
92+
.paddingBottom = Gfx::Length::Absolute(20),
93+
.paddingLeft = Gfx::Length::Absolute(0)
9494
},
9595
{
9696
.fontFamily = ::Anim::String("Roboto, sans-serif"),
@@ -110,10 +110,10 @@ Chart Chart::def()
110110
},
111111
.label = {
112112
{
113-
.paddingTop = 20,
114-
.paddingRight = 20,
115-
.paddingBottom = 25,
116-
.paddingLeft = 25
113+
.paddingTop = Gfx::Length::Absolute(20),
114+
.paddingRight = Gfx::Length::Absolute(20),
115+
.paddingBottom = Gfx::Length::Absolute(25),
116+
.paddingLeft = Gfx::Length::Absolute(25)
117117
},
118118
{
119119
.fontFamily = ::Anim::String("Roboto, sans-serif"),
@@ -149,10 +149,10 @@ Chart Chart::def()
149149
},
150150
.legend = {
151151
{
152-
.paddingTop = 10,
153-
.paddingRight = 10,
154-
.paddingBottom = 10,
155-
.paddingLeft = 30
152+
.paddingTop = Gfx::Length::Absolute(10),
153+
.paddingRight = Gfx::Length::Absolute(10),
154+
.paddingBottom = Gfx::Length::Absolute(10),
155+
.paddingLeft = Gfx::Length::Absolute(30)
156156
},
157157
{
158158
.backgroundColor = Gfx::Color(),
@@ -162,10 +162,10 @@ Chart Chart::def()
162162
.width = 100,
163163
.title = {
164164
{
165-
.paddingTop = 5,
166-
.paddingRight = 5,
167-
.paddingBottom = 5,
168-
.paddingLeft = 5
165+
.paddingTop = Gfx::Length::Absolute(5),
166+
.paddingRight = Gfx::Length::Absolute(5),
167+
.paddingBottom = Gfx::Length::Absolute(5),
168+
.paddingLeft = Gfx::Length::Absolute(5)
169169
},
170170
{
171171
.fontFamily = ::Anim::String("Roboto, sans-serif"),
@@ -184,10 +184,10 @@ Chart Chart::def()
184184
},
185185
.label = {
186186
{
187-
.paddingTop = 5,
188-
.paddingRight = 5,
189-
.paddingBottom = 5,
190-
.paddingLeft = 10
187+
.paddingTop = Gfx::Length::Absolute(5),
188+
.paddingRight = Gfx::Length::Absolute(5),
189+
.paddingBottom = Gfx::Length::Absolute(5),
190+
.paddingLeft = Gfx::Length::Absolute(10)
191191
},
192192
{
193193
.fontFamily = ::Anim::String("Roboto, sans-serif"),
@@ -212,10 +212,10 @@ Chart Chart::def()
212212
},
213213
.title = {
214214
{
215-
.paddingTop = 25,
216-
.paddingRight = 10,
217-
.paddingBottom = 0,
218-
.paddingLeft = 10
215+
.paddingTop = Gfx::Length::Absolute(25),
216+
.paddingRight = Gfx::Length::Absolute(10),
217+
.paddingBottom = Gfx::Length::Absolute(0),
218+
.paddingLeft = Gfx::Length::Absolute(10)
219219
},
220220
{
221221
.fontFamily = ::Anim::String("Roboto, sans-serif"),

src/chart/main/style.h

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "base/math/fuzzybool.h"
66
#include "base/geom/rect.h"
77
#include "base/gfx/color.h"
8+
#include "base/gfx/length.h"
89
#include "base/gfx/font.h"
910
#include "base/gfx/colorgradient.h"
1011
#include "base/gfx/colorpalette.h"
@@ -27,30 +28,25 @@ class Enum(Overflow)(hidden, visible);
2728

2829
struct Padding
2930
{
30-
Param<double> paddingTop;
31-
Param<double> paddingRight;
32-
Param<double> paddingBottom;
33-
Param<double> paddingLeft;
34-
35-
explicit operator GUI::Margin() const {
36-
return { *paddingTop, *paddingLeft,
37-
*paddingBottom, *paddingRight };
38-
}
39-
40-
Geom::Size paddingSize() const {
41-
return Geom::Size(
42-
*paddingRight + *paddingLeft,
43-
*paddingTop + *paddingBottom);
44-
}
45-
46-
Geom::Point paddingPos() const {
47-
return Geom::Point(*paddingLeft, *paddingTop);
31+
Param<Gfx::Length> paddingTop;
32+
Param<Gfx::Length> paddingRight;
33+
Param<Gfx::Length> paddingBottom;
34+
Param<Gfx::Length> paddingLeft;
35+
36+
GUI::Margin toMargin(const Geom::Size &size) const {
37+
return {
38+
paddingTop->get(size.y),
39+
paddingLeft->get(size.x),
40+
paddingBottom->get(size.y),
41+
paddingRight->get(size.x)
42+
};
4843
}
4944

5045
Geom::Rect contentRect(const Geom::Rect &rect) const {
46+
auto margin = toMargin(rect.size);
5147
return Geom::Rect(
52-
rect.pos + paddingPos(),
53-
Geom::Size(rect.size - paddingSize()).positive());
48+
rect.pos + margin.topLeft(),
49+
Geom::Size(rect.size - margin.getSpace()).positive());
5450
}
5551

5652
void visit(auto &visitor)

src/chart/rendering/drawaxes.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@ void drawAxes::drawTitle(Diag::Scale::Type axisIndex)
9494

9595
const auto &titleStyle = style.plot.axis.title;
9696

97-
auto size = canvas.textBoundary(title) + titleStyle.paddingSize();
97+
auto textBoundary = canvas.textBoundary(title);
98+
auto textMargin = titleStyle.toMargin(textBoundary);
99+
auto size = textBoundary + textMargin.getSpace();
98100

99101
Geom::Point pos;
100102
if (axisIndex == Diag::Scale::Type::X)
@@ -107,7 +109,7 @@ void drawAxes::drawTitle(Diag::Scale::Type axisIndex)
107109
if (value) refCopy.y = 1.0;
108110

109111
pos = coordSys.convert(refCopy) - size.xComp() / 2
110-
+ Geom::Point::Y(*titleStyle.paddingTop);
112+
+ Geom::Point::Y(textMargin.top);
111113

112114
canvas.setTextColor(*titleStyle.color * weight);
113115
drawLabel(Geom::Rect(pos, size),
@@ -169,7 +171,8 @@ void drawAxes::drawDiscreteLabels(bool horizontal)
169171
auto center = coordSys.convert(relCenter);
170172
auto min = coordSys.convert(relMin);
171173
auto max = coordSys.convert(relMax);
172-
auto pad = ((GUI::Margin)labelStyle).getSpace();
174+
auto margin = labelStyle.toMargin(neededSize);
175+
auto pad = margin.getSpace();
173176

174177
auto polarRotAngle = - M_PI * (double)coordSys.getPolar();
175178
auto rotatedIdent = coordSys.justRotate(ident);
@@ -184,10 +187,8 @@ void drawAxes::drawDiscreteLabels(bool horizontal)
184187
|| availLength >= neededLength)
185188
{
186189
auto minWidth =
187-
(rotatedIdent
188-
* Geom::Point((max - min).abs(),
189-
*style.plot.paddingLeft))
190-
.abs();
190+
(rotatedIdent * Geom::Point((max - min).abs(),
191+
margin.left)).abs();
191192

192193
auto actWidth = std::min(minWidth, neededSize.x);
193194
auto halfSize = Geom::Point(actWidth/2, neededSize.y/2);

src/chart/rendering/drawinterlacing.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ void drawInterlacing::drawDataLabel(bool horizontal,
165165

166166
auto neededSize = canvas.textBoundary(str);
167167

168-
auto padding = (GUI::Margin)labelStyle;
168+
auto padding = labelStyle.toMargin(neededSize);
169169

170170
auto relCenterPos = coordSys.justRotate(Geom::Point::Ident(horizontal))
171171
* ((neededSize + padding.getSpace()) / 2).flipX();

src/chart/rendering/drawitem.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,9 +203,9 @@ void drawItem::drawLabel(
203203
if (text.empty()) return;
204204

205205
auto &labelStyle = style.plot.marker.label;
206-
auto padding = ((GUI::Margin)labelStyle).getSpace();
207206
canvas.setFont(Gfx::Font(labelStyle));
208207
auto neededSize = canvas.textBoundary(text);
208+
auto padding = labelStyle.toMargin(neededSize).getSpace();
209209

210210
auto relVerPos = labelStyle.position->combine<Geom::Point>(
211211
[&](const auto &position)

src/chart/rendering/drawlabel.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ double drawLabel::getHeight(const Styles::Label &style,
4141
{
4242
canvas.setFont(Gfx::Font(style));
4343
auto textHeight = canvas.textBoundary("", 0).y;
44-
return style.paddingSize().y + textHeight;
44+
return style.paddingTop->get(textHeight)
45+
+ style.paddingBottom->get(textHeight)
46+
+ textHeight;
4547
}
4648

4749
Geom::Rect drawLabel::alignText(const Geom::Size &textSize)

0 commit comments

Comments
 (0)