3MJHVTOTVPO6KYWXVKALETNOZBHQ3XSI3SDUWIPHGWP5ZITQL4KAC EGIP2DL3KS6L3H6N7SMSTTNTZQECHFZPX3WL7KSU2KOC7V2RLS4QC RBDTDLSVTRYZYKAVDPMBTDL6W45H4ZHRB3XZTXBASOI4VCOTRS6QC FJVNPRZD2CQHHDZMFTPW57J3QR3HOF7B5ONBDTPGRBGNJOXU36WAC I3F42XELTBNGNFJGKEDBRYU75HHQX2CHMWPEIEMXAGU2FFHQVHKAC KLGRQAFUQPJP75NVLS5MZZ3CY4TGNVGB4K2YHQSLYVGAPKCLBLUAC 2NFFH775XBXGXBJYGTGUAUH45T5ZI6FFJXHFGUQQS324XEAFKT7AC SDFC64IQZWAAG36UV4GVSAER5S3FISBQEE2NVGI4G6ODD6CCGBIAC 5S34ANJMEKYNSGROMFRDP22UA2FK2ENSGOBB4MPSHS7PG2BW6DLAC RPA2OBNNQJLENPANGYEYR2O6DDKH2P35UU4FXVV2MYIDE2SAIHQAC R6SN37XV5NNVRRB7WYOW6BL4DPA4GAKPOFSX2OT7BR4Y36X532BQC B5TJA6MYFWB6PLH4KGQO5D42QHUZUWC627OKENXP6HBD6PG37ECQC YR6S4ANJ34M45KU6BU5RRJWI5AW5SSFPCDLH4KUO55DICUK5LQ4QC PTQ26KY65NDVZ35EG66SARWRGGYKDJ2BT3EVK4RJFS2J5AQUX6OQC T5T2PZSJVBHIPHG7VRXZSH36WGSTR4I44BOI335X4F637E7GUWHAC AFZQUL4VKEEDRSA5CV6YXN7PMX6PQ2PMLECTG53S4HZKTNCAIMXQC if face.bg != Color::BuiltinColor(BuiltinColor::Default) {'row: for row in -4..line_height {'column: for column in 0..(gpos.x_advance * fs / upe) {let x = pos.0 + column;let y = pos.1 - row;let bidx = ((x + y * size.0 as i32) * 4) as usize;if x >= size.0 as i32 {break 'row;}if y >= size.1 as i32 {break 'column;}let bg = face.bg.to_rgba(config.mosham_black.0, config);buf[bidx..][0..4].copy_from_slice(&bg);}}}
let x = pos.0 + x_off + column as i32;let y = pos.1 + y_off + row as i32;let bidx = ((x + y * size.0 as i32) * 4) as usize;
let x = pos.0 + x_off as usize + column;let y = pos.1 + y_off as usize + row;let bidx = (x + y * size.0 as usize) * 4;
}fn draw_background<T: Iterator<Item = usize> + Clone, U: Iterator<Item = usize>>(buf: &mut [u8],x: T,y: U,size: (u32, u32),color: [u8; 4],) {for i in y {for j in x.clone() {if j >= size.0 as usize {break;}if i >= size.1 as usize {return;}let bidx = (j + i * size.0 as usize) * 4;buf[bidx..][0..4].copy_from_slice(&color);}}
let bg = ui.default_face.bg.to_rgba(config.mosham_black.0, config);for c in self.pixels.frame_mut().chunks_exact_mut(4) {c.copy_from_slice(&bg);}
let default_bg = ui.default_face.bg.to_rgba(config).unwrap_or(config.mosham_black.0);let default_fg = ui.default_face.fg.to_rgba(config).unwrap_or(config.mosham_white.0);Self::draw_background(self.pixels.frame_mut(), 0.., 0.., self.size, default_bg);
if let Some(bg) = face.bg.to_rgba(config) {let run_length = run_length(glyph_buffer, *upe, self.font_size as i32);Self::draw_background(self.pixels.frame_mut(),pos.0..(pos.0 + run_length as usize),(pos.1 - line_height + 4)..(pos.1 + 4),self.size,bg,);}let fg = face.fg.to_rgba(config).unwrap_or(default_fg);
let start = (pos.0 as usize + (pos.1 - line_height) as usize * self.size.0 as usize) * 4;let end = (pos.0 as usize + (pos.1 + 4) as usize * self.size.0 as usize) * 4;for c in self.pixels.frame_mut()[start..=end].chunks_exact_mut(4) {c.copy_from_slice(&line_bg);
if let Some(bg) = line_bg {Self::draw_background(self.pixels.frame_mut(),0..,(pos.1 - line_height + 4)..(pos.1 + 4),self.size,bg,);
if let Some(bg) = face.bg.to_rgba(config) {let run_length = run_length(glyph_buffer, *upe, self.font_size as i32);Self::draw_background(self.pixels.frame_mut(),pos.0..(pos.0 + run_length as usize),(pos.1 - line_height + 4)..(pos.1 + 4),self.size,bg,);}let fg = face.fg.to_rgba(config).unwrap_or(ui.line_face.fg.to_rgba(config).unwrap_or(default_fg));
.map(|(_, _, upe, glyph_buffer)| {glyph_buffer.glyph_positions().iter().map(|gpos| gpos.x_advance * self.font_size as i32 / upe).sum::<i32>()})
.map(|(_, _, upe, glyph_buffer)| run_length(glyph_buffer, *upe, self.font_size as i32))
if let Some(bg) = face.bg.to_rgba(config) {let run_length = run_length(glyph_buffer, *upe, self.font_size as i32);Self::draw_background(self.pixels.frame_mut(),pos.0..(pos.0 + run_length as usize),(pos.1 - line_height + 4)..(pos.1 + 4),self.size,bg,);}let fg = face.fg.to_rgba(config).unwrap_or(ui.line_face.fg.to_rgba(config).unwrap_or(default_fg));
BuiltinColor::Black => config.mosham_black.0,BuiltinColor::Red => config.mosham_red.0,BuiltinColor::Green => config.mosham_green.0,BuiltinColor::Yellow => config.mosham_yellow.0,BuiltinColor::Blue => config.mosham_blue.0,BuiltinColor::Magenta => config.mosham_magenta.0,BuiltinColor::Cyan => config.mosham_cyan.0,BuiltinColor::White => config.mosham_white.0,BuiltinColor::BrightBlack => config.mosham_bright_black.0,BuiltinColor::BrightRed => config.mosham_bright_red.0,BuiltinColor::BrightGreen => config.mosham_bright_green.0,BuiltinColor::BrightYellow => config.mosham_bright_yellow.0,BuiltinColor::BrightBlue => config.mosham_bright_blue.0,BuiltinColor::BrightMagenta => config.mosham_bright_magenta.0,BuiltinColor::BrightCyan => config.mosham_bright_cyan.0,BuiltinColor::BrightWhite => config.mosham_bright_white.0,BuiltinColor::Default => default,
BuiltinColor::Black => Some(config.mosham_black.0),BuiltinColor::Red => Some(config.mosham_red.0),BuiltinColor::Green => Some(config.mosham_green.0),BuiltinColor::Yellow => Some(config.mosham_yellow.0),BuiltinColor::Blue => Some(config.mosham_blue.0),BuiltinColor::Magenta => Some(config.mosham_magenta.0),BuiltinColor::Cyan => Some(config.mosham_cyan.0),BuiltinColor::White => Some(config.mosham_white.0),BuiltinColor::BrightBlack => Some(config.mosham_bright_black.0),BuiltinColor::BrightRed => Some(config.mosham_bright_red.0),BuiltinColor::BrightGreen => Some(config.mosham_bright_green.0),BuiltinColor::BrightYellow => Some(config.mosham_bright_yellow.0),BuiltinColor::BrightBlue => Some(config.mosham_bright_blue.0),BuiltinColor::BrightMagenta => Some(config.mosham_bright_magenta.0),BuiltinColor::BrightCyan => Some(config.mosham_bright_cyan.0),BuiltinColor::BrightWhite => Some(config.mosham_bright_white.0),BuiltinColor::Default => None,