Mercurial > touhou
annotate python/src/lib.rs @ 778:816e1f01d650
Partially replace the Loader with a Rust one
| author | Link Mauve <linkmauve@linkmauve.fr> |
|---|---|
| date | Sat, 08 Nov 2025 18:26:01 +0100 |
| parents | 28d8b892fd06 |
| children | ee09657d3789 |
| rev | line source |
|---|---|
|
778
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
1 use pyo3::exceptions::PyIOError; |
|
770
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
2 use pyo3::prelude::*; |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
3 use pyo3::types::PyBytes; |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
4 use touhou_formats::th06::pbg3; |
|
778
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
5 use std::collections::HashMap; |
|
770
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
6 use std::fs::File; |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
7 use std::io::BufReader; |
|
778
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
8 use std::path::PathBuf; |
|
770
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
9 |
|
772
7492d384d122
Rust: Add a Glide renderer (2D only for now)
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
770
diff
changeset
|
10 #[cfg(feature = "glide")] |
|
7492d384d122
Rust: Add a Glide renderer (2D only for now)
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
770
diff
changeset
|
11 mod glide; |
|
7492d384d122
Rust: Add a Glide renderer (2D only for now)
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
770
diff
changeset
|
12 |
|
778
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
13 #[pyclass(module = "libtouhou")] |
|
770
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
14 struct PBG3 { |
|
778
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
15 filename: PathBuf, |
|
770
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
16 inner: pbg3::PBG3<BufReader<File>>, |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
17 } |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
18 |
|
778
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
19 impl PBG3 { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
20 fn get_file_internal(&mut self, name: &str) -> Vec<u8> { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
21 self.inner.get_file(name, true).unwrap() |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
22 } |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
23 } |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
24 |
|
770
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
25 #[pymethods] |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
26 impl PBG3 { |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
27 #[staticmethod] |
|
778
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
28 fn from_filename(filename: PathBuf) -> PyResult<PBG3> { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
29 let inner = pbg3::from_path_buffered(&filename)?; |
|
770
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
30 Ok(PBG3 { |
|
778
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
31 filename, |
|
770
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
32 inner |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
33 }) |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
34 } |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
35 |
|
778
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
36 fn __repr__(&self) -> String { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
37 format!("PBG3({})", self.filename.to_str().unwrap()) |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
38 } |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
39 |
|
770
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
40 #[getter] |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
41 fn file_list(&self) -> Vec<String> { |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
42 self.inner.list_files().cloned().collect() |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
43 } |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
44 |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
45 fn list_files(&self) -> Vec<String> { |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
46 self.inner.list_files().cloned().collect() |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
47 } |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
48 |
|
778
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
49 fn get_file(&mut self, py: Python, name: &str) -> Py<PyBytes> { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
50 let data = self.get_file_internal(name); |
|
775
28d8b892fd06
Python: Upgrade pyo3 from 0.17 to 0.26
Link Mauve <linkmauve@linkmauve.fr>
parents:
772
diff
changeset
|
51 PyBytes::new(py, &data).into() |
|
770
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
52 } |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
53 } |
|
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
54 |
|
778
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
55 /// A loader for Touhou files. |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
56 #[pyclass(module = "libtouhou", get_all, subclass)] |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
57 #[derive(Default)] |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
58 struct Loader { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
59 /// The file names to the possible executable. |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
60 exe_files: Vec<PathBuf>, |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
61 |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
62 /// The path to the game directory. |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
63 game_dir: Option<PathBuf>, |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
64 |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
65 /// A map from inner filenames to the archive containing them. |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
66 known_files: HashMap<String, Py<PBG3>>, |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
67 } |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
68 |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
69 #[pymethods] |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
70 impl Loader { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
71 /// Create a new Loader for the given game_dir. |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
72 #[new] |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
73 fn new(game_dir: Option<PathBuf>) -> Loader { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
74 Loader { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
75 exe_files: Vec::new(), |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
76 game_dir, |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
77 known_files: HashMap::new(), |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
78 } |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
79 } |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
80 |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
81 /// Scan the game_dir for archives. |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
82 /// |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
83 /// paths_lists is a list of ':'-separated glob patterns, the first matching file will be used |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
84 /// and the other ones ignored. |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
85 fn scan_archives(&mut self, py: Python, paths_lists: Vec<String>) -> PyResult<()> { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
86 for paths in paths_lists.iter() { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
87 let found_paths: Vec<_> = paths.split(':').map(|path| { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
88 glob::glob(if let Some(game_dir) = self.game_dir.as_ref() { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
89 game_dir.join(path) |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
90 } else { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
91 PathBuf::from(path) |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
92 }.to_str().unwrap()).unwrap() |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
93 }).flatten().map(Result::unwrap).map(PathBuf::from).collect(); |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
94 if found_paths.is_empty() { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
95 return Err(PyIOError::new_err(format!("No path found for {paths:?}"))); |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
96 } |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
97 let path = &found_paths[0]; |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
98 if let Some(extension) = path.extension() && extension == "exe" { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
99 self.exe_files.extend(found_paths); |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
100 } else { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
101 let pbg3 = PBG3::from_filename(path.to_owned())?; |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
102 let filenames = pbg3.list_files(); |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
103 let pbg3 = Py::new(py, pbg3)?; |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
104 for name in filenames { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
105 self.known_files.insert(name.clone(), Py::clone_ref(&pbg3, py)); |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
106 } |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
107 } |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
108 } |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
109 Ok(()) |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
110 } |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
111 |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
112 /// Return the given file as an io.BytesIO object. |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
113 fn get_file(&self, py: Python, name: String) -> PyResult<Py<PyAny>> { |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
114 let archive = self.known_files.get(&name).unwrap(); |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
115 let mut archive = archive.borrow_mut(py); |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
116 let bytes = archive.get_file(py, &name); |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
117 let io = py.import("io")?; |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
118 let bytesio_class = io.dict().get_item("BytesIO")?.unwrap(); |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
119 let file = bytesio_class.call1((bytes,))?; |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
120 Ok(file.unbind()) |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
121 } |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
122 } |
|
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
123 |
|
770
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
124 #[pymodule] |
|
775
28d8b892fd06
Python: Upgrade pyo3 from 0.17 to 0.26
Link Mauve <linkmauve@linkmauve.fr>
parents:
772
diff
changeset
|
125 mod libtouhou { |
|
28d8b892fd06
Python: Upgrade pyo3 from 0.17 to 0.26
Link Mauve <linkmauve@linkmauve.fr>
parents:
772
diff
changeset
|
126 #[pymodule_export] |
|
778
816e1f01d650
Partially replace the Loader with a Rust one
Link Mauve <linkmauve@linkmauve.fr>
parents:
775
diff
changeset
|
127 use super::Loader; |
|
775
28d8b892fd06
Python: Upgrade pyo3 from 0.17 to 0.26
Link Mauve <linkmauve@linkmauve.fr>
parents:
772
diff
changeset
|
128 |
|
772
7492d384d122
Rust: Add a Glide renderer (2D only for now)
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
770
diff
changeset
|
129 #[cfg(feature = "glide")] |
|
775
28d8b892fd06
Python: Upgrade pyo3 from 0.17 to 0.26
Link Mauve <linkmauve@linkmauve.fr>
parents:
772
diff
changeset
|
130 #[pymodule_export] |
|
28d8b892fd06
Python: Upgrade pyo3 from 0.17 to 0.26
Link Mauve <linkmauve@linkmauve.fr>
parents:
772
diff
changeset
|
131 use super::glide::module; |
|
770
f6c287745a67
Rust: Add a libtouhou Python wrapper using pyo3
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
132 } |
