1pub fn no_ir_info(buffer: &mut [u8]) {
4 draw_string(buffer, 640, 60, 200, 3, 159, "IR NOT ACTIVATED FOR DCAM560");
5}
6
7pub fn no_depth_info(buffer: &mut [u8]) {
8 draw_string(
9 buffer,
10 640,
11 40,
12 200,
13 3,
14 255,
15 "DEPTH NOT ACTIVATED FOR DCAM560",
16 );
17}
18
19pub fn draw_string(
21 buffer: &mut [u8],
22 width: usize,
23 x: usize,
24 y: usize,
25 scale: usize,
26 brightness: u8,
27 text: &str,
28) {
29 let mut current_x = x;
30 for c in text.chars() {
31 draw_char(buffer, width, current_x, y, scale, brightness, c);
32 current_x += (5 * scale) + scale; }
35}
36
37fn draw_char(
38 buffer: &mut [u8],
39 width: usize,
40 x: usize,
41 y: usize,
42 scale: usize,
43 brightness: u8,
44 character: char,
45) {
46 if !character.is_ascii() {
47 return;
48 }
49
50 let font_index = character as usize - 32;
51 if font_index >= FONT.len() {
52 return;
53 }
54
55 let font_char = FONT[font_index];
56
57 for row in 0..7 {
58 for (col, char) in font_char.iter().enumerate() {
59 if (char >> row) & 0x01 == 1 {
61 for sub_row in 0..scale {
63 for sub_col in 0..scale {
64 let pixel_x = x + (col * scale) + sub_col;
65 let pixel_y = y + (row * scale) + sub_row;
66
67 let pixel_index = pixel_y * width + pixel_x;
69
70 if pixel_index < buffer.len() {
71 buffer[pixel_index] = brightness;
72 }
73 }
74 }
75 }
76 }
77 }
78}
79
80const FONT: [[u8; 5]; 95] = [
82 [0x00, 0x00, 0x00, 0x00, 0x00],
84 [0x00, 0x00, 0x5f, 0x00, 0x00],
86 [0x00, 0x03, 0x00, 0x03, 0x00],
88 [0x14, 0x7e, 0x14, 0x7e, 0x14],
90 [0x24, 0x2a, 0x7f, 0x2a, 0x12],
92 [0x23, 0x13, 0x08, 0x64, 0x64],
94 [0x36, 0x49, 0x56, 0x20, 0x50],
96 [0x00, 0x03, 0x03, 0x00, 0x00],
98 [0x00, 0x1c, 0x22, 0x41, 0x00],
100 [0x00, 0x41, 0x22, 0x1c, 0x00],
102 [0x08, 0x2a, 0x7f, 0x2a, 0x08],
104 [0x08, 0x08, 0x3e, 0x08, 0x08],
106 [0x00, 0x50, 0x30, 0x00, 0x00],
108 [0x08, 0x08, 0x08, 0x08, 0x08],
110 [0x00, 0x60, 0x60, 0x00, 0x00],
112 [0x20, 0x10, 0x08, 0x04, 0x02],
114 [0x3e, 0x51, 0x49, 0x45, 0x3e],
116 [0x00, 0x42, 0x7f, 0x40, 0x00],
118 [0x62, 0x51, 0x49, 0x49, 0x46],
120 [0x22, 0x41, 0x49, 0x49, 0x36],
122 [0x18, 0x14, 0x12, 0x7f, 0x10],
124 [0x27, 0x45, 0x45, 0x45, 0x39],
126 [0x3c, 0x4a, 0x49, 0x49, 0x30],
128 [0x01, 0x71, 0x09, 0x05, 0x03],
130 [0x36, 0x49, 0x49, 0x49, 0x36],
132 [0x06, 0x49, 0x49, 0x29, 0x1e],
134 [0x00, 0x36, 0x36, 0x00, 0x00],
136 [0x00, 0x60, 0x36, 0x00, 0x00],
138 [0x08, 0x14, 0x22, 0x41, 0x00],
140 [0x14, 0x14, 0x14, 0x14, 0x14],
142 [0x00, 0x41, 0x22, 0x14, 0x08],
144 [0x02, 0x01, 0x51, 0x09, 0x06],
146 [0x3e, 0x41, 0x5d, 0x49, 0x4e],
148 [0x7e, 0x11, 0x11, 0x11, 0x7e],
150 [0x7f, 0x49, 0x49, 0x49, 0x36],
152 [0x3e, 0x41, 0x41, 0x41, 0x22],
154 [0x7f, 0x41, 0x41, 0x41, 0x3e],
156 [0x7f, 0x49, 0x49, 0x49, 0x41],
158 [0x7f, 0x09, 0x09, 0x01, 0x01],
160 [0x3e, 0x41, 0x49, 0x49, 0x7a],
162 [0x7f, 0x08, 0x08, 0x08, 0x7f],
164 [0x00, 0x41, 0x7f, 0x41, 0x00],
166 [0x20, 0x40, 0x41, 0x3f, 0x01],
168 [0x7f, 0x08, 0x14, 0x22, 0x41],
170 [0x7f, 0x40, 0x40, 0x40, 0x40],
172 [0x7f, 0x02, 0x04, 0x02, 0x7f],
174 [0x7f, 0x02, 0x04, 0x08, 0x7f],
176 [0x3e, 0x41, 0x41, 0x41, 0x3e],
178 [0x7f, 0x09, 0x09, 0x09, 0x06],
180 [0x3e, 0x41, 0x51, 0x21, 0x5e],
182 [0x7f, 0x09, 0x19, 0x29, 0x46],
184 [0x46, 0x49, 0x49, 0x49, 0x31],
186 [0x01, 0x01, 0x7f, 0x01, 0x01],
188 [0x3f, 0x40, 0x40, 0x40, 0x3f],
190 [0x1f, 0x20, 0x40, 0x20, 0x1f],
192 [0x3f, 0x40, 0x38, 0x40, 0x3f],
194 [0x61, 0x14, 0x08, 0x14, 0x61],
196 [0x01, 0x02, 0x7c, 0x02, 0x01],
198 [0x41, 0x61, 0x51, 0x49, 0x45],
200 [0x00, 0x7f, 0x41, 0x41, 0x00],
202 [0x02, 0x04, 0x08, 0x10, 0x20],
204 [0x00, 0x41, 0x41, 0x7f, 0x00],
206 [0x04, 0x02, 0x01, 0x02, 0x04],
208 [0x40, 0x40, 0x40, 0x40, 0x40],
210 [0x00, 0x01, 0x02, 0x04, 0x00],
212 [0x20, 0x54, 0x54, 0x54, 0x78],
214 [0x7f, 0x44, 0x48, 0x48, 0x30],
216 [0x38, 0x44, 0x44, 0x44, 0x20],
218 [0x30, 0x48, 0x48, 0x44, 0x7f],
220 [0x38, 0x54, 0x54, 0x54, 0x18],
222 [0x04, 0x04, 0x7e, 0x05, 0x05],
224 [0x48, 0x54, 0x54, 0x54, 0x38],
226 [0x7f, 0x08, 0x08, 0x08, 0x70],
228 [0x00, 0x44, 0x7d, 0x40, 0x00],
230 [0x20, 0x40, 0x44, 0x3d, 0x00],
232 [0x7f, 0x08, 0x14, 0x22, 0x41],
234 [0x00, 0x7f, 0x40, 0x40, 0x00],
236 [0x7c, 0x02, 0x04, 0x02, 0x7c],
238 [0x7c, 0x08, 0x08, 0x08, 0x70],
240 [0x38, 0x44, 0x44, 0x44, 0x38],
242 [0x7c, 0x14, 0x14, 0x14, 0x08],
244 [0x08, 0x14, 0x14, 0x14, 0x7c],
246 [0x7c, 0x08, 0x04, 0x04, 0x04],
248 [0x48, 0x54, 0x54, 0x54, 0x20],
250 [0x04, 0x04, 0x3e, 0x04, 0x04],
252 [0x3c, 0x40, 0x40, 0x20, 0x7c],
254 [0x1c, 0x20, 0x40, 0x20, 0x1c],
256 [0x3c, 0x40, 0x38, 0x40, 0x3c],
258 [0x44, 0x28, 0x10, 0x28, 0x44],
260 [0x44, 0x44, 0x44, 0x44, 0x28],
262 [0x44, 0x64, 0x54, 0x4c, 0x44],
264 [0x00, 0x08, 0x3e, 0x41, 0x00],
266 [0x00, 0x00, 0x7f, 0x00, 0x00],
268 [0x00, 0x41, 0x3e, 0x08, 0x00],
270 [0x08, 0x10, 0x10, 0x08, 0x00],
272];