Skip to content

Commit ab8700c

Browse files
authored
misc text rendering fixes (#247)
* enable clipping for texts * improve text rendering in HiDPI * fix tests
1 parent 8a0ba18 commit ab8700c

File tree

4 files changed

+15
-11
lines changed

4 files changed

+15
-11
lines changed

crates/yakui-widgets/src/widgets/render_text.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ impl Widget for RenderTextWidget {
101101
}
102102

103103
fn layout(&self, ctx: LayoutContext<'_>, constraints: Constraints) -> Vec2 {
104+
ctx.layout.enable_clipping(ctx.dom);
105+
104106
let max_width = constraints
105107
.max
106108
.x
@@ -168,7 +170,6 @@ impl Widget for RenderTextWidget {
168170
.map(|layout| layout.line_w)
169171
.max_by(|a, b| a.total_cmp(b))
170172
.unwrap_or_default()
171-
.ceil()
172173
.max(constraints.min.x * ctx.layout.scale_factor());
173174

174175
for run in buffer.layout_runs() {
@@ -188,7 +189,10 @@ impl Widget for RenderTextWidget {
188189
.sum::<f32>()
189190
.ceil();
190191

191-
(Vec2::new(widest_line, size_y) / ctx.layout.scale_factor()).round()
192+
Vec2::new(
193+
widest_line / ctx.layout.scale_factor(),
194+
(size_y / ctx.layout.scale_factor()).ceil(),
195+
)
192196
};
193197

194198
let size = constraints.constrain(size);

crates/yakui-widgets/tests/snapshots/align_text_center.snap

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ assertion_line: 264
44
expression: view
55
---
66
- AlignWidget pos(0, 0) size(1000, 1000)
7-
- TextWidget pos(376, 464.5) size(248, 71)
8-
- PadWidget pos(376, 464.5) size(248, 71)
9-
- RenderTextWidget pos(376, 464.5) size(248, 71)
7+
- TextWidget pos(376.25, 464.5) size(247.5, 71)
8+
- PadWidget pos(376.25, 464.5) size(247.5, 71)
9+
- RenderTextWidget pos(376.25, 464.5) size(247.5, 71)

crates/yakui-widgets/tests/snapshots/button_text_alignment.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ expression: view
99
- RoundRectWidget pos(0, 0) size(800, 800)
1010
- PadWidget pos(0, 0) size(800, 800)
1111
- AlignWidget pos(20, 10) size(760, 780)
12-
- RenderTextWidget pos(276, 364.5) size(248, 71)
12+
- RenderTextWidget pos(276.25, 364.5) size(247.5, 71)

crates/yakui-widgets/tests/snapshots/column_intrinsic.snap

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ assertion_line: 337
44
expression: view
55
---
66
- ListWidget pos(0, 0) size(1000, 1000)
7-
- ButtonWidget pos(0, 0) size(74, 37)
8-
- RoundRectWidget pos(0, 0) size(74, 37)
9-
- PadWidget pos(0, 0) size(74, 37)
10-
- AlignWidget pos(20, 10) size(34, 17)
11-
- RenderTextWidget pos(20, 10) size(34, 17)
7+
- ButtonWidget pos(0, 0) size(73.26367, 37)
8+
- RoundRectWidget pos(0, 0) size(73.26367, 37)
9+
- PadWidget pos(0, 0) size(73.26367, 37)
10+
- AlignWidget pos(20, 10) size(33.26367, 17)
11+
- RenderTextWidget pos(20, 10) size(33.26367, 17)

0 commit comments

Comments
 (0)