Make FontSystem global and simplify Paragraph API
This commit is contained in:
parent
9245423c5d
commit
346af3f8b0
15 changed files with 165 additions and 328 deletions
|
|
@ -1,6 +1,5 @@
|
|||
use crate::core::{Background, Color, Gradient, Rectangle, Vector};
|
||||
use crate::graphics::backend;
|
||||
use crate::graphics::text;
|
||||
use crate::graphics::{Damage, Viewport};
|
||||
use crate::primitive::{self, Primitive};
|
||||
|
||||
|
|
@ -805,10 +804,6 @@ impl iced_graphics::Backend for Backend {
|
|||
}
|
||||
|
||||
impl backend::Text for Backend {
|
||||
fn font_system(&self) -> &text::FontSystem {
|
||||
self.text_pipeline.font_system()
|
||||
}
|
||||
|
||||
fn load_font(&mut self, font: Cow<'static, [u8]>) {
|
||||
self.text_pipeline.load_font(font);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ use crate::core::alignment;
|
|||
use crate::core::text::{LineHeight, Shaping};
|
||||
use crate::core::{Color, Font, Pixels, Point, Rectangle};
|
||||
use crate::graphics::text::cache::{self, Cache};
|
||||
use crate::graphics::text::font_system;
|
||||
use crate::graphics::text::paragraph;
|
||||
use crate::graphics::text::FontSystem;
|
||||
|
||||
use rustc_hash::{FxHashMap, FxHashSet};
|
||||
use std::borrow::Cow;
|
||||
|
|
@ -12,7 +12,6 @@ use std::collections::hash_map;
|
|||
|
||||
#[allow(missing_debug_implementations)]
|
||||
pub struct Pipeline {
|
||||
font_system: FontSystem,
|
||||
glyph_cache: GlyphCache,
|
||||
cache: RefCell<Cache>,
|
||||
}
|
||||
|
|
@ -20,18 +19,16 @@ pub struct Pipeline {
|
|||
impl Pipeline {
|
||||
pub fn new() -> Self {
|
||||
Pipeline {
|
||||
font_system: FontSystem::new(),
|
||||
glyph_cache: GlyphCache::new(),
|
||||
cache: RefCell::new(Cache::new()),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn font_system(&self) -> &FontSystem {
|
||||
&self.font_system
|
||||
}
|
||||
|
||||
pub fn load_font(&mut self, bytes: Cow<'static, [u8]>) {
|
||||
self.font_system.load_font(bytes);
|
||||
font_system()
|
||||
.write()
|
||||
.expect("Write font system")
|
||||
.load_font(bytes);
|
||||
|
||||
self.cache = RefCell::new(Cache::new());
|
||||
}
|
||||
|
|
@ -51,8 +48,10 @@ impl Pipeline {
|
|||
return;
|
||||
};
|
||||
|
||||
let mut font_system = font_system().write().expect("Write font system");
|
||||
|
||||
draw(
|
||||
self.font_system.get_mut(),
|
||||
font_system.raw(),
|
||||
&mut self.glyph_cache,
|
||||
paragraph.buffer(),
|
||||
Rectangle::new(position, paragraph.min_bounds()),
|
||||
|
|
@ -82,7 +81,9 @@ impl Pipeline {
|
|||
) {
|
||||
let line_height = f32::from(line_height.to_absolute(size));
|
||||
|
||||
let font_system = self.font_system.get_mut();
|
||||
let mut font_system = font_system().write().expect("Write font system");
|
||||
let font_system = font_system.raw();
|
||||
|
||||
let key = cache::Key {
|
||||
bounds: bounds.size(),
|
||||
content,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue