diff options
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | Cargo.lock | 760 | ||||
| -rw-r--r-- | Cargo.toml | 4 | ||||
| -rw-r--r-- | README.md | 8 | ||||
| -rw-r--r-- | src/art.rs | 120 | ||||
| -rw-r--r-- | src/bitmap.rs | 282 | ||||
| -rw-r--r-- | src/main.rs | 21 |
7 files changed, 621 insertions, 576 deletions
@@ -1,3 +1,3 @@ - +/DUKE3D/ /target **/*.rs.bk @@ -1,38 +1,30 @@ [[package]] -name = "android_glue" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "backtrace" -version = "0.3.8" +name = "adler32" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "backtrace-sys 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "backtrace-sys" -version = "0.1.23" +name = "alga" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", + "approx 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "num-complex 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "bitflags" -version = "0.7.0" +name = "approx" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "bitflags" -version = "0.9.1" +name = "arrayvec" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "bitflags" @@ -40,11 +32,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "block" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] name = "byteorder" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -60,105 +47,89 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "cgl" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "gleam 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "cocoa" -version = "0.9.2" +name = "cmake" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", - "objc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "core-foundation" -version = "0.3.0" +name = "color_quant" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "core-foundation-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "core-foundation" -version = "0.4.6" +name = "crossbeam-deque" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "core-foundation-sys 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "core-foundation-sys" +name = "crossbeam-epoch" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "core-foundation-sys" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "core-graphics" -version = "0.8.2" +name = "crossbeam-utils" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "core-foundation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "dlib" -version = "0.3.1" +name = "deflate" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libloading 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "adler32 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "dtoa" -version = "0.4.2" +name = "either" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "dwmapi-sys" +name = "enum_primitive" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "fnv" -version = "1.0.6" +name = "freetype-rs" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "freetype-sys 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] -name = "fs2" -version = "0.2.5" +name = "freetype-sys" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libz-sys 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -176,103 +147,94 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "gdi32-sys" -version = "0.1.2" +name = "generic-array" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "gl_generator" -version = "0.6.1" +name = "gif" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "khronos_api 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "color_quant 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "gl_generator" -version = "0.9.0" +name = "gl" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "khronos_api 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gl_generator 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "gleam" -version = "0.5.1" +name = "gl_generator" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gl_generator 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "khronos_api 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "glium" -version = "0.18.1" +name = "glfw" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "gl_generator 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glutin 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "enum_primitive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glfw-sys 3.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "semver 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "glium_sdl2" -version = "0.15.0" +name = "glfw-sys" +version = "3.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "glium 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sdl2 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "glutin" -version = "0.10.1" +name = "image" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "android_glue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "cgl 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "cocoa 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", - "core-foundation 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "dwmapi-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "gdi32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "gl_generator 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", - "objc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "osmesa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "shared_library 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "user32-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-client 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winit 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", - "x11-dl 2.17.5 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "enum_primitive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gif 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "jpeg-decoder 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", + "num-rational 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "png 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "itoa" +name = "inflate" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "adler32 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] -name = "kernel32-sys" -version = "0.2.2" +name = "jpeg-decoder" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -281,9 +243,19 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "lazy_static" -version = "0.2.11" +name = "kiss3d" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "freetype-rs 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gl 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "glfw 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", + "image 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "nalgebra 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ncollide_procedural 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "lazy_static" @@ -292,18 +264,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.41" +version = "0.2.42" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "libloading" -version = "0.3.4" +name = "libz-sys" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "target_build_utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -311,343 +283,294 @@ name = "log" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "log" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "malloc_buf" -version = "0.0.6" +name = "lzw" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "memmap" -version = "0.4.0" +name = "matrixmultiply" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "fs2 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rawpointer 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "num" -version = "0.1.42" +name = "memoffset" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-integer 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", - "num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "num-integer" -version = "0.1.38" +name = "nalgebra" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "alga 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "approx 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", + "matrixmultiply 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "num-complex 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "num-iter" -version = "0.1.37" +name = "ncollide_math" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-integer 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "alga 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "approx 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "nalgebra 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "num-traits" -version = "0.1.43" +name = "ncollide_procedural" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "alga 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "nalgebra 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ncollide_math 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ncollide_utils 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "num-traits" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "objc" -version = "0.2.2" +name = "ncollide_utils" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "alga 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "approx 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "nalgebra 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ncollide_math 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "osmesa-sys" -version = "0.1.2" +name = "nodrop" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "shared_library 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "phf" -version = "0.7.22" +name = "nom" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "phf_shared 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "phf_codegen" -version = "0.7.22" +name = "num" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "phf_generator 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_shared 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", + "num-complex 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", + "num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", + "num-rational 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "phf_generator" -version = "0.7.22" +name = "num-bigint" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "phf_shared 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "phf_shared" -version = "0.7.22" +name = "num-complex" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "siphasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "pkg-config" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "rand" -version = "0.3.22" +name = "num-integer" +version = "0.1.38" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "rand" -version = "0.4.2" +name = "num-iter" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "rebuild" -version = "0.1.0" +name = "num-rational" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "glium 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glium_sdl2 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sdl2 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", - "simple-error 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "redox_syscall" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "rustc-demangle" -version = "0.1.8" +name = "num-traits" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] -name = "sdl2" -version = "0.30.0" +name = "num-traits" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", - "num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", - "sdl2-sys 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "sdl2-sys" -version = "0.30.0" +name = "num_cpus" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "serde" -version = "0.9.15" +name = "pkg-config" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "serde_json" -version = "0.9.10" +name = "png" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "deflate 0.7.18 (registry+https://github.com/rust-lang/crates.io-index)", + "inflate 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "shared_library" -version = "0.1.8" +name = "rand" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "shell32-sys" -version = "0.1.2" +name = "rand" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "simple-error" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "siphasher" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "smallvec" -version = "0.4.4" +name = "rawpointer" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "target_build_utils" -version = "0.3.1" +name = "rayon" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "phf 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_codegen 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon-core 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "tempfile" -version = "2.2.0" +name = "rayon-core" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "user32-sys" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "rebuild" +version = "0.1.0" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "kiss3d 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "simple-error 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "wayland-client" -version = "0.9.10" +name = "rustc-serialize" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-scanner 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-sys 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "wayland-kbd" -version = "0.9.1" +name = "scoped_threadpool" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "dlib 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "memmap 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-client 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "wayland-protocols" -version = "0.9.10" +name = "scopeguard" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-client 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-scanner 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-sys 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "wayland-scanner" -version = "0.9.10" +name = "semver" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "xml-rs 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "nom 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "wayland-sys" -version = "0.9.10" +name = "simple-error" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "dlib 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "wayland-window" -version = "0.8.0" +name = "typenum" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-client 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-protocols 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "winapi" -version = "0.2.8" +name = "vcpkg" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -655,11 +578,6 @@ dependencies = [ ] [[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -670,49 +588,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "winit" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "android_glue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "cocoa 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", - "core-foundation 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "dwmapi-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", - "objc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "user32-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-client 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-kbd 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-protocols 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-window 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "x11-dl 2.17.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "x11-dl" -version = "2.17.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "xml-rs" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "xml-rs" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -721,88 +596,75 @@ dependencies = [ ] [metadata] -"checksum android_glue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "000444226fcff248f2bc4c7625be32c63caccfecc2723a2b9f78a7487a49c407" -"checksum backtrace 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dbdd17cd962b570302f5297aea8648d5923e22e555c2ed2d8b2e34eca646bf6d" -"checksum backtrace-sys 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)" = "bff67d0c06556c0b8e6b5f090f0eac52d950d9dfd1d35ba04e4ca3543eaf6a7e" -"checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" -"checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" +"checksum adler32 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6cbd0b9af8587c72beadc9f72d35b9fbb070982c9e6203e46e93f10df25f8f45" +"checksum alga 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "88c4144cd393075e782c633b4f9c5dea4811aed18ed59f518ae2ca2b553e3d09" +"checksum approx 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08abcc3b4e9339e33a3d0a5ed15d84a687350c05689d825e0f6655eef9e76a94" +"checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" "checksum bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c54bb8f454c567f21197eefcdbf5679d0bd99f2ddbe52e84c77061952e6789" -"checksum block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" "checksum byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "74c0b906e9446b0a2e4f760cdb3fa4b2c48cdc6db8766a845c54b6ff063fd2e9" "checksum cc 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "49ec142f5768efb5b7622aebc3fdbdbb8950a4b9ba996393cb76ef7466e8747d" "checksum cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "405216fd8fe65f718daa7102ea808a946b6ce40c742998fbfd3463645552de18" -"checksum cgl 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "80f05e25f9631fdee56693110feda284a49308ca1e768857a0ad3906cfc1502a" -"checksum cocoa 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4047fed6536f40cc2ae5e7834fb38e382c788270191c4cd69196f89686d076ce" -"checksum core-foundation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f51ce3b8ebe311c56de14231eb57572c15abebd2d32b3bcb99bcdb9c101f5ac3" -"checksum core-foundation 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8047f547cd6856d45b1cdd75ef8d2f21f3d0e4bf1dab0a0041b0ae9a5dda9c0e" -"checksum core-foundation-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "41115a6aa5d3e1e5ef98148373f25971d1fad53818553f216495f9e67e90a624" -"checksum core-foundation-sys 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "152195421a2e6497a8179195672e9d4ee8e45ed8c465b626f1606d27a08ebcd5" -"checksum core-graphics 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9797d894882bbf37c0c1218a8d90333fae3c6b09d526534fd370aac2bc6efc21" -"checksum dlib 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "148bce4ce1c36c4509f29cb54e62c2bd265551a9b00b38070fad551a851866ec" -"checksum dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab" -"checksum dwmapi-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b44b6442aeab12e609aee505bd1066bdfd36b79c3fe5aad604aae91537623e76" -"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" -"checksum fs2 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "bcd414e5a1a979b931bb92f41b7a54106d3f6d2e6c253e9ce943b7cd468251ef" +"checksum cmake 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "95470235c31c726d72bf2e1f421adc1e65b9d561bf5529612cbe1a72da1467b3" +"checksum color_quant 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a475fc4af42d83d28adf72968d9bcfaf035a1a9381642d8e85d8a04957767b0d" +"checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" +"checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" +"checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" +"checksum deflate 0.7.18 (registry+https://github.com/rust-lang/crates.io-index)" = "32c8120d981901a9970a3a1c97cf8b630e0fa8c3ca31e75b6fd6fd5f9f427b31" +"checksum either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3be565ca5c557d7f59e7cfcf1844f9e3033650c929c6566f511e8005f205c1d0" +"checksum enum_primitive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "be4551092f4d519593039259a9ed8daedf0da12e5109c5280338073eaeb81180" +"checksum freetype-rs 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c8e83cb8754cc1b106191a62d50fc52e9ea0a140a92e20bade3dd8fe2748b35a" +"checksum freetype-sys 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4f858c54592103d59f7008c2dd438f7aab72fb587def60453c74f708531b832b" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum gdi32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8e3eb92c1107527888f86b6ebb0b7f82794777dbf172a932998660a0a2e26c11" +"checksum generic-array 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fceb69994e330afed50c93524be68c42fa898c2d9fd4ee8da03bd7363acd26f2" +"checksum gif 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2e41945ba23db3bf51b24756d73d81acb4f28d85c3dccc32c6fae904438c25f" +"checksum gl 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1c73b90c285f02059b34a6c66bc645ba5faa18c0e3ab332e0725654fc71db441" "checksum gl_generator 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "75d69f914b49d9ff32fdf394cbd798f8c716d74fd19f9cc29da3e99797b2a78d" -"checksum gl_generator 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a795170cbd85b5a7baa58d6d7525cae6a03e486859860c220f7ebbbdd379d0a" -"checksum gleam 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "12b793fcf40a23dd372f184c228ab3eb96f88c50bb4fba8319c483aa025a4e45" -"checksum glium 0.18.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3aad622b21fbefdb46e1b6f883520e47d93cf1a5e02ca00e188a4d29b9b3e3ed" -"checksum glium_sdl2 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e77259d3071c69348f2064921feecccbe173a827cf59e14ceefb348221cedd32" -"checksum glutin 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5d459b91c4aac4c5aee285f1ac55d7b8cc85aa5d2ffd1bdac3b2707b6ab95e4a" -"checksum itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c" -"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +"checksum glfw 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "200926d520e9f35800b914e2c8607a47a7d31f13a3057a4cf2ce7aed93b299e7" +"checksum glfw-sys 3.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f72bb86276679c5370276224546eef2dce99b23da2f364fd8b097c79db310b39" +"checksum image 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d1576ffa01849c91b484b95c01d54dddc242b4d50923eaa2d4d74a58c4b9e8fd" +"checksum inflate 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f5f9f47468e9a76a6452271efadc88fe865a82be91fe75e6c0c57b87ccea59d4" +"checksum jpeg-decoder 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "c8b7d43206b34b3f94ea9445174bda196e772049b9bddbc620c9d29b2d20110d" "checksum khronos_api 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "037ab472c33f67b5fbd3e9163a2645319e5356fcd355efa6d4eb7fff4bbcb554" -"checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" +"checksum kiss3d 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "136afad471efe4ab7ed5b3d7bfb7d2e2ee9ff300969b59fa112ab04686bf5914" "checksum lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e6412c5e2ad9584b0b8e979393122026cdd6d2a80b933f890dcd694ddbe73739" -"checksum libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)" = "ac8ebf8343a981e2fa97042b14768f02ed3e1d602eac06cae6166df3c8ced206" -"checksum libloading 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0a020ac941774eb37e9d13d418c37b522e76899bfc4e7b1a600d529a53f83a66" +"checksum libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)" = "b685088df2b950fccadf07a7187c8ef846a959c142338a48f9dc0b94517eb5f1" +"checksum libz-sys 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)" = "87f737ad6cc6fd6eefe3d9dc5412f1573865bded441300904d2f42269e140f16" "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" -"checksum log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "89f010e843f2b1a31dbd316b3b8d443758bc634bed37aabade59c686d644e0a2" -"checksum malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -"checksum memmap 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "69253224aa10070855ea8fe9dbe94a03fc2b1d7930bb340c9e586a7513716fea" +"checksum log 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6fddaa003a65722a7fb9e26b0ce95921fe4ba590542ced664d8ce2fa26f9f3ac" +"checksum lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7d947cbb889ed21c2a84be6ffbaebf5b4e0f4340638cba0444907e38b56be084" +"checksum matrixmultiply 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "cac1a66eab356036af85ea093101a14223dc6e3f4c02a59b7d572e5b93270bf7" +"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" +"checksum nalgebra 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c8516d8710f28c64cfc75b274c75c55c967ad4ece7090521b3c065de1d12336b" +"checksum ncollide_math 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "64b88168c4ddad2e1123299bfb529c4de73383520caf45ccb5a9c9129fdcbe3d" +"checksum ncollide_procedural 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "63441d1763a6880894ccf2f5d9c81545ee426538119c6e6dc0768c8c8ab325a1" +"checksum ncollide_utils 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2b0bf88903f5ee3f6e1c2a86e3aaff81d8fb4315ee4ccb52ff70cdd0fdbf0425" +"checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" +"checksum nom 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b8c256fd9471521bcb84c3cdba98921497f1a331cbc15b8030fc63b82050ce" "checksum num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e" +"checksum num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)" = "e63899ad0da84ce718c14936262a41cee2c79c981fc0a0e7c7beb47d5a07e8c1" +"checksum num-complex 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "b288631d7878aaf59442cffd36910ea604ecd7745c36054328595114001c9656" "checksum num-integer 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)" = "6ac0ea58d64a89d9d6b7688031b3be9358d6c919badcf7fbb0527ccfd891ee45" "checksum num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "af3fdbbc3291a5464dc57b03860ec37ca6bf915ed6ee385e7c6c052c422b2124" +"checksum num-rational 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "ee314c74bd753fc86b4780aa9475da469155f3848473a261d2d18e35245a784e" "checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" "checksum num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "775393e285254d2f5004596d69bb8bc1149754570dcc08cf30cabeba67955e28" -"checksum objc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "877f30f37acef6749b1841cceab289707f211aecfc756553cd63976190e6cc2e" -"checksum osmesa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "88cfece6e95d2e717e0872a7f53a8684712ad13822a7979bc760b9c77ec0013b" -"checksum phf 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)" = "7d37a244c75a9748e049225155f56dbcb98fe71b192fd25fd23cb914b5ad62f2" -"checksum phf_codegen 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)" = "4e4048fe7dd7a06b8127ecd6d3803149126e9b33c7558879846da3a63f734f2b" -"checksum phf_generator 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)" = "05a079dd052e7b674d21cb31cbb6c05efd56a2cd2827db7692e2f1a507ebd998" -"checksum phf_shared 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)" = "c2261d544c2bb6aa3b10022b0be371b9c7c64f762ef28c6f5d4f1ef6d97b5930" +"checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" "checksum pkg-config 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "110d5ee3593dbb73f56294327fe5668bcc997897097cbc76b51e7aed3f52452f" +"checksum png 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f0b0cabbbd20c2d7f06dbf015e06aad59b6ca3d9ed14848783e98af9aaf19925" "checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1" "checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5" -"checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1" -"checksum rustc-demangle 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "76d7ba1feafada44f2d38eed812bd2489a03c0f5abb975799251518b68848649" -"checksum sdl2 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "63066036ad426250ac56d23e38fd05063b38b661556acd596f4046cc92d98415" -"checksum sdl2-sys 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b48638b7882759f3421038fcd38ad5f1ea19b119d80c99f1601933004629e34d" -"checksum serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)" = "34b623917345a631dc9608d5194cc206b3fe6c3554cd1c75b937e55e285254af" -"checksum serde_json 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ad8bcf487be7d2e15d3d543f04312de991d631cfe1b43ea0ade69e6a8a5b16a1" -"checksum shared_library 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8254bf098ce4d8d7cc7cc6de438c5488adc5297e5b7ffef88816c0a91bd289c1" -"checksum shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee04b46101f57121c9da2b151988283b6beb79b34f5bb29a58ee48cb695122c" +"checksum rawpointer 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebac11a9d2e11f2af219b8b8d833b76b1ea0e054aa0e8d8e9e4cbde353bdf019" +"checksum rayon 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "80e811e76f1dbf68abf87a759083d34600017fc4e10b6bd5ad84a700f9dba4b1" +"checksum rayon-core 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d24ad214285a7729b174ed6d3bcfcb80177807f959d95fafd5bfc5c4f201ac8" +"checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" +"checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" +"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" +"checksum semver 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2d5b7638a1f03815d94e88cb3b3c08e87f0db4d683ef499d1836aaf70a45623f" "checksum simple-error 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "7779d1977a9e1e50bebb430a57114acc64bc4c40d6d8efb3e57893531d5fd895" -"checksum siphasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0df90a788073e8d0235a67e50441d47db7c8ad9debd91cbf43736a2a92d36537" -"checksum smallvec 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ee4f357e8cd37bf8822e1b964e96fd39e2cb5a0424f8aaa284ccaccc2162411c" -"checksum target_build_utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "013d134ae4a25ee744ad6129db589018558f620ddfa44043887cdd45fa08e75c" -"checksum tempfile 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "11ce2fe9db64b842314052e2421ac61a73ce41b898dc8e3750398b219c5fc1e0" -"checksum user32-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e6b719983b952c04198829b51653c06af36f0e44c967fcc1a2bb397ceafbf80a" -"checksum wayland-client 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)" = "9b10f2880f3dedaa496609a0aa7117bc6824490a48309dfbbf26258e5acc5a9d" -"checksum wayland-kbd 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "75485a10a894e48f4d21c15c8673ac84a073aef402e15060715fb3501416e58e" -"checksum wayland-protocols 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)" = "008c5b9bffb6afdfcf8df0b72fd37b2508476867305ed6d47610f5431a534ac6" -"checksum wayland-scanner 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)" = "6820262132b76ee4aa7893312fb9a24ce5434934a2b421669a30869fcd4a2769" -"checksum wayland-sys 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)" = "b433ca9dbd9289a8ae8a5c49148d2a0e724b89432d7648727ca553027c247c47" -"checksum wayland-window 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7c03dae6f8f8be09335444fc253620298bb05f5b8fbc6237798bbbc90ea841c4" -"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" -"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" +"checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" +"checksum vcpkg 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7ed0f6789c8a85ca41bbc1c9d175422116a9869bd1cf31bb08e1493ecce60380" +"checksum winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "773ef9dcc5f24b7d850d0ff101e542ff24c3b090a9768e03ff889fdef41f00fd" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum winit 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "74bcacc675f952f71c2ebc9750dfd90d605de2cbe2e8ea3b38a370498238a507" -"checksum x11-dl 2.17.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3235540540fde1ae074c8df49054166c0e070407f1c6e1ee17b8c87c2c7bcc7d" -"checksum xml-rs 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e1945e12e16b951721d7976520b0832496ef79c31602c7a29d950de79ba74621" "checksum xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c1cb601d29fe2c2ac60a2b2e5e293994d87a1f6fa9687a31a15270f909be9c2" @@ -6,6 +6,4 @@ authors = ["Jakob L. Kreuze <jakob@memeware.net>"] [dependencies] byteorder = "1" simple-error = "0.1" -glium_sdl2 = "0.15" -sdl2 = "0.30" -glium = "0.18" +kiss3d = "0.12" @@ -43,6 +43,8 @@ lack of foresight. - [ ] PALETTE.DAT parser. - [ ] ART parser. - [ ] Efficient ART-to-bitmap conversion. + - [ ] Advanced ART features such as translucency and shading. + - [ ] Tests. - [ ] Implement support for the CON language. - [ ] Write a compiler. - [ ] Implement the virtual machine. @@ -50,13 +52,15 @@ lack of foresight. - [ ] Implement support for DEF files. - [ ] Implement support for MACT scripts. (Apparently quite similar to INI) - [ ] Implement support for RTS. +- [ ] Implement graphical output. + - [ ] Write something using the kiss3d library to hold me over while I'm trying to learn the linear algebra required to write an actual renderer. + - [ ] Implement something equivalent to the "classic" software renderer. + - [ ] Implement a more powerful glium renderer, taking from POLYMER's architecture. - [ ] Implement the OSD shell. - [ ] Gamevars and cvars. - [ ] Loading of 'autoexec.cfg', 'settings.cfg'. - [ ] Implement the CONTROL input system. - EDuke32's controls feel very fluid for me, so I'll steal the calculations and make the API less archaic. -- [ ] Implement something equivalent to the "classic" software renderer. -- [ ] Implement a more powerful OpenGL renderer, taking from POLYMER's architecture. - [ ] A welcoming main menu. - [ ] Support for save files. - [ ] Support for ANM cinematics. diff --git a/src/art.rs b/src/art.rs deleted file mode 100644 index 2e7e116..0000000 --- a/src/art.rs +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright (C) 2018 Jakob L. Kreuze, All Rights Reserved. -// -// This file is part of rebuild. -// -// rebuild is free software: you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the Free Software -// Foundation, either version 3 of the License, or (at your option) any later -// version. -// -// rebuild is distributed in the hope that it will be useful, but WITHOUT ANY -// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -// A PARTICULAR PURPOSE. See the GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License along with -// rebuild. If not, see <http://www.gnu.org/licenses/>. - -extern crate simple_error; - -use std::error::Error; - -// What's the PALETTE.DAT format? -// -// char palette[768], palookup[numpalookups][256], transluc[256][256]; -// short numpalookups; -// -// fil = open("PALETTE.DAT",...); -// read(fil,palette,768); -// read(fil,&numpalookups,2); -// read(fil,palookup,numpalookups*256); -// read(fil,transluc,65536); -// close(fil); -// -// PALETTE: This 768 byte array is exactly the palette you want. The format is: -// Red0, Green0, Blue0, Red1, Green1, Blue1, ..., Blue255 -// The colors are based on the VGA 262,144 color palette. The values range from -// 0-63, so if you want to convert it to a windows palette you will have to -// multiply each byte by 4. -// -// NUMPALOOKUPS: The number of shading tables used. Usually this number is 32, -// but 16 or 64 have also been used. Each of the 256 colors of the VGA palette -// can take on any of "numpalookups" number of shades. -// -// PALOOKUP: The shading table. If numpalookups = 32, then this table is: -// (32 shades) * (256 colors) = 8192 bytes (8K). The shade tables are often made -// to go from normal brightness (shade #0) down to pitch black (shade #31) So -// the first 256 bytes of the table would be for shade #0, etc... -// -// TRANSLUC: 64K translucent lookup table. Given any 2 colors of the palette, -// this lookup table gives the best match of the 2 colors when mixed together. -// -// Here's a funny story: I noticed that Duke3D's PALETTE.DAT file is 8K longer -// than it should be. Any PALETTE.DAT file with 32 shades and translucent table -// should be 74,498 bytes. Duke3D's palette is 82,690 bytes, but it only has 32 -// shades! The reason is that at one time, Duke3D had 64 shades in their -// "palookup" table. Then when we noticed that this extra memory overhead slowed -// down the frame rate of the game noticably, it was converted back to 32 -// shades. The problem is that my palette conversion program never truncated off -// the end of the file. So the last 8K of Duke3D's PALETTE.DAT is the last 8K of -// a translucent table that was based on an older version of their palette. -// -// -// For canonical parsers, see: -// - 'paletteLoadFromDisk' in EDuke's 'build/src/palette.cpp' -// - 'loadpalette' in Build's 'ENGINE.C' - -/// Parser for PALETTE.DAT, the file specifying the color format. -pub struct Palette { - colors: Vec<u8>, -} - -impl Palette { - /// Parse the contents of a PALETTE.DAT - pub fn new(data: &[u8]) -> Result<Palette, Box<Error>> { - let len = data.len(); - - // FIXME: This only takes into account the actual palette. PALETTE.DAT - // should also contain some lookup tables. - if len < 770 { - bail!("Too small to contain palette."); - } - - let colors = data[0..768].to_vec(); - - // FIXME: Not loading the lookup table yet because.. well, I don't know - // if we really need it yet? I suppose we'll need to get the values for - // TRANSLUC, but we're not on DOS anymore and I think a lookup table - // would be overkill. My plan is to convert ART files into bitmaps ahead - // of time, anyway. - - // let _lookup_count = LittleEndian::read_u16(size) as usize; - - Ok(Palette { colors }) - } -} - -#[cfg(test)] -mod palette_tests { - use super::*; - - #[test] - fn test_load_slice() { - // Considering the size of PALETTE.DAT, it would be absurd embed as a - // blob in this file. We'll just generate dummy data. I'm leaving the - // number of 'pa' lookups as 0 intentionally. - let data = [0; 0x10301]; - - if let Err(e) = Palette::new(&data) { - panic!("Valid PALETTE errored out with '{}'", e); - } - } - - #[test] - fn test_not_enough_data() { - let data = [0; 1]; - - if let Ok(_) = Palette::new(&data) { - panic!("Accepted incomplete header."); - } - } -} diff --git a/src/bitmap.rs b/src/bitmap.rs new file mode 100644 index 0000000..a6651f5 --- /dev/null +++ b/src/bitmap.rs @@ -0,0 +1,282 @@ +// Copyright (C) 2018 Jakob L. Kreuze, All Rights Reserved. +// +// This file is part of rebuild. +// +// rebuild is free software: you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the Free Software +// Foundation, either version 3 of the License, or (at your option) any later +// version. +// +// rebuild is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +// A PARTICULAR PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with +// rebuild. If not, see <http://www.gnu.org/licenses/>. + +extern crate byteorder; +extern crate simple_error; + +use std::error::Error; +use std::io::{Cursor, Read, Seek, SeekFrom}; + +use self::byteorder::{LE, ReadBytesExt}; +use grp::GroupManager; + +/// Rectangular chunk of ARGB data. +#[derive(Clone)] +pub struct Bitmap { + pub width: u16, + pub height: u16, + pub data: Vec<u32>, +} + +/// Manages access to bitmap tiles in a GRP archive. +pub struct BitmapManager { + bitmaps: Vec<Bitmap>, +} + +impl BitmapManager { + // FIXME: Should we have a hardcoded palette to fall back on if there is no + // PALETTE.DAT? That might make sense for Blood. + /// Create a new BitmapManager, loading all of the bitmap tiles in the given + /// GRP archive. + /// + /// # Errors + /// + /// This will fail if no 'PALETTE.DAT' entry exists in the GRP archive, or + /// if there is no 'TILES000.ART' entry. + pub fn new(grp: &GroupManager) -> Result<BitmapManager, Box<Error>> { + let mut bitmaps = Vec::new(); + + // What's the PALETTE.DAT format? + // + // char palette[768], palookup[numpalookups][256], transluc[256][256]; + // short numpalookups; + // + // fil = open("PALETTE.DAT",...); + // read(fil,palette,768); + // read(fil,&numpalookups,2); + // read(fil,palookup,numpalookups*256); + // read(fil,transluc,65536); + // close(fil); + // + // PALETTE: This 768 byte array is exactly the palette you want. The + // format is: Red0, Green0, Blue0, Red1, Green1, Blue1, ..., Blue255 + // + // The colors are based on the VGA 262,144 color palette. The values + // range from 0-63, so if you want to convert it to a windows palette + // you will have to multiply each byte by 4. + // + // NUMPALOOKUPS: The number of shading tables used. Usually this number + // is 32, but 16 or 64 have also been used. Each of the 256 colors of + // the VGA palette can take on any of "numpalookups" number of shades. + // + // PALOOKUP: The shading table. If numpalookups = 32, then this table + // is: (32 shades) * (256 colors) = 8192 bytes (8K). The shade tables + // are often made to go from normal brightness (shade #0) down to pitch + // black (shade #31) So the first 256 bytes of the table would be for + // shade #0, etc... + // + // TRANSLUC: 64K translucent lookup table. Given any 2 colors of the + // palette, this lookup table gives the best match of the 2 colors when + // mixed together. + // + // Here's a funny story: I noticed that Duke3D's PALETTE.DAT file is 8K + // longer than it should be. Any PALETTE.DAT file with 32 shades and + // translucent table should be 74,498 bytes. Duke3D's palette is 82,690 + // bytes, but it only has 32 shades! The reason is that at one time, + // Duke3D had 64 shades in their "palookup" table. Then when we noticed + // that this extra memory overhead slowed down the frame rate of the + // game noticably, it was converted back to 32 shades. The problem is + // that my palette conversion program never truncated off the end of the + // file. So the last 8K of Duke3D's PALETTE.DAT is the last 8K of a + // translucent table that was based on an older version of their + // palette. + // + // For canonical parsers, see: + // - 'paletteLoadFromDisk' in EDuke's 'build/src/palette.cpp' + // - 'loadpalette' in Build's 'ENGINE.C' + // - 'LoadPalette' in Transfusion's 'arttools/art2tga.c' + let palette = if let Some(data) = grp.get("PALETTE.DAT") { + let mut palette = Vec::new(); + + // FIXME: As of right now it's RGB, not ARGB. + for i in 0..256 { + let r = data[i] as u32; + let g = data[i + 1] as u32; + let b = data[i + 2] as u32; + + // FIXME: Also, I'm not a fan of this manual shifting shit. + palette.push(r << 4 | g << 2 | b); + } + + palette + } else { + bail!("No PALETTE.DAT"); + }; + + // From BUILDINF.TXT + // + // All art files must have xxxxx###.ART. When loading an art file you + // should keep trying to open new xxxxx###'s, incrementing the number, + // until an art file is not found. + for i in 0.. { + if let Some(data) = grp.get(&format!("TILES{:03}.ART", i)) { + // FIXME: Hoo, boy. Passing that Error back up the stack is + // probably a pretty bad way of handling an invalid header. + bitmaps.extend_from_slice(&BitmapManager::load_art(data, &palette)?); + } else { + // Indicates that there was no TILES000.ART, implying that + // literally NO bitmaps were loaded. That probably isn't right. + if i == 0 { + bail!("No TILES000.ART"); + } + + // But if we get here, it means that we just hit the last + // tilesheet and it's not worth our time to continue checking. + break; + } + } + + Ok(BitmapManager { bitmaps }) + } + + /// Load the tile given by the specified index, or None if no tile with the + /// specified index exists. + pub fn get_tile(&self, index: i32) -> Option<&Bitmap> { + if (index as usize) < self.bitmaps.len() { + Some(&self.bitmaps[(index as usize)]) + } else { + None + } + } + + /// Loads the tiles in an TILES###.ART file. + fn load_art(data: &[u8], palette: &[u32]) -> Result<Vec<Bitmap>, Box<Error>> { + let mut data = Cursor::new(data); + let mut bitmaps = Vec::new(); + + // From BUILDINF.TXT + // + // 1. long artversion; + // + // The first 4 bytes in the art format are the version number. The + // current current art version is now 1. If artversion is not 1 then + // either it's the wrong art version or something is wrong. + let version = data.read_u32::<LE>()?; + + if version != 1 { + bail!("Invalid ART version."); + } + + // 2. long numtiles; + // + // Numtiles is not really used anymore. I wouldn't trust it. Actually + // when I originally planning art version 1 many months ago, I thought I + // would need this variable, but it turned it is was unnecessary. To get + // the number of tiles, you should search all art files, and check the + // localtilestart and localtileend values for each file. + let _ = data.read_u32::<LE>()?; + + // 3. long localtilestart; + // + // Localtilestart is the tile number of the first tile in this art file. + // + // 4. long localtileend; + // + // Localtileend is the tile number of the last tile in this art file. + // Note: Localtileend CAN be higher than the last used slot in an art + // file. + // + // Example: If you chose 256 tiles per art file: + // TILES000.ART -> localtilestart = 0, localtileend = 255 + // TILES001.ART -> localtilestart = 256, localtileend = 511 + // TILES002.ART -> localtilestart = 512, localtileend = 767 + // TILES003.ART -> localtilestart = 768, localtileend = 1023 + let first_tile_index = data.read_u32::<LE>()?; + let last_tile_index = data.read_u32::<LE>()?; + let count = last_tile_index - first_tile_index + 1; + + // 5. short tilesizx[localtileend-localtilestart+1]; + // + // This is an array of shorts of all the x dimensions of the tiles in this art + // file. If you chose 256 tiles per art file then [localtileend-localtilestart+1] + // should equal 256. + // + // 6. short tilesizy[localtileend-localtilestart+1]; + // + // This is an array of shorts of all the y dimensions. + // + // 7. long picanm[localtileend-localtilestart+1]; + // + // This array of longs stores a few attributes for each tile that you + // can set inside EDITART. You probably won't be touching this array, + // but I'll document it anyway. + // + // Bit: |31 24|23 16|15 8|7 0| + // ----------------------------------------------------------------- + // | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + // ----------------------------------------------------------------- + // | Anim. | Signed char | Signed char | | Animate type:| + // | Speed | Y-center | X-center | | 00 - NoAnm | + // |-------| offset | offset | | 01 - Oscil | + // |---------------|---------------| | 10 - AnmFd | + // | 11 - AnmBk | + // |--------------| + // + // You probably recognize these: + // Animate speed - EDITART key: 'A', + and - to adjust + // Signed char x&y offset - EDITART key: '`', Arrows to adjust + // Animate number&type - EDITART key: +/- on keypad + // + // 8. After the picanm's, the rest of the file is straight-forward rectangular art + // data. You must go through the tilesizx and tilesizy arrays to find where the + // artwork is actually stored in this file. + // + // Note: The tiles are stored in the opposite coordinate system than the screen + // memory is stored. Example on a 4*4 file: + // + // Offsets: + // ----------------- + // | 0 | 4 | 8 |12 | + // ----------------- + // | 1 | 5 | 9 |13 | + // ----------------- + // | 2 | 6 |10 |14 | + // ----------------- + // | 3 | 7 |11 |15 | + // ----------------- + let mut data_off = (16 + 2 * count + 2 * count + 4 * count) as u64; + + for i in 0..count { + // The header is 16 bytes, the width and height arrays are both 2 + // bytes per value, and the attribute array is 4 bytes per value. + // The raw bitmap data follows immediately and the bounds of each + // bitmap are inferred from the width and height. + let width_array_off = (2 * i + 16) as u64; + let height_array_off = (2 * i + 2 * count + 16) as u64; + + data.seek(SeekFrom::Start(width_array_off))?; + let width = data.read_u16::<LE>()?; + + data.seek(SeekFrom::Start(height_array_off))?; + let height = data.read_u16::<LE>()?; + + let mut indices = vec![0; (width as usize) * (height as usize)]; + data.seek(SeekFrom::Start(data_off))?; + data.read(&mut indices)?; + data_off += indices.len() as u64; + + let mut data = Vec::new(); + + for index in indices.iter() { + data.push(palette[*index as usize]); + } + + bitmaps.push(Bitmap { width, height, data }); + } + + Ok(bitmaps) + } +} diff --git a/src/main.rs b/src/main.rs index f12759c..8880719 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,6 +19,7 @@ extern crate simple_error; use std::process; +mod bitmap; mod grp; mod path; mod world; @@ -35,5 +36,23 @@ fn main() { } let map = group_manager.get("E1L1.MAP").unwrap(); - let world = world::World::from_map(map); + let _world = world::World::from_map(map); + + let bitmap_manager = bitmap::BitmapManager::new(&group_manager).unwrap(); + let _tile = bitmap_manager.get_tile(277).unwrap(); + + // use std::fs::File; + // use std::io::Write; + // let mut file = File::create("/tmp/test.data").unwrap(); + // let mut data: Vec<u8> = Vec::new(); + // for pixel in tile.data.iter() { + // let r = pixel / 16; + // let g = pixel / 4; + // let b = pixel & 0xff; + // data.push(r as u8); + // data.push(g as u8); + // data.push(b as u8); + // } + // println!("{} x {}", tile.width, tile.height); + // file.write_all(&data); } |