Implement Frame::stroke_text in canvas API

This commit is contained in:
Héctor Ramón Jiménez 2025-05-01 02:59:59 +02:00
parent 8f3bca299b
commit acde7ea735
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
4 changed files with 41 additions and 0 deletions

View file

@ -217,6 +217,11 @@ pub trait Backend: Sized {
size: Size,
stroke: impl Into<Stroke<'a>>,
);
fn stroke_text<'a>(
&mut self,
text: impl Into<Text>,
stroke: impl Into<Stroke<'a>>,
);
fn fill(&mut self, path: &Path, fill: impl Into<Fill>);
fn fill_text(&mut self, text: impl Into<Text>);
@ -272,6 +277,12 @@ impl Backend for () {
_stroke: impl Into<Stroke<'a>>,
) {
}
fn stroke_text<'a>(
&mut self,
_text: impl Into<Text>,
_stroke: impl Into<Stroke<'a>>,
) {
}
fn fill(&mut self, _path: &Path, _fill: impl Into<Fill>) {}
fn fill_text(&mut self, _text: impl Into<Text>) {}

View file

@ -537,6 +537,14 @@ mod geometry {
);
}
fn stroke_text<'a>(
&mut self,
text: impl Into<Text>,
stroke: impl Into<Stroke<'a>>,
) {
delegate!(self, frame, frame.stroke_text(text, stroke));
}
fn fill_text(&mut self, text: impl Into<Text>) {
delegate!(self, frame, frame.fill_text(text));
}

View file

@ -245,6 +245,17 @@ impl geometry::frame::Backend for Frame {
}
}
fn stroke_text<'a>(
&mut self,
text: impl Into<geometry::Text>,
stroke: impl Into<Stroke<'a>>,
) {
let text = text.into();
let stroke = stroke.into();
text.draw_with(|path, _color| self.stroke(&path, stroke));
}
fn push_transform(&mut self) {
self.stack.push(self.transform);
}

View file

@ -291,6 +291,17 @@ impl geometry::frame::Backend for Frame {
.expect("Stroke rectangle");
}
fn stroke_text<'a>(
&mut self,
text: impl Into<geometry::Text>,
stroke: impl Into<Stroke<'a>>,
) {
let text = text.into();
let stroke = stroke.into();
text.draw_with(|glyph, _color| self.stroke(&glyph, stroke));
}
fn fill_text(&mut self, text: impl Into<geometry::Text>) {
let text = text.into();