aboutsummaryrefslogtreecommitdiff
path: root/mtree-test/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'mtree-test/src/lib.rs')
-rw-r--r--mtree-test/src/lib.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/mtree-test/src/lib.rs b/mtree-test/src/lib.rs
index e69de29..1214cbf 100644
--- a/mtree-test/src/lib.rs
+++ b/mtree-test/src/lib.rs
@@ -0,0 +1,29 @@
+use glam::I16Vec2;
+
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub struct AbsRef {
+ pub off: I16Vec2,
+ pub frame: u64,
+}
+
+pub struct Frame(pub Vec<u8>);
+impl Frame {
+ pub fn index(&self, res: I16Vec2, p: I16Vec2) -> [usize; 3] {
+ let res = res.as_usizevec2();
+ let p = p.as_usizevec2();
+
+ let ystride = res.y;
+ let ysize = res.x * ystride;
+ let uvstride = res.x / 2;
+ let usize = uvstride * (res.y / 2);
+ let puv = p / 2;
+ [
+ p.x + p.y * ystride,
+ ysize + puv.x + puv.y * uvstride,
+ ysize + usize + puv.x + puv.y * uvstride,
+ ]
+ }
+ pub fn get(&self, res: I16Vec2, p: I16Vec2) -> [u8; 3] {
+ self.index(res, p).map(|i| self.0[i])
+ }
+}