1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#![allow(dead_code)]

#[macro_use]
extern crate enum_primitive_derive;
extern crate num_traits;

extern crate image;
extern crate rand;
extern crate rayon;

pub mod mem_read;
pub mod binary_tree;
pub mod point;
pub mod size;
pub mod draw;
pub mod dat;
pub mod otb;
pub mod otbm;
pub mod spr;

#[macro_export]
macro_rules! flush {
    () => (std::io::stdout().flush().ok().expect("could not flush stdout"));
}

#[macro_export]
macro_rules! write {
    ($e:expr) => {
        print!("{}", $e);
        flush!();
    }
}

/*#![feature(test)]

pub mod mem_read;

extern crate test;

#[cfg(test)]
mod tests {
    use test;

    use std::io::*;
    use std::fs::*;
    use test::{Bencher};
    use std::io::Error;

    use mem_read::*;

    #[bench]
    fn bench_skip_get(b: &mut Bencher) {
        b.iter(|| -> Result<()> {
            for n in 1..100000 {
                let mut buffer = [0u8; 100];
                buffer[98] = 1u8;
                let data: &mut &[u8] = &mut buffer.as_ref();
                data.get::<[u8; 98]>();
                assert_eq!(data.get::<u8>()?, 1u8);
            }
            Ok(())
        });
    }

    #[bench]
    fn bench_skip_skip(b: &mut Bencher) {
        b.iter(|| -> Result<()> {
            for n in 1..100000 {
                let mut buffer = [0u8; 100];
                buffer[98] = 1u8;
                let data: &mut &[u8] = &mut buffer.as_ref();
                data.skip(98);
                assert_eq!(data.get::<u8>()?, 1u8);
            }
            Ok(())
        });
    }
}*/

    /*#[bench]
    fn bench_read_one_by_one_100(b: &mut Bencher) {
        b.iter(|| -> Result<()> {
            for n in 1..100 {
                let mut file = File::open("map.otbm")?;
                let mut buffer = [0u8; 1];
                while let Ok(byte) = file.get::<u8>() {

                }
            }
            Ok(())
        });
    }

    #[bench]
    fn bench_read_to_end_100(b: &mut Bencher) {
        b.iter(|| -> Result<()> {
            for n in 1..100 {
                let mut file = File::open("map.otbm")?;
                let mut vec: Vec<u8> = Vec::new();
                file.read_to_end(&mut vec);
                let mut cursor = Cursor::new(vec);
                while let Ok(byte) = cursor.get::<u8>() {

                }
            }
            Ok(())
        });
    }

    #[bench]
    fn bench_draw_100(b: &mut Bencher) {
        b.iter(|| -> Result<()> {
            for n in 1..100 {
                let mut main: Image = ImageBuffer::new(64, 64);
                for pixel in main.pixels_mut() {
                    *pixel = Rgba([255u8, 0u8, 0u8, 255u8]);
                }

                let mut img: Image = ImageBuffer::new(32, 32);
                for pixel in img.pixels_mut() {
                    *pixel = Rgba([0u8, 0u8, 0u8, 255u8]);
                }

                main.draw(0, 0, &mut img);
            }
            Ok(())
        });
    }

}*/