Skip to content

Commit

Permalink
DRY draw_background and draw_bounding_outline
Browse files Browse the repository at this point in the history
  • Loading branch information
magnetophon committed Oct 21, 2024
1 parent 53fa9b1 commit 5db2471
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 57 deletions.
98 changes: 41 additions & 57 deletions src/editor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ impl View for DelayGraph {
self.compute_time_scaling_factor(&delay_data, bounds.w, border_width, path_line_width);

// Draw components
self.draw_background(canvas, bounds, background_color, border_width);
draw_background(canvas, bounds, background_color);
self.draw_delay_times_as_lines(
canvas,
&delay_data,
Expand Down Expand Up @@ -288,7 +288,7 @@ impl View for DelayGraph {
border_width,
true,
);
self.draw_bounding_outline(canvas, bounds, border_color, border_width);
draw_bounding_outline(canvas, bounds, border_color, border_width);
}
}

Expand Down Expand Up @@ -352,26 +352,6 @@ impl DelayGraph {
);
}

fn draw_background(
&self,
canvas: &mut Canvas,
bounds: BoundingBox,
color: vg::Color,
border_width: f32,
) {
let mut path = vg::Path::new();
path.rect(
bounds.x + border_width * 0.5,
bounds.y,
bounds.w - border_width,
bounds.h - border_width * 0.5,
);
path.close();

let paint = vg::Paint::color(color);
canvas.fill_path(&path, &paint);
}

fn draw_time_line(
&self,
canvas: &mut Canvas,
Expand Down Expand Up @@ -488,28 +468,6 @@ impl DelayGraph {
let octave = (note_nr / 12) - 1;
format!("{note_name}{octave}")
}

fn draw_bounding_outline(
&self,
canvas: &mut Canvas,
bounds: BoundingBox,
color: vg::Color,
border_width: f32,
) {
let mut path = vg::Path::new();
path.rect(
bounds.x + border_width * 0.5,
bounds.y,
bounds.w - border_width,
bounds.h - border_width * 0.5,
);
path.close();

canvas.stroke_path(
&path,
&vg::Paint::color(color).with_line_width(border_width),
);
}
}

fn make_column(cx: &mut Context, title: &str, contents: impl FnOnce(&mut Context)) {
Expand Down Expand Up @@ -578,18 +536,6 @@ impl ActionTrigger {
pub fn is_learning(&self) -> bool {
self.is_learning.load(Ordering::SeqCst) && self.get_learning_index() == self.own_index
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// for drawing
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
fn draw_background(&self, canvas: &mut Canvas, bounds: BoundingBox, color: vg::Color) {
let mut path = vg::Path::new();
path.rect(bounds.x, bounds.y, bounds.w, bounds.h);
path.close();

let paint = vg::Paint::color(color);
canvas.fill_path(&path, &paint);
}
}

impl View for ActionTrigger {
Expand All @@ -601,9 +547,47 @@ impl View for ActionTrigger {
fn draw(&self, draw_context: &mut DrawContext, canvas: &mut Canvas) {
let bounds = draw_context.bounds();
let background_color: vg::Color = draw_context.background_color().into();
let border_color: vg::Color = draw_context.border_color().into();
let outline_color: vg::Color = draw_context.outline_color().into();
let selection_color: vg::Color = draw_context.selection_color().into();
let border_width = draw_context.border_width();

self.draw_background(canvas, bounds, background_color);
draw_background(canvas, bounds, background_color);
draw_bounding_outline(canvas, bounds, border_color, border_width);
// Example of using internal state in a simplistic way
if self.is_learning() {}
}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// for drawing
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
fn draw_background(canvas: &mut Canvas, bounds: BoundingBox, color: vg::Color) {
let mut path = vg::Path::new();
path.rect(bounds.x, bounds.y, bounds.w, bounds.h);
path.close();

let paint = vg::Paint::color(color);
canvas.fill_path(&path, &paint);
}

fn draw_bounding_outline(
canvas: &mut Canvas,
bounds: BoundingBox,
color: vg::Color,
border_width: f32,
) {
let mut path = vg::Path::new();
path.rect(
bounds.x + border_width * 0.5,
bounds.y,
bounds.w - border_width,
bounds.h - border_width * 0.5,
);
path.close();

canvas.stroke_path(
&path,
&vg::Paint::color(color).with_line_width(border_width),
);
}
4 changes: 4 additions & 0 deletions src/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,11 @@ delay-graph {

action-trigger {
top: 100px;
height: 30px;
border-width: 1px;
background-color: #4e4e4e;
border-color: #fabdf0;
transition: background-color 300ms;
}

generic-ui .row {
Expand Down

0 comments on commit 5db2471

Please sign in to comment.