summaryrefslogtreecommitdiff
path: root/src/layout/text.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2019-06-22 15:32:19 +0200
committerLaurenz <laurmaedje@gmail.com>2019-06-22 15:32:19 +0200
commit099ce71aba54a40455b7ce35768c8fe003f7b16a (patch)
treed0a475e91967882d4608dea59ceb41c9a6232e07 /src/layout/text.rs
parentc7ee2b393a369325b3578557e045f2ff94ceab8f (diff)
Unify font classes + By-value-contexts ⚖
Diffstat (limited to 'src/layout/text.rs')
-rw-r--r--src/layout/text.rs11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/layout/text.rs b/src/layout/text.rs
index 0a0241a0..75a59254 100644
--- a/src/layout/text.rs
+++ b/src/layout/text.rs
@@ -7,16 +7,16 @@ use super::*;
/// The context for text layouting.
-#[derive(Debug, Clone)]
+#[derive(Debug, Copy, Clone)]
pub struct TextContext<'a, 'p> {
/// Loads fonts matching queries.
pub loader: &'a FontLoader<'p>,
/// Base style to set text with.
- pub style: TextStyle,
+ pub style: &'a TextStyle,
}
/// Layout one piece of text without any breaks as one continous box.
-pub fn layout(text: &str, ctx: &TextContext) -> LayoutResult<BoxLayout> {
+pub fn layout(text: &str, ctx: TextContext) -> LayoutResult<BoxLayout> {
let mut actions = Vec::new();
let mut active_font = std::usize::MAX;
let mut buffer = String::new();
@@ -26,9 +26,8 @@ pub fn layout(text: &str, ctx: &TextContext) -> LayoutResult<BoxLayout> {
for character in text.chars() {
// Retrieve the best font for this character.
let (index, font) = ctx.loader.get(FontQuery {
- families: ctx.style.font_families.clone(),
- italic: ctx.style.italic,
- bold: ctx.style.bold,
+ classes: ctx.style.classes.clone(),
+ fallback: ctx.style.fallback.clone(),
character,
}).ok_or_else(|| LayoutError::NoSuitableFont(character))?;