Use default font color and remove Color

This commit is contained in:
grovesNL 2022-10-28 01:24:45 -02:30 committed by Josh Groves
parent 7eb4d41c25
commit 4c1a83548e
3 changed files with 11 additions and 19 deletions

View file

@ -1,4 +1,4 @@
use cosmic_text::{Attrs, FontSystem, SwashCache, TextBuffer, TextMetrics};
use cosmic_text::{Attrs, Color, FontSystem, SwashCache, TextBuffer, TextMetrics};
use glyphon::{Resolution, TextAtlas, TextRenderer};
use wgpu::{
Backends, CommandEncoderDescriptor, CompositeAlphaMode, DeviceDescriptor, Features, Instance,
@ -101,6 +101,7 @@ async fn run() {
height: config.height,
},
&mut buffer,
Color::rgb(255, 255, 255),
&mut cache,
)
.unwrap();

View file

@ -12,20 +12,6 @@ pub use text_render::TextRenderer;
pub use cosmic_text;
/// The color to use when rendering text.
#[repr(C)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct Color {
/// The red component of the color.
pub r: u8,
/// The green component of the color.
pub g: u8,
/// The blue component of the color.
pub b: u8,
/// The alpha component of the color.
pub a: u8,
}
pub(crate) enum GpuCache {
InAtlas { x: u16, y: u16 },
SkipRasterization,
@ -46,7 +32,7 @@ pub(crate) struct GlyphToRender {
pos: [i32; 2],
dim: [u16; 2],
uv: [u16; 2],
color: [u8; 4],
color: u32,
}
/// The screen resolution to use when rendering text.

View file

@ -1,4 +1,4 @@
use cosmic_text::{CacheKey, SwashCache, SwashContent, TextBuffer};
use cosmic_text::{CacheKey, Color, SwashCache, SwashContent, TextBuffer};
use etagere::{size2, Allocation};
use std::{collections::HashSet, iter, mem::size_of, num::NonZeroU32, slice};
@ -64,6 +64,7 @@ impl TextRenderer {
atlas: &mut TextAtlas,
screen_resolution: Resolution,
buffer: &mut TextBuffer<'a>,
default_color: Color,
cache: &mut SwashCache,
) -> Result<(), PrepareError> {
self.screen_resolution = screen_resolution;
@ -233,6 +234,11 @@ impl TextRenderer {
let line_y = run.line_y;
for glyph in run.glyphs.iter() {
let color = match glyph.color_opt {
Some(some) => some,
None => default_color,
};
let details = atlas.glyph_cache.get(&glyph.cache_key).unwrap();
let mut x = glyph.x_int + details.left as i32;
@ -296,8 +302,7 @@ impl TextRenderer {
pos: [x as i32, y as i32],
dim: [width as u16, height as u16],
uv: [atlas_x, atlas_y],
// TODO
color: [255, 255, 255, 255],
color: color.0,
})
.take(4),
);