core: Extract `Graphic::drawing`

That returns a non-`Option` `Drawing`, and has no `.unwrap()`s.
This commit is contained in:
relrelb 2022-10-22 14:29:21 +03:00 committed by relrelb
parent 7dfc5b6e2e
commit fb7ba9c9a0
1 changed files with 7 additions and 6 deletions

View File

@ -93,6 +93,12 @@ impl<'gc> Graphic<'gc> {
}, },
)) ))
} }
pub fn drawing(&self, gc_context: MutationContext<'gc, '_>) -> RefMut<'_, Drawing> {
RefMut::map(self.0.write(gc_context), |w| {
w.drawing.get_or_insert_with(Drawing::new)
})
}
} }
impl<'gc> TDisplayObject<'gc> for Graphic<'gc> { impl<'gc> TDisplayObject<'gc> for Graphic<'gc> {
@ -235,12 +241,7 @@ impl<'gc> TDisplayObject<'gc> for Graphic<'gc> {
} }
fn as_drawing(&self, gc_context: MutationContext<'gc, '_>) -> Option<RefMut<'_, Drawing>> { fn as_drawing(&self, gc_context: MutationContext<'gc, '_>) -> Option<RefMut<'_, Drawing>> {
let mut write = self.0.write(gc_context); Some(self.drawing(gc_context))
if write.drawing.is_none() {
write.drawing = Some(Drawing::new());
}
Some(RefMut::map(write, |m| m.drawing.as_mut().unwrap()))
} }
} }