refactor show
This commit is contained in:
@@ -299,6 +299,10 @@ impl DispalyState {
|
|||||||
self[7].off();
|
self[7].off();
|
||||||
self[8].off();
|
self[8].off();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn slice(&mut self, start: usize, len: usize) -> &mut [Segment] {
|
||||||
|
&mut self.0.as_mut_slice()[start..(start + len)]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show data on segment display
|
// Show data on segment display
|
||||||
|
|||||||
47
src/main.rs
47
src/main.rs
@@ -192,22 +192,47 @@ impl Show for NumberInput {
|
|||||||
fn show(&self, display: &mut DispalyState) {
|
fn show(&self, display: &mut DispalyState) {
|
||||||
display.off();
|
display.off();
|
||||||
display[1].dp();
|
display[1].dp();
|
||||||
if !self.enter_exponent && self.significant_pos < DISPLAY_SEGMENTS_SIG {
|
|
||||||
display[self.significant_pos + 1].prompt();
|
let (minus, sig) = display.slice(0, 1 + DISPLAY_SEGMENTS_SIG).split_at_mut(1);
|
||||||
} else if self.enter_exponent && self.exponent_pos < DISPLAY_SEGMENTS_EXP {
|
|
||||||
display[DISPLAY_SEGMENTS_SIG + 2 + self.exponent_pos].prompt();
|
|
||||||
}
|
|
||||||
if self.minus {
|
if self.minus {
|
||||||
display[DISPLAY_SEGMENT_SIG_MINUS].minus();
|
minus[0].minus();
|
||||||
}
|
}
|
||||||
for i in 0..self.significant_pos {
|
|
||||||
display[DISPLAY_SEGMENT_SIG_MINUS + 1 + i].num(self.significant[i]);
|
for (seg, num) in sig
|
||||||
|
.iter_mut()
|
||||||
|
.zip(self.significant.iter())
|
||||||
|
.take(self.significant_pos)
|
||||||
|
{
|
||||||
|
seg.num(*num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !self.enter_exponent {
|
||||||
|
if let Some(seg) = sig.get_mut(self.significant_pos) {
|
||||||
|
seg.prompt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let (minus, exp) = display
|
||||||
|
.slice(1 + DISPLAY_SEGMENTS_SIG, 1 + DISPLAY_SEGMENTS_EXP)
|
||||||
|
.split_at_mut(1);
|
||||||
|
|
||||||
if self.minus_exponent {
|
if self.minus_exponent {
|
||||||
display[DISPLAY_SEGMENT_EXP_MINUS].minus();
|
minus[0].minus();
|
||||||
}
|
}
|
||||||
for i in 0..self.exponent_pos {
|
|
||||||
display[DISPLAY_SEGMENT_EXP_MINUS + 1 + i].num(self.exponent[i]);
|
for (seg, num) in exp
|
||||||
|
.iter_mut()
|
||||||
|
.zip(self.exponent.iter())
|
||||||
|
.take(self.exponent_pos)
|
||||||
|
{
|
||||||
|
seg.num(*num);
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.enter_exponent {
|
||||||
|
if let Some(seg) = exp.get_mut(self.exponent_pos) {
|
||||||
|
seg.prompt();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user