x_graphics/direct2d/
font.rs

1use windows::Win32::Graphics::DirectWrite::{
2    DWRITE_FONT_STYLE, DWRITE_FONT_STYLE_ITALIC, DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_WEIGHT, DWRITE_FONT_WEIGHT_BLACK, DWRITE_FONT_WEIGHT_BOLD,
3    DWRITE_FONT_WEIGHT_EXTRA_BLACK, DWRITE_FONT_WEIGHT_EXTRA_BOLD, DWRITE_FONT_WEIGHT_EXTRA_LIGHT, DWRITE_FONT_WEIGHT_LIGHT,
4    DWRITE_FONT_WEIGHT_MEDIUM, DWRITE_FONT_WEIGHT_REGULAR, DWRITE_FONT_WEIGHT_SEMI_BOLD, DWRITE_FONT_WEIGHT_THIN,
5};
6
7use crate::font::{FontStyle, FontWeight};
8
9impl From<FontStyle> for DWRITE_FONT_STYLE {
10    fn from(style: FontStyle) -> Self {
11        if style.contains(FontStyle::Italic) {
12            DWRITE_FONT_STYLE_ITALIC
13        } else {
14            DWRITE_FONT_STYLE_NORMAL
15        }
16    }
17}
18
19impl From<FontWeight> for DWRITE_FONT_WEIGHT {
20    fn from(weight: FontWeight) -> Self {
21        match weight {
22            FontWeight::Thin => DWRITE_FONT_WEIGHT_THIN,
23            FontWeight::ExtraLight => DWRITE_FONT_WEIGHT_EXTRA_LIGHT,
24            FontWeight::Light => DWRITE_FONT_WEIGHT_LIGHT,
25            FontWeight::Normal => DWRITE_FONT_WEIGHT_REGULAR,
26            FontWeight::Medium => DWRITE_FONT_WEIGHT_MEDIUM,
27            FontWeight::SemiBold => DWRITE_FONT_WEIGHT_SEMI_BOLD,
28            FontWeight::Bold => DWRITE_FONT_WEIGHT_BOLD,
29            FontWeight::ExtraBold => DWRITE_FONT_WEIGHT_EXTRA_BOLD,
30            FontWeight::Black => DWRITE_FONT_WEIGHT_BLACK,
31            FontWeight::ExtraBlack => DWRITE_FONT_WEIGHT_EXTRA_BLACK,
32        }
33    }
34}