summaryrefslogtreecommitdiff
path: root/src/engine/geometry.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/geometry.rs')
-rw-r--r--src/engine/geometry.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/engine/geometry.rs b/src/engine/geometry.rs
index 44ce9fe..22b56f0 100644
--- a/src/engine/geometry.rs
+++ b/src/engine/geometry.rs
@@ -31,6 +31,34 @@ impl Point {
pub fn wrapping_move_right(&mut self) {
self.x = self.x.wrapping_add(1);
}
+
+ pub fn to_bitfield(&self, width: u8) -> (u64, u64) {
+ if self.x >= width {
+ let index = self.y * width + self.x - width;
+ (0, 1 << index)
+ } else {
+ let index = self.y * width + self.x;
+ (1 << index, 0)
+ }
+ }
+
+ pub fn to_left_bitfield(&self, width: u8) -> u64 {
+ if self.x >= width {
+ 0
+ } else {
+ let index = self.y * width + self.x;
+ 1 << index
+ }
+ }
+
+ pub fn to_right_bitfield(&self, width: u8) -> u64 {
+ if self.x < width {
+ 0
+ } else {
+ let index = self.y * width + self.x - width;
+ 1 << index
+ }
+ }
}
use std::cmp::Ord;