add Image::quad

This commit is contained in:
bendn 2023-09-28 15:32:20 +07:00
parent 18c6e621e9
commit c33594e995
No known key found for this signature in database
GPG key ID: 0D9D3A2A3B2A93D6
2 changed files with 19 additions and 9 deletions

View file

@ -147,7 +147,7 @@ impl<T: DerefMut<Target = [u8]>, const CHANNELS: usize> Image<T, CHANNELS> {
/// ///
/// Points not in bounds will not be included. /// Points not in bounds will not be included.
/// ///
/// Uses [`Image::points`]. /// Uses [`Image::quad`].
/// ``` /// ```
/// # use fimg::Image; /// # use fimg::Image;
/// let mut i = Image::alloc(10, 10); /// let mut i = Image::alloc(10, 10);
@ -176,14 +176,11 @@ impl<T: DerefMut<Target = [u8]>, const CHANNELS: usize> Image<T, CHANNELS> {
// v x1 v x2 // v x1 v x2
// [ ] // [ ]
// ^ x3 ^ x4 // ^ x3 ^ x4
self.points( self.quad(
&[
p!(x1 - wx, y1 - wy), // x1 p!(x1 - wx, y1 - wy), // x1
p!(x2 - wx, y2 - wy), // x2 p!(x2 - wx, y2 - wy), // x2
p!(x2 + wx, y2 + wy), // x3 p!(x2 + wx, y2 + wy), // x3
p!(x1 + wx, y1 + wy), // x4 p!(x1 + wx, y1 + wy), // x4
p!(x1 - wx, y1 - wy), // x1 (close)
],
color, color,
); );
} }

View file

@ -70,4 +70,17 @@ impl<T: DerefMut<Target = [u8]>, const CHANNELS: usize> Image<T, CHANNELS> {
self.line((x1, y1), (x2, y2), c); self.line((x1, y1), (x2, y2), c);
} }
} }
/// Draws a filled quadrilateral.
/// This currently just uses [`Image::points`], but in the future this may change.
pub fn quad(
&mut self,
a: (i32, i32),
b: (i32, i32),
c: (i32, i32),
d: (i32, i32),
col: [u8; CHANNELS],
) {
self.points(&[a, b, c, d, a], col);
}
} }