MCPcopy Create free account
hub / github.com/Ruddle/Fomos / write_pixel

Method write_pixel

bootloader/kernel/src/framebuffer.rs:126–148  ·  view source on GitHub ↗
(&mut self, x: usize, y: usize, intensity: u8)

Source from the content-addressed store, hash-verified

124 }
125
126 fn write_pixel(&mut self, x: usize, y: usize, intensity: u8) {
127 let pixel_offset = y * self.info.stride + x;
128
129 let r = intensity;
130 let g = [intensity, 0][self.level];
131 let b = [intensity / 2, 0][self.level];
132 let color = match self.info.pixel_format {
133 PixelFormat::Rgb => [r, g, b, 0],
134 PixelFormat::Bgr => [b, g, r, 0],
135 PixelFormat::U8 => [if intensity > 200 { 0xf } else { 0 }, 0, 0, 0],
136 other => {
137 // set a supported (but invalid) pixel format before panicking to avoid a double
138 // panic; it might not be readable though
139 self.info.pixel_format = PixelFormat::Rgb;
140 panic!("pixel format {:?} not supported in logger", other)
141 }
142 };
143 let bytes_per_pixel = self.info.bytes_per_pixel;
144 let byte_offset = pixel_offset * bytes_per_pixel;
145 self.framebuffer[byte_offset..(byte_offset + bytes_per_pixel)]
146 .copy_from_slice(&color[..bytes_per_pixel]);
147 let _ = unsafe { ptr::read_volatile(&self.framebuffer[byte_offset]) };
148 }
149}
150
151unsafe impl Send for FrameBufferWriter {}

Callers 1

write_rendered_charMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected