ifc_style/assignment/
layer.rs1use ifc_model::EntityId;
4
5use crate::error::StyleResult;
6use crate::view::Record;
7use crate::{assignment::presentation_style_members, PresentationStyleMember};
8
9#[derive(Debug, Clone, Copy)]
12pub struct PresentationStyleAssignment<'m, 's> {
13 record: Record<'m, 's>,
14}
15
16impl<'m, 's> PresentationStyleAssignment<'m, 's> {
17 pub(crate) fn from_record(record: Record<'m, 's>) -> Self {
18 Self { record }
19 }
20
21 pub fn id(&self) -> EntityId {
23 self.record.id
24 }
25
26 pub fn styles(&self) -> StyleResult<Vec<EntityId>> {
28 Ok(self
29 .members()?
30 .into_iter()
31 .filter_map(|member| match member {
32 PresentationStyleMember::Style(id) => Some(id),
33 PresentationStyleMember::Null => None,
34 })
35 .collect())
36 }
37
38 pub fn members(&self) -> StyleResult<Vec<PresentationStyleMember>> {
41 presentation_style_members(self.record, "Styles", 1)
42 }
43}