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
131
132
133
134
#![doc(html_logo_url = "https://dudochkin-victor.github.io/assets/ux-dx/logo.svg")]
#[macro_use]
extern crate bitflags;
pub mod ext;
pub mod app;
pub mod canvas;
pub mod core;
pub mod gles;
mod mimic;
pub use self::mimic::*;
pub mod resource;
pub mod scene;
pub mod time;
pub mod ui;
pub mod utils;
pub use wgpu_types::{
BlendFactor,
CompareFunction,
Face,
FrontFace,
ShaderLocation,
StencilOperation,
TextureFormat,
TextureSampleType,
VertexFormat,
};
pub use primitives::{color, colorspace::Color};
pub mod prelude {
pub use crate::core::traits::*;
pub use primitives::prelude::*;
}
#[macro_export]
macro_rules! assets {
($path:tt) => {{
use std::{
env,
path::{Path, PathBuf},
};
let path = PathBuf::from($path);
if path.is_relative() {
if cfg!(debug_assertions) {
Path::new(env!("CARGO_MANIFEST_DIR"))
.join("assets")
.join(path)
} else {
match env::current_exe().unwrap().parent() {
Some(dir) => dir.join("assets").join(path),
None => {
path
}
}
}
} else {
path
}
}};
}
#[macro_export]
macro_rules! assets_source {
($path:tt) => {{
use std::{
borrow::Cow,
env,
fs::File,
io::prelude::*,
path::{Path, PathBuf},
};
let path = PathBuf::from($path);
let path = if path.is_relative() {
if cfg!(debug_assertions) {
Path::new(env!("CARGO_MANIFEST_DIR"))
.join("assets")
.join(path)
} else {
match env::current_exe().unwrap().parent() {
Some(dir) => dir.join("assets").join(path),
None => {
path
}
}
}
} else {
path
};
let mut buffer = Vec::new();
let mut file = File::open(path).expect("File open error");
file.read_to_end(&mut buffer).expect("File read error");
Cow::from(buffer)
}};
}
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
}