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

View file

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