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: usize
Canvas width.
height: usize
Canvas 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.