gpui: Add interval in pattern (#26459)

Closes #ISSUE

[git: Use font size to determine pattern slash width
#26446](https://github.com/zed-industries/zed/pull/26446)

This PR only uses font size as the slant line width, and here it further
uses line height as the slant line interval control.

before


![image](https://github.com/user-attachments/assets/a8f2406e-5eed-4528-a9a2-867513613fc7)


now


![image](https://github.com/user-attachments/assets/9b8ccca9-8023-4cb2-a6fe-0e42e19642a4)

big line height


![image](https://github.com/user-attachments/assets/4498e858-4f25-432c-80ee-355726d9c41b)


Release Notes:

- N/A *or* Added/Fixed/Improved ...
This commit is contained in:
0x2CA 2025-03-15 03:51:09 +08:00 committed by GitHub
parent 685536c27e
commit ba8b9ec2c7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 55 additions and 53 deletions

View file

@ -360,7 +360,10 @@ fn gradient_color(background: Background, position: vec2<f32>, bounds: Bounds,
}
}
case 2u: {
let pattern_height = background.gradient_angle_or_pattern_height;
let gradient_angle_or_pattern_height = background.gradient_angle_or_pattern_height;
let pattern_width = (gradient_angle_or_pattern_height / 65535.0f) / 255.0f;
let pattern_interval = (gradient_angle_or_pattern_height % 65535.0f) / 255.0f;
let pattern_height = pattern_width + pattern_interval;
let stripe_angle = M_PI_F / 4.0;
let pattern_period = pattern_height * sin(stripe_angle);
let rotation = mat2x2<f32>(
@ -370,7 +373,7 @@ fn gradient_color(background: Background, position: vec2<f32>, bounds: Bounds,
let relative_position = position - bounds.origin;
let rotated_point = rotation * relative_position;
let pattern = rotated_point.x % pattern_period;
let distance = min(pattern, pattern_period - pattern) - pattern_period / 4;
let distance = min(pattern, pattern_period - pattern) - pattern_period * (pattern_width / pattern_height) / 2.0f;
background_color = solid_color;
background_color.a *= saturate(0.5 - distance);
}