Simplify draw logic of sliders

This commit is contained in:
Héctor Ramón Jiménez 2023-04-12 05:19:01 +02:00
parent de51bc3f41
commit 45cfce3f6d
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
2 changed files with 15 additions and 18 deletions

View file

@ -370,8 +370,6 @@ pub fn draw<T, R>(
style_sheet.active(style) style_sheet.active(style)
}; };
let value = value.into() as f32;
let (handle_width, handle_height, handle_border_radius) = match style let (handle_width, handle_height, handle_border_radius) = match style
.handle .handle
.shape .shape
@ -383,6 +381,7 @@ pub fn draw<T, R>(
} => (f32::from(width), bounds.height, border_radius), } => (f32::from(width), bounds.height, border_radius),
}; };
let value = value.into() as f32;
let (range_start, range_end) = { let (range_start, range_end) = {
let (start, end) = range.clone().into_inner(); let (start, end) = range.clone().into_inner();
@ -396,15 +395,14 @@ pub fn draw<T, R>(
/ (range_end - range_start) / (range_end - range_start)
}; };
let line_y = bounds.y + bounds.height / 2.0 - style.rail.size / 2.0; let rail_y = bounds.y + bounds.height / 2.0;
let line_offset = offset + handle_width / 2.0;
renderer.fill_quad( renderer.fill_quad(
renderer::Quad { renderer::Quad {
bounds: Rectangle { bounds: Rectangle {
x: bounds.x, x: bounds.x,
y: line_y, y: rail_y - style.rail.size / 2.0,
width: line_offset, width: offset,
height: style.rail.size, height: style.rail.size,
}, },
border_radius: [ border_radius: [
@ -423,9 +421,9 @@ pub fn draw<T, R>(
renderer.fill_quad( renderer.fill_quad(
renderer::Quad { renderer::Quad {
bounds: Rectangle { bounds: Rectangle {
x: bounds.x + line_offset.round(), x: bounds.x + offset,
y: line_y, y: rail_y - style.rail.size / 2.0,
width: bounds.width - line_offset, width: bounds.width - offset,
height: style.rail.size, height: style.rail.size,
}, },
border_radius: [ border_radius: [
@ -445,7 +443,7 @@ pub fn draw<T, R>(
renderer::Quad { renderer::Quad {
bounds: Rectangle { bounds: Rectangle {
x: bounds.x + offset.round(), x: bounds.x + offset.round(),
y: bounds.y + bounds.height / 2.0 - handle_height / 2.0, y: rail_y - handle_height / 2.0,
width: handle_width, width: handle_width,
height: handle_height, height: handle_height,
}, },

View file

@ -388,16 +388,15 @@ pub fn draw<T, R>(
/ (range_start - range_end) / (range_start - range_end)
}; };
let line_x = bounds.x + bounds.width / 2.0 - style.rail.size / 2.0; let rail_x = bounds.x + bounds.width / 2.0;
let line_offset = offset + handle_width / 2.0;
renderer.fill_quad( renderer.fill_quad(
renderer::Quad { renderer::Quad {
bounds: Rectangle { bounds: Rectangle {
x: line_x, x: rail_x - style.rail.size / 2.0,
y: bounds.y, y: bounds.y,
width: style.rail.size, width: style.rail.size,
height: line_offset, height: offset,
}, },
border_radius: [ border_radius: [
style.rail.border_radius, style.rail.border_radius,
@ -415,10 +414,10 @@ pub fn draw<T, R>(
renderer.fill_quad( renderer.fill_quad(
renderer::Quad { renderer::Quad {
bounds: Rectangle { bounds: Rectangle {
x: line_x, x: rail_x - style.rail.size / 2.0,
y: bounds.y + line_offset.round(), y: bounds.y + offset,
width: style.rail.size, width: style.rail.size,
height: bounds.height - line_offset, height: bounds.height - offset,
}, },
border_radius: [ border_radius: [
0.0, 0.0,
@ -436,7 +435,7 @@ pub fn draw<T, R>(
renderer.fill_quad( renderer.fill_quad(
renderer::Quad { renderer::Quad {
bounds: Rectangle { bounds: Rectangle {
x: bounds.x + bounds.width / 2.0 - handle_height / 2.0, x: rail_x - handle_height / 2.0,
y: bounds.y + offset.round(), y: bounds.y + offset.round(),
width: handle_height, width: handle_height,
height: handle_width, height: handle_width,