struct Canvas {
width: usize,
height: usize,
buffer: Vec<Pixel>,
}Expand description
Canvas which is used for simple line drawing operations.
The coordinate system is the following:
0 x –––––––→ | | | | | | y↓
Fields§
§width: usizeCanvas width.
height: usizeCanvas height.
buffer: Vec<Pixel>Canvas buffer we draw on.
Implementations§
source§impl Canvas
impl Canvas
sourcefn new(width: usize, height: usize) -> Self
fn new(width: usize, height: usize) -> Self
Builds new Canvas for line drawing with the given width and height with default color.
sourcefn buffer_mut(&mut self) -> &mut [Pixel]
fn buffer_mut(&mut self) -> &mut [Pixel]
Canvas underlying buffer for direct manipulation
sourcefn h_line_bounds(&self, y: f32, stroke_size: usize) -> (f32, f32)
fn h_line_bounds(&self, y: f32, stroke_size: usize) -> (f32, f32)
Gives bounds for horizontal straight line on y with stroke_size.
sourcefn v_line_bounds(&self, x: f32, stroke_size: usize) -> (f32, f32)
fn v_line_bounds(&self, x: f32, stroke_size: usize) -> (f32, f32)
Gives bounds for vertical straight line on y with stroke_size.
sourcefn draw_h_line(&mut self, x: f32, y: f32, size: f32, stroke_size: usize)
fn draw_h_line(&mut self, x: f32, y: f32, size: f32, stroke_size: usize)
Draws a horizontal straight line from (x, y) of size with the given stroke_size.
sourcefn draw_v_line(&mut self, x: f32, y: f32, size: f32, stroke_size: usize)
fn draw_v_line(&mut self, x: f32, y: f32, size: f32, stroke_size: usize)
Draws a vertical straight line from (x, y) of size with the given stroke_size.
sourcefn draw_rect(&mut self, x: f32, y: f32, width: f32, height: f32, color: Pixel)
fn draw_rect(&mut self, x: f32, y: f32, width: f32, height: f32, color: Pixel)
Draws a rect from the (x, y) of the given width and height using color.
sourcefn put_pixel(&mut self, x: f32, y: f32, color: Pixel)
fn put_pixel(&mut self, x: f32, y: f32, color: Pixel)
Put pixel into buffer with the given color if the color is brighter than the one buffer already has in place.
sourcefn draw_line(&mut self, from_x: f32, from_y: f32, to_x: f32, to_y: f32)
fn draw_line(&mut self, from_x: f32, from_y: f32, to_x: f32, to_y: f32)
Xiaolin Wu’s line drawing from (from_x, from_y) to (to_x, to_y).
sourcefn draw_ellipse_arc(&mut self, stroke_size: usize)
fn draw_ellipse_arc(&mut self, stroke_size: usize)
Draws a part of an ellipse centered in (0., 0.) with self.x_center() and self.y_center
vertex and co-vertex respectively using a given stroke in the bottom-right quadrant of the
Canvas coordinate system.