88 lines
2.2 KiB
Rust
88 lines
2.2 KiB
Rust
//! HII Font Protocol
|
|
|
|
pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
|
|
0xe9ca4775,
|
|
0x8657,
|
|
0x47fc,
|
|
0x97,
|
|
0xe7,
|
|
&[0x7e, 0xd6, 0x5a, 0x08, 0x43, 0x24],
|
|
);
|
|
|
|
pub type ProtocolStringToImage = eficall! {fn(
|
|
*const Protocol,
|
|
OutFlags,
|
|
String,
|
|
*const super::hii_font_ex::DisplayInfo,
|
|
*mut *mut super::hii_font_ex::ImageOutput,
|
|
usize,
|
|
usize,
|
|
*mut *mut RowInfo,
|
|
*mut usize,
|
|
*mut usize,
|
|
) -> crate::base::Status};
|
|
|
|
pub type ProtocolStringIdToImage = eficall! {fn(
|
|
*const Protocol,
|
|
OutFlags,
|
|
crate::hii::Handle,
|
|
crate::hii::StringId,
|
|
*const crate::base::Char8,
|
|
*const super::hii_font_ex::DisplayInfo,
|
|
*mut *mut super::hii_font_ex::ImageOutput,
|
|
usize,
|
|
usize,
|
|
*mut *mut RowInfo,
|
|
*mut usize,
|
|
*mut usize,
|
|
) -> crate::base::Status};
|
|
|
|
pub type ProtocolGetGlyph = eficall! {fn(
|
|
*const Protocol,
|
|
crate::base::Char16,
|
|
*const super::hii_font_ex::DisplayInfo,
|
|
*mut *mut super::hii_font_ex::ImageOutput,
|
|
*mut usize,
|
|
) -> crate::base::Status};
|
|
|
|
pub type ProtocolGetFontInfo = eficall! {fn(
|
|
*const Protocol,
|
|
*mut Handle,
|
|
*const super::hii_font_ex::DisplayInfo,
|
|
*mut *mut super::hii_font_ex::DisplayInfo,
|
|
String,
|
|
) -> crate::base::Status};
|
|
|
|
#[repr(C)]
|
|
pub struct Protocol {
|
|
pub string_to_image: ProtocolStringToImage,
|
|
pub string_id_to_image: ProtocolStringIdToImage,
|
|
pub get_glyph: ProtocolGetGlyph,
|
|
pub get_font_info: ProtocolGetFontInfo,
|
|
}
|
|
|
|
pub type OutFlags = u32;
|
|
|
|
pub const OUT_FLAG_CLIP: OutFlags = 0x00000001;
|
|
pub const OUT_FLAG_WRAP: OutFlags = 0x00000002;
|
|
pub const OUT_FLAG_CLIP_CLEAN_Y: OutFlags = 0x00000004;
|
|
pub const OUT_FLAG_CLIP_CLEAN_X: OutFlags = 0x00000008;
|
|
pub const OUT_FLAG_TRANSPARENT: OutFlags = 0x00000010;
|
|
pub const IGNORE_IF_NO_GLYPH: OutFlags = 0x00000020;
|
|
pub const IGNORE_LINE_BREAK: OutFlags = 0x00000040;
|
|
pub const DIRECT_TO_SCREEN: OutFlags = 0x00000080;
|
|
|
|
pub type String = *mut crate::base::Char16;
|
|
|
|
#[repr(C)]
|
|
#[derive(Clone, Copy, Debug)]
|
|
pub struct RowInfo {
|
|
pub start_index: usize,
|
|
pub end_index: usize,
|
|
pub line_height: usize,
|
|
pub line_width: usize,
|
|
pub baseline_offset: usize,
|
|
}
|
|
|
|
pub type Handle = *mut core::ffi::c_void;
|