use crate::value::GroupValue;
#[derive(Debug, Clone, Copy, Default)]
pub struct Layer<'a> {
pub handle: &'a [u8],
pub name: &'a [u8],
pub flags: i16,
pub color: i16,
pub linetype_name: &'a [u8],
pub lineweight: i16,
}
impl<'a> Layer<'a> {
pub fn is_on(&self) -> bool {
self.color >= 0
}
pub fn is_frozen(&self) -> bool {
self.flags & 1 != 0
}
pub fn color_index(&self) -> i16 {
self.color.abs()
}
pub(crate) fn feed(&mut self, code: u16, val: &GroupValue<'a>) {
match code {
5 => {
if let Some(s) = val.as_str_bytes() {
self.handle = s;
}
}
2 => {
if let Some(s) = val.as_str_bytes() {
self.name = s;
}
}
70 => {
if let Some(v) = val.as_i16() {
self.flags = v;
}
}
6 => {
if let Some(s) = val.as_str_bytes() {
self.linetype_name = s;
}
}
62 => {
if let Some(v) = val.as_i16() {
self.color = v;
}
}
370 => {
if let Some(v) = val.as_i16() {
self.lineweight = v;
}
}
_ => {}
}
}
}