mirror of
https://github.com/emilk/egui.git
synced 2026-08-31 22:00:03 -04:00
Choose your own font and size (#1154)
* Refactor text layout: don't need &Fonts in all functions * Replace indexing in Fonts with member function * Wrap Fonts in a Mutex * Remove mutex for Font::glyph_info_cache * Remove RwLock around Font::characters * Put FontsImpl and GalleyCache behind the same Mutex * Round font sizes to whole pixels before deduplicating them * Make TextStyle !Copy * Implement user-named TextStyle:s * round font size earlier * Cache fonts based on family and size * Move TextStyle into egui and Style * Remove body_text_style * Query graphics about max texture size and use that as font atlas size * Recreate texture atlas when it is getting full
This commit is contained in:
@@ -198,6 +198,7 @@ pub struct EpiIntegration {
|
||||
impl EpiIntegration {
|
||||
pub fn new(
|
||||
integration_name: &'static str,
|
||||
max_texture_side: usize,
|
||||
window: &winit::window::Window,
|
||||
repaint_signal: std::sync::Arc<dyn epi::backend::RepaintSignal>,
|
||||
persistence: crate::epi::Persistence,
|
||||
@@ -223,7 +224,7 @@ impl EpiIntegration {
|
||||
frame,
|
||||
persistence,
|
||||
egui_ctx,
|
||||
egui_winit: crate::State::new(window),
|
||||
egui_winit: crate::State::new(max_texture_side, window),
|
||||
app,
|
||||
quit: false,
|
||||
};
|
||||
|
||||
@@ -129,17 +129,22 @@ pub struct State {
|
||||
}
|
||||
|
||||
impl State {
|
||||
/// Initialize with the native `pixels_per_point` (dpi scaling).
|
||||
pub fn new(window: &winit::window::Window) -> Self {
|
||||
Self::from_pixels_per_point(native_pixels_per_point(window))
|
||||
/// Initialize with:
|
||||
/// * `max_texture_side`: e.g. `GL_MAX_TEXTURE_SIZE`
|
||||
/// * the native `pixels_per_point` (dpi scaling).
|
||||
pub fn new(max_texture_side: usize, window: &winit::window::Window) -> Self {
|
||||
Self::from_pixels_per_point(max_texture_side, native_pixels_per_point(window))
|
||||
}
|
||||
|
||||
/// Initialize with a given dpi scaling.
|
||||
pub fn from_pixels_per_point(pixels_per_point: f32) -> Self {
|
||||
/// Initialize with:
|
||||
/// * `max_texture_side`: e.g. `GL_MAX_TEXTURE_SIZE`
|
||||
/// * the given `pixels_per_point` (dpi scaling).
|
||||
pub fn from_pixels_per_point(max_texture_side: usize, pixels_per_point: f32) -> Self {
|
||||
Self {
|
||||
start_time: instant::Instant::now(),
|
||||
egui_input: egui::RawInput {
|
||||
pixels_per_point: Some(pixels_per_point),
|
||||
max_texture_side,
|
||||
..Default::default()
|
||||
},
|
||||
pointer_pos_in_points: None,
|
||||
|
||||
Reference in New Issue
Block a user