Compiling layout!

co-authored-by: Max <max@zed.dev>
This commit is contained in:
Mikayla 2023-12-01 16:21:12 -08:00
parent 39887be7d0
commit b0f9144167
No known key found for this signature in database

View file

@ -182,7 +182,7 @@ impl TerminalElement {
// terminal_theme: &TerminalStyle,
text_system: &TextSystem,
hyperlink: Option<(HighlightStyle, &RangeInclusive<AlacPoint>)>,
cx: &mut WindowContext<'_>,
cx: &WindowContext<'_>,
) -> (Vec<LayoutCell>, Vec<LayoutRect>) {
let theme_colors = cx.theme().colors();
let mut cells = vec![];
@ -362,35 +362,41 @@ impl TerminalElement {
}
fn compute_layout(&self, bounds: Bounds<gpui::Pixels>, cx: &mut WindowContext) -> LayoutState {
let settings = ThemeSettings::get_global(cx);
let terminal_settings = TerminalSettings::get_global(cx);
let settings = ThemeSettings::get_global(cx).clone();
//Setup layout information
// todo!(Terminal tooltips)
// let link_style = settings.theme.editor.link_definition;
// let tooltip_style = settings.theme.tooltip.clone();
let text_system = cx.text_system();
let font_size = font_size(&terminal_settings, cx).unwrap_or(settings.buffer_font_size(cx));
let font_family: SharedString = terminal_settings
let buffer_font_size = settings.buffer_font_size(cx);
let terminal_settings = TerminalSettings::get_global(cx);
let font_family = terminal_settings
.font_family
.as_ref()
.map(|string| SharedString::from(*string))
.map(|string| string.clone().into())
.unwrap_or(settings.buffer_font.family);
let font_features = terminal_settings
.font_features
.as_ref()
.unwrap_or(&settings.buffer_font.features);
.clone()
.unwrap_or(settings.buffer_font.features.clone());
let line_height = terminal_settings.line_height.value();
let font_size = terminal_settings.font_size.clone();
let font_size =
font_size.map_or(buffer_font_size, |size| theme::adjusted_font_size(size, cx));
let settings = ThemeSettings::get_global(cx);
let theme = cx.theme();
let theme = cx.theme().clone();
let text_style = TextStyle {
font_family,
font_features: *font_features,
font_features,
font_size: font_size.into(),
font_style: FontStyle::Normal,
line_height: terminal_settings.line_height.value().into(),
line_height: line_height.into(),
background_color: None,
white_space: WhiteSpace::Normal,
// These are going to be overridden per-cell
@ -399,14 +405,14 @@ impl TerminalElement {
font_weight: FontWeight::NORMAL,
};
let text_system = cx.text_system();
let selection_color = theme.players().local();
let match_color = theme.colors().search_match_background;
let gutter;
let dimensions = {
let rem_size = cx.rem_size();
let font_pixels = text_style.font_size.to_pixels(rem_size);
let line_height =
font_pixels * terminal_settings.line_height.value().to_pixels(rem_size);
let line_height = font_pixels * line_height.to_pixels(rem_size);
let font_id = cx.text_system().font_id(&text_style.font()).unwrap();
// todo!(do we need to keep this unwrap?)
@ -475,7 +481,7 @@ impl TerminalElement {
selection,
cursor,
..
} = { &terminal_handle.read(cx).last_content };
} = &terminal_handle.read(cx).last_content;
// searches, highlights to a single range representations
let mut relative_highlighted_ranges = Vec::new();
@ -516,12 +522,13 @@ impl TerminalElement {
theme.players().local().cursor
};
let len = str_trxt.len();
cx.text_system()
.layout_line(
&str_trxt,
.shape_line(
str_trxt.into(),
text_style.font_size.to_pixels(cx.rem_size()),
&[TextRun {
len: str_trxt.len(),
len,
font: text_style.font(),
color,
background_color: None,
@ -549,7 +556,7 @@ impl TerminalElement {
cursor_position,
block_width,
dimensions.line_height,
terminal_theme.cursor,
theme.players().local().cursor,
shape,
text,
)
@ -964,12 +971,6 @@ fn to_highlighted_range_lines(
Some((start_y, highlighted_range_lines))
}
fn font_size(terminal_settings: &TerminalSettings, cx: &mut AppContext) -> Option<Pixels> {
terminal_settings
.font_size
.map(|size| theme::adjusted_font_size(size, cx))
}
// mappings::colors::convert_color
fn convert_color(fg: &terminal::alacritty_terminal::ansi::Color, colors: &ThemeColors) -> Hsla {
todo!()