File tree 5 files changed +56
-24
lines changed
5 files changed +56
-24
lines changed Original file line number Diff line number Diff line change @@ -62,7 +62,7 @@ impl ImageType {
62
62
}
63
63
64
64
pub fn widths ( & self , byte_count : usize ) -> Vec < i64 > {
65
- Self :: factors ( self . pixel_count ( byte_count) , 80 )
65
+ Self :: factors ( self . pixel_count ( byte_count) , 320 )
66
66
}
67
67
68
68
pub fn heights ( & self , byte_count : usize , width : usize ) -> Vec < i64 > {
Original file line number Diff line number Diff line change @@ -56,3 +56,10 @@ pub fn write_to(
56
56
) -> Result < ( ) , image:: ImageError > {
57
57
convert_image ( image_data, palette) . write_to ( & mut Cursor :: new ( bytes) , image:: ImageFormat :: Png )
58
58
}
59
+
60
+ pub fn write2 ( image_data : RawGrid , palette : ColorPalette ) -> Vec < u8 > {
61
+ let mut bytes: Vec < u8 > = Vec :: new ( ) ;
62
+ let _ = convert_image ( image_data. clone ( ) , palette)
63
+ . write_to ( & mut Cursor :: new ( & mut bytes) , image:: ImageFormat :: Png ) ;
64
+ bytes
65
+ }
Original file line number Diff line number Diff line change 12
12
< script >
13
13
const fileReader = new FileReader ( ) ;
14
14
fileReader . onloadend = function ( ) {
15
- var array = new Int8Array ( fileReader . result ) ;
16
- document . getElementById ( 'preview' ) . src = window . wasmBindings . png ( array ) ;
15
+ let array = new Int8Array ( fileReader . result ) ;
16
+ let images = window . wasmBindings . previews ( array ) ;
17
+ images . forEach ( makePreview ) ;
17
18
}
18
19
document . addEventListener ( "DOMContentLoaded" , ( ) => {
19
20
const fileInput = document . getElementById ( 'file-input' ) ;
20
21
fileInput . addEventListener ( "change" , e => fileReader . readAsArrayBuffer ( fileInput . files [ 0 ] ) ) ;
21
22
} ) ;
23
+
24
+ function makePreview ( src ) {
25
+ const template = document . querySelector ( "#preview" ) ;
26
+ const clone = template . content . cloneNode ( true ) ;
27
+ const container = document . querySelector ( ".preview-area" ) ;
28
+ let img = clone . querySelector ( "img" ) ;
29
+ img . src = src ;
30
+ container . appendChild ( img ) ;
31
+ }
22
32
</ script >
23
33
</ head >
24
34
< body >
25
35
< h1 > Process your CGA/EGAs</ h1 >
26
36
< input id ="file-input " multiple ="false " type ="file " accept =".bin,.cga,.ega,.cega " />
27
- < img id ="preview " src ="" />
37
+ < div class ="preview-area "> </ div >
38
+ < template id ="preview "> < img class ="preview " src ="" /> </ template >
28
39
</ body >
29
40
</ html >
Original file line number Diff line number Diff line change @@ -15,9 +15,24 @@ pub fn png(data: &[u8]) -> String {
15
15
let parser = ParserType :: CGA ;
16
16
let image = file_data. parse ( parser, 320 ) ;
17
17
let palette = palette_from_abbr ( "cga0" ) ;
18
- let mut bytes: Vec < u8 > = Vec :: new ( ) ;
19
- let _ = png:: write_to ( & mut bytes, image. data ( ) , palette. clone ( ) ) ;
20
- format ! ( "data:application/png;base64,{}" , STANDARD . encode( bytes) )
18
+ let result = png:: write2 ( image. data ( ) , palette. clone ( ) ) ;
19
+ format ! ( "data:application/png;base64,{}" , STANDARD . encode( result) )
20
+ }
21
+
22
+ #[ wasm_bindgen]
23
+ pub fn previews ( data : & [ u8 ] ) -> Vec < String > {
24
+ let file_data = Raw :: new ( data) ;
25
+ let palette = palette_from_abbr ( "cga0" ) ;
26
+ file_data
27
+ . previews ( )
28
+ . iter ( )
29
+ . map ( |p| {
30
+ format ! (
31
+ "data:application/png;base64,{}" ,
32
+ STANDARD . encode( png:: write2( p. data( ) , palette. clone( ) ) )
33
+ )
34
+ } )
35
+ . collect ( )
21
36
}
22
37
23
38
fn main ( ) { }
Original file line number Diff line number Diff line change 5
5
6
6
html ,
7
7
body {
8
- margin : 0 ;
8
+ margins 0;
9
9
padding: 0;
10
10
background: # 2d3131;
11
11
color : # fcfcfc ;
12
+ dis play: flex;
13
+ align- items: center;
14
+ justify- content: center;
15
+ flex- flow: column;
12
16
}
13
17
14
18
p {
@@ -19,18 +23,12 @@ label {
19
23
cursor : pointer;
20
24
}
21
25
22
-
23
- # wrapper {
24
- width : 70% ;
25
- margin : auto;
26
- }
27
-
28
26
# h1 {
29
27
font-size : 2rem ;
30
28
text-align : center;
31
29
}
32
30
33
- .drop-container {
31
+ /* .drop-container {
34
32
padding: 4rem;
35
33
display: flex;
36
34
flex-direction: column;
@@ -44,23 +42,24 @@ label {
44
42
.drop-container i {
45
43
font-size: 4rem;
46
44
}
47
-
45
+ */
48
46
.preview-area {
49
47
display : flex;
50
- flex-wrap : wrap;
51
- justify-content : center;
52
- align-items : stretch;
48
+ flex-flow : row wrap;
49
+ align-items : flex-start;
53
50
}
54
-
55
- .preview-tile {
51
+ .preview-area img {
52
+ margin : 1rem ;
53
+ }
54
+ /*.preview-tile {
56
55
display: flex;
57
56
flex-direction: column;
58
57
padding: 2rem;
59
58
margin: 1rem;
60
59
background: #313737;
61
60
border-radius: 1rem;
62
- }
63
- .preview-row {
61
+ }*/
62
+ /* .preview-row {
64
63
display: flex;
65
64
flex-direction: row;
66
65
padding: 2rem;
@@ -80,4 +79,4 @@ label {
80
79
display: flex;
81
80
flex-direction: column;
82
81
justify-content: center;
83
- }
82
+ }*/
You can’t perform that action at this time.
0 commit comments