use crate::prepass::{resolve_prepass, PrepassSpans, ResolveOptions, ResolvedPrepass};
use super::source::Source;
use ifc_lite_core::EntityScanner;
pub(super) fn appearance(bytes: &[u8], source: &mut Source<'_>) -> ResolvedPrepass {
let mut spans = PrepassSpans::default();
let mut scan = EntityScanner::new(bytes);
while let Some((id, name, start, end)) = scan.next_entity() {
let target = match name {
"IFCSTYLEDITEM" => &mut spans.styled_items,
"IFCRELVOIDSELEMENT" => &mut spans.void_rels,
"IFCRELFILLSELEMENT" => &mut spans.fills_rels,
"IFCRELAGGREGATES" => &mut spans.aggregate_rels,
"IFCINDEXEDCOLOURMAP" => &mut spans.indexed_colour_maps,
"IFCMATERIALDEFINITIONREPRESENTATION" => &mut spans.material_def_reprs,
"IFCRELASSOCIATESMATERIAL" => &mut spans.rel_associates_material,
"IFCRELDEFINESBYTYPE" => &mut spans.defines_by_type,
_ => continue,
};
target.push((id, start, end));
}
resolve_prepass(&spans, &mut source.decoder, ResolveOptions::default())
}