Files
binocle/src/hexadecimal.rs
T
surv 86c507df21
CI / fmt (push) Has been cancelled
CI / clippy (push) Has been cancelled
CI / doc (push) Has been cancelled
CI / test macos-latest (push) Has been cancelled
CI / test windows-latest (push) Has been cancelled
First commit
2026-08-08 11:02:48 +02:00

46 lines
1.1 KiB
Rust

use ratatui::{
buffer::Buffer,
layout::Rect,
style::Stylize,
symbols::border,
text::{Line, Text},
widgets::{Block, Paragraph, Widget},
};
use crate::binary_repr::BinaryRepr;
#[derive(Debug, Default)]
pub struct Hexadecimal {
repr: BinaryRepr,
}
impl Hexadecimal {
pub fn update(&mut self, input: &BinaryRepr) {
self.repr = input.clone();
}
}
impl Widget for &Hexadecimal {
fn render(self, area: Rect, buf: &mut Buffer) {
let mut out = Line::from("0x".to_owned().gray());
let binding = self.repr.to_hex();
let mut txt = binding.as_str();
let mut color = false;
for _ in 0..txt.len().div_ceil(2) {
if color {
out += txt[0..2.min(txt.len())].cyan();
} else {
out += txt[0..2.min(txt.len())].red();
}
txt = &txt[2.min(txt.len())..];
color = !color;
}
let input_block = Block::bordered()
.title(Line::from("hexadecimal".bold()))
.border_set(border::PLAIN);
Paragraph::new(out).block(input_block).render(area, buf);
}
}