1
1
use factor:: factor:: factor;
2
2
3
- use crate :: { parser , RawGrid } ;
3
+ use crate :: RawGrid ;
4
4
5
- pub struct Image ( RawGrid ) ;
5
+ pub struct Image ( pub RawGrid ) ;
6
6
7
7
impl Image {
8
8
const MAX_WIDTH : usize = 320 ;
9
9
10
- pub fn new ( buffer : & [ u8 ] , width : usize , parser : parser:: ParserType ) -> Self {
11
- Self ( parser. process_input ( buffer, width) )
12
- }
13
-
14
10
pub fn data ( & self ) -> RawGrid {
15
11
self . 0 . clone ( )
16
12
}
@@ -91,7 +87,9 @@ mod tests {
91
87
#[ test]
92
88
fn basic_properties ( ) {
93
89
let data: u32 = 0b00011011000110110001101100011011 ;
94
- let mut image = Image :: new ( & data. to_be_bytes ( ) , 4 , ParserType :: type_str ( "cga" ) ) ;
90
+ let parser = ParserType :: type_str ( "cga" ) ;
91
+ let parsed = parser. process_input ( & data. to_be_bytes ( ) , 4 ) ;
92
+ let mut image = Image ( parsed) ;
95
93
96
94
assert_eq ! ( image. pixel_count( ) , 16 ) ;
97
95
assert_eq ! ( image. width( ) , 4 ) ;
@@ -100,11 +98,12 @@ mod tests {
100
98
assert_eq ! ( image. width_factors( ) , [ 2 , 4 , 8 ] ) ;
101
99
assert_eq ! ( image. height_factors( ) , [ 2 ] ) ;
102
100
assert ! ( !image. is_tall( ) ) ;
103
- image = Image :: new (
101
+
102
+ let parsed = parser. process_input (
104
103
& 0b0001101100011011000110110001101100011011000110110001101100011011_u64 . to_be_bytes ( ) ,
105
104
2 ,
106
- ParserType :: type_str ( "cga" ) ,
107
105
) ;
106
+ image = Image ( parsed) ;
108
107
assert ! ( image. is_tall( ) ) ;
109
108
}
110
109
@@ -129,20 +128,18 @@ mod tests {
129
128
//rework these tests to actually be wider than max_width, or do something clever to overwrite it
130
129
fn tiling ( ) {
131
130
let data: u32 = 0b00011011000110110001101100011011 ;
132
- let tiled = image :: tile (
133
- Image :: new ( & data. to_be_bytes ( ) , 2 , ParserType :: type_str ( "cga" ) ) . data ( ) ,
134
- 2 ,
135
- ) ;
131
+ let parser = ParserType :: type_str ( "cga" ) ;
132
+ let parsed = parser . process_input ( & data. to_be_bytes ( ) , 2 ) ;
133
+
134
+ let tiled = image :: tile ( Image ( parsed ) . data ( ) , 2 ) ;
136
135
assert_eq ! (
137
136
tiled,
138
137
[ vec![ 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 ] , vec![ 2 , 3 , 2 , 3 , 2 , 3 , 2 , 3 ] , ]
139
138
) ;
140
139
141
140
let data: u64 = 0b0001101100011011000110110001101100011011000110110001101100011011 ;
142
- let tiled = image:: tile (
143
- Image :: new ( & data. to_be_bytes ( ) , 2 , ParserType :: type_str ( "cga" ) ) . data ( ) ,
144
- 2 ,
145
- ) ;
141
+ let parsed = parser. process_input ( & data. to_be_bytes ( ) , 2 ) ;
142
+ let tiled = image:: tile ( Image ( parsed) . data ( ) , 2 ) ;
146
143
assert_eq ! (
147
144
tiled,
148
145
vec![
0 commit comments