flip/mirror/rotate functions for tiles

This commit is contained in:
Max Bradbury 2020-07-20 19:52:31 +01:00
parent 226292dcac
commit 9081c157d6
2 changed files with 29 additions and 3 deletions

View File

@ -5,7 +5,7 @@ pub struct Image {
impl Image {
/// flip image vertically
fn flip(&mut self) {
pub fn flip(&mut self) {
let mut pixels = Vec::with_capacity(64);
for row in self.pixels.chunks(8).rev() {
@ -18,7 +18,7 @@ impl Image {
}
/// mirror image horizontally
fn mirror(&mut self) {
pub fn mirror(&mut self) {
let mut pixels = Vec::with_capacity(64);
for row in self.pixels.chunks(8) {
@ -31,7 +31,7 @@ impl Image {
}
/// rotate image 90° clockwise
fn rotate(&mut self) {
pub fn rotate(&mut self) {
let mut pixels = Vec::with_capacity(64);
// start from bottom-left corner, work upward in that column,

View File

@ -40,6 +40,32 @@ impl Tile {
"".to_string()
}
}
// todo refactor
pub fn flip(&mut self) {
self.animation_frames = self.animation_frames.iter().map(|frame: &Image| {
let mut image = frame.clone();
image.flip();
image
}).collect()
}
pub fn mirror(&mut self) {
self.animation_frames = self.animation_frames.iter().map(|frame: &Image| {
let mut image = frame.clone();
image.mirror();
image
}).collect()
}
pub fn rotate(&mut self) {
self.animation_frames = self.animation_frames.iter().map(|frame: &Image| {
let mut image = frame.clone();
image.rotate();
image
}).collect()
}
}
impl From<String> for Tile {