use crate::types::{Mode, Version};
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct Segment {
pub mode: Mode,
pub begin: usize,
pub end: usize,
}
impl Segment {
#[must_use]
pub fn encoded_len(&self, version: Version) -> usize {
let byte_size = self.end - self.begin;
let chars_count = if self.mode == Mode::Kanji {
byte_size / 2
} else {
byte_size
};
let mode_bits_count = version.mode_bits_count();
let length_bits_count = self.mode.length_bits_count(version);
let data_bits_count = self.mode.data_bits_count(chars_count);
mode_bits_count + length_bits_count + data_bits_count
}
}