-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathmod.rs
More file actions
129 lines (112 loc) · 5.47 KB
/
mod.rs
File metadata and controls
129 lines (112 loc) · 5.47 KB
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
pub use self::platform::*;
use crate::core::graphics::gpu::{DISPLAY_HEIGHT, DISPLAY_WIDTH};
use crate::core::graphics::gpu_renderer::ScreenTopology;
use crate::settings::ScreenMode;
#[cfg(target_os = "linux")]
#[path = "linux.rs"]
mod platform;
#[cfg(target_os = "vita")]
#[path = "vita.rs"]
mod platform;
pub const PRESENTER_SCREEN_WIDTH: u32 = 960;
pub const PRESENTER_SCREEN_HEIGHT: u32 = 544;
pub const SWAP_ZONE_WIDTH: u32 = 87;
pub const SWAP_ZONE_HEIGHT: u32 = 71;
pub enum PresentEvent {
Inputs { keymap: u32, touch: Option<(u8, u8)>, raw_touch: Option<(u16, u16)> },
Quit,
}
pub const PRESENTER_AUDIO_SAMPLE_RATE: usize = 48000;
pub const PRESENTER_AUDIO_BUF_SIZE: usize = 1024;
pub struct PresenterScreen {
pub x: u32,
pub y: u32,
pub width: u32,
pub height: u32,
}
impl PresenterScreen {
pub const fn new(x: u32, y: u32, width: u32, height: u32) -> Self {
PresenterScreen { x, y, width, height }
}
const fn is_within(&self, x: u32, y: u32) -> bool {
x >= self.x && x < self.x + self.width && y >= self.y && y < self.y + self.height
}
const fn normalize(&self, x: u32, y: u32) -> (u32, u32) {
(x - self.x, y - self.y)
}
}
pub const PRESENTER_SUB_SCREEN_WIDTH: u32 = PRESENTER_SCREEN_WIDTH / 2;
pub const PRESENTER_SUB_SCREEN_HEIGHT: u32 = DISPLAY_HEIGHT as u32 * PRESENTER_SUB_SCREEN_WIDTH / DISPLAY_WIDTH as u32;
pub const PRESENTER_SUB_TOP_SCREEN: PresenterScreen = PresenterScreen::new(0, (PRESENTER_SCREEN_HEIGHT - PRESENTER_SUB_SCREEN_HEIGHT) / 2, PRESENTER_SUB_SCREEN_WIDTH, PRESENTER_SUB_SCREEN_HEIGHT);
pub const PRESENTER_SUB_BOTTOM_SCREEN: PresenterScreen = PresenterScreen::new(
PRESENTER_SUB_SCREEN_WIDTH,
(PRESENTER_SCREEN_HEIGHT - PRESENTER_SUB_SCREEN_HEIGHT) / 2,
PRESENTER_SUB_SCREEN_WIDTH,
PRESENTER_SUB_SCREEN_HEIGHT,
);
pub const PRESENTER_SUB_ROTATED_SCREEN_HEIGHT: u32 = DISPLAY_WIDTH as u32 * (PRESENTER_SCREEN_HEIGHT / DISPLAY_WIDTH as u32);
pub const PRESENTER_SUB_ROTATED_SCREEN_WIDTH: u32 = DISPLAY_HEIGHT as u32 * PRESENTER_SUB_ROTATED_SCREEN_HEIGHT / DISPLAY_WIDTH as u32;
pub const PRESENTER_SUB_ROTATED_TOP_SCREEN: PresenterScreen = PresenterScreen::new(
(PRESENTER_SCREEN_WIDTH - 2 * PRESENTER_SUB_ROTATED_SCREEN_WIDTH) / 2,
(PRESENTER_SCREEN_HEIGHT - PRESENTER_SUB_ROTATED_SCREEN_HEIGHT) / 2,
PRESENTER_SUB_ROTATED_SCREEN_WIDTH,
PRESENTER_SUB_ROTATED_SCREEN_HEIGHT,
);
pub const PRESENTER_SUB_ROTATED_BOTTOM_SCREEN: PresenterScreen = PresenterScreen::new(
PRESENTER_SCREEN_WIDTH / 2,
(PRESENTER_SCREEN_HEIGHT - PRESENTER_SUB_ROTATED_SCREEN_HEIGHT) / 2,
PRESENTER_SUB_ROTATED_SCREEN_WIDTH,
PRESENTER_SUB_ROTATED_SCREEN_HEIGHT,
);
pub const PRESENTER_SUB_RESIZED_SCREEN_WIDTH_TOP: u32 = DISPLAY_WIDTH as u32;
pub const PRESENTER_SUB_RESIZED_SCREEN_WIDTH_BOT: u32 = DISPLAY_WIDTH as u32 * 2;
pub const PRESENTER_SUB_RESIZED_SCREEN_HEIGHT_TOP: u32 = DISPLAY_HEIGHT as u32;
pub const PRESENTER_SUB_RESIZED_SCREEN_HEIGHT_BOT: u32 = DISPLAY_HEIGHT as u32 * 2;
pub const PRESENTER_SUB_RESIZED_TOP_SCREEN: PresenterScreen = PresenterScreen::new(
(PRESENTER_SCREEN_WIDTH - PRESENTER_SUB_RESIZED_SCREEN_WIDTH_TOP - PRESENTER_SUB_RESIZED_SCREEN_WIDTH_BOT) / 2,
(PRESENTER_SCREEN_HEIGHT - PRESENTER_SUB_RESIZED_SCREEN_HEIGHT_TOP) / 2,
PRESENTER_SUB_RESIZED_SCREEN_WIDTH_TOP,
PRESENTER_SUB_RESIZED_SCREEN_HEIGHT_TOP,
);
pub const PRESENTER_SUB_RESIZED_BOTTOM_SCREEN: PresenterScreen = PresenterScreen::new(
PRESENTER_SUB_RESIZED_TOP_SCREEN.x + PRESENTER_SUB_RESIZED_TOP_SCREEN.width,
(PRESENTER_SCREEN_HEIGHT - PRESENTER_SUB_RESIZED_SCREEN_HEIGHT_BOT) / 2,
PRESENTER_SUB_RESIZED_SCREEN_WIDTH_BOT,
PRESENTER_SUB_RESIZED_SCREEN_HEIGHT_BOT,
);
pub const PRESENTER_SUB_RESIZED_INV_SCREEN_WIDTH_TOP: u32 = DISPLAY_WIDTH as u32 * 2;
pub const PRESENTER_SUB_RESIZED_INV_SCREEN_WIDTH_BOT: u32 = DISPLAY_WIDTH as u32;
pub const PRESENTER_SUB_RESIZED_INV_SCREEN_HEIGHT_TOP: u32 = DISPLAY_HEIGHT as u32 * 2;
pub const PRESENTER_SUB_RESIZED_INV_SCREEN_HEIGHT_BOT: u32 = DISPLAY_HEIGHT as u32;
pub const PRESENTER_SUB_RESIZED_INV_TOP_SCREEN: PresenterScreen = PresenterScreen::new(
(PRESENTER_SCREEN_WIDTH - PRESENTER_SUB_RESIZED_INV_SCREEN_WIDTH_TOP - PRESENTER_SUB_RESIZED_INV_SCREEN_WIDTH_BOT) / 2,
(PRESENTER_SCREEN_HEIGHT - PRESENTER_SUB_RESIZED_INV_SCREEN_HEIGHT_TOP) / 2,
PRESENTER_SUB_RESIZED_INV_SCREEN_WIDTH_TOP,
PRESENTER_SUB_RESIZED_INV_SCREEN_HEIGHT_TOP,
);
pub const PRESENTER_SUB_RESIZED_INV_BOTTOM_SCREEN: PresenterScreen = PresenterScreen::new(
PRESENTER_SUB_RESIZED_INV_TOP_SCREEN.x + PRESENTER_SUB_RESIZED_INV_TOP_SCREEN.width,
(PRESENTER_SCREEN_HEIGHT - PRESENTER_SUB_RESIZED_INV_SCREEN_HEIGHT_BOT) / 2,
PRESENTER_SUB_RESIZED_INV_SCREEN_WIDTH_BOT,
PRESENTER_SUB_RESIZED_INV_SCREEN_HEIGHT_BOT,
);
pub const PRESENTER_SUB_REGULAR: ScreenTopology = ScreenTopology {
top: PRESENTER_SUB_TOP_SCREEN,
bottom: PRESENTER_SUB_BOTTOM_SCREEN,
mode: ScreenMode::Regular,
};
pub const PRESENTER_SUB_ROTATED: ScreenTopology = ScreenTopology {
top: PRESENTER_SUB_ROTATED_TOP_SCREEN,
bottom: PRESENTER_SUB_ROTATED_BOTTOM_SCREEN,
mode: ScreenMode::Rotated,
};
pub const PRESENTER_SUB_RESIZED: ScreenTopology = ScreenTopology {
top: PRESENTER_SUB_RESIZED_TOP_SCREEN,
bottom: PRESENTER_SUB_RESIZED_BOTTOM_SCREEN,
mode: ScreenMode::Resized,
};
pub const PRESENTER_SUB_RESIZED_INV: ScreenTopology = ScreenTopology {
top: PRESENTER_SUB_RESIZED_INV_TOP_SCREEN,
bottom: PRESENTER_SUB_RESIZED_INV_BOTTOM_SCREEN,
mode: ScreenMode::Resized,
};