use quick_xml::{
Reader,
events::Event,
};
use crate::{
structs::{
Worksheet,
raw::{
RawFile,
RawRelationships,
},
vml::Shape,
},
xml_read_loop,
};
pub(crate) fn read(
worksheet: &mut Worksheet,
drawing_file: &RawFile,
drawing_relationships: Option<&RawRelationships>,
) {
let data = std::io::Cursor::new(drawing_file.file_data());
let mut reader = Reader::from_reader(data);
reader.config_mut().trim_text(true);
let mut ole_index = 0;
let mut comment_index = 0;
xml_read_loop!(
reader,
Event::Start(ref e) => {
if e.name().into_inner() == b"v:shape" {
let mut obj = Shape::default();
obj.set_attributes(&mut reader, e, drawing_relationships);
if obj.client_data().comment_column_target().is_some() {
worksheet
.comments_mut()
.get_mut(comment_index)
.map(|comment| comment.set_shape(obj));
comment_index += 1;
} else {
worksheet
.ole_objects_mut()
.ole_object_mut()
.get_mut(ole_index)
.map(|ole_obj| ole_obj.set_shape(obj));
ole_index += 1;
}
}
},
Event::Eof => break,
);
}