Skip to main content

ooxml_dml/
generated_serializers.rs

1// ToXml serializers for generated types.
2// Enables roundtrip XML serialization alongside FromXml parsers.
3
4#![allow(unused_variables, unused_assignments, unreachable_code, unused_imports)]
5#![allow(clippy::single_match)]
6#![allow(clippy::match_single_binding)]
7#![allow(clippy::explicit_counter_loop)]
8
9use super::generated::*;
10pub use ooxml_xml::{SerializeError, ToXml};
11use quick_xml::Writer;
12use quick_xml::events::{BytesEnd, BytesStart, BytesText, Event};
13use std::io::Write;
14
15#[allow(dead_code)]
16/// Encode bytes as a hex string.
17fn encode_hex(bytes: &[u8]) -> String {
18    bytes.iter().map(|b| format!("{:02X}", b)).collect()
19}
20
21#[allow(dead_code)]
22/// Encode bytes as a base64 string.
23fn encode_base64(bytes: &[u8]) -> String {
24    use base64::Engine;
25    base64::engine::general_purpose::STANDARD.encode(bytes)
26}
27
28impl ToXml for CTAudioFile {
29    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
30        #[allow(unused_mut)]
31        let mut start = start;
32        #[cfg(feature = "dml-media")]
33        {
34            let val = &self.link;
35            start.push_attribute(("r:link", val.as_str()));
36        }
37        #[cfg(feature = "dml-media")]
38        if let Some(ref val) = self.content_type {
39            start.push_attribute(("contentType", val.as_str()));
40        }
41        #[cfg(feature = "extra-attrs")]
42        for (key, value) in &self.extra_attrs {
43            start.push_attribute((key.as_str(), value.as_str()));
44        }
45        start
46    }
47
48    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
49        #[cfg(feature = "extra-children")]
50        let mut extra_iter = self.extra_children.iter().peekable();
51        #[cfg(feature = "extra-children")]
52        let mut emit_idx: usize = 0;
53        #[cfg(feature = "extra-children")]
54        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
55            extra_iter
56                .next()
57                .unwrap()
58                .node
59                .write_to(writer)
60                .map_err(SerializeError::from)?;
61        }
62        if let Some(ref val) = self.ext_lst {
63            val.write_element("a:extLst", writer)?;
64        }
65        #[cfg(feature = "extra-children")]
66        {
67            emit_idx += 1;
68        }
69        #[cfg(feature = "extra-children")]
70        for extra in extra_iter {
71            extra.node.write_to(writer).map_err(SerializeError::from)?;
72        }
73        Ok(())
74    }
75
76    fn is_empty_element(&self) -> bool {
77        if self.ext_lst.is_some() {
78            return false;
79        }
80        #[cfg(feature = "extra-children")]
81        if !self.extra_children.is_empty() {
82            return false;
83        }
84        true
85    }
86}
87
88impl ToXml for CTVideoFile {
89    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
90        #[allow(unused_mut)]
91        let mut start = start;
92        #[cfg(feature = "dml-media")]
93        {
94            let val = &self.link;
95            start.push_attribute(("r:link", val.as_str()));
96        }
97        #[cfg(feature = "dml-media")]
98        if let Some(ref val) = self.content_type {
99            start.push_attribute(("contentType", val.as_str()));
100        }
101        #[cfg(feature = "extra-attrs")]
102        for (key, value) in &self.extra_attrs {
103            start.push_attribute((key.as_str(), value.as_str()));
104        }
105        start
106    }
107
108    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
109        #[cfg(feature = "extra-children")]
110        let mut extra_iter = self.extra_children.iter().peekable();
111        #[cfg(feature = "extra-children")]
112        let mut emit_idx: usize = 0;
113        #[cfg(feature = "extra-children")]
114        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
115            extra_iter
116                .next()
117                .unwrap()
118                .node
119                .write_to(writer)
120                .map_err(SerializeError::from)?;
121        }
122        if let Some(ref val) = self.ext_lst {
123            val.write_element("a:extLst", writer)?;
124        }
125        #[cfg(feature = "extra-children")]
126        {
127            emit_idx += 1;
128        }
129        #[cfg(feature = "extra-children")]
130        for extra in extra_iter {
131            extra.node.write_to(writer).map_err(SerializeError::from)?;
132        }
133        Ok(())
134    }
135
136    fn is_empty_element(&self) -> bool {
137        if self.ext_lst.is_some() {
138            return false;
139        }
140        #[cfg(feature = "extra-children")]
141        if !self.extra_children.is_empty() {
142            return false;
143        }
144        true
145    }
146}
147
148impl ToXml for CTQuickTimeFile {
149    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
150        #[allow(unused_mut)]
151        let mut start = start;
152        {
153            let val = &self.link;
154            start.push_attribute(("r:link", val.as_str()));
155        }
156        #[cfg(feature = "extra-attrs")]
157        for (key, value) in &self.extra_attrs {
158            start.push_attribute((key.as_str(), value.as_str()));
159        }
160        start
161    }
162
163    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
164        #[cfg(feature = "extra-children")]
165        let mut extra_iter = self.extra_children.iter().peekable();
166        #[cfg(feature = "extra-children")]
167        let mut emit_idx: usize = 0;
168        #[cfg(feature = "extra-children")]
169        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
170            extra_iter
171                .next()
172                .unwrap()
173                .node
174                .write_to(writer)
175                .map_err(SerializeError::from)?;
176        }
177        if let Some(ref val) = self.ext_lst {
178            val.write_element("a:extLst", writer)?;
179        }
180        #[cfg(feature = "extra-children")]
181        {
182            emit_idx += 1;
183        }
184        #[cfg(feature = "extra-children")]
185        for extra in extra_iter {
186            extra.node.write_to(writer).map_err(SerializeError::from)?;
187        }
188        Ok(())
189    }
190
191    fn is_empty_element(&self) -> bool {
192        if self.ext_lst.is_some() {
193            return false;
194        }
195        #[cfg(feature = "extra-children")]
196        if !self.extra_children.is_empty() {
197            return false;
198        }
199        true
200    }
201}
202
203impl ToXml for CTAudioCDTime {
204    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
205        #[allow(unused_mut)]
206        let mut start = start;
207        {
208            let val = &self.track;
209            {
210                let s = val.to_string();
211                start.push_attribute(("track", s.as_str()));
212            }
213        }
214        if let Some(ref val) = self.time {
215            {
216                let s = val.to_string();
217                start.push_attribute(("time", s.as_str()));
218            }
219        }
220        #[cfg(feature = "extra-attrs")]
221        for (key, value) in &self.extra_attrs {
222            start.push_attribute((key.as_str(), value.as_str()));
223        }
224        start
225    }
226
227    fn is_empty_element(&self) -> bool {
228        true
229    }
230}
231
232impl ToXml for CTAudioCD {
233    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
234        #[cfg(feature = "extra-children")]
235        let mut extra_iter = self.extra_children.iter().peekable();
236        #[cfg(feature = "extra-children")]
237        let mut emit_idx: usize = 0;
238        #[cfg(feature = "extra-children")]
239        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
240            extra_iter
241                .next()
242                .unwrap()
243                .node
244                .write_to(writer)
245                .map_err(SerializeError::from)?;
246        }
247        {
248            let val = &self.st;
249            val.write_element("a:st", writer)?;
250        }
251        #[cfg(feature = "extra-children")]
252        {
253            emit_idx += 1;
254        }
255        #[cfg(feature = "extra-children")]
256        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
257            extra_iter
258                .next()
259                .unwrap()
260                .node
261                .write_to(writer)
262                .map_err(SerializeError::from)?;
263        }
264        {
265            let val = &self.end;
266            val.write_element("a:end", writer)?;
267        }
268        #[cfg(feature = "extra-children")]
269        {
270            emit_idx += 1;
271        }
272        #[cfg(feature = "extra-children")]
273        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
274            extra_iter
275                .next()
276                .unwrap()
277                .node
278                .write_to(writer)
279                .map_err(SerializeError::from)?;
280        }
281        if let Some(ref val) = self.ext_lst {
282            val.write_element("a:extLst", writer)?;
283        }
284        #[cfg(feature = "extra-children")]
285        {
286            emit_idx += 1;
287        }
288        #[cfg(feature = "extra-children")]
289        for extra in extra_iter {
290            extra.node.write_to(writer).map_err(SerializeError::from)?;
291        }
292        Ok(())
293    }
294
295    fn is_empty_element(&self) -> bool {
296        false
297    }
298}
299
300impl ToXml for EGMedia {
301    fn write_element<W: Write>(
302        &self,
303        _tag: &str,
304        writer: &mut Writer<W>,
305    ) -> Result<(), SerializeError> {
306        match self {
307            Self::AudioCd(inner) => inner.write_element("a:audioCd", writer)?,
308            Self::WavAudioFile(inner) => inner.write_element("a:wavAudioFile", writer)?,
309            Self::AudioFile(inner) => inner.write_element("a:audioFile", writer)?,
310            Self::VideoFile(inner) => inner.write_element("a:videoFile", writer)?,
311            Self::QuickTimeFile(inner) => inner.write_element("a:quickTimeFile", writer)?,
312        }
313        Ok(())
314    }
315}
316
317impl ToXml for ColorScheme {
318    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
319        #[allow(unused_mut)]
320        let mut start = start;
321        #[cfg(feature = "dml-themes")]
322        {
323            let val = &self.name;
324            start.push_attribute(("name", val.as_str()));
325        }
326        #[cfg(feature = "extra-attrs")]
327        for (key, value) in &self.extra_attrs {
328            start.push_attribute((key.as_str(), value.as_str()));
329        }
330        start
331    }
332
333    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
334        #[cfg(feature = "extra-children")]
335        let mut extra_iter = self.extra_children.iter().peekable();
336        #[cfg(feature = "extra-children")]
337        let mut emit_idx: usize = 0;
338        #[cfg(feature = "extra-children")]
339        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
340            extra_iter
341                .next()
342                .unwrap()
343                .node
344                .write_to(writer)
345                .map_err(SerializeError::from)?;
346        }
347        #[cfg(feature = "dml-colors")]
348        {
349            let val = &self.dk1;
350            val.write_element("a:dk1", writer)?;
351        }
352        #[cfg(feature = "extra-children")]
353        {
354            emit_idx += 1;
355        }
356        #[cfg(feature = "extra-children")]
357        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
358            extra_iter
359                .next()
360                .unwrap()
361                .node
362                .write_to(writer)
363                .map_err(SerializeError::from)?;
364        }
365        #[cfg(feature = "dml-colors")]
366        {
367            let val = &self.lt1;
368            val.write_element("a:lt1", writer)?;
369        }
370        #[cfg(feature = "extra-children")]
371        {
372            emit_idx += 1;
373        }
374        #[cfg(feature = "extra-children")]
375        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
376            extra_iter
377                .next()
378                .unwrap()
379                .node
380                .write_to(writer)
381                .map_err(SerializeError::from)?;
382        }
383        #[cfg(feature = "dml-colors")]
384        {
385            let val = &self.dk2;
386            val.write_element("a:dk2", writer)?;
387        }
388        #[cfg(feature = "extra-children")]
389        {
390            emit_idx += 1;
391        }
392        #[cfg(feature = "extra-children")]
393        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
394            extra_iter
395                .next()
396                .unwrap()
397                .node
398                .write_to(writer)
399                .map_err(SerializeError::from)?;
400        }
401        #[cfg(feature = "dml-colors")]
402        {
403            let val = &self.lt2;
404            val.write_element("a:lt2", writer)?;
405        }
406        #[cfg(feature = "extra-children")]
407        {
408            emit_idx += 1;
409        }
410        #[cfg(feature = "extra-children")]
411        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
412            extra_iter
413                .next()
414                .unwrap()
415                .node
416                .write_to(writer)
417                .map_err(SerializeError::from)?;
418        }
419        #[cfg(feature = "dml-colors")]
420        {
421            let val = &self.accent1;
422            val.write_element("a:accent1", writer)?;
423        }
424        #[cfg(feature = "extra-children")]
425        {
426            emit_idx += 1;
427        }
428        #[cfg(feature = "extra-children")]
429        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
430            extra_iter
431                .next()
432                .unwrap()
433                .node
434                .write_to(writer)
435                .map_err(SerializeError::from)?;
436        }
437        #[cfg(feature = "dml-colors")]
438        {
439            let val = &self.accent2;
440            val.write_element("a:accent2", writer)?;
441        }
442        #[cfg(feature = "extra-children")]
443        {
444            emit_idx += 1;
445        }
446        #[cfg(feature = "extra-children")]
447        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
448            extra_iter
449                .next()
450                .unwrap()
451                .node
452                .write_to(writer)
453                .map_err(SerializeError::from)?;
454        }
455        #[cfg(feature = "dml-colors")]
456        {
457            let val = &self.accent3;
458            val.write_element("a:accent3", writer)?;
459        }
460        #[cfg(feature = "extra-children")]
461        {
462            emit_idx += 1;
463        }
464        #[cfg(feature = "extra-children")]
465        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
466            extra_iter
467                .next()
468                .unwrap()
469                .node
470                .write_to(writer)
471                .map_err(SerializeError::from)?;
472        }
473        #[cfg(feature = "dml-colors")]
474        {
475            let val = &self.accent4;
476            val.write_element("a:accent4", writer)?;
477        }
478        #[cfg(feature = "extra-children")]
479        {
480            emit_idx += 1;
481        }
482        #[cfg(feature = "extra-children")]
483        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
484            extra_iter
485                .next()
486                .unwrap()
487                .node
488                .write_to(writer)
489                .map_err(SerializeError::from)?;
490        }
491        #[cfg(feature = "dml-colors")]
492        {
493            let val = &self.accent5;
494            val.write_element("a:accent5", writer)?;
495        }
496        #[cfg(feature = "extra-children")]
497        {
498            emit_idx += 1;
499        }
500        #[cfg(feature = "extra-children")]
501        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
502            extra_iter
503                .next()
504                .unwrap()
505                .node
506                .write_to(writer)
507                .map_err(SerializeError::from)?;
508        }
509        #[cfg(feature = "dml-colors")]
510        {
511            let val = &self.accent6;
512            val.write_element("a:accent6", writer)?;
513        }
514        #[cfg(feature = "extra-children")]
515        {
516            emit_idx += 1;
517        }
518        #[cfg(feature = "extra-children")]
519        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
520            extra_iter
521                .next()
522                .unwrap()
523                .node
524                .write_to(writer)
525                .map_err(SerializeError::from)?;
526        }
527        #[cfg(feature = "dml-colors")]
528        {
529            let val = &self.hlink;
530            val.write_element("a:hlink", writer)?;
531        }
532        #[cfg(feature = "extra-children")]
533        {
534            emit_idx += 1;
535        }
536        #[cfg(feature = "extra-children")]
537        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
538            extra_iter
539                .next()
540                .unwrap()
541                .node
542                .write_to(writer)
543                .map_err(SerializeError::from)?;
544        }
545        #[cfg(feature = "dml-colors")]
546        {
547            let val = &self.fol_hlink;
548            val.write_element("a:folHlink", writer)?;
549        }
550        #[cfg(feature = "extra-children")]
551        {
552            emit_idx += 1;
553        }
554        #[cfg(feature = "extra-children")]
555        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
556            extra_iter
557                .next()
558                .unwrap()
559                .node
560                .write_to(writer)
561                .map_err(SerializeError::from)?;
562        }
563        #[cfg(feature = "dml-extensions")]
564        if let Some(ref val) = self.ext_lst {
565            val.write_element("a:extLst", writer)?;
566        }
567        #[cfg(feature = "extra-children")]
568        {
569            emit_idx += 1;
570        }
571        #[cfg(feature = "extra-children")]
572        for extra in extra_iter {
573            extra.node.write_to(writer).map_err(SerializeError::from)?;
574        }
575        Ok(())
576    }
577
578    fn is_empty_element(&self) -> bool {
579        #[cfg(feature = "dml-colors")]
580        return false;
581        #[cfg(feature = "dml-colors")]
582        return false;
583        #[cfg(feature = "dml-colors")]
584        return false;
585        #[cfg(feature = "dml-colors")]
586        return false;
587        #[cfg(feature = "dml-colors")]
588        return false;
589        #[cfg(feature = "dml-colors")]
590        return false;
591        #[cfg(feature = "dml-colors")]
592        return false;
593        #[cfg(feature = "dml-colors")]
594        return false;
595        #[cfg(feature = "dml-colors")]
596        return false;
597        #[cfg(feature = "dml-colors")]
598        return false;
599        #[cfg(feature = "dml-colors")]
600        return false;
601        #[cfg(feature = "dml-colors")]
602        return false;
603        #[cfg(feature = "dml-extensions")]
604        if self.ext_lst.is_some() {
605            return false;
606        }
607        #[cfg(feature = "extra-children")]
608        if !self.extra_children.is_empty() {
609            return false;
610        }
611        true
612    }
613}
614
615impl ToXml for CTCustomColor {
616    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
617        #[allow(unused_mut)]
618        let mut start = start;
619        if let Some(ref val) = self.name {
620            start.push_attribute(("name", val.as_str()));
621        }
622        #[cfg(feature = "extra-attrs")]
623        for (key, value) in &self.extra_attrs {
624            start.push_attribute((key.as_str(), value.as_str()));
625        }
626        start
627    }
628
629    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
630        #[cfg(feature = "extra-children")]
631        let mut extra_iter = self.extra_children.iter().peekable();
632        #[cfg(feature = "extra-children")]
633        let mut emit_idx: usize = 0;
634        #[cfg(feature = "extra-children")]
635        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
636            extra_iter
637                .next()
638                .unwrap()
639                .node
640                .write_to(writer)
641                .map_err(SerializeError::from)?;
642        }
643        if let Some(ref val) = self.color_choice {
644            val.write_element("", writer)?;
645        }
646        #[cfg(feature = "extra-children")]
647        {
648            emit_idx += 1;
649        }
650        #[cfg(feature = "extra-children")]
651        for extra in extra_iter {
652            extra.node.write_to(writer).map_err(SerializeError::from)?;
653        }
654        Ok(())
655    }
656
657    fn is_empty_element(&self) -> bool {
658        false
659    }
660}
661
662impl ToXml for CTSupplementalFont {
663    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
664        #[allow(unused_mut)]
665        let mut start = start;
666        {
667            let val = &self.script;
668            start.push_attribute(("script", val.as_str()));
669        }
670        {
671            let val = &self.typeface;
672            start.push_attribute(("typeface", val.as_str()));
673        }
674        #[cfg(feature = "extra-attrs")]
675        for (key, value) in &self.extra_attrs {
676            start.push_attribute((key.as_str(), value.as_str()));
677        }
678        start
679    }
680
681    fn is_empty_element(&self) -> bool {
682        true
683    }
684}
685
686impl ToXml for CTCustomColorList {
687    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
688        #[cfg(feature = "extra-children")]
689        let mut extra_iter = self.extra_children.iter().peekable();
690        #[cfg(feature = "extra-children")]
691        let mut emit_idx: usize = 0;
692        for item in &self.cust_clr {
693            #[cfg(feature = "extra-children")]
694            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
695                extra_iter
696                    .next()
697                    .unwrap()
698                    .node
699                    .write_to(writer)
700                    .map_err(SerializeError::from)?;
701            }
702            item.write_element("a:custClr", writer)?;
703            #[cfg(feature = "extra-children")]
704            {
705                emit_idx += 1;
706            }
707        }
708        #[cfg(feature = "extra-children")]
709        for extra in extra_iter {
710            extra.node.write_to(writer).map_err(SerializeError::from)?;
711        }
712        Ok(())
713    }
714
715    fn is_empty_element(&self) -> bool {
716        if !self.cust_clr.is_empty() {
717            return false;
718        }
719        #[cfg(feature = "extra-children")]
720        if !self.extra_children.is_empty() {
721            return false;
722        }
723        true
724    }
725}
726
727impl ToXml for CTFontCollection {
728    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
729        #[cfg(feature = "extra-children")]
730        let mut extra_iter = self.extra_children.iter().peekable();
731        #[cfg(feature = "extra-children")]
732        let mut emit_idx: usize = 0;
733        #[cfg(feature = "extra-children")]
734        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
735            extra_iter
736                .next()
737                .unwrap()
738                .node
739                .write_to(writer)
740                .map_err(SerializeError::from)?;
741        }
742        {
743            let val = &self.latin;
744            val.write_element("a:latin", writer)?;
745        }
746        #[cfg(feature = "extra-children")]
747        {
748            emit_idx += 1;
749        }
750        #[cfg(feature = "extra-children")]
751        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
752            extra_iter
753                .next()
754                .unwrap()
755                .node
756                .write_to(writer)
757                .map_err(SerializeError::from)?;
758        }
759        {
760            let val = &self.ea;
761            val.write_element("a:ea", writer)?;
762        }
763        #[cfg(feature = "extra-children")]
764        {
765            emit_idx += 1;
766        }
767        #[cfg(feature = "extra-children")]
768        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
769            extra_iter
770                .next()
771                .unwrap()
772                .node
773                .write_to(writer)
774                .map_err(SerializeError::from)?;
775        }
776        {
777            let val = &self.cs;
778            val.write_element("a:cs", writer)?;
779        }
780        #[cfg(feature = "extra-children")]
781        {
782            emit_idx += 1;
783        }
784        for item in &self.font {
785            #[cfg(feature = "extra-children")]
786            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
787                extra_iter
788                    .next()
789                    .unwrap()
790                    .node
791                    .write_to(writer)
792                    .map_err(SerializeError::from)?;
793            }
794            item.write_element("a:font", writer)?;
795            #[cfg(feature = "extra-children")]
796            {
797                emit_idx += 1;
798            }
799        }
800        #[cfg(feature = "extra-children")]
801        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
802            extra_iter
803                .next()
804                .unwrap()
805                .node
806                .write_to(writer)
807                .map_err(SerializeError::from)?;
808        }
809        if let Some(ref val) = self.ext_lst {
810            val.write_element("a:extLst", writer)?;
811        }
812        #[cfg(feature = "extra-children")]
813        {
814            emit_idx += 1;
815        }
816        #[cfg(feature = "extra-children")]
817        for extra in extra_iter {
818            extra.node.write_to(writer).map_err(SerializeError::from)?;
819        }
820        Ok(())
821    }
822
823    fn is_empty_element(&self) -> bool {
824        false
825    }
826}
827
828impl ToXml for CTEffectStyleItem {
829    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
830        #[cfg(feature = "extra-children")]
831        let mut extra_iter = self.extra_children.iter().peekable();
832        #[cfg(feature = "extra-children")]
833        let mut emit_idx: usize = 0;
834        #[cfg(feature = "extra-children")]
835        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
836            extra_iter
837                .next()
838                .unwrap()
839                .node
840                .write_to(writer)
841                .map_err(SerializeError::from)?;
842        }
843        if let Some(ref val) = self.effect_properties {
844            val.write_element("", writer)?;
845        }
846        #[cfg(feature = "extra-children")]
847        {
848            emit_idx += 1;
849        }
850        #[cfg(feature = "extra-children")]
851        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
852            extra_iter
853                .next()
854                .unwrap()
855                .node
856                .write_to(writer)
857                .map_err(SerializeError::from)?;
858        }
859        if let Some(ref val) = self.scene3d {
860            val.write_element("a:scene3d", writer)?;
861        }
862        #[cfg(feature = "extra-children")]
863        {
864            emit_idx += 1;
865        }
866        #[cfg(feature = "extra-children")]
867        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
868            extra_iter
869                .next()
870                .unwrap()
871                .node
872                .write_to(writer)
873                .map_err(SerializeError::from)?;
874        }
875        if let Some(ref val) = self.sp3d {
876            val.write_element("a:sp3d", writer)?;
877        }
878        #[cfg(feature = "extra-children")]
879        {
880            emit_idx += 1;
881        }
882        #[cfg(feature = "extra-children")]
883        for extra in extra_iter {
884            extra.node.write_to(writer).map_err(SerializeError::from)?;
885        }
886        Ok(())
887    }
888
889    fn is_empty_element(&self) -> bool {
890        false
891    }
892}
893
894impl ToXml for FontScheme {
895    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
896        #[allow(unused_mut)]
897        let mut start = start;
898        #[cfg(feature = "dml-themes")]
899        {
900            let val = &self.name;
901            start.push_attribute(("name", val.as_str()));
902        }
903        #[cfg(feature = "extra-attrs")]
904        for (key, value) in &self.extra_attrs {
905            start.push_attribute((key.as_str(), value.as_str()));
906        }
907        start
908    }
909
910    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
911        #[cfg(feature = "extra-children")]
912        let mut extra_iter = self.extra_children.iter().peekable();
913        #[cfg(feature = "extra-children")]
914        let mut emit_idx: usize = 0;
915        #[cfg(feature = "extra-children")]
916        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
917            extra_iter
918                .next()
919                .unwrap()
920                .node
921                .write_to(writer)
922                .map_err(SerializeError::from)?;
923        }
924        #[cfg(feature = "dml-themes")]
925        {
926            let val = &self.major_font;
927            val.write_element("a:majorFont", writer)?;
928        }
929        #[cfg(feature = "extra-children")]
930        {
931            emit_idx += 1;
932        }
933        #[cfg(feature = "extra-children")]
934        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
935            extra_iter
936                .next()
937                .unwrap()
938                .node
939                .write_to(writer)
940                .map_err(SerializeError::from)?;
941        }
942        #[cfg(feature = "dml-themes")]
943        {
944            let val = &self.minor_font;
945            val.write_element("a:minorFont", writer)?;
946        }
947        #[cfg(feature = "extra-children")]
948        {
949            emit_idx += 1;
950        }
951        #[cfg(feature = "extra-children")]
952        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
953            extra_iter
954                .next()
955                .unwrap()
956                .node
957                .write_to(writer)
958                .map_err(SerializeError::from)?;
959        }
960        #[cfg(feature = "dml-extensions")]
961        if let Some(ref val) = self.ext_lst {
962            val.write_element("a:extLst", writer)?;
963        }
964        #[cfg(feature = "extra-children")]
965        {
966            emit_idx += 1;
967        }
968        #[cfg(feature = "extra-children")]
969        for extra in extra_iter {
970            extra.node.write_to(writer).map_err(SerializeError::from)?;
971        }
972        Ok(())
973    }
974
975    fn is_empty_element(&self) -> bool {
976        #[cfg(feature = "dml-themes")]
977        return false;
978        #[cfg(feature = "dml-themes")]
979        return false;
980        #[cfg(feature = "dml-extensions")]
981        if self.ext_lst.is_some() {
982            return false;
983        }
984        #[cfg(feature = "extra-children")]
985        if !self.extra_children.is_empty() {
986            return false;
987        }
988        true
989    }
990}
991
992impl ToXml for CTFillStyleList {
993    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
994        #[cfg(feature = "extra-children")]
995        let mut extra_iter = self.extra_children.iter().peekable();
996        #[cfg(feature = "extra-children")]
997        let mut emit_idx: usize = 0;
998        for item in &self.fill_properties {
999            #[cfg(feature = "extra-children")]
1000            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1001                extra_iter
1002                    .next()
1003                    .unwrap()
1004                    .node
1005                    .write_to(writer)
1006                    .map_err(SerializeError::from)?;
1007            }
1008            item.write_element("", writer)?;
1009            #[cfg(feature = "extra-children")]
1010            {
1011                emit_idx += 1;
1012            }
1013        }
1014        #[cfg(feature = "extra-children")]
1015        for extra in extra_iter {
1016            extra.node.write_to(writer).map_err(SerializeError::from)?;
1017        }
1018        Ok(())
1019    }
1020
1021    fn is_empty_element(&self) -> bool {
1022        if !self.fill_properties.is_empty() {
1023            return false;
1024        }
1025        #[cfg(feature = "extra-children")]
1026        if !self.extra_children.is_empty() {
1027            return false;
1028        }
1029        true
1030    }
1031}
1032
1033impl ToXml for CTLineStyleList {
1034    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
1035        #[cfg(feature = "extra-children")]
1036        let mut extra_iter = self.extra_children.iter().peekable();
1037        #[cfg(feature = "extra-children")]
1038        let mut emit_idx: usize = 0;
1039        for item in &self.line {
1040            #[cfg(feature = "extra-children")]
1041            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1042                extra_iter
1043                    .next()
1044                    .unwrap()
1045                    .node
1046                    .write_to(writer)
1047                    .map_err(SerializeError::from)?;
1048            }
1049            item.write_element("a:ln", writer)?;
1050            #[cfg(feature = "extra-children")]
1051            {
1052                emit_idx += 1;
1053            }
1054        }
1055        #[cfg(feature = "extra-children")]
1056        for extra in extra_iter {
1057            extra.node.write_to(writer).map_err(SerializeError::from)?;
1058        }
1059        Ok(())
1060    }
1061
1062    fn is_empty_element(&self) -> bool {
1063        if !self.line.is_empty() {
1064            return false;
1065        }
1066        #[cfg(feature = "extra-children")]
1067        if !self.extra_children.is_empty() {
1068            return false;
1069        }
1070        true
1071    }
1072}
1073
1074impl ToXml for CTEffectStyleList {
1075    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
1076        #[cfg(feature = "extra-children")]
1077        let mut extra_iter = self.extra_children.iter().peekable();
1078        #[cfg(feature = "extra-children")]
1079        let mut emit_idx: usize = 0;
1080        for item in &self.effect_style {
1081            #[cfg(feature = "extra-children")]
1082            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1083                extra_iter
1084                    .next()
1085                    .unwrap()
1086                    .node
1087                    .write_to(writer)
1088                    .map_err(SerializeError::from)?;
1089            }
1090            item.write_element("a:effectStyle", writer)?;
1091            #[cfg(feature = "extra-children")]
1092            {
1093                emit_idx += 1;
1094            }
1095        }
1096        #[cfg(feature = "extra-children")]
1097        for extra in extra_iter {
1098            extra.node.write_to(writer).map_err(SerializeError::from)?;
1099        }
1100        Ok(())
1101    }
1102
1103    fn is_empty_element(&self) -> bool {
1104        if !self.effect_style.is_empty() {
1105            return false;
1106        }
1107        #[cfg(feature = "extra-children")]
1108        if !self.extra_children.is_empty() {
1109            return false;
1110        }
1111        true
1112    }
1113}
1114
1115impl ToXml for CTBackgroundFillStyleList {
1116    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
1117        #[cfg(feature = "extra-children")]
1118        let mut extra_iter = self.extra_children.iter().peekable();
1119        #[cfg(feature = "extra-children")]
1120        let mut emit_idx: usize = 0;
1121        for item in &self.fill_properties {
1122            #[cfg(feature = "extra-children")]
1123            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1124                extra_iter
1125                    .next()
1126                    .unwrap()
1127                    .node
1128                    .write_to(writer)
1129                    .map_err(SerializeError::from)?;
1130            }
1131            item.write_element("", writer)?;
1132            #[cfg(feature = "extra-children")]
1133            {
1134                emit_idx += 1;
1135            }
1136        }
1137        #[cfg(feature = "extra-children")]
1138        for extra in extra_iter {
1139            extra.node.write_to(writer).map_err(SerializeError::from)?;
1140        }
1141        Ok(())
1142    }
1143
1144    fn is_empty_element(&self) -> bool {
1145        if !self.fill_properties.is_empty() {
1146            return false;
1147        }
1148        #[cfg(feature = "extra-children")]
1149        if !self.extra_children.is_empty() {
1150            return false;
1151        }
1152        true
1153    }
1154}
1155
1156impl ToXml for CTStyleMatrix {
1157    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1158        #[allow(unused_mut)]
1159        let mut start = start;
1160        #[cfg(feature = "dml-themes")]
1161        if let Some(ref val) = self.name {
1162            start.push_attribute(("name", val.as_str()));
1163        }
1164        #[cfg(feature = "extra-attrs")]
1165        for (key, value) in &self.extra_attrs {
1166            start.push_attribute((key.as_str(), value.as_str()));
1167        }
1168        start
1169    }
1170
1171    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
1172        #[cfg(feature = "extra-children")]
1173        let mut extra_iter = self.extra_children.iter().peekable();
1174        #[cfg(feature = "extra-children")]
1175        let mut emit_idx: usize = 0;
1176        #[cfg(feature = "extra-children")]
1177        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1178            extra_iter
1179                .next()
1180                .unwrap()
1181                .node
1182                .write_to(writer)
1183                .map_err(SerializeError::from)?;
1184        }
1185        #[cfg(feature = "dml-themes")]
1186        {
1187            let val = &self.fill_style_lst;
1188            val.write_element("a:fillStyleLst", writer)?;
1189        }
1190        #[cfg(feature = "extra-children")]
1191        {
1192            emit_idx += 1;
1193        }
1194        #[cfg(feature = "extra-children")]
1195        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1196            extra_iter
1197                .next()
1198                .unwrap()
1199                .node
1200                .write_to(writer)
1201                .map_err(SerializeError::from)?;
1202        }
1203        #[cfg(feature = "dml-themes")]
1204        {
1205            let val = &self.ln_style_lst;
1206            val.write_element("a:lnStyleLst", writer)?;
1207        }
1208        #[cfg(feature = "extra-children")]
1209        {
1210            emit_idx += 1;
1211        }
1212        #[cfg(feature = "extra-children")]
1213        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1214            extra_iter
1215                .next()
1216                .unwrap()
1217                .node
1218                .write_to(writer)
1219                .map_err(SerializeError::from)?;
1220        }
1221        #[cfg(feature = "dml-themes")]
1222        {
1223            let val = &self.effect_style_lst;
1224            val.write_element("a:effectStyleLst", writer)?;
1225        }
1226        #[cfg(feature = "extra-children")]
1227        {
1228            emit_idx += 1;
1229        }
1230        #[cfg(feature = "extra-children")]
1231        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1232            extra_iter
1233                .next()
1234                .unwrap()
1235                .node
1236                .write_to(writer)
1237                .map_err(SerializeError::from)?;
1238        }
1239        #[cfg(feature = "dml-themes")]
1240        {
1241            let val = &self.bg_fill_style_lst;
1242            val.write_element("a:bgFillStyleLst", writer)?;
1243        }
1244        #[cfg(feature = "extra-children")]
1245        {
1246            emit_idx += 1;
1247        }
1248        #[cfg(feature = "extra-children")]
1249        for extra in extra_iter {
1250            extra.node.write_to(writer).map_err(SerializeError::from)?;
1251        }
1252        Ok(())
1253    }
1254
1255    fn is_empty_element(&self) -> bool {
1256        #[cfg(feature = "dml-themes")]
1257        return false;
1258        #[cfg(feature = "dml-themes")]
1259        return false;
1260        #[cfg(feature = "dml-themes")]
1261        return false;
1262        #[cfg(feature = "dml-themes")]
1263        return false;
1264        #[cfg(feature = "extra-children")]
1265        if !self.extra_children.is_empty() {
1266            return false;
1267        }
1268        true
1269    }
1270}
1271
1272impl ToXml for CTBaseStyles {
1273    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
1274        #[cfg(feature = "extra-children")]
1275        let mut extra_iter = self.extra_children.iter().peekable();
1276        #[cfg(feature = "extra-children")]
1277        let mut emit_idx: usize = 0;
1278        #[cfg(feature = "extra-children")]
1279        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1280            extra_iter
1281                .next()
1282                .unwrap()
1283                .node
1284                .write_to(writer)
1285                .map_err(SerializeError::from)?;
1286        }
1287        #[cfg(feature = "dml-colors")]
1288        {
1289            let val = &self.clr_scheme;
1290            val.write_element("a:clrScheme", writer)?;
1291        }
1292        #[cfg(feature = "extra-children")]
1293        {
1294            emit_idx += 1;
1295        }
1296        #[cfg(feature = "extra-children")]
1297        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1298            extra_iter
1299                .next()
1300                .unwrap()
1301                .node
1302                .write_to(writer)
1303                .map_err(SerializeError::from)?;
1304        }
1305        #[cfg(feature = "dml-themes")]
1306        {
1307            let val = &self.font_scheme;
1308            val.write_element("a:fontScheme", writer)?;
1309        }
1310        #[cfg(feature = "extra-children")]
1311        {
1312            emit_idx += 1;
1313        }
1314        #[cfg(feature = "extra-children")]
1315        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1316            extra_iter
1317                .next()
1318                .unwrap()
1319                .node
1320                .write_to(writer)
1321                .map_err(SerializeError::from)?;
1322        }
1323        #[cfg(feature = "dml-themes")]
1324        {
1325            let val = &self.fmt_scheme;
1326            val.write_element("a:fmtScheme", writer)?;
1327        }
1328        #[cfg(feature = "extra-children")]
1329        {
1330            emit_idx += 1;
1331        }
1332        #[cfg(feature = "extra-children")]
1333        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1334            extra_iter
1335                .next()
1336                .unwrap()
1337                .node
1338                .write_to(writer)
1339                .map_err(SerializeError::from)?;
1340        }
1341        #[cfg(feature = "dml-extensions")]
1342        if let Some(ref val) = self.ext_lst {
1343            val.write_element("a:extLst", writer)?;
1344        }
1345        #[cfg(feature = "extra-children")]
1346        {
1347            emit_idx += 1;
1348        }
1349        #[cfg(feature = "extra-children")]
1350        for extra in extra_iter {
1351            extra.node.write_to(writer).map_err(SerializeError::from)?;
1352        }
1353        Ok(())
1354    }
1355
1356    fn is_empty_element(&self) -> bool {
1357        #[cfg(feature = "dml-colors")]
1358        return false;
1359        #[cfg(feature = "dml-themes")]
1360        return false;
1361        #[cfg(feature = "dml-themes")]
1362        return false;
1363        #[cfg(feature = "dml-extensions")]
1364        if self.ext_lst.is_some() {
1365            return false;
1366        }
1367        #[cfg(feature = "extra-children")]
1368        if !self.extra_children.is_empty() {
1369            return false;
1370        }
1371        true
1372    }
1373}
1374
1375impl ToXml for CTOfficeArtExtension {
1376    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1377        #[allow(unused_mut)]
1378        let mut start = start;
1379        {
1380            let val = &self.uri;
1381            start.push_attribute(("uri", val.as_str()));
1382        }
1383        #[cfg(feature = "extra-attrs")]
1384        for (key, value) in &self.extra_attrs {
1385            start.push_attribute((key.as_str(), value.as_str()));
1386        }
1387        start
1388    }
1389
1390    fn is_empty_element(&self) -> bool {
1391        true
1392    }
1393}
1394
1395impl ToXml for CTAngle {
1396    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1397        #[allow(unused_mut)]
1398        let mut start = start;
1399        {
1400            let val = &self.value;
1401            {
1402                let s = val.to_string();
1403                start.push_attribute(("val", s.as_str()));
1404            }
1405        }
1406        #[cfg(feature = "extra-attrs")]
1407        for (key, value) in &self.extra_attrs {
1408            start.push_attribute((key.as_str(), value.as_str()));
1409        }
1410        start
1411    }
1412
1413    fn is_empty_element(&self) -> bool {
1414        true
1415    }
1416}
1417
1418impl ToXml for CTPositiveFixedAngle {
1419    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1420        #[allow(unused_mut)]
1421        let mut start = start;
1422        {
1423            let val = &self.value;
1424            {
1425                let s = val.to_string();
1426                start.push_attribute(("val", s.as_str()));
1427            }
1428        }
1429        #[cfg(feature = "extra-attrs")]
1430        for (key, value) in &self.extra_attrs {
1431            start.push_attribute((key.as_str(), value.as_str()));
1432        }
1433        start
1434    }
1435
1436    fn is_empty_element(&self) -> bool {
1437        true
1438    }
1439}
1440
1441impl ToXml for CTPercentage {
1442    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1443        #[allow(unused_mut)]
1444        let mut start = start;
1445        {
1446            let val = &self.value;
1447            {
1448                let s = val.to_string();
1449                start.push_attribute(("val", s.as_str()));
1450            }
1451        }
1452        #[cfg(feature = "extra-attrs")]
1453        for (key, value) in &self.extra_attrs {
1454            start.push_attribute((key.as_str(), value.as_str()));
1455        }
1456        start
1457    }
1458
1459    fn is_empty_element(&self) -> bool {
1460        true
1461    }
1462}
1463
1464impl ToXml for PositivePercentageElement {
1465    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1466        #[allow(unused_mut)]
1467        let mut start = start;
1468        {
1469            let val = &self.value;
1470            {
1471                let s = val.to_string();
1472                start.push_attribute(("val", s.as_str()));
1473            }
1474        }
1475        #[cfg(feature = "extra-attrs")]
1476        for (key, value) in &self.extra_attrs {
1477            start.push_attribute((key.as_str(), value.as_str()));
1478        }
1479        start
1480    }
1481
1482    fn is_empty_element(&self) -> bool {
1483        true
1484    }
1485}
1486
1487impl ToXml for FixedPercentageElement {
1488    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1489        #[allow(unused_mut)]
1490        let mut start = start;
1491        {
1492            let val = &self.value;
1493            {
1494                let s = val.to_string();
1495                start.push_attribute(("val", s.as_str()));
1496            }
1497        }
1498        #[cfg(feature = "extra-attrs")]
1499        for (key, value) in &self.extra_attrs {
1500            start.push_attribute((key.as_str(), value.as_str()));
1501        }
1502        start
1503    }
1504
1505    fn is_empty_element(&self) -> bool {
1506        true
1507    }
1508}
1509
1510impl ToXml for PositiveFixedPercentageElement {
1511    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1512        #[allow(unused_mut)]
1513        let mut start = start;
1514        {
1515            let val = &self.value;
1516            {
1517                let s = val.to_string();
1518                start.push_attribute(("val", s.as_str()));
1519            }
1520        }
1521        #[cfg(feature = "extra-attrs")]
1522        for (key, value) in &self.extra_attrs {
1523            start.push_attribute((key.as_str(), value.as_str()));
1524        }
1525        start
1526    }
1527
1528    fn is_empty_element(&self) -> bool {
1529        true
1530    }
1531}
1532
1533impl ToXml for CTRatio {
1534    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1535        #[allow(unused_mut)]
1536        let mut start = start;
1537        {
1538            let val = &self.n;
1539            {
1540                let s = val.to_string();
1541                start.push_attribute(("n", s.as_str()));
1542            }
1543        }
1544        {
1545            let val = &self.d;
1546            {
1547                let s = val.to_string();
1548                start.push_attribute(("d", s.as_str()));
1549            }
1550        }
1551        #[cfg(feature = "extra-attrs")]
1552        for (key, value) in &self.extra_attrs {
1553            start.push_attribute((key.as_str(), value.as_str()));
1554        }
1555        start
1556    }
1557
1558    fn is_empty_element(&self) -> bool {
1559        true
1560    }
1561}
1562
1563impl ToXml for Point2D {
1564    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1565        #[allow(unused_mut)]
1566        let mut start = start;
1567        {
1568            let val = &self.x;
1569            {
1570                let s = val.to_string();
1571                start.push_attribute(("x", s.as_str()));
1572            }
1573        }
1574        {
1575            let val = &self.y;
1576            {
1577                let s = val.to_string();
1578                start.push_attribute(("y", s.as_str()));
1579            }
1580        }
1581        #[cfg(feature = "extra-attrs")]
1582        for (key, value) in &self.extra_attrs {
1583            start.push_attribute((key.as_str(), value.as_str()));
1584        }
1585        start
1586    }
1587
1588    fn is_empty_element(&self) -> bool {
1589        true
1590    }
1591}
1592
1593impl ToXml for PositiveSize2D {
1594    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1595        #[allow(unused_mut)]
1596        let mut start = start;
1597        {
1598            let val = &self.cx;
1599            {
1600                let s = val.to_string();
1601                start.push_attribute(("cx", s.as_str()));
1602            }
1603        }
1604        {
1605            let val = &self.cy;
1606            {
1607                let s = val.to_string();
1608                start.push_attribute(("cy", s.as_str()));
1609            }
1610        }
1611        #[cfg(feature = "extra-attrs")]
1612        for (key, value) in &self.extra_attrs {
1613            start.push_attribute((key.as_str(), value.as_str()));
1614        }
1615        start
1616    }
1617
1618    fn is_empty_element(&self) -> bool {
1619        true
1620    }
1621}
1622
1623impl ToXml for CTComplementTransform {
1624    fn is_empty_element(&self) -> bool {
1625        true
1626    }
1627}
1628
1629impl ToXml for CTInverseTransform {
1630    fn is_empty_element(&self) -> bool {
1631        true
1632    }
1633}
1634
1635impl ToXml for CTGrayscaleTransform {
1636    fn is_empty_element(&self) -> bool {
1637        true
1638    }
1639}
1640
1641impl ToXml for CTGammaTransform {
1642    fn is_empty_element(&self) -> bool {
1643        true
1644    }
1645}
1646
1647impl ToXml for CTInverseGammaTransform {
1648    fn is_empty_element(&self) -> bool {
1649        true
1650    }
1651}
1652
1653impl ToXml for EGColorTransform {
1654    fn write_element<W: Write>(
1655        &self,
1656        _tag: &str,
1657        writer: &mut Writer<W>,
1658    ) -> Result<(), SerializeError> {
1659        match self {
1660            Self::Tint(inner) => inner.write_element("a:tint", writer)?,
1661            Self::Shade(inner) => inner.write_element("a:shade", writer)?,
1662            Self::Comp(inner) => inner.write_element("a:comp", writer)?,
1663            Self::Inv(inner) => inner.write_element("a:inv", writer)?,
1664            Self::Gray(inner) => inner.write_element("a:gray", writer)?,
1665            Self::Alpha(inner) => inner.write_element("a:alpha", writer)?,
1666            Self::AlphaOff(inner) => inner.write_element("a:alphaOff", writer)?,
1667            Self::AlphaMod(inner) => inner.write_element("a:alphaMod", writer)?,
1668            Self::Hue(inner) => inner.write_element("a:hue", writer)?,
1669            Self::HueOff(inner) => inner.write_element("a:hueOff", writer)?,
1670            Self::HueMod(inner) => inner.write_element("a:hueMod", writer)?,
1671            Self::Sat(inner) => inner.write_element("a:sat", writer)?,
1672            Self::SatOff(inner) => inner.write_element("a:satOff", writer)?,
1673            Self::SatMod(inner) => inner.write_element("a:satMod", writer)?,
1674            Self::Lum(inner) => inner.write_element("a:lum", writer)?,
1675            Self::LumOff(inner) => inner.write_element("a:lumOff", writer)?,
1676            Self::LumMod(inner) => inner.write_element("a:lumMod", writer)?,
1677            Self::Red(inner) => inner.write_element("a:red", writer)?,
1678            Self::RedOff(inner) => inner.write_element("a:redOff", writer)?,
1679            Self::RedMod(inner) => inner.write_element("a:redMod", writer)?,
1680            Self::Green(inner) => inner.write_element("a:green", writer)?,
1681            Self::GreenOff(inner) => inner.write_element("a:greenOff", writer)?,
1682            Self::GreenMod(inner) => inner.write_element("a:greenMod", writer)?,
1683            Self::Blue(inner) => inner.write_element("a:blue", writer)?,
1684            Self::BlueOff(inner) => inner.write_element("a:blueOff", writer)?,
1685            Self::BlueMod(inner) => inner.write_element("a:blueMod", writer)?,
1686            Self::Gamma(inner) => inner.write_element("a:gamma", writer)?,
1687            Self::InvGamma(inner) => inner.write_element("a:invGamma", writer)?,
1688        }
1689        Ok(())
1690    }
1691}
1692
1693impl ToXml for CTScRgbColor {
1694    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1695        #[allow(unused_mut)]
1696        let mut start = start;
1697        {
1698            let val = &self.relationship_id;
1699            {
1700                let s = val.to_string();
1701                start.push_attribute(("r", s.as_str()));
1702            }
1703        }
1704        {
1705            let val = &self.g;
1706            {
1707                let s = val.to_string();
1708                start.push_attribute(("g", s.as_str()));
1709            }
1710        }
1711        {
1712            let val = &self.b;
1713            {
1714                let s = val.to_string();
1715                start.push_attribute(("b", s.as_str()));
1716            }
1717        }
1718        #[cfg(feature = "extra-attrs")]
1719        for (key, value) in &self.extra_attrs {
1720            start.push_attribute((key.as_str(), value.as_str()));
1721        }
1722        start
1723    }
1724
1725    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
1726        #[cfg(feature = "extra-children")]
1727        let mut extra_iter = self.extra_children.iter().peekable();
1728        #[cfg(feature = "extra-children")]
1729        let mut emit_idx: usize = 0;
1730        for item in &self.color_transform {
1731            #[cfg(feature = "extra-children")]
1732            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1733                extra_iter
1734                    .next()
1735                    .unwrap()
1736                    .node
1737                    .write_to(writer)
1738                    .map_err(SerializeError::from)?;
1739            }
1740            item.write_element("", writer)?;
1741            #[cfg(feature = "extra-children")]
1742            {
1743                emit_idx += 1;
1744            }
1745        }
1746        #[cfg(feature = "extra-children")]
1747        for extra in extra_iter {
1748            extra.node.write_to(writer).map_err(SerializeError::from)?;
1749        }
1750        Ok(())
1751    }
1752
1753    fn is_empty_element(&self) -> bool {
1754        if !self.color_transform.is_empty() {
1755            return false;
1756        }
1757        #[cfg(feature = "extra-children")]
1758        if !self.extra_children.is_empty() {
1759            return false;
1760        }
1761        true
1762    }
1763}
1764
1765impl ToXml for SrgbColor {
1766    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1767        #[allow(unused_mut)]
1768        let mut start = start;
1769        #[cfg(feature = "dml-colors")]
1770        {
1771            let val = &self.value;
1772            {
1773                let hex = encode_hex(val);
1774                start.push_attribute(("val", hex.as_str()));
1775            }
1776        }
1777        #[cfg(feature = "extra-attrs")]
1778        for (key, value) in &self.extra_attrs {
1779            start.push_attribute((key.as_str(), value.as_str()));
1780        }
1781        start
1782    }
1783
1784    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
1785        #[cfg(feature = "extra-children")]
1786        let mut extra_iter = self.extra_children.iter().peekable();
1787        #[cfg(feature = "extra-children")]
1788        let mut emit_idx: usize = 0;
1789        for item in &self.color_transform {
1790            #[cfg(feature = "extra-children")]
1791            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1792                extra_iter
1793                    .next()
1794                    .unwrap()
1795                    .node
1796                    .write_to(writer)
1797                    .map_err(SerializeError::from)?;
1798            }
1799            item.write_element("", writer)?;
1800            #[cfg(feature = "extra-children")]
1801            {
1802                emit_idx += 1;
1803            }
1804        }
1805        #[cfg(feature = "extra-children")]
1806        for extra in extra_iter {
1807            extra.node.write_to(writer).map_err(SerializeError::from)?;
1808        }
1809        Ok(())
1810    }
1811
1812    fn is_empty_element(&self) -> bool {
1813        if !self.color_transform.is_empty() {
1814            return false;
1815        }
1816        #[cfg(feature = "extra-children")]
1817        if !self.extra_children.is_empty() {
1818            return false;
1819        }
1820        true
1821    }
1822}
1823
1824impl ToXml for HslColor {
1825    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1826        #[allow(unused_mut)]
1827        let mut start = start;
1828        #[cfg(feature = "dml-colors")]
1829        {
1830            let val = &self.hue;
1831            {
1832                let s = val.to_string();
1833                start.push_attribute(("hue", s.as_str()));
1834            }
1835        }
1836        #[cfg(feature = "dml-colors")]
1837        {
1838            let val = &self.sat;
1839            {
1840                let s = val.to_string();
1841                start.push_attribute(("sat", s.as_str()));
1842            }
1843        }
1844        #[cfg(feature = "dml-colors")]
1845        {
1846            let val = &self.lum;
1847            {
1848                let s = val.to_string();
1849                start.push_attribute(("lum", s.as_str()));
1850            }
1851        }
1852        #[cfg(feature = "extra-attrs")]
1853        for (key, value) in &self.extra_attrs {
1854            start.push_attribute((key.as_str(), value.as_str()));
1855        }
1856        start
1857    }
1858
1859    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
1860        #[cfg(feature = "extra-children")]
1861        let mut extra_iter = self.extra_children.iter().peekable();
1862        #[cfg(feature = "extra-children")]
1863        let mut emit_idx: usize = 0;
1864        for item in &self.color_transform {
1865            #[cfg(feature = "extra-children")]
1866            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1867                extra_iter
1868                    .next()
1869                    .unwrap()
1870                    .node
1871                    .write_to(writer)
1872                    .map_err(SerializeError::from)?;
1873            }
1874            item.write_element("", writer)?;
1875            #[cfg(feature = "extra-children")]
1876            {
1877                emit_idx += 1;
1878            }
1879        }
1880        #[cfg(feature = "extra-children")]
1881        for extra in extra_iter {
1882            extra.node.write_to(writer).map_err(SerializeError::from)?;
1883        }
1884        Ok(())
1885    }
1886
1887    fn is_empty_element(&self) -> bool {
1888        if !self.color_transform.is_empty() {
1889            return false;
1890        }
1891        #[cfg(feature = "extra-children")]
1892        if !self.extra_children.is_empty() {
1893            return false;
1894        }
1895        true
1896    }
1897}
1898
1899impl ToXml for SystemColor {
1900    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1901        #[allow(unused_mut)]
1902        let mut start = start;
1903        {
1904            let val = &self.value;
1905            {
1906                let s = val.to_string();
1907                start.push_attribute(("val", s.as_str()));
1908            }
1909        }
1910        if let Some(ref val) = self.last_clr {
1911            {
1912                let hex = encode_hex(val);
1913                start.push_attribute(("lastClr", hex.as_str()));
1914            }
1915        }
1916        #[cfg(feature = "extra-attrs")]
1917        for (key, value) in &self.extra_attrs {
1918            start.push_attribute((key.as_str(), value.as_str()));
1919        }
1920        start
1921    }
1922
1923    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
1924        #[cfg(feature = "extra-children")]
1925        let mut extra_iter = self.extra_children.iter().peekable();
1926        #[cfg(feature = "extra-children")]
1927        let mut emit_idx: usize = 0;
1928        for item in &self.color_transform {
1929            #[cfg(feature = "extra-children")]
1930            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1931                extra_iter
1932                    .next()
1933                    .unwrap()
1934                    .node
1935                    .write_to(writer)
1936                    .map_err(SerializeError::from)?;
1937            }
1938            item.write_element("", writer)?;
1939            #[cfg(feature = "extra-children")]
1940            {
1941                emit_idx += 1;
1942            }
1943        }
1944        #[cfg(feature = "extra-children")]
1945        for extra in extra_iter {
1946            extra.node.write_to(writer).map_err(SerializeError::from)?;
1947        }
1948        Ok(())
1949    }
1950
1951    fn is_empty_element(&self) -> bool {
1952        if !self.color_transform.is_empty() {
1953            return false;
1954        }
1955        #[cfg(feature = "extra-children")]
1956        if !self.extra_children.is_empty() {
1957            return false;
1958        }
1959        true
1960    }
1961}
1962
1963impl ToXml for SchemeColor {
1964    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
1965        #[allow(unused_mut)]
1966        let mut start = start;
1967        #[cfg(feature = "dml-colors")]
1968        {
1969            let val = &self.value;
1970            {
1971                let s = val.to_string();
1972                start.push_attribute(("val", s.as_str()));
1973            }
1974        }
1975        #[cfg(feature = "extra-attrs")]
1976        for (key, value) in &self.extra_attrs {
1977            start.push_attribute((key.as_str(), value.as_str()));
1978        }
1979        start
1980    }
1981
1982    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
1983        #[cfg(feature = "extra-children")]
1984        let mut extra_iter = self.extra_children.iter().peekable();
1985        #[cfg(feature = "extra-children")]
1986        let mut emit_idx: usize = 0;
1987        for item in &self.color_transform {
1988            #[cfg(feature = "extra-children")]
1989            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
1990                extra_iter
1991                    .next()
1992                    .unwrap()
1993                    .node
1994                    .write_to(writer)
1995                    .map_err(SerializeError::from)?;
1996            }
1997            item.write_element("", writer)?;
1998            #[cfg(feature = "extra-children")]
1999            {
2000                emit_idx += 1;
2001            }
2002        }
2003        #[cfg(feature = "extra-children")]
2004        for extra in extra_iter {
2005            extra.node.write_to(writer).map_err(SerializeError::from)?;
2006        }
2007        Ok(())
2008    }
2009
2010    fn is_empty_element(&self) -> bool {
2011        if !self.color_transform.is_empty() {
2012            return false;
2013        }
2014        #[cfg(feature = "extra-children")]
2015        if !self.extra_children.is_empty() {
2016            return false;
2017        }
2018        true
2019    }
2020}
2021
2022impl ToXml for PresetColor {
2023    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2024        #[allow(unused_mut)]
2025        let mut start = start;
2026        {
2027            let val = &self.value;
2028            {
2029                let s = val.to_string();
2030                start.push_attribute(("val", s.as_str()));
2031            }
2032        }
2033        #[cfg(feature = "extra-attrs")]
2034        for (key, value) in &self.extra_attrs {
2035            start.push_attribute((key.as_str(), value.as_str()));
2036        }
2037        start
2038    }
2039
2040    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2041        #[cfg(feature = "extra-children")]
2042        let mut extra_iter = self.extra_children.iter().peekable();
2043        #[cfg(feature = "extra-children")]
2044        let mut emit_idx: usize = 0;
2045        for item in &self.color_transform {
2046            #[cfg(feature = "extra-children")]
2047            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2048                extra_iter
2049                    .next()
2050                    .unwrap()
2051                    .node
2052                    .write_to(writer)
2053                    .map_err(SerializeError::from)?;
2054            }
2055            item.write_element("", writer)?;
2056            #[cfg(feature = "extra-children")]
2057            {
2058                emit_idx += 1;
2059            }
2060        }
2061        #[cfg(feature = "extra-children")]
2062        for extra in extra_iter {
2063            extra.node.write_to(writer).map_err(SerializeError::from)?;
2064        }
2065        Ok(())
2066    }
2067
2068    fn is_empty_element(&self) -> bool {
2069        if !self.color_transform.is_empty() {
2070            return false;
2071        }
2072        #[cfg(feature = "extra-children")]
2073        if !self.extra_children.is_empty() {
2074            return false;
2075        }
2076        true
2077    }
2078}
2079
2080impl ToXml for EGOfficeArtExtensionList {
2081    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2082        #[cfg(feature = "extra-children")]
2083        let mut extra_iter = self.extra_children.iter().peekable();
2084        #[cfg(feature = "extra-children")]
2085        let mut emit_idx: usize = 0;
2086        for item in &self.extents {
2087            #[cfg(feature = "extra-children")]
2088            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2089                extra_iter
2090                    .next()
2091                    .unwrap()
2092                    .node
2093                    .write_to(writer)
2094                    .map_err(SerializeError::from)?;
2095            }
2096            item.write_element("a:ext", writer)?;
2097            #[cfg(feature = "extra-children")]
2098            {
2099                emit_idx += 1;
2100            }
2101        }
2102        #[cfg(feature = "extra-children")]
2103        for extra in extra_iter {
2104            extra.node.write_to(writer).map_err(SerializeError::from)?;
2105        }
2106        Ok(())
2107    }
2108
2109    fn is_empty_element(&self) -> bool {
2110        if !self.extents.is_empty() {
2111            return false;
2112        }
2113        #[cfg(feature = "extra-children")]
2114        if !self.extra_children.is_empty() {
2115            return false;
2116        }
2117        true
2118    }
2119}
2120
2121impl ToXml for CTOfficeArtExtensionList {
2122    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2123        #[cfg(feature = "extra-children")]
2124        let mut extra_iter = self.extra_children.iter().peekable();
2125        #[cfg(feature = "extra-children")]
2126        let mut emit_idx: usize = 0;
2127        for item in &self.extents {
2128            #[cfg(feature = "extra-children")]
2129            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2130                extra_iter
2131                    .next()
2132                    .unwrap()
2133                    .node
2134                    .write_to(writer)
2135                    .map_err(SerializeError::from)?;
2136            }
2137            item.write_element("a:ext", writer)?;
2138            #[cfg(feature = "extra-children")]
2139            {
2140                emit_idx += 1;
2141            }
2142        }
2143        #[cfg(feature = "extra-children")]
2144        for extra in extra_iter {
2145            extra.node.write_to(writer).map_err(SerializeError::from)?;
2146        }
2147        Ok(())
2148    }
2149
2150    fn is_empty_element(&self) -> bool {
2151        if !self.extents.is_empty() {
2152            return false;
2153        }
2154        #[cfg(feature = "extra-children")]
2155        if !self.extra_children.is_empty() {
2156            return false;
2157        }
2158        true
2159    }
2160}
2161
2162impl ToXml for CTScale2D {
2163    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2164        #[cfg(feature = "extra-children")]
2165        let mut extra_iter = self.extra_children.iter().peekable();
2166        #[cfg(feature = "extra-children")]
2167        let mut emit_idx: usize = 0;
2168        #[cfg(feature = "extra-children")]
2169        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2170            extra_iter
2171                .next()
2172                .unwrap()
2173                .node
2174                .write_to(writer)
2175                .map_err(SerializeError::from)?;
2176        }
2177        {
2178            let val = &self.sx;
2179            val.write_element("a:sx", writer)?;
2180        }
2181        #[cfg(feature = "extra-children")]
2182        {
2183            emit_idx += 1;
2184        }
2185        #[cfg(feature = "extra-children")]
2186        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2187            extra_iter
2188                .next()
2189                .unwrap()
2190                .node
2191                .write_to(writer)
2192                .map_err(SerializeError::from)?;
2193        }
2194        {
2195            let val = &self.sy;
2196            val.write_element("a:sy", writer)?;
2197        }
2198        #[cfg(feature = "extra-children")]
2199        {
2200            emit_idx += 1;
2201        }
2202        #[cfg(feature = "extra-children")]
2203        for extra in extra_iter {
2204            extra.node.write_to(writer).map_err(SerializeError::from)?;
2205        }
2206        Ok(())
2207    }
2208
2209    fn is_empty_element(&self) -> bool {
2210        false
2211    }
2212}
2213
2214impl ToXml for Transform2D {
2215    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2216        #[allow(unused_mut)]
2217        let mut start = start;
2218        if let Some(ref val) = self.rot {
2219            {
2220                let s = val.to_string();
2221                start.push_attribute(("rot", s.as_str()));
2222            }
2223        }
2224        if let Some(ref val) = self.flip_h {
2225            start.push_attribute(("flipH", if *val { "1" } else { "0" }));
2226        }
2227        if let Some(ref val) = self.flip_v {
2228            start.push_attribute(("flipV", if *val { "1" } else { "0" }));
2229        }
2230        #[cfg(feature = "extra-attrs")]
2231        for (key, value) in &self.extra_attrs {
2232            start.push_attribute((key.as_str(), value.as_str()));
2233        }
2234        start
2235    }
2236
2237    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2238        #[cfg(feature = "extra-children")]
2239        let mut extra_iter = self.extra_children.iter().peekable();
2240        #[cfg(feature = "extra-children")]
2241        let mut emit_idx: usize = 0;
2242        #[cfg(feature = "extra-children")]
2243        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2244            extra_iter
2245                .next()
2246                .unwrap()
2247                .node
2248                .write_to(writer)
2249                .map_err(SerializeError::from)?;
2250        }
2251        if let Some(ref val) = self.offset {
2252            val.write_element("a:off", writer)?;
2253        }
2254        #[cfg(feature = "extra-children")]
2255        {
2256            emit_idx += 1;
2257        }
2258        #[cfg(feature = "extra-children")]
2259        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2260            extra_iter
2261                .next()
2262                .unwrap()
2263                .node
2264                .write_to(writer)
2265                .map_err(SerializeError::from)?;
2266        }
2267        if let Some(ref val) = self.extents {
2268            val.write_element("a:ext", writer)?;
2269        }
2270        #[cfg(feature = "extra-children")]
2271        {
2272            emit_idx += 1;
2273        }
2274        #[cfg(feature = "extra-children")]
2275        for extra in extra_iter {
2276            extra.node.write_to(writer).map_err(SerializeError::from)?;
2277        }
2278        Ok(())
2279    }
2280
2281    fn is_empty_element(&self) -> bool {
2282        if self.offset.is_some() {
2283            return false;
2284        }
2285        if self.extents.is_some() {
2286            return false;
2287        }
2288        #[cfg(feature = "extra-children")]
2289        if !self.extra_children.is_empty() {
2290            return false;
2291        }
2292        true
2293    }
2294}
2295
2296impl ToXml for CTGroupTransform2D {
2297    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2298        #[allow(unused_mut)]
2299        let mut start = start;
2300        if let Some(ref val) = self.rot {
2301            {
2302                let s = val.to_string();
2303                start.push_attribute(("rot", s.as_str()));
2304            }
2305        }
2306        if let Some(ref val) = self.flip_h {
2307            start.push_attribute(("flipH", if *val { "1" } else { "0" }));
2308        }
2309        if let Some(ref val) = self.flip_v {
2310            start.push_attribute(("flipV", if *val { "1" } else { "0" }));
2311        }
2312        #[cfg(feature = "extra-attrs")]
2313        for (key, value) in &self.extra_attrs {
2314            start.push_attribute((key.as_str(), value.as_str()));
2315        }
2316        start
2317    }
2318
2319    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2320        #[cfg(feature = "extra-children")]
2321        let mut extra_iter = self.extra_children.iter().peekable();
2322        #[cfg(feature = "extra-children")]
2323        let mut emit_idx: usize = 0;
2324        #[cfg(feature = "extra-children")]
2325        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2326            extra_iter
2327                .next()
2328                .unwrap()
2329                .node
2330                .write_to(writer)
2331                .map_err(SerializeError::from)?;
2332        }
2333        if let Some(ref val) = self.offset {
2334            val.write_element("a:off", writer)?;
2335        }
2336        #[cfg(feature = "extra-children")]
2337        {
2338            emit_idx += 1;
2339        }
2340        #[cfg(feature = "extra-children")]
2341        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2342            extra_iter
2343                .next()
2344                .unwrap()
2345                .node
2346                .write_to(writer)
2347                .map_err(SerializeError::from)?;
2348        }
2349        if let Some(ref val) = self.extents {
2350            val.write_element("a:ext", writer)?;
2351        }
2352        #[cfg(feature = "extra-children")]
2353        {
2354            emit_idx += 1;
2355        }
2356        #[cfg(feature = "extra-children")]
2357        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2358            extra_iter
2359                .next()
2360                .unwrap()
2361                .node
2362                .write_to(writer)
2363                .map_err(SerializeError::from)?;
2364        }
2365        if let Some(ref val) = self.child_offset {
2366            val.write_element("a:chOff", writer)?;
2367        }
2368        #[cfg(feature = "extra-children")]
2369        {
2370            emit_idx += 1;
2371        }
2372        #[cfg(feature = "extra-children")]
2373        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2374            extra_iter
2375                .next()
2376                .unwrap()
2377                .node
2378                .write_to(writer)
2379                .map_err(SerializeError::from)?;
2380        }
2381        if let Some(ref val) = self.child_extents {
2382            val.write_element("a:chExt", writer)?;
2383        }
2384        #[cfg(feature = "extra-children")]
2385        {
2386            emit_idx += 1;
2387        }
2388        #[cfg(feature = "extra-children")]
2389        for extra in extra_iter {
2390            extra.node.write_to(writer).map_err(SerializeError::from)?;
2391        }
2392        Ok(())
2393    }
2394
2395    fn is_empty_element(&self) -> bool {
2396        if self.offset.is_some() {
2397            return false;
2398        }
2399        if self.extents.is_some() {
2400            return false;
2401        }
2402        if self.child_offset.is_some() {
2403            return false;
2404        }
2405        if self.child_extents.is_some() {
2406            return false;
2407        }
2408        #[cfg(feature = "extra-children")]
2409        if !self.extra_children.is_empty() {
2410            return false;
2411        }
2412        true
2413    }
2414}
2415
2416impl ToXml for CTPoint3D {
2417    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2418        #[allow(unused_mut)]
2419        let mut start = start;
2420        {
2421            let val = &self.x;
2422            {
2423                let s = val.to_string();
2424                start.push_attribute(("x", s.as_str()));
2425            }
2426        }
2427        {
2428            let val = &self.y;
2429            {
2430                let s = val.to_string();
2431                start.push_attribute(("y", s.as_str()));
2432            }
2433        }
2434        {
2435            let val = &self.z;
2436            {
2437                let s = val.to_string();
2438                start.push_attribute(("z", s.as_str()));
2439            }
2440        }
2441        #[cfg(feature = "extra-attrs")]
2442        for (key, value) in &self.extra_attrs {
2443            start.push_attribute((key.as_str(), value.as_str()));
2444        }
2445        start
2446    }
2447
2448    fn is_empty_element(&self) -> bool {
2449        true
2450    }
2451}
2452
2453impl ToXml for CTVector3D {
2454    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2455        #[allow(unused_mut)]
2456        let mut start = start;
2457        {
2458            let val = &self.dx;
2459            {
2460                let s = val.to_string();
2461                start.push_attribute(("dx", s.as_str()));
2462            }
2463        }
2464        {
2465            let val = &self.dy;
2466            {
2467                let s = val.to_string();
2468                start.push_attribute(("dy", s.as_str()));
2469            }
2470        }
2471        {
2472            let val = &self.dz;
2473            {
2474                let s = val.to_string();
2475                start.push_attribute(("dz", s.as_str()));
2476            }
2477        }
2478        #[cfg(feature = "extra-attrs")]
2479        for (key, value) in &self.extra_attrs {
2480            start.push_attribute((key.as_str(), value.as_str()));
2481        }
2482        start
2483    }
2484
2485    fn is_empty_element(&self) -> bool {
2486        true
2487    }
2488}
2489
2490impl ToXml for CTSphereCoords {
2491    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2492        #[allow(unused_mut)]
2493        let mut start = start;
2494        {
2495            let val = &self.lat;
2496            {
2497                let s = val.to_string();
2498                start.push_attribute(("lat", s.as_str()));
2499            }
2500        }
2501        {
2502            let val = &self.lon;
2503            {
2504                let s = val.to_string();
2505                start.push_attribute(("lon", s.as_str()));
2506            }
2507        }
2508        {
2509            let val = &self.rev;
2510            {
2511                let s = val.to_string();
2512                start.push_attribute(("rev", s.as_str()));
2513            }
2514        }
2515        #[cfg(feature = "extra-attrs")]
2516        for (key, value) in &self.extra_attrs {
2517            start.push_attribute((key.as_str(), value.as_str()));
2518        }
2519        start
2520    }
2521
2522    fn is_empty_element(&self) -> bool {
2523        true
2524    }
2525}
2526
2527impl ToXml for CTRelativeRect {
2528    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2529        #[allow(unused_mut)]
2530        let mut start = start;
2531        if let Some(ref val) = self.l {
2532            {
2533                let s = val.to_string();
2534                start.push_attribute(("l", s.as_str()));
2535            }
2536        }
2537        if let Some(ref val) = self.t {
2538            {
2539                let s = val.to_string();
2540                start.push_attribute(("t", s.as_str()));
2541            }
2542        }
2543        if let Some(ref val) = self.relationship_id {
2544            {
2545                let s = val.to_string();
2546                start.push_attribute(("r", s.as_str()));
2547            }
2548        }
2549        if let Some(ref val) = self.b {
2550            {
2551                let s = val.to_string();
2552                start.push_attribute(("b", s.as_str()));
2553            }
2554        }
2555        #[cfg(feature = "extra-attrs")]
2556        for (key, value) in &self.extra_attrs {
2557            start.push_attribute((key.as_str(), value.as_str()));
2558        }
2559        start
2560    }
2561
2562    fn is_empty_element(&self) -> bool {
2563        true
2564    }
2565}
2566
2567impl ToXml for EGColorChoice {
2568    fn write_element<W: Write>(
2569        &self,
2570        _tag: &str,
2571        writer: &mut Writer<W>,
2572    ) -> Result<(), SerializeError> {
2573        match self {
2574            Self::ScrgbClr(inner) => inner.write_element("a:scrgbClr", writer)?,
2575            Self::SrgbClr(inner) => inner.write_element("a:srgbClr", writer)?,
2576            Self::HslClr(inner) => inner.write_element("a:hslClr", writer)?,
2577            Self::SysClr(inner) => inner.write_element("a:sysClr", writer)?,
2578            Self::SchemeClr(inner) => inner.write_element("a:schemeClr", writer)?,
2579            Self::PrstClr(inner) => inner.write_element("a:prstClr", writer)?,
2580        }
2581        Ok(())
2582    }
2583}
2584
2585impl ToXml for CTColor {
2586    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2587        #[cfg(feature = "extra-children")]
2588        let mut extra_iter = self.extra_children.iter().peekable();
2589        #[cfg(feature = "extra-children")]
2590        let mut emit_idx: usize = 0;
2591        #[cfg(feature = "extra-children")]
2592        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2593            extra_iter
2594                .next()
2595                .unwrap()
2596                .node
2597                .write_to(writer)
2598                .map_err(SerializeError::from)?;
2599        }
2600        if let Some(ref val) = self.color_choice {
2601            val.write_element("", writer)?;
2602        }
2603        #[cfg(feature = "extra-children")]
2604        {
2605            emit_idx += 1;
2606        }
2607        #[cfg(feature = "extra-children")]
2608        for extra in extra_iter {
2609            extra.node.write_to(writer).map_err(SerializeError::from)?;
2610        }
2611        Ok(())
2612    }
2613
2614    fn is_empty_element(&self) -> bool {
2615        false
2616    }
2617}
2618
2619impl ToXml for CTColorMRU {
2620    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2621        #[cfg(feature = "extra-children")]
2622        let mut extra_iter = self.extra_children.iter().peekable();
2623        #[cfg(feature = "extra-children")]
2624        let mut emit_idx: usize = 0;
2625        for item in &self.color_choice {
2626            #[cfg(feature = "extra-children")]
2627            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2628                extra_iter
2629                    .next()
2630                    .unwrap()
2631                    .node
2632                    .write_to(writer)
2633                    .map_err(SerializeError::from)?;
2634            }
2635            item.write_element("", writer)?;
2636            #[cfg(feature = "extra-children")]
2637            {
2638                emit_idx += 1;
2639            }
2640        }
2641        #[cfg(feature = "extra-children")]
2642        for extra in extra_iter {
2643            extra.node.write_to(writer).map_err(SerializeError::from)?;
2644        }
2645        Ok(())
2646    }
2647
2648    fn is_empty_element(&self) -> bool {
2649        if !self.color_choice.is_empty() {
2650            return false;
2651        }
2652        #[cfg(feature = "extra-children")]
2653        if !self.extra_children.is_empty() {
2654            return false;
2655        }
2656        true
2657    }
2658}
2659
2660impl ToXml for AAGBlob {
2661    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2662        #[allow(unused_mut)]
2663        let mut start = start;
2664        if let Some(ref val) = self.embed {
2665            start.push_attribute(("r:embed", val.as_str()));
2666        }
2667        if let Some(ref val) = self.link {
2668            start.push_attribute(("r:link", val.as_str()));
2669        }
2670        #[cfg(feature = "extra-attrs")]
2671        for (key, value) in &self.extra_attrs {
2672            start.push_attribute((key.as_str(), value.as_str()));
2673        }
2674        start
2675    }
2676
2677    fn is_empty_element(&self) -> bool {
2678        true
2679    }
2680}
2681
2682impl ToXml for CTEmbeddedWAVAudioFile {
2683    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2684        #[allow(unused_mut)]
2685        let mut start = start;
2686        {
2687            let val = &self.embed;
2688            start.push_attribute(("r:embed", val.as_str()));
2689        }
2690        if let Some(ref val) = self.name {
2691            start.push_attribute(("name", val.as_str()));
2692        }
2693        #[cfg(feature = "extra-attrs")]
2694        for (key, value) in &self.extra_attrs {
2695            start.push_attribute((key.as_str(), value.as_str()));
2696        }
2697        start
2698    }
2699
2700    fn is_empty_element(&self) -> bool {
2701        true
2702    }
2703}
2704
2705impl ToXml for CTHyperlink {
2706    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2707        #[allow(unused_mut)]
2708        let mut start = start;
2709        #[cfg(feature = "dml-text")]
2710        if let Some(ref val) = self.id {
2711            start.push_attribute(("r:id", val.as_str()));
2712        }
2713        #[cfg(feature = "dml-text")]
2714        if let Some(ref val) = self.invalid_url {
2715            start.push_attribute(("invalidUrl", val.as_str()));
2716        }
2717        #[cfg(feature = "dml-text")]
2718        if let Some(ref val) = self.action {
2719            start.push_attribute(("action", val.as_str()));
2720        }
2721        #[cfg(feature = "dml-text")]
2722        if let Some(ref val) = self.tgt_frame {
2723            start.push_attribute(("tgtFrame", val.as_str()));
2724        }
2725        #[cfg(feature = "dml-text")]
2726        if let Some(ref val) = self.tooltip {
2727            start.push_attribute(("tooltip", val.as_str()));
2728        }
2729        #[cfg(feature = "dml-text")]
2730        if let Some(ref val) = self.history {
2731            start.push_attribute(("history", if *val { "1" } else { "0" }));
2732        }
2733        #[cfg(feature = "dml-text")]
2734        if let Some(ref val) = self.highlight_click {
2735            start.push_attribute(("highlightClick", if *val { "1" } else { "0" }));
2736        }
2737        #[cfg(feature = "dml-text")]
2738        if let Some(ref val) = self.end_snd {
2739            start.push_attribute(("endSnd", if *val { "1" } else { "0" }));
2740        }
2741        #[cfg(feature = "extra-attrs")]
2742        for (key, value) in &self.extra_attrs {
2743            start.push_attribute((key.as_str(), value.as_str()));
2744        }
2745        start
2746    }
2747
2748    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2749        #[cfg(feature = "extra-children")]
2750        let mut extra_iter = self.extra_children.iter().peekable();
2751        #[cfg(feature = "extra-children")]
2752        let mut emit_idx: usize = 0;
2753        #[cfg(feature = "extra-children")]
2754        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2755            extra_iter
2756                .next()
2757                .unwrap()
2758                .node
2759                .write_to(writer)
2760                .map_err(SerializeError::from)?;
2761        }
2762        #[cfg(feature = "dml-text")]
2763        if let Some(ref val) = self.snd {
2764            val.write_element("a:snd", writer)?;
2765        }
2766        #[cfg(feature = "extra-children")]
2767        {
2768            emit_idx += 1;
2769        }
2770        #[cfg(feature = "extra-children")]
2771        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2772            extra_iter
2773                .next()
2774                .unwrap()
2775                .node
2776                .write_to(writer)
2777                .map_err(SerializeError::from)?;
2778        }
2779        #[cfg(feature = "dml-extensions")]
2780        if let Some(ref val) = self.ext_lst {
2781            val.write_element("a:extLst", writer)?;
2782        }
2783        #[cfg(feature = "extra-children")]
2784        {
2785            emit_idx += 1;
2786        }
2787        #[cfg(feature = "extra-children")]
2788        for extra in extra_iter {
2789            extra.node.write_to(writer).map_err(SerializeError::from)?;
2790        }
2791        Ok(())
2792    }
2793
2794    fn is_empty_element(&self) -> bool {
2795        #[cfg(feature = "dml-text")]
2796        if self.snd.is_some() {
2797            return false;
2798        }
2799        #[cfg(feature = "dml-extensions")]
2800        if self.ext_lst.is_some() {
2801            return false;
2802        }
2803        #[cfg(feature = "extra-children")]
2804        if !self.extra_children.is_empty() {
2805            return false;
2806        }
2807        true
2808    }
2809}
2810
2811impl ToXml for AAGLocking {
2812    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2813        #[allow(unused_mut)]
2814        let mut start = start;
2815        if let Some(ref val) = self.no_grp {
2816            start.push_attribute(("noGrp", if *val { "1" } else { "0" }));
2817        }
2818        if let Some(ref val) = self.no_select {
2819            start.push_attribute(("noSelect", if *val { "1" } else { "0" }));
2820        }
2821        if let Some(ref val) = self.no_rot {
2822            start.push_attribute(("noRot", if *val { "1" } else { "0" }));
2823        }
2824        if let Some(ref val) = self.no_change_aspect {
2825            start.push_attribute(("noChangeAspect", if *val { "1" } else { "0" }));
2826        }
2827        if let Some(ref val) = self.no_move {
2828            start.push_attribute(("noMove", if *val { "1" } else { "0" }));
2829        }
2830        if let Some(ref val) = self.no_resize {
2831            start.push_attribute(("noResize", if *val { "1" } else { "0" }));
2832        }
2833        if let Some(ref val) = self.no_edit_points {
2834            start.push_attribute(("noEditPoints", if *val { "1" } else { "0" }));
2835        }
2836        if let Some(ref val) = self.no_adjust_handles {
2837            start.push_attribute(("noAdjustHandles", if *val { "1" } else { "0" }));
2838        }
2839        if let Some(ref val) = self.no_change_arrowheads {
2840            start.push_attribute(("noChangeArrowheads", if *val { "1" } else { "0" }));
2841        }
2842        if let Some(ref val) = self.no_change_shape_type {
2843            start.push_attribute(("noChangeShapeType", if *val { "1" } else { "0" }));
2844        }
2845        #[cfg(feature = "extra-attrs")]
2846        for (key, value) in &self.extra_attrs {
2847            start.push_attribute((key.as_str(), value.as_str()));
2848        }
2849        start
2850    }
2851
2852    fn is_empty_element(&self) -> bool {
2853        true
2854    }
2855}
2856
2857impl ToXml for CTConnectorLocking {
2858    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2859        #[allow(unused_mut)]
2860        let mut start = start;
2861        if let Some(ref val) = self.no_grp {
2862            start.push_attribute(("noGrp", if *val { "1" } else { "0" }));
2863        }
2864        if let Some(ref val) = self.no_select {
2865            start.push_attribute(("noSelect", if *val { "1" } else { "0" }));
2866        }
2867        if let Some(ref val) = self.no_rot {
2868            start.push_attribute(("noRot", if *val { "1" } else { "0" }));
2869        }
2870        if let Some(ref val) = self.no_change_aspect {
2871            start.push_attribute(("noChangeAspect", if *val { "1" } else { "0" }));
2872        }
2873        if let Some(ref val) = self.no_move {
2874            start.push_attribute(("noMove", if *val { "1" } else { "0" }));
2875        }
2876        if let Some(ref val) = self.no_resize {
2877            start.push_attribute(("noResize", if *val { "1" } else { "0" }));
2878        }
2879        if let Some(ref val) = self.no_edit_points {
2880            start.push_attribute(("noEditPoints", if *val { "1" } else { "0" }));
2881        }
2882        if let Some(ref val) = self.no_adjust_handles {
2883            start.push_attribute(("noAdjustHandles", if *val { "1" } else { "0" }));
2884        }
2885        if let Some(ref val) = self.no_change_arrowheads {
2886            start.push_attribute(("noChangeArrowheads", if *val { "1" } else { "0" }));
2887        }
2888        if let Some(ref val) = self.no_change_shape_type {
2889            start.push_attribute(("noChangeShapeType", if *val { "1" } else { "0" }));
2890        }
2891        #[cfg(feature = "extra-attrs")]
2892        for (key, value) in &self.extra_attrs {
2893            start.push_attribute((key.as_str(), value.as_str()));
2894        }
2895        start
2896    }
2897
2898    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2899        #[cfg(feature = "extra-children")]
2900        let mut extra_iter = self.extra_children.iter().peekable();
2901        #[cfg(feature = "extra-children")]
2902        let mut emit_idx: usize = 0;
2903        #[cfg(feature = "extra-children")]
2904        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2905            extra_iter
2906                .next()
2907                .unwrap()
2908                .node
2909                .write_to(writer)
2910                .map_err(SerializeError::from)?;
2911        }
2912        if let Some(ref val) = self.ext_lst {
2913            val.write_element("a:extLst", writer)?;
2914        }
2915        #[cfg(feature = "extra-children")]
2916        {
2917            emit_idx += 1;
2918        }
2919        #[cfg(feature = "extra-children")]
2920        for extra in extra_iter {
2921            extra.node.write_to(writer).map_err(SerializeError::from)?;
2922        }
2923        Ok(())
2924    }
2925
2926    fn is_empty_element(&self) -> bool {
2927        if self.ext_lst.is_some() {
2928            return false;
2929        }
2930        #[cfg(feature = "extra-children")]
2931        if !self.extra_children.is_empty() {
2932            return false;
2933        }
2934        true
2935    }
2936}
2937
2938impl ToXml for CTShapeLocking {
2939    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
2940        #[allow(unused_mut)]
2941        let mut start = start;
2942        if let Some(ref val) = self.no_grp {
2943            start.push_attribute(("noGrp", if *val { "1" } else { "0" }));
2944        }
2945        if let Some(ref val) = self.no_select {
2946            start.push_attribute(("noSelect", if *val { "1" } else { "0" }));
2947        }
2948        if let Some(ref val) = self.no_rot {
2949            start.push_attribute(("noRot", if *val { "1" } else { "0" }));
2950        }
2951        if let Some(ref val) = self.no_change_aspect {
2952            start.push_attribute(("noChangeAspect", if *val { "1" } else { "0" }));
2953        }
2954        if let Some(ref val) = self.no_move {
2955            start.push_attribute(("noMove", if *val { "1" } else { "0" }));
2956        }
2957        if let Some(ref val) = self.no_resize {
2958            start.push_attribute(("noResize", if *val { "1" } else { "0" }));
2959        }
2960        if let Some(ref val) = self.no_edit_points {
2961            start.push_attribute(("noEditPoints", if *val { "1" } else { "0" }));
2962        }
2963        if let Some(ref val) = self.no_adjust_handles {
2964            start.push_attribute(("noAdjustHandles", if *val { "1" } else { "0" }));
2965        }
2966        if let Some(ref val) = self.no_change_arrowheads {
2967            start.push_attribute(("noChangeArrowheads", if *val { "1" } else { "0" }));
2968        }
2969        if let Some(ref val) = self.no_change_shape_type {
2970            start.push_attribute(("noChangeShapeType", if *val { "1" } else { "0" }));
2971        }
2972        if let Some(ref val) = self.no_text_edit {
2973            start.push_attribute(("noTextEdit", if *val { "1" } else { "0" }));
2974        }
2975        #[cfg(feature = "extra-attrs")]
2976        for (key, value) in &self.extra_attrs {
2977            start.push_attribute((key.as_str(), value.as_str()));
2978        }
2979        start
2980    }
2981
2982    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
2983        #[cfg(feature = "extra-children")]
2984        let mut extra_iter = self.extra_children.iter().peekable();
2985        #[cfg(feature = "extra-children")]
2986        let mut emit_idx: usize = 0;
2987        #[cfg(feature = "extra-children")]
2988        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
2989            extra_iter
2990                .next()
2991                .unwrap()
2992                .node
2993                .write_to(writer)
2994                .map_err(SerializeError::from)?;
2995        }
2996        if let Some(ref val) = self.ext_lst {
2997            val.write_element("a:extLst", writer)?;
2998        }
2999        #[cfg(feature = "extra-children")]
3000        {
3001            emit_idx += 1;
3002        }
3003        #[cfg(feature = "extra-children")]
3004        for extra in extra_iter {
3005            extra.node.write_to(writer).map_err(SerializeError::from)?;
3006        }
3007        Ok(())
3008    }
3009
3010    fn is_empty_element(&self) -> bool {
3011        if self.ext_lst.is_some() {
3012            return false;
3013        }
3014        #[cfg(feature = "extra-children")]
3015        if !self.extra_children.is_empty() {
3016            return false;
3017        }
3018        true
3019    }
3020}
3021
3022impl ToXml for CTPictureLocking {
3023    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
3024        #[allow(unused_mut)]
3025        let mut start = start;
3026        if let Some(ref val) = self.no_grp {
3027            start.push_attribute(("noGrp", if *val { "1" } else { "0" }));
3028        }
3029        if let Some(ref val) = self.no_select {
3030            start.push_attribute(("noSelect", if *val { "1" } else { "0" }));
3031        }
3032        if let Some(ref val) = self.no_rot {
3033            start.push_attribute(("noRot", if *val { "1" } else { "0" }));
3034        }
3035        if let Some(ref val) = self.no_change_aspect {
3036            start.push_attribute(("noChangeAspect", if *val { "1" } else { "0" }));
3037        }
3038        if let Some(ref val) = self.no_move {
3039            start.push_attribute(("noMove", if *val { "1" } else { "0" }));
3040        }
3041        if let Some(ref val) = self.no_resize {
3042            start.push_attribute(("noResize", if *val { "1" } else { "0" }));
3043        }
3044        if let Some(ref val) = self.no_edit_points {
3045            start.push_attribute(("noEditPoints", if *val { "1" } else { "0" }));
3046        }
3047        if let Some(ref val) = self.no_adjust_handles {
3048            start.push_attribute(("noAdjustHandles", if *val { "1" } else { "0" }));
3049        }
3050        if let Some(ref val) = self.no_change_arrowheads {
3051            start.push_attribute(("noChangeArrowheads", if *val { "1" } else { "0" }));
3052        }
3053        if let Some(ref val) = self.no_change_shape_type {
3054            start.push_attribute(("noChangeShapeType", if *val { "1" } else { "0" }));
3055        }
3056        if let Some(ref val) = self.no_crop {
3057            start.push_attribute(("noCrop", if *val { "1" } else { "0" }));
3058        }
3059        #[cfg(feature = "extra-attrs")]
3060        for (key, value) in &self.extra_attrs {
3061            start.push_attribute((key.as_str(), value.as_str()));
3062        }
3063        start
3064    }
3065
3066    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3067        #[cfg(feature = "extra-children")]
3068        let mut extra_iter = self.extra_children.iter().peekable();
3069        #[cfg(feature = "extra-children")]
3070        let mut emit_idx: usize = 0;
3071        #[cfg(feature = "extra-children")]
3072        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3073            extra_iter
3074                .next()
3075                .unwrap()
3076                .node
3077                .write_to(writer)
3078                .map_err(SerializeError::from)?;
3079        }
3080        if let Some(ref val) = self.ext_lst {
3081            val.write_element("a:extLst", writer)?;
3082        }
3083        #[cfg(feature = "extra-children")]
3084        {
3085            emit_idx += 1;
3086        }
3087        #[cfg(feature = "extra-children")]
3088        for extra in extra_iter {
3089            extra.node.write_to(writer).map_err(SerializeError::from)?;
3090        }
3091        Ok(())
3092    }
3093
3094    fn is_empty_element(&self) -> bool {
3095        if self.ext_lst.is_some() {
3096            return false;
3097        }
3098        #[cfg(feature = "extra-children")]
3099        if !self.extra_children.is_empty() {
3100            return false;
3101        }
3102        true
3103    }
3104}
3105
3106impl ToXml for CTGroupLocking {
3107    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
3108        #[allow(unused_mut)]
3109        let mut start = start;
3110        if let Some(ref val) = self.no_grp {
3111            start.push_attribute(("noGrp", if *val { "1" } else { "0" }));
3112        }
3113        if let Some(ref val) = self.no_ungrp {
3114            start.push_attribute(("noUngrp", if *val { "1" } else { "0" }));
3115        }
3116        if let Some(ref val) = self.no_select {
3117            start.push_attribute(("noSelect", if *val { "1" } else { "0" }));
3118        }
3119        if let Some(ref val) = self.no_rot {
3120            start.push_attribute(("noRot", if *val { "1" } else { "0" }));
3121        }
3122        if let Some(ref val) = self.no_change_aspect {
3123            start.push_attribute(("noChangeAspect", if *val { "1" } else { "0" }));
3124        }
3125        if let Some(ref val) = self.no_move {
3126            start.push_attribute(("noMove", if *val { "1" } else { "0" }));
3127        }
3128        if let Some(ref val) = self.no_resize {
3129            start.push_attribute(("noResize", if *val { "1" } else { "0" }));
3130        }
3131        #[cfg(feature = "extra-attrs")]
3132        for (key, value) in &self.extra_attrs {
3133            start.push_attribute((key.as_str(), value.as_str()));
3134        }
3135        start
3136    }
3137
3138    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3139        #[cfg(feature = "extra-children")]
3140        let mut extra_iter = self.extra_children.iter().peekable();
3141        #[cfg(feature = "extra-children")]
3142        let mut emit_idx: usize = 0;
3143        #[cfg(feature = "extra-children")]
3144        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3145            extra_iter
3146                .next()
3147                .unwrap()
3148                .node
3149                .write_to(writer)
3150                .map_err(SerializeError::from)?;
3151        }
3152        if let Some(ref val) = self.ext_lst {
3153            val.write_element("a:extLst", writer)?;
3154        }
3155        #[cfg(feature = "extra-children")]
3156        {
3157            emit_idx += 1;
3158        }
3159        #[cfg(feature = "extra-children")]
3160        for extra in extra_iter {
3161            extra.node.write_to(writer).map_err(SerializeError::from)?;
3162        }
3163        Ok(())
3164    }
3165
3166    fn is_empty_element(&self) -> bool {
3167        if self.ext_lst.is_some() {
3168            return false;
3169        }
3170        #[cfg(feature = "extra-children")]
3171        if !self.extra_children.is_empty() {
3172            return false;
3173        }
3174        true
3175    }
3176}
3177
3178impl ToXml for CTGraphicalObjectFrameLocking {
3179    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
3180        #[allow(unused_mut)]
3181        let mut start = start;
3182        if let Some(ref val) = self.no_grp {
3183            start.push_attribute(("noGrp", if *val { "1" } else { "0" }));
3184        }
3185        if let Some(ref val) = self.no_drilldown {
3186            start.push_attribute(("noDrilldown", if *val { "1" } else { "0" }));
3187        }
3188        if let Some(ref val) = self.no_select {
3189            start.push_attribute(("noSelect", if *val { "1" } else { "0" }));
3190        }
3191        if let Some(ref val) = self.no_change_aspect {
3192            start.push_attribute(("noChangeAspect", if *val { "1" } else { "0" }));
3193        }
3194        if let Some(ref val) = self.no_move {
3195            start.push_attribute(("noMove", if *val { "1" } else { "0" }));
3196        }
3197        if let Some(ref val) = self.no_resize {
3198            start.push_attribute(("noResize", if *val { "1" } else { "0" }));
3199        }
3200        #[cfg(feature = "extra-attrs")]
3201        for (key, value) in &self.extra_attrs {
3202            start.push_attribute((key.as_str(), value.as_str()));
3203        }
3204        start
3205    }
3206
3207    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3208        #[cfg(feature = "extra-children")]
3209        let mut extra_iter = self.extra_children.iter().peekable();
3210        #[cfg(feature = "extra-children")]
3211        let mut emit_idx: usize = 0;
3212        #[cfg(feature = "extra-children")]
3213        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3214            extra_iter
3215                .next()
3216                .unwrap()
3217                .node
3218                .write_to(writer)
3219                .map_err(SerializeError::from)?;
3220        }
3221        if let Some(ref val) = self.ext_lst {
3222            val.write_element("a:extLst", writer)?;
3223        }
3224        #[cfg(feature = "extra-children")]
3225        {
3226            emit_idx += 1;
3227        }
3228        #[cfg(feature = "extra-children")]
3229        for extra in extra_iter {
3230            extra.node.write_to(writer).map_err(SerializeError::from)?;
3231        }
3232        Ok(())
3233    }
3234
3235    fn is_empty_element(&self) -> bool {
3236        if self.ext_lst.is_some() {
3237            return false;
3238        }
3239        #[cfg(feature = "extra-children")]
3240        if !self.extra_children.is_empty() {
3241            return false;
3242        }
3243        true
3244    }
3245}
3246
3247impl ToXml for CTContentPartLocking {
3248    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
3249        #[allow(unused_mut)]
3250        let mut start = start;
3251        if let Some(ref val) = self.no_grp {
3252            start.push_attribute(("noGrp", if *val { "1" } else { "0" }));
3253        }
3254        if let Some(ref val) = self.no_select {
3255            start.push_attribute(("noSelect", if *val { "1" } else { "0" }));
3256        }
3257        if let Some(ref val) = self.no_rot {
3258            start.push_attribute(("noRot", if *val { "1" } else { "0" }));
3259        }
3260        if let Some(ref val) = self.no_change_aspect {
3261            start.push_attribute(("noChangeAspect", if *val { "1" } else { "0" }));
3262        }
3263        if let Some(ref val) = self.no_move {
3264            start.push_attribute(("noMove", if *val { "1" } else { "0" }));
3265        }
3266        if let Some(ref val) = self.no_resize {
3267            start.push_attribute(("noResize", if *val { "1" } else { "0" }));
3268        }
3269        if let Some(ref val) = self.no_edit_points {
3270            start.push_attribute(("noEditPoints", if *val { "1" } else { "0" }));
3271        }
3272        if let Some(ref val) = self.no_adjust_handles {
3273            start.push_attribute(("noAdjustHandles", if *val { "1" } else { "0" }));
3274        }
3275        if let Some(ref val) = self.no_change_arrowheads {
3276            start.push_attribute(("noChangeArrowheads", if *val { "1" } else { "0" }));
3277        }
3278        if let Some(ref val) = self.no_change_shape_type {
3279            start.push_attribute(("noChangeShapeType", if *val { "1" } else { "0" }));
3280        }
3281        #[cfg(feature = "extra-attrs")]
3282        for (key, value) in &self.extra_attrs {
3283            start.push_attribute((key.as_str(), value.as_str()));
3284        }
3285        start
3286    }
3287
3288    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3289        #[cfg(feature = "extra-children")]
3290        let mut extra_iter = self.extra_children.iter().peekable();
3291        #[cfg(feature = "extra-children")]
3292        let mut emit_idx: usize = 0;
3293        #[cfg(feature = "extra-children")]
3294        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3295            extra_iter
3296                .next()
3297                .unwrap()
3298                .node
3299                .write_to(writer)
3300                .map_err(SerializeError::from)?;
3301        }
3302        if let Some(ref val) = self.ext_lst {
3303            val.write_element("a:extLst", writer)?;
3304        }
3305        #[cfg(feature = "extra-children")]
3306        {
3307            emit_idx += 1;
3308        }
3309        #[cfg(feature = "extra-children")]
3310        for extra in extra_iter {
3311            extra.node.write_to(writer).map_err(SerializeError::from)?;
3312        }
3313        Ok(())
3314    }
3315
3316    fn is_empty_element(&self) -> bool {
3317        if self.ext_lst.is_some() {
3318            return false;
3319        }
3320        #[cfg(feature = "extra-children")]
3321        if !self.extra_children.is_empty() {
3322            return false;
3323        }
3324        true
3325    }
3326}
3327
3328impl ToXml for CTNonVisualDrawingProps {
3329    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
3330        #[allow(unused_mut)]
3331        let mut start = start;
3332        {
3333            let val = &self.id;
3334            {
3335                let s = val.to_string();
3336                start.push_attribute(("id", s.as_str()));
3337            }
3338        }
3339        {
3340            let val = &self.name;
3341            start.push_attribute(("name", val.as_str()));
3342        }
3343        if let Some(ref val) = self.descr {
3344            start.push_attribute(("descr", val.as_str()));
3345        }
3346        if let Some(ref val) = self.hidden {
3347            start.push_attribute(("hidden", if *val { "1" } else { "0" }));
3348        }
3349        if let Some(ref val) = self.title {
3350            start.push_attribute(("title", val.as_str()));
3351        }
3352        #[cfg(feature = "extra-attrs")]
3353        for (key, value) in &self.extra_attrs {
3354            start.push_attribute((key.as_str(), value.as_str()));
3355        }
3356        start
3357    }
3358
3359    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3360        #[cfg(feature = "extra-children")]
3361        let mut extra_iter = self.extra_children.iter().peekable();
3362        #[cfg(feature = "extra-children")]
3363        let mut emit_idx: usize = 0;
3364        #[cfg(feature = "extra-children")]
3365        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3366            extra_iter
3367                .next()
3368                .unwrap()
3369                .node
3370                .write_to(writer)
3371                .map_err(SerializeError::from)?;
3372        }
3373        #[cfg(feature = "dml-text")]
3374        if let Some(ref val) = self.hlink_click {
3375            val.write_element("a:hlinkClick", writer)?;
3376        }
3377        #[cfg(feature = "extra-children")]
3378        {
3379            emit_idx += 1;
3380        }
3381        #[cfg(feature = "extra-children")]
3382        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3383            extra_iter
3384                .next()
3385                .unwrap()
3386                .node
3387                .write_to(writer)
3388                .map_err(SerializeError::from)?;
3389        }
3390        #[cfg(feature = "dml-text")]
3391        if let Some(ref val) = self.hlink_hover {
3392            val.write_element("a:hlinkHover", writer)?;
3393        }
3394        #[cfg(feature = "extra-children")]
3395        {
3396            emit_idx += 1;
3397        }
3398        #[cfg(feature = "extra-children")]
3399        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3400            extra_iter
3401                .next()
3402                .unwrap()
3403                .node
3404                .write_to(writer)
3405                .map_err(SerializeError::from)?;
3406        }
3407        #[cfg(feature = "dml-extensions")]
3408        if let Some(ref val) = self.ext_lst {
3409            val.write_element("a:extLst", writer)?;
3410        }
3411        #[cfg(feature = "extra-children")]
3412        {
3413            emit_idx += 1;
3414        }
3415        #[cfg(feature = "extra-children")]
3416        for extra in extra_iter {
3417            extra.node.write_to(writer).map_err(SerializeError::from)?;
3418        }
3419        Ok(())
3420    }
3421
3422    fn is_empty_element(&self) -> bool {
3423        #[cfg(feature = "dml-text")]
3424        if self.hlink_click.is_some() {
3425            return false;
3426        }
3427        #[cfg(feature = "dml-text")]
3428        if self.hlink_hover.is_some() {
3429            return false;
3430        }
3431        #[cfg(feature = "dml-extensions")]
3432        if self.ext_lst.is_some() {
3433            return false;
3434        }
3435        #[cfg(feature = "extra-children")]
3436        if !self.extra_children.is_empty() {
3437            return false;
3438        }
3439        true
3440    }
3441}
3442
3443impl ToXml for CTNonVisualDrawingShapeProps {
3444    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
3445        #[allow(unused_mut)]
3446        let mut start = start;
3447        if let Some(ref val) = self.tx_box {
3448            start.push_attribute(("txBox", if *val { "1" } else { "0" }));
3449        }
3450        #[cfg(feature = "extra-attrs")]
3451        for (key, value) in &self.extra_attrs {
3452            start.push_attribute((key.as_str(), value.as_str()));
3453        }
3454        start
3455    }
3456
3457    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3458        #[cfg(feature = "extra-children")]
3459        let mut extra_iter = self.extra_children.iter().peekable();
3460        #[cfg(feature = "extra-children")]
3461        let mut emit_idx: usize = 0;
3462        #[cfg(feature = "extra-children")]
3463        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3464            extra_iter
3465                .next()
3466                .unwrap()
3467                .node
3468                .write_to(writer)
3469                .map_err(SerializeError::from)?;
3470        }
3471        if let Some(ref val) = self.sp_locks {
3472            val.write_element("a:spLocks", writer)?;
3473        }
3474        #[cfg(feature = "extra-children")]
3475        {
3476            emit_idx += 1;
3477        }
3478        #[cfg(feature = "extra-children")]
3479        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3480            extra_iter
3481                .next()
3482                .unwrap()
3483                .node
3484                .write_to(writer)
3485                .map_err(SerializeError::from)?;
3486        }
3487        if let Some(ref val) = self.ext_lst {
3488            val.write_element("a:extLst", writer)?;
3489        }
3490        #[cfg(feature = "extra-children")]
3491        {
3492            emit_idx += 1;
3493        }
3494        #[cfg(feature = "extra-children")]
3495        for extra in extra_iter {
3496            extra.node.write_to(writer).map_err(SerializeError::from)?;
3497        }
3498        Ok(())
3499    }
3500
3501    fn is_empty_element(&self) -> bool {
3502        if self.sp_locks.is_some() {
3503            return false;
3504        }
3505        if self.ext_lst.is_some() {
3506            return false;
3507        }
3508        #[cfg(feature = "extra-children")]
3509        if !self.extra_children.is_empty() {
3510            return false;
3511        }
3512        true
3513    }
3514}
3515
3516impl ToXml for CTNonVisualConnectorProperties {
3517    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3518        #[cfg(feature = "extra-children")]
3519        let mut extra_iter = self.extra_children.iter().peekable();
3520        #[cfg(feature = "extra-children")]
3521        let mut emit_idx: usize = 0;
3522        #[cfg(feature = "extra-children")]
3523        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3524            extra_iter
3525                .next()
3526                .unwrap()
3527                .node
3528                .write_to(writer)
3529                .map_err(SerializeError::from)?;
3530        }
3531        #[cfg(feature = "dml-shapes")]
3532        if let Some(ref val) = self.cxn_sp_locks {
3533            val.write_element("a:cxnSpLocks", writer)?;
3534        }
3535        #[cfg(feature = "extra-children")]
3536        {
3537            emit_idx += 1;
3538        }
3539        #[cfg(feature = "extra-children")]
3540        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3541            extra_iter
3542                .next()
3543                .unwrap()
3544                .node
3545                .write_to(writer)
3546                .map_err(SerializeError::from)?;
3547        }
3548        #[cfg(feature = "dml-shapes")]
3549        if let Some(ref val) = self.st_cxn {
3550            val.write_element("a:stCxn", writer)?;
3551        }
3552        #[cfg(feature = "extra-children")]
3553        {
3554            emit_idx += 1;
3555        }
3556        #[cfg(feature = "extra-children")]
3557        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3558            extra_iter
3559                .next()
3560                .unwrap()
3561                .node
3562                .write_to(writer)
3563                .map_err(SerializeError::from)?;
3564        }
3565        #[cfg(feature = "dml-shapes")]
3566        if let Some(ref val) = self.end_cxn {
3567            val.write_element("a:endCxn", writer)?;
3568        }
3569        #[cfg(feature = "extra-children")]
3570        {
3571            emit_idx += 1;
3572        }
3573        #[cfg(feature = "extra-children")]
3574        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3575            extra_iter
3576                .next()
3577                .unwrap()
3578                .node
3579                .write_to(writer)
3580                .map_err(SerializeError::from)?;
3581        }
3582        #[cfg(feature = "dml-extensions")]
3583        if let Some(ref val) = self.ext_lst {
3584            val.write_element("a:extLst", writer)?;
3585        }
3586        #[cfg(feature = "extra-children")]
3587        {
3588            emit_idx += 1;
3589        }
3590        #[cfg(feature = "extra-children")]
3591        for extra in extra_iter {
3592            extra.node.write_to(writer).map_err(SerializeError::from)?;
3593        }
3594        Ok(())
3595    }
3596
3597    fn is_empty_element(&self) -> bool {
3598        #[cfg(feature = "dml-shapes")]
3599        if self.cxn_sp_locks.is_some() {
3600            return false;
3601        }
3602        #[cfg(feature = "dml-shapes")]
3603        if self.st_cxn.is_some() {
3604            return false;
3605        }
3606        #[cfg(feature = "dml-shapes")]
3607        if self.end_cxn.is_some() {
3608            return false;
3609        }
3610        #[cfg(feature = "dml-extensions")]
3611        if self.ext_lst.is_some() {
3612            return false;
3613        }
3614        #[cfg(feature = "extra-children")]
3615        if !self.extra_children.is_empty() {
3616            return false;
3617        }
3618        true
3619    }
3620}
3621
3622impl ToXml for CTNonVisualPictureProperties {
3623    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
3624        #[allow(unused_mut)]
3625        let mut start = start;
3626        #[cfg(feature = "dml-shapes")]
3627        if let Some(ref val) = self.prefer_relative_resize {
3628            start.push_attribute(("preferRelativeResize", if *val { "1" } else { "0" }));
3629        }
3630        #[cfg(feature = "extra-attrs")]
3631        for (key, value) in &self.extra_attrs {
3632            start.push_attribute((key.as_str(), value.as_str()));
3633        }
3634        start
3635    }
3636
3637    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3638        #[cfg(feature = "extra-children")]
3639        let mut extra_iter = self.extra_children.iter().peekable();
3640        #[cfg(feature = "extra-children")]
3641        let mut emit_idx: usize = 0;
3642        #[cfg(feature = "extra-children")]
3643        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3644            extra_iter
3645                .next()
3646                .unwrap()
3647                .node
3648                .write_to(writer)
3649                .map_err(SerializeError::from)?;
3650        }
3651        #[cfg(feature = "dml-shapes")]
3652        if let Some(ref val) = self.pic_locks {
3653            val.write_element("a:picLocks", writer)?;
3654        }
3655        #[cfg(feature = "extra-children")]
3656        {
3657            emit_idx += 1;
3658        }
3659        #[cfg(feature = "extra-children")]
3660        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3661            extra_iter
3662                .next()
3663                .unwrap()
3664                .node
3665                .write_to(writer)
3666                .map_err(SerializeError::from)?;
3667        }
3668        #[cfg(feature = "dml-extensions")]
3669        if let Some(ref val) = self.ext_lst {
3670            val.write_element("a:extLst", writer)?;
3671        }
3672        #[cfg(feature = "extra-children")]
3673        {
3674            emit_idx += 1;
3675        }
3676        #[cfg(feature = "extra-children")]
3677        for extra in extra_iter {
3678            extra.node.write_to(writer).map_err(SerializeError::from)?;
3679        }
3680        Ok(())
3681    }
3682
3683    fn is_empty_element(&self) -> bool {
3684        #[cfg(feature = "dml-shapes")]
3685        if self.pic_locks.is_some() {
3686            return false;
3687        }
3688        #[cfg(feature = "dml-extensions")]
3689        if self.ext_lst.is_some() {
3690            return false;
3691        }
3692        #[cfg(feature = "extra-children")]
3693        if !self.extra_children.is_empty() {
3694            return false;
3695        }
3696        true
3697    }
3698}
3699
3700impl ToXml for CTNonVisualGroupDrawingShapeProps {
3701    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3702        #[cfg(feature = "extra-children")]
3703        let mut extra_iter = self.extra_children.iter().peekable();
3704        #[cfg(feature = "extra-children")]
3705        let mut emit_idx: usize = 0;
3706        #[cfg(feature = "extra-children")]
3707        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3708            extra_iter
3709                .next()
3710                .unwrap()
3711                .node
3712                .write_to(writer)
3713                .map_err(SerializeError::from)?;
3714        }
3715        #[cfg(feature = "dml-shapes")]
3716        if let Some(ref val) = self.grp_sp_locks {
3717            val.write_element("a:grpSpLocks", writer)?;
3718        }
3719        #[cfg(feature = "extra-children")]
3720        {
3721            emit_idx += 1;
3722        }
3723        #[cfg(feature = "extra-children")]
3724        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3725            extra_iter
3726                .next()
3727                .unwrap()
3728                .node
3729                .write_to(writer)
3730                .map_err(SerializeError::from)?;
3731        }
3732        #[cfg(feature = "dml-extensions")]
3733        if let Some(ref val) = self.ext_lst {
3734            val.write_element("a:extLst", writer)?;
3735        }
3736        #[cfg(feature = "extra-children")]
3737        {
3738            emit_idx += 1;
3739        }
3740        #[cfg(feature = "extra-children")]
3741        for extra in extra_iter {
3742            extra.node.write_to(writer).map_err(SerializeError::from)?;
3743        }
3744        Ok(())
3745    }
3746
3747    fn is_empty_element(&self) -> bool {
3748        #[cfg(feature = "dml-shapes")]
3749        if self.grp_sp_locks.is_some() {
3750            return false;
3751        }
3752        #[cfg(feature = "dml-extensions")]
3753        if self.ext_lst.is_some() {
3754            return false;
3755        }
3756        #[cfg(feature = "extra-children")]
3757        if !self.extra_children.is_empty() {
3758            return false;
3759        }
3760        true
3761    }
3762}
3763
3764impl ToXml for CTNonVisualGraphicFrameProperties {
3765    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3766        #[cfg(feature = "extra-children")]
3767        let mut extra_iter = self.extra_children.iter().peekable();
3768        #[cfg(feature = "extra-children")]
3769        let mut emit_idx: usize = 0;
3770        #[cfg(feature = "extra-children")]
3771        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3772            extra_iter
3773                .next()
3774                .unwrap()
3775                .node
3776                .write_to(writer)
3777                .map_err(SerializeError::from)?;
3778        }
3779        #[cfg(feature = "dml-shapes")]
3780        if let Some(ref val) = self.graphic_frame_locks {
3781            val.write_element("a:graphicFrameLocks", writer)?;
3782        }
3783        #[cfg(feature = "extra-children")]
3784        {
3785            emit_idx += 1;
3786        }
3787        #[cfg(feature = "extra-children")]
3788        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3789            extra_iter
3790                .next()
3791                .unwrap()
3792                .node
3793                .write_to(writer)
3794                .map_err(SerializeError::from)?;
3795        }
3796        #[cfg(feature = "dml-extensions")]
3797        if let Some(ref val) = self.ext_lst {
3798            val.write_element("a:extLst", writer)?;
3799        }
3800        #[cfg(feature = "extra-children")]
3801        {
3802            emit_idx += 1;
3803        }
3804        #[cfg(feature = "extra-children")]
3805        for extra in extra_iter {
3806            extra.node.write_to(writer).map_err(SerializeError::from)?;
3807        }
3808        Ok(())
3809    }
3810
3811    fn is_empty_element(&self) -> bool {
3812        #[cfg(feature = "dml-shapes")]
3813        if self.graphic_frame_locks.is_some() {
3814            return false;
3815        }
3816        #[cfg(feature = "dml-extensions")]
3817        if self.ext_lst.is_some() {
3818            return false;
3819        }
3820        #[cfg(feature = "extra-children")]
3821        if !self.extra_children.is_empty() {
3822            return false;
3823        }
3824        true
3825    }
3826}
3827
3828impl ToXml for CTNonVisualContentPartProperties {
3829    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
3830        #[allow(unused_mut)]
3831        let mut start = start;
3832        if let Some(ref val) = self.is_comment {
3833            start.push_attribute(("isComment", if *val { "1" } else { "0" }));
3834        }
3835        #[cfg(feature = "extra-attrs")]
3836        for (key, value) in &self.extra_attrs {
3837            start.push_attribute((key.as_str(), value.as_str()));
3838        }
3839        start
3840    }
3841
3842    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3843        #[cfg(feature = "extra-children")]
3844        let mut extra_iter = self.extra_children.iter().peekable();
3845        #[cfg(feature = "extra-children")]
3846        let mut emit_idx: usize = 0;
3847        #[cfg(feature = "extra-children")]
3848        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3849            extra_iter
3850                .next()
3851                .unwrap()
3852                .node
3853                .write_to(writer)
3854                .map_err(SerializeError::from)?;
3855        }
3856        if let Some(ref val) = self.cp_locks {
3857            val.write_element("a:cpLocks", writer)?;
3858        }
3859        #[cfg(feature = "extra-children")]
3860        {
3861            emit_idx += 1;
3862        }
3863        #[cfg(feature = "extra-children")]
3864        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3865            extra_iter
3866                .next()
3867                .unwrap()
3868                .node
3869                .write_to(writer)
3870                .map_err(SerializeError::from)?;
3871        }
3872        if let Some(ref val) = self.ext_lst {
3873            val.write_element("a:extLst", writer)?;
3874        }
3875        #[cfg(feature = "extra-children")]
3876        {
3877            emit_idx += 1;
3878        }
3879        #[cfg(feature = "extra-children")]
3880        for extra in extra_iter {
3881            extra.node.write_to(writer).map_err(SerializeError::from)?;
3882        }
3883        Ok(())
3884    }
3885
3886    fn is_empty_element(&self) -> bool {
3887        if self.cp_locks.is_some() {
3888            return false;
3889        }
3890        if self.ext_lst.is_some() {
3891            return false;
3892        }
3893        #[cfg(feature = "extra-children")]
3894        if !self.extra_children.is_empty() {
3895            return false;
3896        }
3897        true
3898    }
3899}
3900
3901impl ToXml for CTGraphicalObjectData {
3902    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
3903        #[allow(unused_mut)]
3904        let mut start = start;
3905        {
3906            let val = &self.uri;
3907            start.push_attribute(("uri", val.as_str()));
3908        }
3909        #[cfg(feature = "extra-attrs")]
3910        for (key, value) in &self.extra_attrs {
3911            start.push_attribute((key.as_str(), value.as_str()));
3912        }
3913        start
3914    }
3915
3916    fn is_empty_element(&self) -> bool {
3917        true
3918    }
3919}
3920
3921impl ToXml for CTAnimationDgmElement {
3922    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
3923        #[allow(unused_mut)]
3924        let mut start = start;
3925        if let Some(ref val) = self.id {
3926            start.push_attribute(("id", val.as_str()));
3927        }
3928        if let Some(ref val) = self.bld_step {
3929            {
3930                let s = val.to_string();
3931                start.push_attribute(("bldStep", s.as_str()));
3932            }
3933        }
3934        #[cfg(feature = "extra-attrs")]
3935        for (key, value) in &self.extra_attrs {
3936            start.push_attribute((key.as_str(), value.as_str()));
3937        }
3938        start
3939    }
3940
3941    fn is_empty_element(&self) -> bool {
3942        true
3943    }
3944}
3945
3946impl ToXml for CTAnimationChartElement {
3947    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
3948        #[allow(unused_mut)]
3949        let mut start = start;
3950        if let Some(ref val) = self.series_idx {
3951            {
3952                let s = val.to_string();
3953                start.push_attribute(("seriesIdx", s.as_str()));
3954            }
3955        }
3956        if let Some(ref val) = self.category_idx {
3957            {
3958                let s = val.to_string();
3959                start.push_attribute(("categoryIdx", s.as_str()));
3960            }
3961        }
3962        {
3963            let val = &self.bld_step;
3964            {
3965                let s = val.to_string();
3966                start.push_attribute(("bldStep", s.as_str()));
3967            }
3968        }
3969        #[cfg(feature = "extra-attrs")]
3970        for (key, value) in &self.extra_attrs {
3971            start.push_attribute((key.as_str(), value.as_str()));
3972        }
3973        start
3974    }
3975
3976    fn is_empty_element(&self) -> bool {
3977        true
3978    }
3979}
3980
3981impl ToXml for CTAnimationElementChoice {
3982    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
3983        #[cfg(feature = "extra-children")]
3984        let mut extra_iter = self.extra_children.iter().peekable();
3985        #[cfg(feature = "extra-children")]
3986        let mut emit_idx: usize = 0;
3987        #[cfg(feature = "extra-children")]
3988        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
3989            extra_iter
3990                .next()
3991                .unwrap()
3992                .node
3993                .write_to(writer)
3994                .map_err(SerializeError::from)?;
3995        }
3996        if let Some(ref val) = self.dgm {
3997            val.write_element("a:dgm", writer)?;
3998        }
3999        #[cfg(feature = "extra-children")]
4000        {
4001            emit_idx += 1;
4002        }
4003        #[cfg(feature = "extra-children")]
4004        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4005            extra_iter
4006                .next()
4007                .unwrap()
4008                .node
4009                .write_to(writer)
4010                .map_err(SerializeError::from)?;
4011        }
4012        if let Some(ref val) = self.chart {
4013            val.write_element("a:chart", writer)?;
4014        }
4015        #[cfg(feature = "extra-children")]
4016        {
4017            emit_idx += 1;
4018        }
4019        #[cfg(feature = "extra-children")]
4020        for extra in extra_iter {
4021            extra.node.write_to(writer).map_err(SerializeError::from)?;
4022        }
4023        Ok(())
4024    }
4025
4026    fn is_empty_element(&self) -> bool {
4027        if self.dgm.is_some() {
4028            return false;
4029        }
4030        if self.chart.is_some() {
4031            return false;
4032        }
4033        #[cfg(feature = "extra-children")]
4034        if !self.extra_children.is_empty() {
4035            return false;
4036        }
4037        true
4038    }
4039}
4040
4041impl ToXml for CTAnimationDgmBuildProperties {
4042    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
4043        #[allow(unused_mut)]
4044        let mut start = start;
4045        if let Some(ref val) = self.bld {
4046            {
4047                let s = val.to_string();
4048                start.push_attribute(("bld", s.as_str()));
4049            }
4050        }
4051        if let Some(ref val) = self.rev {
4052            start.push_attribute(("rev", if *val { "1" } else { "0" }));
4053        }
4054        #[cfg(feature = "extra-attrs")]
4055        for (key, value) in &self.extra_attrs {
4056            start.push_attribute((key.as_str(), value.as_str()));
4057        }
4058        start
4059    }
4060
4061    fn is_empty_element(&self) -> bool {
4062        true
4063    }
4064}
4065
4066impl ToXml for CTAnimationChartBuildProperties {
4067    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
4068        #[allow(unused_mut)]
4069        let mut start = start;
4070        if let Some(ref val) = self.bld {
4071            {
4072                let s = val.to_string();
4073                start.push_attribute(("bld", s.as_str()));
4074            }
4075        }
4076        if let Some(ref val) = self.anim_bg {
4077            start.push_attribute(("animBg", if *val { "1" } else { "0" }));
4078        }
4079        #[cfg(feature = "extra-attrs")]
4080        for (key, value) in &self.extra_attrs {
4081            start.push_attribute((key.as_str(), value.as_str()));
4082        }
4083        start
4084    }
4085
4086    fn is_empty_element(&self) -> bool {
4087        true
4088    }
4089}
4090
4091impl ToXml for CTAnimationGraphicalObjectBuildProperties {
4092    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4093        #[cfg(feature = "extra-children")]
4094        let mut extra_iter = self.extra_children.iter().peekable();
4095        #[cfg(feature = "extra-children")]
4096        let mut emit_idx: usize = 0;
4097        #[cfg(feature = "extra-children")]
4098        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4099            extra_iter
4100                .next()
4101                .unwrap()
4102                .node
4103                .write_to(writer)
4104                .map_err(SerializeError::from)?;
4105        }
4106        if let Some(ref val) = self.bld_dgm {
4107            val.write_element("a:bldDgm", writer)?;
4108        }
4109        #[cfg(feature = "extra-children")]
4110        {
4111            emit_idx += 1;
4112        }
4113        #[cfg(feature = "extra-children")]
4114        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4115            extra_iter
4116                .next()
4117                .unwrap()
4118                .node
4119                .write_to(writer)
4120                .map_err(SerializeError::from)?;
4121        }
4122        if let Some(ref val) = self.bld_chart {
4123            val.write_element("a:bldChart", writer)?;
4124        }
4125        #[cfg(feature = "extra-children")]
4126        {
4127            emit_idx += 1;
4128        }
4129        #[cfg(feature = "extra-children")]
4130        for extra in extra_iter {
4131            extra.node.write_to(writer).map_err(SerializeError::from)?;
4132        }
4133        Ok(())
4134    }
4135
4136    fn is_empty_element(&self) -> bool {
4137        if self.bld_dgm.is_some() {
4138            return false;
4139        }
4140        if self.bld_chart.is_some() {
4141            return false;
4142        }
4143        #[cfg(feature = "extra-children")]
4144        if !self.extra_children.is_empty() {
4145            return false;
4146        }
4147        true
4148    }
4149}
4150
4151impl ToXml for CTBackgroundFormatting {
4152    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4153        #[cfg(feature = "extra-children")]
4154        let mut extra_iter = self.extra_children.iter().peekable();
4155        #[cfg(feature = "extra-children")]
4156        let mut emit_idx: usize = 0;
4157        #[cfg(feature = "extra-children")]
4158        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4159            extra_iter
4160                .next()
4161                .unwrap()
4162                .node
4163                .write_to(writer)
4164                .map_err(SerializeError::from)?;
4165        }
4166        if let Some(ref val) = self.fill_properties {
4167            val.write_element("", writer)?;
4168        }
4169        #[cfg(feature = "extra-children")]
4170        {
4171            emit_idx += 1;
4172        }
4173        #[cfg(feature = "extra-children")]
4174        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4175            extra_iter
4176                .next()
4177                .unwrap()
4178                .node
4179                .write_to(writer)
4180                .map_err(SerializeError::from)?;
4181        }
4182        if let Some(ref val) = self.effect_properties {
4183            val.write_element("", writer)?;
4184        }
4185        #[cfg(feature = "extra-children")]
4186        {
4187            emit_idx += 1;
4188        }
4189        #[cfg(feature = "extra-children")]
4190        for extra in extra_iter {
4191            extra.node.write_to(writer).map_err(SerializeError::from)?;
4192        }
4193        Ok(())
4194    }
4195
4196    fn is_empty_element(&self) -> bool {
4197        if self.fill_properties.is_some() {
4198            return false;
4199        }
4200        if self.effect_properties.is_some() {
4201            return false;
4202        }
4203        #[cfg(feature = "extra-children")]
4204        if !self.extra_children.is_empty() {
4205            return false;
4206        }
4207        true
4208    }
4209}
4210
4211impl ToXml for CTWholeE2oFormatting {
4212    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4213        #[cfg(feature = "extra-children")]
4214        let mut extra_iter = self.extra_children.iter().peekable();
4215        #[cfg(feature = "extra-children")]
4216        let mut emit_idx: usize = 0;
4217        #[cfg(feature = "extra-children")]
4218        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4219            extra_iter
4220                .next()
4221                .unwrap()
4222                .node
4223                .write_to(writer)
4224                .map_err(SerializeError::from)?;
4225        }
4226        if let Some(ref val) = self.line {
4227            val.write_element("a:ln", writer)?;
4228        }
4229        #[cfg(feature = "extra-children")]
4230        {
4231            emit_idx += 1;
4232        }
4233        #[cfg(feature = "extra-children")]
4234        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4235            extra_iter
4236                .next()
4237                .unwrap()
4238                .node
4239                .write_to(writer)
4240                .map_err(SerializeError::from)?;
4241        }
4242        if let Some(ref val) = self.effect_properties {
4243            val.write_element("", writer)?;
4244        }
4245        #[cfg(feature = "extra-children")]
4246        {
4247            emit_idx += 1;
4248        }
4249        #[cfg(feature = "extra-children")]
4250        for extra in extra_iter {
4251            extra.node.write_to(writer).map_err(SerializeError::from)?;
4252        }
4253        Ok(())
4254    }
4255
4256    fn is_empty_element(&self) -> bool {
4257        if self.line.is_some() {
4258            return false;
4259        }
4260        if self.effect_properties.is_some() {
4261            return false;
4262        }
4263        #[cfg(feature = "extra-children")]
4264        if !self.extra_children.is_empty() {
4265            return false;
4266        }
4267        true
4268    }
4269}
4270
4271impl ToXml for CTGvmlUseShapeRectangle {
4272    fn is_empty_element(&self) -> bool {
4273        true
4274    }
4275}
4276
4277impl ToXml for CTGvmlTextShape {
4278    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4279        #[cfg(feature = "extra-children")]
4280        let mut extra_iter = self.extra_children.iter().peekable();
4281        #[cfg(feature = "extra-children")]
4282        let mut emit_idx: usize = 0;
4283        #[cfg(feature = "extra-children")]
4284        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4285            extra_iter
4286                .next()
4287                .unwrap()
4288                .node
4289                .write_to(writer)
4290                .map_err(SerializeError::from)?;
4291        }
4292        {
4293            let val = &self.tx_body;
4294            val.write_element("a:txBody", writer)?;
4295        }
4296        #[cfg(feature = "extra-children")]
4297        {
4298            emit_idx += 1;
4299        }
4300        #[cfg(feature = "extra-children")]
4301        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4302            extra_iter
4303                .next()
4304                .unwrap()
4305                .node
4306                .write_to(writer)
4307                .map_err(SerializeError::from)?;
4308        }
4309        if let Some(ref val) = self.use_sp_rect {
4310            val.write_element("a:useSpRect", writer)?;
4311        }
4312        #[cfg(feature = "extra-children")]
4313        {
4314            emit_idx += 1;
4315        }
4316        #[cfg(feature = "extra-children")]
4317        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4318            extra_iter
4319                .next()
4320                .unwrap()
4321                .node
4322                .write_to(writer)
4323                .map_err(SerializeError::from)?;
4324        }
4325        if let Some(ref val) = self.transform {
4326            val.write_element("a:xfrm", writer)?;
4327        }
4328        #[cfg(feature = "extra-children")]
4329        {
4330            emit_idx += 1;
4331        }
4332        #[cfg(feature = "extra-children")]
4333        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4334            extra_iter
4335                .next()
4336                .unwrap()
4337                .node
4338                .write_to(writer)
4339                .map_err(SerializeError::from)?;
4340        }
4341        if let Some(ref val) = self.ext_lst {
4342            val.write_element("a:extLst", writer)?;
4343        }
4344        #[cfg(feature = "extra-children")]
4345        {
4346            emit_idx += 1;
4347        }
4348        #[cfg(feature = "extra-children")]
4349        for extra in extra_iter {
4350            extra.node.write_to(writer).map_err(SerializeError::from)?;
4351        }
4352        Ok(())
4353    }
4354
4355    fn is_empty_element(&self) -> bool {
4356        false
4357    }
4358}
4359
4360impl ToXml for CTGvmlShapeNonVisual {
4361    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4362        #[cfg(feature = "extra-children")]
4363        let mut extra_iter = self.extra_children.iter().peekable();
4364        #[cfg(feature = "extra-children")]
4365        let mut emit_idx: usize = 0;
4366        #[cfg(feature = "extra-children")]
4367        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4368            extra_iter
4369                .next()
4370                .unwrap()
4371                .node
4372                .write_to(writer)
4373                .map_err(SerializeError::from)?;
4374        }
4375        {
4376            let val = &self.common_non_visual_properties;
4377            val.write_element("a:cNvPr", writer)?;
4378        }
4379        #[cfg(feature = "extra-children")]
4380        {
4381            emit_idx += 1;
4382        }
4383        #[cfg(feature = "extra-children")]
4384        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4385            extra_iter
4386                .next()
4387                .unwrap()
4388                .node
4389                .write_to(writer)
4390                .map_err(SerializeError::from)?;
4391        }
4392        {
4393            let val = &self.common_non_visual_shape_properties;
4394            val.write_element("a:cNvSpPr", writer)?;
4395        }
4396        #[cfg(feature = "extra-children")]
4397        {
4398            emit_idx += 1;
4399        }
4400        #[cfg(feature = "extra-children")]
4401        for extra in extra_iter {
4402            extra.node.write_to(writer).map_err(SerializeError::from)?;
4403        }
4404        Ok(())
4405    }
4406
4407    fn is_empty_element(&self) -> bool {
4408        false
4409    }
4410}
4411
4412impl ToXml for CTGvmlShape {
4413    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4414        #[cfg(feature = "extra-children")]
4415        let mut extra_iter = self.extra_children.iter().peekable();
4416        #[cfg(feature = "extra-children")]
4417        let mut emit_idx: usize = 0;
4418        #[cfg(feature = "extra-children")]
4419        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4420            extra_iter
4421                .next()
4422                .unwrap()
4423                .node
4424                .write_to(writer)
4425                .map_err(SerializeError::from)?;
4426        }
4427        {
4428            let val = &self.nv_sp_pr;
4429            val.write_element("a:nvSpPr", writer)?;
4430        }
4431        #[cfg(feature = "extra-children")]
4432        {
4433            emit_idx += 1;
4434        }
4435        #[cfg(feature = "extra-children")]
4436        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4437            extra_iter
4438                .next()
4439                .unwrap()
4440                .node
4441                .write_to(writer)
4442                .map_err(SerializeError::from)?;
4443        }
4444        {
4445            let val = &self.sp_pr;
4446            val.write_element("a:spPr", writer)?;
4447        }
4448        #[cfg(feature = "extra-children")]
4449        {
4450            emit_idx += 1;
4451        }
4452        #[cfg(feature = "extra-children")]
4453        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4454            extra_iter
4455                .next()
4456                .unwrap()
4457                .node
4458                .write_to(writer)
4459                .map_err(SerializeError::from)?;
4460        }
4461        if let Some(ref val) = self.tx_sp {
4462            val.write_element("a:txSp", writer)?;
4463        }
4464        #[cfg(feature = "extra-children")]
4465        {
4466            emit_idx += 1;
4467        }
4468        #[cfg(feature = "extra-children")]
4469        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4470            extra_iter
4471                .next()
4472                .unwrap()
4473                .node
4474                .write_to(writer)
4475                .map_err(SerializeError::from)?;
4476        }
4477        if let Some(ref val) = self.style {
4478            val.write_element("a:style", writer)?;
4479        }
4480        #[cfg(feature = "extra-children")]
4481        {
4482            emit_idx += 1;
4483        }
4484        #[cfg(feature = "extra-children")]
4485        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4486            extra_iter
4487                .next()
4488                .unwrap()
4489                .node
4490                .write_to(writer)
4491                .map_err(SerializeError::from)?;
4492        }
4493        if let Some(ref val) = self.ext_lst {
4494            val.write_element("a:extLst", writer)?;
4495        }
4496        #[cfg(feature = "extra-children")]
4497        {
4498            emit_idx += 1;
4499        }
4500        #[cfg(feature = "extra-children")]
4501        for extra in extra_iter {
4502            extra.node.write_to(writer).map_err(SerializeError::from)?;
4503        }
4504        Ok(())
4505    }
4506
4507    fn is_empty_element(&self) -> bool {
4508        false
4509    }
4510}
4511
4512impl ToXml for CTGvmlConnectorNonVisual {
4513    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4514        #[cfg(feature = "extra-children")]
4515        let mut extra_iter = self.extra_children.iter().peekable();
4516        #[cfg(feature = "extra-children")]
4517        let mut emit_idx: usize = 0;
4518        #[cfg(feature = "extra-children")]
4519        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4520            extra_iter
4521                .next()
4522                .unwrap()
4523                .node
4524                .write_to(writer)
4525                .map_err(SerializeError::from)?;
4526        }
4527        {
4528            let val = &self.common_non_visual_properties;
4529            val.write_element("a:cNvPr", writer)?;
4530        }
4531        #[cfg(feature = "extra-children")]
4532        {
4533            emit_idx += 1;
4534        }
4535        #[cfg(feature = "extra-children")]
4536        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4537            extra_iter
4538                .next()
4539                .unwrap()
4540                .node
4541                .write_to(writer)
4542                .map_err(SerializeError::from)?;
4543        }
4544        {
4545            let val = &self.c_nv_cxn_sp_pr;
4546            val.write_element("a:cNvCxnSpPr", writer)?;
4547        }
4548        #[cfg(feature = "extra-children")]
4549        {
4550            emit_idx += 1;
4551        }
4552        #[cfg(feature = "extra-children")]
4553        for extra in extra_iter {
4554            extra.node.write_to(writer).map_err(SerializeError::from)?;
4555        }
4556        Ok(())
4557    }
4558
4559    fn is_empty_element(&self) -> bool {
4560        false
4561    }
4562}
4563
4564impl ToXml for CTGvmlConnector {
4565    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4566        #[cfg(feature = "extra-children")]
4567        let mut extra_iter = self.extra_children.iter().peekable();
4568        #[cfg(feature = "extra-children")]
4569        let mut emit_idx: usize = 0;
4570        #[cfg(feature = "extra-children")]
4571        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4572            extra_iter
4573                .next()
4574                .unwrap()
4575                .node
4576                .write_to(writer)
4577                .map_err(SerializeError::from)?;
4578        }
4579        {
4580            let val = &self.nv_cxn_sp_pr;
4581            val.write_element("a:nvCxnSpPr", writer)?;
4582        }
4583        #[cfg(feature = "extra-children")]
4584        {
4585            emit_idx += 1;
4586        }
4587        #[cfg(feature = "extra-children")]
4588        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4589            extra_iter
4590                .next()
4591                .unwrap()
4592                .node
4593                .write_to(writer)
4594                .map_err(SerializeError::from)?;
4595        }
4596        {
4597            let val = &self.sp_pr;
4598            val.write_element("a:spPr", writer)?;
4599        }
4600        #[cfg(feature = "extra-children")]
4601        {
4602            emit_idx += 1;
4603        }
4604        #[cfg(feature = "extra-children")]
4605        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4606            extra_iter
4607                .next()
4608                .unwrap()
4609                .node
4610                .write_to(writer)
4611                .map_err(SerializeError::from)?;
4612        }
4613        if let Some(ref val) = self.style {
4614            val.write_element("a:style", writer)?;
4615        }
4616        #[cfg(feature = "extra-children")]
4617        {
4618            emit_idx += 1;
4619        }
4620        #[cfg(feature = "extra-children")]
4621        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4622            extra_iter
4623                .next()
4624                .unwrap()
4625                .node
4626                .write_to(writer)
4627                .map_err(SerializeError::from)?;
4628        }
4629        if let Some(ref val) = self.ext_lst {
4630            val.write_element("a:extLst", writer)?;
4631        }
4632        #[cfg(feature = "extra-children")]
4633        {
4634            emit_idx += 1;
4635        }
4636        #[cfg(feature = "extra-children")]
4637        for extra in extra_iter {
4638            extra.node.write_to(writer).map_err(SerializeError::from)?;
4639        }
4640        Ok(())
4641    }
4642
4643    fn is_empty_element(&self) -> bool {
4644        false
4645    }
4646}
4647
4648impl ToXml for CTGvmlPictureNonVisual {
4649    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4650        #[cfg(feature = "extra-children")]
4651        let mut extra_iter = self.extra_children.iter().peekable();
4652        #[cfg(feature = "extra-children")]
4653        let mut emit_idx: usize = 0;
4654        #[cfg(feature = "extra-children")]
4655        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4656            extra_iter
4657                .next()
4658                .unwrap()
4659                .node
4660                .write_to(writer)
4661                .map_err(SerializeError::from)?;
4662        }
4663        {
4664            let val = &self.common_non_visual_properties;
4665            val.write_element("a:cNvPr", writer)?;
4666        }
4667        #[cfg(feature = "extra-children")]
4668        {
4669            emit_idx += 1;
4670        }
4671        #[cfg(feature = "extra-children")]
4672        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4673            extra_iter
4674                .next()
4675                .unwrap()
4676                .node
4677                .write_to(writer)
4678                .map_err(SerializeError::from)?;
4679        }
4680        {
4681            let val = &self.common_non_visual_picture_properties;
4682            val.write_element("a:cNvPicPr", writer)?;
4683        }
4684        #[cfg(feature = "extra-children")]
4685        {
4686            emit_idx += 1;
4687        }
4688        #[cfg(feature = "extra-children")]
4689        for extra in extra_iter {
4690            extra.node.write_to(writer).map_err(SerializeError::from)?;
4691        }
4692        Ok(())
4693    }
4694
4695    fn is_empty_element(&self) -> bool {
4696        false
4697    }
4698}
4699
4700impl ToXml for CTGvmlPicture {
4701    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4702        #[cfg(feature = "extra-children")]
4703        let mut extra_iter = self.extra_children.iter().peekable();
4704        #[cfg(feature = "extra-children")]
4705        let mut emit_idx: usize = 0;
4706        #[cfg(feature = "extra-children")]
4707        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4708            extra_iter
4709                .next()
4710                .unwrap()
4711                .node
4712                .write_to(writer)
4713                .map_err(SerializeError::from)?;
4714        }
4715        {
4716            let val = &self.nv_pic_pr;
4717            val.write_element("a:nvPicPr", writer)?;
4718        }
4719        #[cfg(feature = "extra-children")]
4720        {
4721            emit_idx += 1;
4722        }
4723        #[cfg(feature = "extra-children")]
4724        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4725            extra_iter
4726                .next()
4727                .unwrap()
4728                .node
4729                .write_to(writer)
4730                .map_err(SerializeError::from)?;
4731        }
4732        {
4733            let val = &self.blip_fill;
4734            val.write_element("a:blipFill", writer)?;
4735        }
4736        #[cfg(feature = "extra-children")]
4737        {
4738            emit_idx += 1;
4739        }
4740        #[cfg(feature = "extra-children")]
4741        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4742            extra_iter
4743                .next()
4744                .unwrap()
4745                .node
4746                .write_to(writer)
4747                .map_err(SerializeError::from)?;
4748        }
4749        {
4750            let val = &self.sp_pr;
4751            val.write_element("a:spPr", writer)?;
4752        }
4753        #[cfg(feature = "extra-children")]
4754        {
4755            emit_idx += 1;
4756        }
4757        #[cfg(feature = "extra-children")]
4758        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4759            extra_iter
4760                .next()
4761                .unwrap()
4762                .node
4763                .write_to(writer)
4764                .map_err(SerializeError::from)?;
4765        }
4766        if let Some(ref val) = self.style {
4767            val.write_element("a:style", writer)?;
4768        }
4769        #[cfg(feature = "extra-children")]
4770        {
4771            emit_idx += 1;
4772        }
4773        #[cfg(feature = "extra-children")]
4774        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4775            extra_iter
4776                .next()
4777                .unwrap()
4778                .node
4779                .write_to(writer)
4780                .map_err(SerializeError::from)?;
4781        }
4782        if let Some(ref val) = self.ext_lst {
4783            val.write_element("a:extLst", writer)?;
4784        }
4785        #[cfg(feature = "extra-children")]
4786        {
4787            emit_idx += 1;
4788        }
4789        #[cfg(feature = "extra-children")]
4790        for extra in extra_iter {
4791            extra.node.write_to(writer).map_err(SerializeError::from)?;
4792        }
4793        Ok(())
4794    }
4795
4796    fn is_empty_element(&self) -> bool {
4797        false
4798    }
4799}
4800
4801impl ToXml for CTGvmlGraphicFrameNonVisual {
4802    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4803        #[cfg(feature = "extra-children")]
4804        let mut extra_iter = self.extra_children.iter().peekable();
4805        #[cfg(feature = "extra-children")]
4806        let mut emit_idx: usize = 0;
4807        #[cfg(feature = "extra-children")]
4808        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4809            extra_iter
4810                .next()
4811                .unwrap()
4812                .node
4813                .write_to(writer)
4814                .map_err(SerializeError::from)?;
4815        }
4816        {
4817            let val = &self.common_non_visual_properties;
4818            val.write_element("a:cNvPr", writer)?;
4819        }
4820        #[cfg(feature = "extra-children")]
4821        {
4822            emit_idx += 1;
4823        }
4824        #[cfg(feature = "extra-children")]
4825        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4826            extra_iter
4827                .next()
4828                .unwrap()
4829                .node
4830                .write_to(writer)
4831                .map_err(SerializeError::from)?;
4832        }
4833        {
4834            let val = &self.c_nv_graphic_frame_pr;
4835            val.write_element("a:cNvGraphicFramePr", writer)?;
4836        }
4837        #[cfg(feature = "extra-children")]
4838        {
4839            emit_idx += 1;
4840        }
4841        #[cfg(feature = "extra-children")]
4842        for extra in extra_iter {
4843            extra.node.write_to(writer).map_err(SerializeError::from)?;
4844        }
4845        Ok(())
4846    }
4847
4848    fn is_empty_element(&self) -> bool {
4849        false
4850    }
4851}
4852
4853impl ToXml for CTGvmlGraphicalObjectFrame {
4854    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4855        #[cfg(feature = "extra-children")]
4856        let mut extra_iter = self.extra_children.iter().peekable();
4857        #[cfg(feature = "extra-children")]
4858        let mut emit_idx: usize = 0;
4859        #[cfg(feature = "extra-children")]
4860        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4861            extra_iter
4862                .next()
4863                .unwrap()
4864                .node
4865                .write_to(writer)
4866                .map_err(SerializeError::from)?;
4867        }
4868        {
4869            let val = &self.nv_graphic_frame_pr;
4870            val.write_element("a:nvGraphicFramePr", writer)?;
4871        }
4872        #[cfg(feature = "extra-children")]
4873        {
4874            emit_idx += 1;
4875        }
4876        #[cfg(feature = "extra-children")]
4877        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4878            extra_iter
4879                .next()
4880                .unwrap()
4881                .node
4882                .write_to(writer)
4883                .map_err(SerializeError::from)?;
4884        }
4885        {
4886            let val = &self.graphic;
4887            val.write_element("a:graphic", writer)?;
4888        }
4889        #[cfg(feature = "extra-children")]
4890        {
4891            emit_idx += 1;
4892        }
4893        #[cfg(feature = "extra-children")]
4894        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4895            extra_iter
4896                .next()
4897                .unwrap()
4898                .node
4899                .write_to(writer)
4900                .map_err(SerializeError::from)?;
4901        }
4902        {
4903            let val = &self.transform;
4904            val.write_element("a:xfrm", writer)?;
4905        }
4906        #[cfg(feature = "extra-children")]
4907        {
4908            emit_idx += 1;
4909        }
4910        #[cfg(feature = "extra-children")]
4911        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4912            extra_iter
4913                .next()
4914                .unwrap()
4915                .node
4916                .write_to(writer)
4917                .map_err(SerializeError::from)?;
4918        }
4919        if let Some(ref val) = self.ext_lst {
4920            val.write_element("a:extLst", writer)?;
4921        }
4922        #[cfg(feature = "extra-children")]
4923        {
4924            emit_idx += 1;
4925        }
4926        #[cfg(feature = "extra-children")]
4927        for extra in extra_iter {
4928            extra.node.write_to(writer).map_err(SerializeError::from)?;
4929        }
4930        Ok(())
4931    }
4932
4933    fn is_empty_element(&self) -> bool {
4934        false
4935    }
4936}
4937
4938impl ToXml for CTGvmlGroupShapeNonVisual {
4939    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4940        #[cfg(feature = "extra-children")]
4941        let mut extra_iter = self.extra_children.iter().peekable();
4942        #[cfg(feature = "extra-children")]
4943        let mut emit_idx: usize = 0;
4944        #[cfg(feature = "extra-children")]
4945        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4946            extra_iter
4947                .next()
4948                .unwrap()
4949                .node
4950                .write_to(writer)
4951                .map_err(SerializeError::from)?;
4952        }
4953        {
4954            let val = &self.common_non_visual_properties;
4955            val.write_element("a:cNvPr", writer)?;
4956        }
4957        #[cfg(feature = "extra-children")]
4958        {
4959            emit_idx += 1;
4960        }
4961        #[cfg(feature = "extra-children")]
4962        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4963            extra_iter
4964                .next()
4965                .unwrap()
4966                .node
4967                .write_to(writer)
4968                .map_err(SerializeError::from)?;
4969        }
4970        {
4971            let val = &self.c_nv_grp_sp_pr;
4972            val.write_element("a:cNvGrpSpPr", writer)?;
4973        }
4974        #[cfg(feature = "extra-children")]
4975        {
4976            emit_idx += 1;
4977        }
4978        #[cfg(feature = "extra-children")]
4979        for extra in extra_iter {
4980            extra.node.write_to(writer).map_err(SerializeError::from)?;
4981        }
4982        Ok(())
4983    }
4984
4985    fn is_empty_element(&self) -> bool {
4986        false
4987    }
4988}
4989
4990impl ToXml for CTGvmlGroupShape {
4991    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
4992        #[cfg(feature = "extra-children")]
4993        let mut extra_iter = self.extra_children.iter().peekable();
4994        #[cfg(feature = "extra-children")]
4995        let mut emit_idx: usize = 0;
4996        #[cfg(feature = "extra-children")]
4997        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
4998            extra_iter
4999                .next()
5000                .unwrap()
5001                .node
5002                .write_to(writer)
5003                .map_err(SerializeError::from)?;
5004        }
5005        {
5006            let val = &self.nv_grp_sp_pr;
5007            val.write_element("a:nvGrpSpPr", writer)?;
5008        }
5009        #[cfg(feature = "extra-children")]
5010        {
5011            emit_idx += 1;
5012        }
5013        #[cfg(feature = "extra-children")]
5014        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5015            extra_iter
5016                .next()
5017                .unwrap()
5018                .node
5019                .write_to(writer)
5020                .map_err(SerializeError::from)?;
5021        }
5022        {
5023            let val = &self.grp_sp_pr;
5024            val.write_element("a:grpSpPr", writer)?;
5025        }
5026        #[cfg(feature = "extra-children")]
5027        {
5028            emit_idx += 1;
5029        }
5030        for item in &self.tx_sp {
5031            #[cfg(feature = "extra-children")]
5032            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5033                extra_iter
5034                    .next()
5035                    .unwrap()
5036                    .node
5037                    .write_to(writer)
5038                    .map_err(SerializeError::from)?;
5039            }
5040            item.write_element("a:txSp", writer)?;
5041            #[cfg(feature = "extra-children")]
5042            {
5043                emit_idx += 1;
5044            }
5045        }
5046        for item in &self.sp {
5047            #[cfg(feature = "extra-children")]
5048            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5049                extra_iter
5050                    .next()
5051                    .unwrap()
5052                    .node
5053                    .write_to(writer)
5054                    .map_err(SerializeError::from)?;
5055            }
5056            item.write_element("a:sp", writer)?;
5057            #[cfg(feature = "extra-children")]
5058            {
5059                emit_idx += 1;
5060            }
5061        }
5062        for item in &self.cxn_sp {
5063            #[cfg(feature = "extra-children")]
5064            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5065                extra_iter
5066                    .next()
5067                    .unwrap()
5068                    .node
5069                    .write_to(writer)
5070                    .map_err(SerializeError::from)?;
5071            }
5072            item.write_element("a:cxnSp", writer)?;
5073            #[cfg(feature = "extra-children")]
5074            {
5075                emit_idx += 1;
5076            }
5077        }
5078        for item in &self.pic {
5079            #[cfg(feature = "extra-children")]
5080            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5081                extra_iter
5082                    .next()
5083                    .unwrap()
5084                    .node
5085                    .write_to(writer)
5086                    .map_err(SerializeError::from)?;
5087            }
5088            item.write_element("a:pic", writer)?;
5089            #[cfg(feature = "extra-children")]
5090            {
5091                emit_idx += 1;
5092            }
5093        }
5094        for item in &self.graphic_frame {
5095            #[cfg(feature = "extra-children")]
5096            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5097                extra_iter
5098                    .next()
5099                    .unwrap()
5100                    .node
5101                    .write_to(writer)
5102                    .map_err(SerializeError::from)?;
5103            }
5104            item.write_element("a:graphicFrame", writer)?;
5105            #[cfg(feature = "extra-children")]
5106            {
5107                emit_idx += 1;
5108            }
5109        }
5110        for item in &self.grp_sp {
5111            #[cfg(feature = "extra-children")]
5112            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5113                extra_iter
5114                    .next()
5115                    .unwrap()
5116                    .node
5117                    .write_to(writer)
5118                    .map_err(SerializeError::from)?;
5119            }
5120            item.write_element("a:grpSp", writer)?;
5121            #[cfg(feature = "extra-children")]
5122            {
5123                emit_idx += 1;
5124            }
5125        }
5126        #[cfg(feature = "extra-children")]
5127        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5128            extra_iter
5129                .next()
5130                .unwrap()
5131                .node
5132                .write_to(writer)
5133                .map_err(SerializeError::from)?;
5134        }
5135        if let Some(ref val) = self.ext_lst {
5136            val.write_element("a:extLst", writer)?;
5137        }
5138        #[cfg(feature = "extra-children")]
5139        {
5140            emit_idx += 1;
5141        }
5142        #[cfg(feature = "extra-children")]
5143        for extra in extra_iter {
5144            extra.node.write_to(writer).map_err(SerializeError::from)?;
5145        }
5146        Ok(())
5147    }
5148
5149    fn is_empty_element(&self) -> bool {
5150        false
5151    }
5152}
5153
5154impl ToXml for CTCamera {
5155    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5156        #[allow(unused_mut)]
5157        let mut start = start;
5158        #[cfg(feature = "dml-3d")]
5159        {
5160            let val = &self.preset;
5161            {
5162                let s = val.to_string();
5163                start.push_attribute(("prst", s.as_str()));
5164            }
5165        }
5166        #[cfg(feature = "dml-3d")]
5167        if let Some(ref val) = self.fov {
5168            {
5169                let s = val.to_string();
5170                start.push_attribute(("fov", s.as_str()));
5171            }
5172        }
5173        #[cfg(feature = "dml-3d")]
5174        if let Some(ref val) = self.zoom {
5175            {
5176                let s = val.to_string();
5177                start.push_attribute(("zoom", s.as_str()));
5178            }
5179        }
5180        #[cfg(feature = "extra-attrs")]
5181        for (key, value) in &self.extra_attrs {
5182            start.push_attribute((key.as_str(), value.as_str()));
5183        }
5184        start
5185    }
5186
5187    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
5188        #[cfg(feature = "extra-children")]
5189        let mut extra_iter = self.extra_children.iter().peekable();
5190        #[cfg(feature = "extra-children")]
5191        let mut emit_idx: usize = 0;
5192        #[cfg(feature = "extra-children")]
5193        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5194            extra_iter
5195                .next()
5196                .unwrap()
5197                .node
5198                .write_to(writer)
5199                .map_err(SerializeError::from)?;
5200        }
5201        #[cfg(feature = "dml-3d")]
5202        if let Some(ref val) = self.rot {
5203            val.write_element("a:rot", writer)?;
5204        }
5205        #[cfg(feature = "extra-children")]
5206        {
5207            emit_idx += 1;
5208        }
5209        #[cfg(feature = "extra-children")]
5210        for extra in extra_iter {
5211            extra.node.write_to(writer).map_err(SerializeError::from)?;
5212        }
5213        Ok(())
5214    }
5215
5216    fn is_empty_element(&self) -> bool {
5217        #[cfg(feature = "dml-3d")]
5218        if self.rot.is_some() {
5219            return false;
5220        }
5221        #[cfg(feature = "extra-children")]
5222        if !self.extra_children.is_empty() {
5223            return false;
5224        }
5225        true
5226    }
5227}
5228
5229impl ToXml for CTLightRig {
5230    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5231        #[allow(unused_mut)]
5232        let mut start = start;
5233        #[cfg(feature = "dml-3d")]
5234        {
5235            let val = &self.rig;
5236            {
5237                let s = val.to_string();
5238                start.push_attribute(("rig", s.as_str()));
5239            }
5240        }
5241        #[cfg(feature = "dml-3d")]
5242        {
5243            let val = &self.dir;
5244            {
5245                let s = val.to_string();
5246                start.push_attribute(("dir", s.as_str()));
5247            }
5248        }
5249        #[cfg(feature = "extra-attrs")]
5250        for (key, value) in &self.extra_attrs {
5251            start.push_attribute((key.as_str(), value.as_str()));
5252        }
5253        start
5254    }
5255
5256    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
5257        #[cfg(feature = "extra-children")]
5258        let mut extra_iter = self.extra_children.iter().peekable();
5259        #[cfg(feature = "extra-children")]
5260        let mut emit_idx: usize = 0;
5261        #[cfg(feature = "extra-children")]
5262        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5263            extra_iter
5264                .next()
5265                .unwrap()
5266                .node
5267                .write_to(writer)
5268                .map_err(SerializeError::from)?;
5269        }
5270        #[cfg(feature = "dml-3d")]
5271        if let Some(ref val) = self.rot {
5272            val.write_element("a:rot", writer)?;
5273        }
5274        #[cfg(feature = "extra-children")]
5275        {
5276            emit_idx += 1;
5277        }
5278        #[cfg(feature = "extra-children")]
5279        for extra in extra_iter {
5280            extra.node.write_to(writer).map_err(SerializeError::from)?;
5281        }
5282        Ok(())
5283    }
5284
5285    fn is_empty_element(&self) -> bool {
5286        #[cfg(feature = "dml-3d")]
5287        if self.rot.is_some() {
5288            return false;
5289        }
5290        #[cfg(feature = "extra-children")]
5291        if !self.extra_children.is_empty() {
5292            return false;
5293        }
5294        true
5295    }
5296}
5297
5298impl ToXml for CTScene3D {
5299    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
5300        #[cfg(feature = "extra-children")]
5301        let mut extra_iter = self.extra_children.iter().peekable();
5302        #[cfg(feature = "extra-children")]
5303        let mut emit_idx: usize = 0;
5304        #[cfg(feature = "extra-children")]
5305        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5306            extra_iter
5307                .next()
5308                .unwrap()
5309                .node
5310                .write_to(writer)
5311                .map_err(SerializeError::from)?;
5312        }
5313        #[cfg(feature = "dml-3d")]
5314        {
5315            let val = &self.camera;
5316            val.write_element("a:camera", writer)?;
5317        }
5318        #[cfg(feature = "extra-children")]
5319        {
5320            emit_idx += 1;
5321        }
5322        #[cfg(feature = "extra-children")]
5323        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5324            extra_iter
5325                .next()
5326                .unwrap()
5327                .node
5328                .write_to(writer)
5329                .map_err(SerializeError::from)?;
5330        }
5331        #[cfg(feature = "dml-3d")]
5332        {
5333            let val = &self.light_rig;
5334            val.write_element("a:lightRig", writer)?;
5335        }
5336        #[cfg(feature = "extra-children")]
5337        {
5338            emit_idx += 1;
5339        }
5340        #[cfg(feature = "extra-children")]
5341        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5342            extra_iter
5343                .next()
5344                .unwrap()
5345                .node
5346                .write_to(writer)
5347                .map_err(SerializeError::from)?;
5348        }
5349        #[cfg(feature = "dml-3d")]
5350        if let Some(ref val) = self.backdrop {
5351            val.write_element("a:backdrop", writer)?;
5352        }
5353        #[cfg(feature = "extra-children")]
5354        {
5355            emit_idx += 1;
5356        }
5357        #[cfg(feature = "extra-children")]
5358        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5359            extra_iter
5360                .next()
5361                .unwrap()
5362                .node
5363                .write_to(writer)
5364                .map_err(SerializeError::from)?;
5365        }
5366        #[cfg(feature = "dml-extensions")]
5367        if let Some(ref val) = self.ext_lst {
5368            val.write_element("a:extLst", writer)?;
5369        }
5370        #[cfg(feature = "extra-children")]
5371        {
5372            emit_idx += 1;
5373        }
5374        #[cfg(feature = "extra-children")]
5375        for extra in extra_iter {
5376            extra.node.write_to(writer).map_err(SerializeError::from)?;
5377        }
5378        Ok(())
5379    }
5380
5381    fn is_empty_element(&self) -> bool {
5382        #[cfg(feature = "dml-3d")]
5383        return false;
5384        #[cfg(feature = "dml-3d")]
5385        return false;
5386        #[cfg(feature = "dml-3d")]
5387        if self.backdrop.is_some() {
5388            return false;
5389        }
5390        #[cfg(feature = "dml-extensions")]
5391        if self.ext_lst.is_some() {
5392            return false;
5393        }
5394        #[cfg(feature = "extra-children")]
5395        if !self.extra_children.is_empty() {
5396            return false;
5397        }
5398        true
5399    }
5400}
5401
5402impl ToXml for CTBackdrop {
5403    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
5404        #[cfg(feature = "extra-children")]
5405        let mut extra_iter = self.extra_children.iter().peekable();
5406        #[cfg(feature = "extra-children")]
5407        let mut emit_idx: usize = 0;
5408        #[cfg(feature = "extra-children")]
5409        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5410            extra_iter
5411                .next()
5412                .unwrap()
5413                .node
5414                .write_to(writer)
5415                .map_err(SerializeError::from)?;
5416        }
5417        {
5418            let val = &self.anchor;
5419            val.write_element("a:anchor", writer)?;
5420        }
5421        #[cfg(feature = "extra-children")]
5422        {
5423            emit_idx += 1;
5424        }
5425        #[cfg(feature = "extra-children")]
5426        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5427            extra_iter
5428                .next()
5429                .unwrap()
5430                .node
5431                .write_to(writer)
5432                .map_err(SerializeError::from)?;
5433        }
5434        {
5435            let val = &self.norm;
5436            val.write_element("a:norm", writer)?;
5437        }
5438        #[cfg(feature = "extra-children")]
5439        {
5440            emit_idx += 1;
5441        }
5442        #[cfg(feature = "extra-children")]
5443        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5444            extra_iter
5445                .next()
5446                .unwrap()
5447                .node
5448                .write_to(writer)
5449                .map_err(SerializeError::from)?;
5450        }
5451        {
5452            let val = &self.up;
5453            val.write_element("a:up", writer)?;
5454        }
5455        #[cfg(feature = "extra-children")]
5456        {
5457            emit_idx += 1;
5458        }
5459        #[cfg(feature = "extra-children")]
5460        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5461            extra_iter
5462                .next()
5463                .unwrap()
5464                .node
5465                .write_to(writer)
5466                .map_err(SerializeError::from)?;
5467        }
5468        if let Some(ref val) = self.ext_lst {
5469            val.write_element("a:extLst", writer)?;
5470        }
5471        #[cfg(feature = "extra-children")]
5472        {
5473            emit_idx += 1;
5474        }
5475        #[cfg(feature = "extra-children")]
5476        for extra in extra_iter {
5477            extra.node.write_to(writer).map_err(SerializeError::from)?;
5478        }
5479        Ok(())
5480    }
5481
5482    fn is_empty_element(&self) -> bool {
5483        false
5484    }
5485}
5486
5487impl ToXml for CTBevel {
5488    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5489        #[allow(unused_mut)]
5490        let mut start = start;
5491        #[cfg(feature = "dml-3d")]
5492        if let Some(ref val) = self.width {
5493            {
5494                let s = val.to_string();
5495                start.push_attribute(("w", s.as_str()));
5496            }
5497        }
5498        #[cfg(feature = "dml-3d")]
5499        if let Some(ref val) = self.height {
5500            {
5501                let s = val.to_string();
5502                start.push_attribute(("h", s.as_str()));
5503            }
5504        }
5505        #[cfg(feature = "dml-3d")]
5506        if let Some(ref val) = self.preset {
5507            {
5508                let s = val.to_string();
5509                start.push_attribute(("prst", s.as_str()));
5510            }
5511        }
5512        #[cfg(feature = "extra-attrs")]
5513        for (key, value) in &self.extra_attrs {
5514            start.push_attribute((key.as_str(), value.as_str()));
5515        }
5516        start
5517    }
5518
5519    fn is_empty_element(&self) -> bool {
5520        true
5521    }
5522}
5523
5524impl ToXml for CTShape3D {
5525    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5526        #[allow(unused_mut)]
5527        let mut start = start;
5528        #[cfg(feature = "dml-3d")]
5529        if let Some(ref val) = self.z {
5530            {
5531                let s = val.to_string();
5532                start.push_attribute(("z", s.as_str()));
5533            }
5534        }
5535        #[cfg(feature = "dml-3d")]
5536        if let Some(ref val) = self.extrusion_h {
5537            {
5538                let s = val.to_string();
5539                start.push_attribute(("extrusionH", s.as_str()));
5540            }
5541        }
5542        #[cfg(feature = "dml-3d")]
5543        if let Some(ref val) = self.contour_w {
5544            {
5545                let s = val.to_string();
5546                start.push_attribute(("contourW", s.as_str()));
5547            }
5548        }
5549        #[cfg(feature = "dml-3d")]
5550        if let Some(ref val) = self.prst_material {
5551            {
5552                let s = val.to_string();
5553                start.push_attribute(("prstMaterial", s.as_str()));
5554            }
5555        }
5556        #[cfg(feature = "extra-attrs")]
5557        for (key, value) in &self.extra_attrs {
5558            start.push_attribute((key.as_str(), value.as_str()));
5559        }
5560        start
5561    }
5562
5563    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
5564        #[cfg(feature = "extra-children")]
5565        let mut extra_iter = self.extra_children.iter().peekable();
5566        #[cfg(feature = "extra-children")]
5567        let mut emit_idx: usize = 0;
5568        #[cfg(feature = "extra-children")]
5569        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5570            extra_iter
5571                .next()
5572                .unwrap()
5573                .node
5574                .write_to(writer)
5575                .map_err(SerializeError::from)?;
5576        }
5577        #[cfg(feature = "dml-3d")]
5578        if let Some(ref val) = self.bevel_t {
5579            val.write_element("a:bevelT", writer)?;
5580        }
5581        #[cfg(feature = "extra-children")]
5582        {
5583            emit_idx += 1;
5584        }
5585        #[cfg(feature = "extra-children")]
5586        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5587            extra_iter
5588                .next()
5589                .unwrap()
5590                .node
5591                .write_to(writer)
5592                .map_err(SerializeError::from)?;
5593        }
5594        #[cfg(feature = "dml-3d")]
5595        if let Some(ref val) = self.bevel_b {
5596            val.write_element("a:bevelB", writer)?;
5597        }
5598        #[cfg(feature = "extra-children")]
5599        {
5600            emit_idx += 1;
5601        }
5602        #[cfg(feature = "extra-children")]
5603        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5604            extra_iter
5605                .next()
5606                .unwrap()
5607                .node
5608                .write_to(writer)
5609                .map_err(SerializeError::from)?;
5610        }
5611        #[cfg(feature = "dml-3d")]
5612        if let Some(ref val) = self.extrusion_clr {
5613            val.write_element("a:extrusionClr", writer)?;
5614        }
5615        #[cfg(feature = "extra-children")]
5616        {
5617            emit_idx += 1;
5618        }
5619        #[cfg(feature = "extra-children")]
5620        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5621            extra_iter
5622                .next()
5623                .unwrap()
5624                .node
5625                .write_to(writer)
5626                .map_err(SerializeError::from)?;
5627        }
5628        #[cfg(feature = "dml-3d")]
5629        if let Some(ref val) = self.contour_clr {
5630            val.write_element("a:contourClr", writer)?;
5631        }
5632        #[cfg(feature = "extra-children")]
5633        {
5634            emit_idx += 1;
5635        }
5636        #[cfg(feature = "extra-children")]
5637        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5638            extra_iter
5639                .next()
5640                .unwrap()
5641                .node
5642                .write_to(writer)
5643                .map_err(SerializeError::from)?;
5644        }
5645        #[cfg(feature = "dml-extensions")]
5646        if let Some(ref val) = self.ext_lst {
5647            val.write_element("a:extLst", writer)?;
5648        }
5649        #[cfg(feature = "extra-children")]
5650        {
5651            emit_idx += 1;
5652        }
5653        #[cfg(feature = "extra-children")]
5654        for extra in extra_iter {
5655            extra.node.write_to(writer).map_err(SerializeError::from)?;
5656        }
5657        Ok(())
5658    }
5659
5660    fn is_empty_element(&self) -> bool {
5661        #[cfg(feature = "dml-3d")]
5662        if self.bevel_t.is_some() {
5663            return false;
5664        }
5665        #[cfg(feature = "dml-3d")]
5666        if self.bevel_b.is_some() {
5667            return false;
5668        }
5669        #[cfg(feature = "dml-3d")]
5670        if self.extrusion_clr.is_some() {
5671            return false;
5672        }
5673        #[cfg(feature = "dml-3d")]
5674        if self.contour_clr.is_some() {
5675            return false;
5676        }
5677        #[cfg(feature = "dml-extensions")]
5678        if self.ext_lst.is_some() {
5679            return false;
5680        }
5681        #[cfg(feature = "extra-children")]
5682        if !self.extra_children.is_empty() {
5683            return false;
5684        }
5685        true
5686    }
5687}
5688
5689impl ToXml for CTFlatText {
5690    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5691        #[allow(unused_mut)]
5692        let mut start = start;
5693        if let Some(ref val) = self.z {
5694            {
5695                let s = val.to_string();
5696                start.push_attribute(("z", s.as_str()));
5697            }
5698        }
5699        #[cfg(feature = "extra-attrs")]
5700        for (key, value) in &self.extra_attrs {
5701            start.push_attribute((key.as_str(), value.as_str()));
5702        }
5703        start
5704    }
5705
5706    fn is_empty_element(&self) -> bool {
5707        true
5708    }
5709}
5710
5711impl ToXml for EGText3D {
5712    fn write_element<W: Write>(
5713        &self,
5714        _tag: &str,
5715        writer: &mut Writer<W>,
5716    ) -> Result<(), SerializeError> {
5717        match self {
5718            Self::Sp3d(inner) => inner.write_element("a:sp3d", writer)?,
5719            Self::FlatTx(inner) => inner.write_element("a:flatTx", writer)?,
5720        }
5721        Ok(())
5722    }
5723}
5724
5725impl ToXml for CTAlphaBiLevelEffect {
5726    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5727        #[allow(unused_mut)]
5728        let mut start = start;
5729        {
5730            let val = &self.thresh;
5731            {
5732                let s = val.to_string();
5733                start.push_attribute(("thresh", s.as_str()));
5734            }
5735        }
5736        #[cfg(feature = "extra-attrs")]
5737        for (key, value) in &self.extra_attrs {
5738            start.push_attribute((key.as_str(), value.as_str()));
5739        }
5740        start
5741    }
5742
5743    fn is_empty_element(&self) -> bool {
5744        true
5745    }
5746}
5747
5748impl ToXml for CTAlphaCeilingEffect {
5749    fn is_empty_element(&self) -> bool {
5750        true
5751    }
5752}
5753
5754impl ToXml for CTAlphaFloorEffect {
5755    fn is_empty_element(&self) -> bool {
5756        true
5757    }
5758}
5759
5760impl ToXml for CTAlphaInverseEffect {
5761    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
5762        #[cfg(feature = "extra-children")]
5763        let mut extra_iter = self.extra_children.iter().peekable();
5764        #[cfg(feature = "extra-children")]
5765        let mut emit_idx: usize = 0;
5766        #[cfg(feature = "extra-children")]
5767        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5768            extra_iter
5769                .next()
5770                .unwrap()
5771                .node
5772                .write_to(writer)
5773                .map_err(SerializeError::from)?;
5774        }
5775        if let Some(ref val) = self.color_choice {
5776            val.write_element("", writer)?;
5777        }
5778        #[cfg(feature = "extra-children")]
5779        {
5780            emit_idx += 1;
5781        }
5782        #[cfg(feature = "extra-children")]
5783        for extra in extra_iter {
5784            extra.node.write_to(writer).map_err(SerializeError::from)?;
5785        }
5786        Ok(())
5787    }
5788
5789    fn is_empty_element(&self) -> bool {
5790        if self.color_choice.is_some() {
5791            return false;
5792        }
5793        #[cfg(feature = "extra-children")]
5794        if !self.extra_children.is_empty() {
5795            return false;
5796        }
5797        true
5798    }
5799}
5800
5801impl ToXml for CTAlphaModulateFixedEffect {
5802    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5803        #[allow(unused_mut)]
5804        let mut start = start;
5805        if let Some(ref val) = self.amt {
5806            {
5807                let s = val.to_string();
5808                start.push_attribute(("amt", s.as_str()));
5809            }
5810        }
5811        #[cfg(feature = "extra-attrs")]
5812        for (key, value) in &self.extra_attrs {
5813            start.push_attribute((key.as_str(), value.as_str()));
5814        }
5815        start
5816    }
5817
5818    fn is_empty_element(&self) -> bool {
5819        true
5820    }
5821}
5822
5823impl ToXml for CTAlphaOutsetEffect {
5824    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5825        #[allow(unused_mut)]
5826        let mut start = start;
5827        if let Some(ref val) = self.rad {
5828            {
5829                let s = val.to_string();
5830                start.push_attribute(("rad", s.as_str()));
5831            }
5832        }
5833        #[cfg(feature = "extra-attrs")]
5834        for (key, value) in &self.extra_attrs {
5835            start.push_attribute((key.as_str(), value.as_str()));
5836        }
5837        start
5838    }
5839
5840    fn is_empty_element(&self) -> bool {
5841        true
5842    }
5843}
5844
5845impl ToXml for CTAlphaReplaceEffect {
5846    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5847        #[allow(unused_mut)]
5848        let mut start = start;
5849        {
5850            let val = &self.anchor;
5851            {
5852                let s = val.to_string();
5853                start.push_attribute(("a", s.as_str()));
5854            }
5855        }
5856        #[cfg(feature = "extra-attrs")]
5857        for (key, value) in &self.extra_attrs {
5858            start.push_attribute((key.as_str(), value.as_str()));
5859        }
5860        start
5861    }
5862
5863    fn is_empty_element(&self) -> bool {
5864        true
5865    }
5866}
5867
5868impl ToXml for CTBiLevelEffect {
5869    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5870        #[allow(unused_mut)]
5871        let mut start = start;
5872        {
5873            let val = &self.thresh;
5874            {
5875                let s = val.to_string();
5876                start.push_attribute(("thresh", s.as_str()));
5877            }
5878        }
5879        #[cfg(feature = "extra-attrs")]
5880        for (key, value) in &self.extra_attrs {
5881            start.push_attribute((key.as_str(), value.as_str()));
5882        }
5883        start
5884    }
5885
5886    fn is_empty_element(&self) -> bool {
5887        true
5888    }
5889}
5890
5891impl ToXml for CTBlurEffect {
5892    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5893        #[allow(unused_mut)]
5894        let mut start = start;
5895        #[cfg(feature = "dml-effects")]
5896        if let Some(ref val) = self.rad {
5897            {
5898                let s = val.to_string();
5899                start.push_attribute(("rad", s.as_str()));
5900            }
5901        }
5902        #[cfg(feature = "dml-effects")]
5903        if let Some(ref val) = self.grow {
5904            start.push_attribute(("grow", if *val { "1" } else { "0" }));
5905        }
5906        #[cfg(feature = "extra-attrs")]
5907        for (key, value) in &self.extra_attrs {
5908            start.push_attribute((key.as_str(), value.as_str()));
5909        }
5910        start
5911    }
5912
5913    fn is_empty_element(&self) -> bool {
5914        true
5915    }
5916}
5917
5918impl ToXml for CTColorChangeEffect {
5919    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
5920        #[allow(unused_mut)]
5921        let mut start = start;
5922        if let Some(ref val) = self.use_a {
5923            start.push_attribute(("useA", if *val { "1" } else { "0" }));
5924        }
5925        #[cfg(feature = "extra-attrs")]
5926        for (key, value) in &self.extra_attrs {
5927            start.push_attribute((key.as_str(), value.as_str()));
5928        }
5929        start
5930    }
5931
5932    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
5933        #[cfg(feature = "extra-children")]
5934        let mut extra_iter = self.extra_children.iter().peekable();
5935        #[cfg(feature = "extra-children")]
5936        let mut emit_idx: usize = 0;
5937        #[cfg(feature = "extra-children")]
5938        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5939            extra_iter
5940                .next()
5941                .unwrap()
5942                .node
5943                .write_to(writer)
5944                .map_err(SerializeError::from)?;
5945        }
5946        {
5947            let val = &self.clr_from;
5948            val.write_element("a:clrFrom", writer)?;
5949        }
5950        #[cfg(feature = "extra-children")]
5951        {
5952            emit_idx += 1;
5953        }
5954        #[cfg(feature = "extra-children")]
5955        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5956            extra_iter
5957                .next()
5958                .unwrap()
5959                .node
5960                .write_to(writer)
5961                .map_err(SerializeError::from)?;
5962        }
5963        {
5964            let val = &self.clr_to;
5965            val.write_element("a:clrTo", writer)?;
5966        }
5967        #[cfg(feature = "extra-children")]
5968        {
5969            emit_idx += 1;
5970        }
5971        #[cfg(feature = "extra-children")]
5972        for extra in extra_iter {
5973            extra.node.write_to(writer).map_err(SerializeError::from)?;
5974        }
5975        Ok(())
5976    }
5977
5978    fn is_empty_element(&self) -> bool {
5979        false
5980    }
5981}
5982
5983impl ToXml for CTColorReplaceEffect {
5984    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
5985        #[cfg(feature = "extra-children")]
5986        let mut extra_iter = self.extra_children.iter().peekable();
5987        #[cfg(feature = "extra-children")]
5988        let mut emit_idx: usize = 0;
5989        #[cfg(feature = "extra-children")]
5990        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
5991            extra_iter
5992                .next()
5993                .unwrap()
5994                .node
5995                .write_to(writer)
5996                .map_err(SerializeError::from)?;
5997        }
5998        if let Some(ref val) = self.color_choice {
5999            val.write_element("", writer)?;
6000        }
6001        #[cfg(feature = "extra-children")]
6002        {
6003            emit_idx += 1;
6004        }
6005        #[cfg(feature = "extra-children")]
6006        for extra in extra_iter {
6007            extra.node.write_to(writer).map_err(SerializeError::from)?;
6008        }
6009        Ok(())
6010    }
6011
6012    fn is_empty_element(&self) -> bool {
6013        false
6014    }
6015}
6016
6017impl ToXml for CTDuotoneEffect {
6018    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6019        #[cfg(feature = "extra-children")]
6020        let mut extra_iter = self.extra_children.iter().peekable();
6021        #[cfg(feature = "extra-children")]
6022        let mut emit_idx: usize = 0;
6023        for item in &self.color_choice {
6024            #[cfg(feature = "extra-children")]
6025            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6026                extra_iter
6027                    .next()
6028                    .unwrap()
6029                    .node
6030                    .write_to(writer)
6031                    .map_err(SerializeError::from)?;
6032            }
6033            item.write_element("", writer)?;
6034            #[cfg(feature = "extra-children")]
6035            {
6036                emit_idx += 1;
6037            }
6038        }
6039        #[cfg(feature = "extra-children")]
6040        for extra in extra_iter {
6041            extra.node.write_to(writer).map_err(SerializeError::from)?;
6042        }
6043        Ok(())
6044    }
6045
6046    fn is_empty_element(&self) -> bool {
6047        if !self.color_choice.is_empty() {
6048            return false;
6049        }
6050        #[cfg(feature = "extra-children")]
6051        if !self.extra_children.is_empty() {
6052            return false;
6053        }
6054        true
6055    }
6056}
6057
6058impl ToXml for CTGlowEffect {
6059    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6060        #[allow(unused_mut)]
6061        let mut start = start;
6062        #[cfg(feature = "dml-effects")]
6063        if let Some(ref val) = self.rad {
6064            {
6065                let s = val.to_string();
6066                start.push_attribute(("rad", s.as_str()));
6067            }
6068        }
6069        #[cfg(feature = "extra-attrs")]
6070        for (key, value) in &self.extra_attrs {
6071            start.push_attribute((key.as_str(), value.as_str()));
6072        }
6073        start
6074    }
6075
6076    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6077        #[cfg(feature = "extra-children")]
6078        let mut extra_iter = self.extra_children.iter().peekable();
6079        #[cfg(feature = "extra-children")]
6080        let mut emit_idx: usize = 0;
6081        #[cfg(feature = "extra-children")]
6082        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6083            extra_iter
6084                .next()
6085                .unwrap()
6086                .node
6087                .write_to(writer)
6088                .map_err(SerializeError::from)?;
6089        }
6090        if let Some(ref val) = self.color_choice {
6091            val.write_element("", writer)?;
6092        }
6093        #[cfg(feature = "extra-children")]
6094        {
6095            emit_idx += 1;
6096        }
6097        #[cfg(feature = "extra-children")]
6098        for extra in extra_iter {
6099            extra.node.write_to(writer).map_err(SerializeError::from)?;
6100        }
6101        Ok(())
6102    }
6103
6104    fn is_empty_element(&self) -> bool {
6105        false
6106    }
6107}
6108
6109impl ToXml for CTGrayscaleEffect {
6110    fn is_empty_element(&self) -> bool {
6111        true
6112    }
6113}
6114
6115impl ToXml for CTHSLEffect {
6116    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6117        #[allow(unused_mut)]
6118        let mut start = start;
6119        if let Some(ref val) = self.hue {
6120            {
6121                let s = val.to_string();
6122                start.push_attribute(("hue", s.as_str()));
6123            }
6124        }
6125        if let Some(ref val) = self.sat {
6126            {
6127                let s = val.to_string();
6128                start.push_attribute(("sat", s.as_str()));
6129            }
6130        }
6131        if let Some(ref val) = self.lum {
6132            {
6133                let s = val.to_string();
6134                start.push_attribute(("lum", s.as_str()));
6135            }
6136        }
6137        #[cfg(feature = "extra-attrs")]
6138        for (key, value) in &self.extra_attrs {
6139            start.push_attribute((key.as_str(), value.as_str()));
6140        }
6141        start
6142    }
6143
6144    fn is_empty_element(&self) -> bool {
6145        true
6146    }
6147}
6148
6149impl ToXml for CTInnerShadowEffect {
6150    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6151        #[allow(unused_mut)]
6152        let mut start = start;
6153        #[cfg(feature = "dml-effects")]
6154        if let Some(ref val) = self.blur_rad {
6155            {
6156                let s = val.to_string();
6157                start.push_attribute(("blurRad", s.as_str()));
6158            }
6159        }
6160        #[cfg(feature = "dml-effects")]
6161        if let Some(ref val) = self.dist {
6162            {
6163                let s = val.to_string();
6164                start.push_attribute(("dist", s.as_str()));
6165            }
6166        }
6167        #[cfg(feature = "dml-effects")]
6168        if let Some(ref val) = self.dir {
6169            {
6170                let s = val.to_string();
6171                start.push_attribute(("dir", s.as_str()));
6172            }
6173        }
6174        #[cfg(feature = "extra-attrs")]
6175        for (key, value) in &self.extra_attrs {
6176            start.push_attribute((key.as_str(), value.as_str()));
6177        }
6178        start
6179    }
6180
6181    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6182        #[cfg(feature = "extra-children")]
6183        let mut extra_iter = self.extra_children.iter().peekable();
6184        #[cfg(feature = "extra-children")]
6185        let mut emit_idx: usize = 0;
6186        #[cfg(feature = "extra-children")]
6187        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6188            extra_iter
6189                .next()
6190                .unwrap()
6191                .node
6192                .write_to(writer)
6193                .map_err(SerializeError::from)?;
6194        }
6195        if let Some(ref val) = self.color_choice {
6196            val.write_element("", writer)?;
6197        }
6198        #[cfg(feature = "extra-children")]
6199        {
6200            emit_idx += 1;
6201        }
6202        #[cfg(feature = "extra-children")]
6203        for extra in extra_iter {
6204            extra.node.write_to(writer).map_err(SerializeError::from)?;
6205        }
6206        Ok(())
6207    }
6208
6209    fn is_empty_element(&self) -> bool {
6210        false
6211    }
6212}
6213
6214impl ToXml for CTLuminanceEffect {
6215    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6216        #[allow(unused_mut)]
6217        let mut start = start;
6218        if let Some(ref val) = self.bright {
6219            {
6220                let s = val.to_string();
6221                start.push_attribute(("bright", s.as_str()));
6222            }
6223        }
6224        if let Some(ref val) = self.contrast {
6225            {
6226                let s = val.to_string();
6227                start.push_attribute(("contrast", s.as_str()));
6228            }
6229        }
6230        #[cfg(feature = "extra-attrs")]
6231        for (key, value) in &self.extra_attrs {
6232            start.push_attribute((key.as_str(), value.as_str()));
6233        }
6234        start
6235    }
6236
6237    fn is_empty_element(&self) -> bool {
6238        true
6239    }
6240}
6241
6242impl ToXml for CTOuterShadowEffect {
6243    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6244        #[allow(unused_mut)]
6245        let mut start = start;
6246        #[cfg(feature = "dml-effects")]
6247        if let Some(ref val) = self.blur_rad {
6248            {
6249                let s = val.to_string();
6250                start.push_attribute(("blurRad", s.as_str()));
6251            }
6252        }
6253        #[cfg(feature = "dml-effects")]
6254        if let Some(ref val) = self.dist {
6255            {
6256                let s = val.to_string();
6257                start.push_attribute(("dist", s.as_str()));
6258            }
6259        }
6260        #[cfg(feature = "dml-effects")]
6261        if let Some(ref val) = self.dir {
6262            {
6263                let s = val.to_string();
6264                start.push_attribute(("dir", s.as_str()));
6265            }
6266        }
6267        #[cfg(feature = "dml-effects")]
6268        if let Some(ref val) = self.sx {
6269            {
6270                let s = val.to_string();
6271                start.push_attribute(("sx", s.as_str()));
6272            }
6273        }
6274        #[cfg(feature = "dml-effects")]
6275        if let Some(ref val) = self.sy {
6276            {
6277                let s = val.to_string();
6278                start.push_attribute(("sy", s.as_str()));
6279            }
6280        }
6281        #[cfg(feature = "dml-effects")]
6282        if let Some(ref val) = self.kx {
6283            {
6284                let s = val.to_string();
6285                start.push_attribute(("kx", s.as_str()));
6286            }
6287        }
6288        #[cfg(feature = "dml-effects")]
6289        if let Some(ref val) = self.ky {
6290            {
6291                let s = val.to_string();
6292                start.push_attribute(("ky", s.as_str()));
6293            }
6294        }
6295        #[cfg(feature = "dml-effects")]
6296        if let Some(ref val) = self.algn {
6297            {
6298                let s = val.to_string();
6299                start.push_attribute(("algn", s.as_str()));
6300            }
6301        }
6302        #[cfg(feature = "dml-effects")]
6303        if let Some(ref val) = self.rot_with_shape {
6304            start.push_attribute(("rotWithShape", if *val { "1" } else { "0" }));
6305        }
6306        #[cfg(feature = "extra-attrs")]
6307        for (key, value) in &self.extra_attrs {
6308            start.push_attribute((key.as_str(), value.as_str()));
6309        }
6310        start
6311    }
6312
6313    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6314        #[cfg(feature = "extra-children")]
6315        let mut extra_iter = self.extra_children.iter().peekable();
6316        #[cfg(feature = "extra-children")]
6317        let mut emit_idx: usize = 0;
6318        #[cfg(feature = "extra-children")]
6319        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6320            extra_iter
6321                .next()
6322                .unwrap()
6323                .node
6324                .write_to(writer)
6325                .map_err(SerializeError::from)?;
6326        }
6327        if let Some(ref val) = self.color_choice {
6328            val.write_element("", writer)?;
6329        }
6330        #[cfg(feature = "extra-children")]
6331        {
6332            emit_idx += 1;
6333        }
6334        #[cfg(feature = "extra-children")]
6335        for extra in extra_iter {
6336            extra.node.write_to(writer).map_err(SerializeError::from)?;
6337        }
6338        Ok(())
6339    }
6340
6341    fn is_empty_element(&self) -> bool {
6342        false
6343    }
6344}
6345
6346impl ToXml for CTPresetShadowEffect {
6347    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6348        #[allow(unused_mut)]
6349        let mut start = start;
6350        {
6351            let val = &self.preset;
6352            {
6353                let s = val.to_string();
6354                start.push_attribute(("prst", s.as_str()));
6355            }
6356        }
6357        if let Some(ref val) = self.dist {
6358            {
6359                let s = val.to_string();
6360                start.push_attribute(("dist", s.as_str()));
6361            }
6362        }
6363        if let Some(ref val) = self.dir {
6364            {
6365                let s = val.to_string();
6366                start.push_attribute(("dir", s.as_str()));
6367            }
6368        }
6369        #[cfg(feature = "extra-attrs")]
6370        for (key, value) in &self.extra_attrs {
6371            start.push_attribute((key.as_str(), value.as_str()));
6372        }
6373        start
6374    }
6375
6376    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6377        #[cfg(feature = "extra-children")]
6378        let mut extra_iter = self.extra_children.iter().peekable();
6379        #[cfg(feature = "extra-children")]
6380        let mut emit_idx: usize = 0;
6381        #[cfg(feature = "extra-children")]
6382        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6383            extra_iter
6384                .next()
6385                .unwrap()
6386                .node
6387                .write_to(writer)
6388                .map_err(SerializeError::from)?;
6389        }
6390        if let Some(ref val) = self.color_choice {
6391            val.write_element("", writer)?;
6392        }
6393        #[cfg(feature = "extra-children")]
6394        {
6395            emit_idx += 1;
6396        }
6397        #[cfg(feature = "extra-children")]
6398        for extra in extra_iter {
6399            extra.node.write_to(writer).map_err(SerializeError::from)?;
6400        }
6401        Ok(())
6402    }
6403
6404    fn is_empty_element(&self) -> bool {
6405        false
6406    }
6407}
6408
6409impl ToXml for CTReflectionEffect {
6410    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6411        #[allow(unused_mut)]
6412        let mut start = start;
6413        #[cfg(feature = "dml-effects")]
6414        if let Some(ref val) = self.blur_rad {
6415            {
6416                let s = val.to_string();
6417                start.push_attribute(("blurRad", s.as_str()));
6418            }
6419        }
6420        #[cfg(feature = "dml-effects")]
6421        if let Some(ref val) = self.st_a {
6422            {
6423                let s = val.to_string();
6424                start.push_attribute(("stA", s.as_str()));
6425            }
6426        }
6427        #[cfg(feature = "dml-effects")]
6428        if let Some(ref val) = self.st_pos {
6429            {
6430                let s = val.to_string();
6431                start.push_attribute(("stPos", s.as_str()));
6432            }
6433        }
6434        #[cfg(feature = "dml-effects")]
6435        if let Some(ref val) = self.end_a {
6436            {
6437                let s = val.to_string();
6438                start.push_attribute(("endA", s.as_str()));
6439            }
6440        }
6441        #[cfg(feature = "dml-effects")]
6442        if let Some(ref val) = self.end_pos {
6443            {
6444                let s = val.to_string();
6445                start.push_attribute(("endPos", s.as_str()));
6446            }
6447        }
6448        #[cfg(feature = "dml-effects")]
6449        if let Some(ref val) = self.dist {
6450            {
6451                let s = val.to_string();
6452                start.push_attribute(("dist", s.as_str()));
6453            }
6454        }
6455        #[cfg(feature = "dml-effects")]
6456        if let Some(ref val) = self.dir {
6457            {
6458                let s = val.to_string();
6459                start.push_attribute(("dir", s.as_str()));
6460            }
6461        }
6462        #[cfg(feature = "dml-effects")]
6463        if let Some(ref val) = self.fade_dir {
6464            {
6465                let s = val.to_string();
6466                start.push_attribute(("fadeDir", s.as_str()));
6467            }
6468        }
6469        #[cfg(feature = "dml-effects")]
6470        if let Some(ref val) = self.sx {
6471            {
6472                let s = val.to_string();
6473                start.push_attribute(("sx", s.as_str()));
6474            }
6475        }
6476        #[cfg(feature = "dml-effects")]
6477        if let Some(ref val) = self.sy {
6478            {
6479                let s = val.to_string();
6480                start.push_attribute(("sy", s.as_str()));
6481            }
6482        }
6483        #[cfg(feature = "dml-effects")]
6484        if let Some(ref val) = self.kx {
6485            {
6486                let s = val.to_string();
6487                start.push_attribute(("kx", s.as_str()));
6488            }
6489        }
6490        #[cfg(feature = "dml-effects")]
6491        if let Some(ref val) = self.ky {
6492            {
6493                let s = val.to_string();
6494                start.push_attribute(("ky", s.as_str()));
6495            }
6496        }
6497        #[cfg(feature = "dml-effects")]
6498        if let Some(ref val) = self.algn {
6499            {
6500                let s = val.to_string();
6501                start.push_attribute(("algn", s.as_str()));
6502            }
6503        }
6504        #[cfg(feature = "dml-effects")]
6505        if let Some(ref val) = self.rot_with_shape {
6506            start.push_attribute(("rotWithShape", if *val { "1" } else { "0" }));
6507        }
6508        #[cfg(feature = "extra-attrs")]
6509        for (key, value) in &self.extra_attrs {
6510            start.push_attribute((key.as_str(), value.as_str()));
6511        }
6512        start
6513    }
6514
6515    fn is_empty_element(&self) -> bool {
6516        true
6517    }
6518}
6519
6520impl ToXml for CTRelativeOffsetEffect {
6521    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6522        #[allow(unused_mut)]
6523        let mut start = start;
6524        if let Some(ref val) = self.tx {
6525            {
6526                let s = val.to_string();
6527                start.push_attribute(("tx", s.as_str()));
6528            }
6529        }
6530        if let Some(ref val) = self.ty {
6531            {
6532                let s = val.to_string();
6533                start.push_attribute(("ty", s.as_str()));
6534            }
6535        }
6536        #[cfg(feature = "extra-attrs")]
6537        for (key, value) in &self.extra_attrs {
6538            start.push_attribute((key.as_str(), value.as_str()));
6539        }
6540        start
6541    }
6542
6543    fn is_empty_element(&self) -> bool {
6544        true
6545    }
6546}
6547
6548impl ToXml for CTSoftEdgesEffect {
6549    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6550        #[allow(unused_mut)]
6551        let mut start = start;
6552        #[cfg(feature = "dml-effects")]
6553        {
6554            let val = &self.rad;
6555            {
6556                let s = val.to_string();
6557                start.push_attribute(("rad", s.as_str()));
6558            }
6559        }
6560        #[cfg(feature = "extra-attrs")]
6561        for (key, value) in &self.extra_attrs {
6562            start.push_attribute((key.as_str(), value.as_str()));
6563        }
6564        start
6565    }
6566
6567    fn is_empty_element(&self) -> bool {
6568        true
6569    }
6570}
6571
6572impl ToXml for CTTintEffect {
6573    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6574        #[allow(unused_mut)]
6575        let mut start = start;
6576        if let Some(ref val) = self.hue {
6577            {
6578                let s = val.to_string();
6579                start.push_attribute(("hue", s.as_str()));
6580            }
6581        }
6582        if let Some(ref val) = self.amt {
6583            {
6584                let s = val.to_string();
6585                start.push_attribute(("amt", s.as_str()));
6586            }
6587        }
6588        #[cfg(feature = "extra-attrs")]
6589        for (key, value) in &self.extra_attrs {
6590            start.push_attribute((key.as_str(), value.as_str()));
6591        }
6592        start
6593    }
6594
6595    fn is_empty_element(&self) -> bool {
6596        true
6597    }
6598}
6599
6600impl ToXml for CTTransformEffect {
6601    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6602        #[allow(unused_mut)]
6603        let mut start = start;
6604        if let Some(ref val) = self.sx {
6605            {
6606                let s = val.to_string();
6607                start.push_attribute(("sx", s.as_str()));
6608            }
6609        }
6610        if let Some(ref val) = self.sy {
6611            {
6612                let s = val.to_string();
6613                start.push_attribute(("sy", s.as_str()));
6614            }
6615        }
6616        if let Some(ref val) = self.kx {
6617            {
6618                let s = val.to_string();
6619                start.push_attribute(("kx", s.as_str()));
6620            }
6621        }
6622        if let Some(ref val) = self.ky {
6623            {
6624                let s = val.to_string();
6625                start.push_attribute(("ky", s.as_str()));
6626            }
6627        }
6628        if let Some(ref val) = self.tx {
6629            {
6630                let s = val.to_string();
6631                start.push_attribute(("tx", s.as_str()));
6632            }
6633        }
6634        if let Some(ref val) = self.ty {
6635            {
6636                let s = val.to_string();
6637                start.push_attribute(("ty", s.as_str()));
6638            }
6639        }
6640        #[cfg(feature = "extra-attrs")]
6641        for (key, value) in &self.extra_attrs {
6642            start.push_attribute((key.as_str(), value.as_str()));
6643        }
6644        start
6645    }
6646
6647    fn is_empty_element(&self) -> bool {
6648        true
6649    }
6650}
6651
6652impl ToXml for NoFill {
6653    fn is_empty_element(&self) -> bool {
6654        true
6655    }
6656}
6657
6658impl ToXml for SolidColorFill {
6659    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6660        #[cfg(feature = "extra-children")]
6661        let mut extra_iter = self.extra_children.iter().peekable();
6662        #[cfg(feature = "extra-children")]
6663        let mut emit_idx: usize = 0;
6664        #[cfg(feature = "extra-children")]
6665        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6666            extra_iter
6667                .next()
6668                .unwrap()
6669                .node
6670                .write_to(writer)
6671                .map_err(SerializeError::from)?;
6672        }
6673        if let Some(ref val) = self.color_choice {
6674            val.write_element("", writer)?;
6675        }
6676        #[cfg(feature = "extra-children")]
6677        {
6678            emit_idx += 1;
6679        }
6680        #[cfg(feature = "extra-children")]
6681        for extra in extra_iter {
6682            extra.node.write_to(writer).map_err(SerializeError::from)?;
6683        }
6684        Ok(())
6685    }
6686
6687    fn is_empty_element(&self) -> bool {
6688        if self.color_choice.is_some() {
6689            return false;
6690        }
6691        #[cfg(feature = "extra-children")]
6692        if !self.extra_children.is_empty() {
6693            return false;
6694        }
6695        true
6696    }
6697}
6698
6699impl ToXml for CTLinearShadeProperties {
6700    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6701        #[allow(unused_mut)]
6702        let mut start = start;
6703        if let Some(ref val) = self.ang {
6704            {
6705                let s = val.to_string();
6706                start.push_attribute(("ang", s.as_str()));
6707            }
6708        }
6709        if let Some(ref val) = self.scaled {
6710            start.push_attribute(("scaled", if *val { "1" } else { "0" }));
6711        }
6712        #[cfg(feature = "extra-attrs")]
6713        for (key, value) in &self.extra_attrs {
6714            start.push_attribute((key.as_str(), value.as_str()));
6715        }
6716        start
6717    }
6718
6719    fn is_empty_element(&self) -> bool {
6720        true
6721    }
6722}
6723
6724impl ToXml for CTPathShadeProperties {
6725    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6726        #[allow(unused_mut)]
6727        let mut start = start;
6728        if let Some(ref val) = self.path {
6729            {
6730                let s = val.to_string();
6731                start.push_attribute(("path", s.as_str()));
6732            }
6733        }
6734        #[cfg(feature = "extra-attrs")]
6735        for (key, value) in &self.extra_attrs {
6736            start.push_attribute((key.as_str(), value.as_str()));
6737        }
6738        start
6739    }
6740
6741    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6742        #[cfg(feature = "extra-children")]
6743        let mut extra_iter = self.extra_children.iter().peekable();
6744        #[cfg(feature = "extra-children")]
6745        let mut emit_idx: usize = 0;
6746        #[cfg(feature = "extra-children")]
6747        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6748            extra_iter
6749                .next()
6750                .unwrap()
6751                .node
6752                .write_to(writer)
6753                .map_err(SerializeError::from)?;
6754        }
6755        if let Some(ref val) = self.fill_to_rect {
6756            val.write_element("a:fillToRect", writer)?;
6757        }
6758        #[cfg(feature = "extra-children")]
6759        {
6760            emit_idx += 1;
6761        }
6762        #[cfg(feature = "extra-children")]
6763        for extra in extra_iter {
6764            extra.node.write_to(writer).map_err(SerializeError::from)?;
6765        }
6766        Ok(())
6767    }
6768
6769    fn is_empty_element(&self) -> bool {
6770        if self.fill_to_rect.is_some() {
6771            return false;
6772        }
6773        #[cfg(feature = "extra-children")]
6774        if !self.extra_children.is_empty() {
6775            return false;
6776        }
6777        true
6778    }
6779}
6780
6781impl ToXml for EGShadeProperties {
6782    fn write_element<W: Write>(
6783        &self,
6784        _tag: &str,
6785        writer: &mut Writer<W>,
6786    ) -> Result<(), SerializeError> {
6787        match self {
6788            Self::Lin(inner) => inner.write_element("a:lin", writer)?,
6789            Self::Path(inner) => inner.write_element("a:path", writer)?,
6790        }
6791        Ok(())
6792    }
6793}
6794
6795impl ToXml for CTGradientStop {
6796    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6797        #[allow(unused_mut)]
6798        let mut start = start;
6799        {
6800            let val = &self.pos;
6801            {
6802                let s = val.to_string();
6803                start.push_attribute(("pos", s.as_str()));
6804            }
6805        }
6806        #[cfg(feature = "extra-attrs")]
6807        for (key, value) in &self.extra_attrs {
6808            start.push_attribute((key.as_str(), value.as_str()));
6809        }
6810        start
6811    }
6812
6813    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6814        #[cfg(feature = "extra-children")]
6815        let mut extra_iter = self.extra_children.iter().peekable();
6816        #[cfg(feature = "extra-children")]
6817        let mut emit_idx: usize = 0;
6818        #[cfg(feature = "extra-children")]
6819        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6820            extra_iter
6821                .next()
6822                .unwrap()
6823                .node
6824                .write_to(writer)
6825                .map_err(SerializeError::from)?;
6826        }
6827        if let Some(ref val) = self.color_choice {
6828            val.write_element("", writer)?;
6829        }
6830        #[cfg(feature = "extra-children")]
6831        {
6832            emit_idx += 1;
6833        }
6834        #[cfg(feature = "extra-children")]
6835        for extra in extra_iter {
6836            extra.node.write_to(writer).map_err(SerializeError::from)?;
6837        }
6838        Ok(())
6839    }
6840
6841    fn is_empty_element(&self) -> bool {
6842        false
6843    }
6844}
6845
6846impl ToXml for CTGradientStopList {
6847    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6848        #[cfg(feature = "extra-children")]
6849        let mut extra_iter = self.extra_children.iter().peekable();
6850        #[cfg(feature = "extra-children")]
6851        let mut emit_idx: usize = 0;
6852        for item in &self.gs {
6853            #[cfg(feature = "extra-children")]
6854            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6855                extra_iter
6856                    .next()
6857                    .unwrap()
6858                    .node
6859                    .write_to(writer)
6860                    .map_err(SerializeError::from)?;
6861            }
6862            item.write_element("a:gs", writer)?;
6863            #[cfg(feature = "extra-children")]
6864            {
6865                emit_idx += 1;
6866            }
6867        }
6868        #[cfg(feature = "extra-children")]
6869        for extra in extra_iter {
6870            extra.node.write_to(writer).map_err(SerializeError::from)?;
6871        }
6872        Ok(())
6873    }
6874
6875    fn is_empty_element(&self) -> bool {
6876        if !self.gs.is_empty() {
6877            return false;
6878        }
6879        #[cfg(feature = "extra-children")]
6880        if !self.extra_children.is_empty() {
6881            return false;
6882        }
6883        true
6884    }
6885}
6886
6887impl ToXml for GradientFill {
6888    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6889        #[allow(unused_mut)]
6890        let mut start = start;
6891        #[cfg(feature = "dml-fills")]
6892        if let Some(ref val) = self.flip {
6893            {
6894                let s = val.to_string();
6895                start.push_attribute(("flip", s.as_str()));
6896            }
6897        }
6898        #[cfg(feature = "dml-fills")]
6899        if let Some(ref val) = self.rot_with_shape {
6900            start.push_attribute(("rotWithShape", if *val { "1" } else { "0" }));
6901        }
6902        #[cfg(feature = "extra-attrs")]
6903        for (key, value) in &self.extra_attrs {
6904            start.push_attribute((key.as_str(), value.as_str()));
6905        }
6906        start
6907    }
6908
6909    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
6910        #[cfg(feature = "extra-children")]
6911        let mut extra_iter = self.extra_children.iter().peekable();
6912        #[cfg(feature = "extra-children")]
6913        let mut emit_idx: usize = 0;
6914        #[cfg(feature = "extra-children")]
6915        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6916            extra_iter
6917                .next()
6918                .unwrap()
6919                .node
6920                .write_to(writer)
6921                .map_err(SerializeError::from)?;
6922        }
6923        #[cfg(feature = "dml-fills")]
6924        if let Some(ref val) = self.gs_lst {
6925            val.write_element("a:gsLst", writer)?;
6926        }
6927        #[cfg(feature = "extra-children")]
6928        {
6929            emit_idx += 1;
6930        }
6931        #[cfg(feature = "extra-children")]
6932        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6933            extra_iter
6934                .next()
6935                .unwrap()
6936                .node
6937                .write_to(writer)
6938                .map_err(SerializeError::from)?;
6939        }
6940        if let Some(ref val) = self.shade_properties {
6941            val.write_element("", writer)?;
6942        }
6943        #[cfg(feature = "extra-children")]
6944        {
6945            emit_idx += 1;
6946        }
6947        #[cfg(feature = "extra-children")]
6948        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
6949            extra_iter
6950                .next()
6951                .unwrap()
6952                .node
6953                .write_to(writer)
6954                .map_err(SerializeError::from)?;
6955        }
6956        #[cfg(feature = "dml-fills")]
6957        if let Some(ref val) = self.tile_rect {
6958            val.write_element("a:tileRect", writer)?;
6959        }
6960        #[cfg(feature = "extra-children")]
6961        {
6962            emit_idx += 1;
6963        }
6964        #[cfg(feature = "extra-children")]
6965        for extra in extra_iter {
6966            extra.node.write_to(writer).map_err(SerializeError::from)?;
6967        }
6968        Ok(())
6969    }
6970
6971    fn is_empty_element(&self) -> bool {
6972        #[cfg(feature = "dml-fills")]
6973        if self.gs_lst.is_some() {
6974            return false;
6975        }
6976        if self.shade_properties.is_some() {
6977            return false;
6978        }
6979        #[cfg(feature = "dml-fills")]
6980        if self.tile_rect.is_some() {
6981            return false;
6982        }
6983        #[cfg(feature = "extra-children")]
6984        if !self.extra_children.is_empty() {
6985            return false;
6986        }
6987        true
6988    }
6989}
6990
6991impl ToXml for CTTileInfoProperties {
6992    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
6993        #[allow(unused_mut)]
6994        let mut start = start;
6995        if let Some(ref val) = self.tx {
6996            {
6997                let s = val.to_string();
6998                start.push_attribute(("tx", s.as_str()));
6999            }
7000        }
7001        if let Some(ref val) = self.ty {
7002            {
7003                let s = val.to_string();
7004                start.push_attribute(("ty", s.as_str()));
7005            }
7006        }
7007        if let Some(ref val) = self.sx {
7008            {
7009                let s = val.to_string();
7010                start.push_attribute(("sx", s.as_str()));
7011            }
7012        }
7013        if let Some(ref val) = self.sy {
7014            {
7015                let s = val.to_string();
7016                start.push_attribute(("sy", s.as_str()));
7017            }
7018        }
7019        if let Some(ref val) = self.flip {
7020            {
7021                let s = val.to_string();
7022                start.push_attribute(("flip", s.as_str()));
7023            }
7024        }
7025        if let Some(ref val) = self.algn {
7026            {
7027                let s = val.to_string();
7028                start.push_attribute(("algn", s.as_str()));
7029            }
7030        }
7031        #[cfg(feature = "extra-attrs")]
7032        for (key, value) in &self.extra_attrs {
7033            start.push_attribute((key.as_str(), value.as_str()));
7034        }
7035        start
7036    }
7037
7038    fn is_empty_element(&self) -> bool {
7039        true
7040    }
7041}
7042
7043impl ToXml for CTStretchInfoProperties {
7044    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
7045        #[cfg(feature = "extra-children")]
7046        let mut extra_iter = self.extra_children.iter().peekable();
7047        #[cfg(feature = "extra-children")]
7048        let mut emit_idx: usize = 0;
7049        #[cfg(feature = "extra-children")]
7050        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7051            extra_iter
7052                .next()
7053                .unwrap()
7054                .node
7055                .write_to(writer)
7056                .map_err(SerializeError::from)?;
7057        }
7058        if let Some(ref val) = self.fill_rect {
7059            val.write_element("a:fillRect", writer)?;
7060        }
7061        #[cfg(feature = "extra-children")]
7062        {
7063            emit_idx += 1;
7064        }
7065        #[cfg(feature = "extra-children")]
7066        for extra in extra_iter {
7067            extra.node.write_to(writer).map_err(SerializeError::from)?;
7068        }
7069        Ok(())
7070    }
7071
7072    fn is_empty_element(&self) -> bool {
7073        if self.fill_rect.is_some() {
7074            return false;
7075        }
7076        #[cfg(feature = "extra-children")]
7077        if !self.extra_children.is_empty() {
7078            return false;
7079        }
7080        true
7081    }
7082}
7083
7084impl ToXml for EGFillModeProperties {
7085    fn write_element<W: Write>(
7086        &self,
7087        _tag: &str,
7088        writer: &mut Writer<W>,
7089    ) -> Result<(), SerializeError> {
7090        match self {
7091            Self::Tile(inner) => inner.write_element("a:tile", writer)?,
7092            Self::Stretch(inner) => inner.write_element("a:stretch", writer)?,
7093        }
7094        Ok(())
7095    }
7096}
7097
7098impl ToXml for Blip {
7099    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7100        #[allow(unused_mut)]
7101        let mut start = start;
7102        #[cfg(feature = "dml-fills")]
7103        if let Some(ref val) = self.embed {
7104            start.push_attribute(("r:embed", val.as_str()));
7105        }
7106        #[cfg(feature = "dml-fills")]
7107        if let Some(ref val) = self.link {
7108            start.push_attribute(("r:link", val.as_str()));
7109        }
7110        #[cfg(feature = "dml-fills")]
7111        if let Some(ref val) = self.cstate {
7112            {
7113                let s = val.to_string();
7114                start.push_attribute(("cstate", s.as_str()));
7115            }
7116        }
7117        #[cfg(feature = "extra-attrs")]
7118        for (key, value) in &self.extra_attrs {
7119            start.push_attribute((key.as_str(), value.as_str()));
7120        }
7121        start
7122    }
7123
7124    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
7125        #[cfg(feature = "extra-children")]
7126        let mut extra_iter = self.extra_children.iter().peekable();
7127        #[cfg(feature = "extra-children")]
7128        let mut emit_idx: usize = 0;
7129        #[cfg(feature = "dml-fills")]
7130        for item in &self.alpha_bi_level {
7131            #[cfg(feature = "extra-children")]
7132            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7133                extra_iter
7134                    .next()
7135                    .unwrap()
7136                    .node
7137                    .write_to(writer)
7138                    .map_err(SerializeError::from)?;
7139            }
7140            item.write_element("a:alphaBiLevel", writer)?;
7141            #[cfg(feature = "extra-children")]
7142            {
7143                emit_idx += 1;
7144            }
7145        }
7146        #[cfg(feature = "dml-fills")]
7147        for item in &self.alpha_ceiling {
7148            #[cfg(feature = "extra-children")]
7149            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7150                extra_iter
7151                    .next()
7152                    .unwrap()
7153                    .node
7154                    .write_to(writer)
7155                    .map_err(SerializeError::from)?;
7156            }
7157            item.write_element("a:alphaCeiling", writer)?;
7158            #[cfg(feature = "extra-children")]
7159            {
7160                emit_idx += 1;
7161            }
7162        }
7163        #[cfg(feature = "dml-fills")]
7164        for item in &self.alpha_floor {
7165            #[cfg(feature = "extra-children")]
7166            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7167                extra_iter
7168                    .next()
7169                    .unwrap()
7170                    .node
7171                    .write_to(writer)
7172                    .map_err(SerializeError::from)?;
7173            }
7174            item.write_element("a:alphaFloor", writer)?;
7175            #[cfg(feature = "extra-children")]
7176            {
7177                emit_idx += 1;
7178            }
7179        }
7180        #[cfg(feature = "dml-fills")]
7181        for item in &self.alpha_inv {
7182            #[cfg(feature = "extra-children")]
7183            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7184                extra_iter
7185                    .next()
7186                    .unwrap()
7187                    .node
7188                    .write_to(writer)
7189                    .map_err(SerializeError::from)?;
7190            }
7191            item.write_element("a:alphaInv", writer)?;
7192            #[cfg(feature = "extra-children")]
7193            {
7194                emit_idx += 1;
7195            }
7196        }
7197        #[cfg(feature = "dml-fills")]
7198        for item in &self.alpha_mod {
7199            #[cfg(feature = "extra-children")]
7200            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7201                extra_iter
7202                    .next()
7203                    .unwrap()
7204                    .node
7205                    .write_to(writer)
7206                    .map_err(SerializeError::from)?;
7207            }
7208            item.write_element("a:alphaMod", writer)?;
7209            #[cfg(feature = "extra-children")]
7210            {
7211                emit_idx += 1;
7212            }
7213        }
7214        #[cfg(feature = "dml-fills")]
7215        for item in &self.alpha_mod_fix {
7216            #[cfg(feature = "extra-children")]
7217            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7218                extra_iter
7219                    .next()
7220                    .unwrap()
7221                    .node
7222                    .write_to(writer)
7223                    .map_err(SerializeError::from)?;
7224            }
7225            item.write_element("a:alphaModFix", writer)?;
7226            #[cfg(feature = "extra-children")]
7227            {
7228                emit_idx += 1;
7229            }
7230        }
7231        #[cfg(feature = "dml-fills")]
7232        for item in &self.alpha_repl {
7233            #[cfg(feature = "extra-children")]
7234            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7235                extra_iter
7236                    .next()
7237                    .unwrap()
7238                    .node
7239                    .write_to(writer)
7240                    .map_err(SerializeError::from)?;
7241            }
7242            item.write_element("a:alphaRepl", writer)?;
7243            #[cfg(feature = "extra-children")]
7244            {
7245                emit_idx += 1;
7246            }
7247        }
7248        #[cfg(feature = "dml-fills")]
7249        for item in &self.bi_level {
7250            #[cfg(feature = "extra-children")]
7251            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7252                extra_iter
7253                    .next()
7254                    .unwrap()
7255                    .node
7256                    .write_to(writer)
7257                    .map_err(SerializeError::from)?;
7258            }
7259            item.write_element("a:biLevel", writer)?;
7260            #[cfg(feature = "extra-children")]
7261            {
7262                emit_idx += 1;
7263            }
7264        }
7265        #[cfg(feature = "dml-fills")]
7266        for item in &self.blur {
7267            #[cfg(feature = "extra-children")]
7268            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7269                extra_iter
7270                    .next()
7271                    .unwrap()
7272                    .node
7273                    .write_to(writer)
7274                    .map_err(SerializeError::from)?;
7275            }
7276            item.write_element("a:blur", writer)?;
7277            #[cfg(feature = "extra-children")]
7278            {
7279                emit_idx += 1;
7280            }
7281        }
7282        #[cfg(feature = "dml-fills")]
7283        for item in &self.clr_change {
7284            #[cfg(feature = "extra-children")]
7285            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7286                extra_iter
7287                    .next()
7288                    .unwrap()
7289                    .node
7290                    .write_to(writer)
7291                    .map_err(SerializeError::from)?;
7292            }
7293            item.write_element("a:clrChange", writer)?;
7294            #[cfg(feature = "extra-children")]
7295            {
7296                emit_idx += 1;
7297            }
7298        }
7299        #[cfg(feature = "dml-fills")]
7300        for item in &self.clr_repl {
7301            #[cfg(feature = "extra-children")]
7302            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7303                extra_iter
7304                    .next()
7305                    .unwrap()
7306                    .node
7307                    .write_to(writer)
7308                    .map_err(SerializeError::from)?;
7309            }
7310            item.write_element("a:clrRepl", writer)?;
7311            #[cfg(feature = "extra-children")]
7312            {
7313                emit_idx += 1;
7314            }
7315        }
7316        #[cfg(feature = "dml-fills")]
7317        for item in &self.duotone {
7318            #[cfg(feature = "extra-children")]
7319            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7320                extra_iter
7321                    .next()
7322                    .unwrap()
7323                    .node
7324                    .write_to(writer)
7325                    .map_err(SerializeError::from)?;
7326            }
7327            item.write_element("a:duotone", writer)?;
7328            #[cfg(feature = "extra-children")]
7329            {
7330                emit_idx += 1;
7331            }
7332        }
7333        #[cfg(feature = "dml-fills")]
7334        for item in &self.fill_overlay {
7335            #[cfg(feature = "extra-children")]
7336            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7337                extra_iter
7338                    .next()
7339                    .unwrap()
7340                    .node
7341                    .write_to(writer)
7342                    .map_err(SerializeError::from)?;
7343            }
7344            item.write_element("a:fillOverlay", writer)?;
7345            #[cfg(feature = "extra-children")]
7346            {
7347                emit_idx += 1;
7348            }
7349        }
7350        #[cfg(feature = "dml-fills")]
7351        for item in &self.grayscl {
7352            #[cfg(feature = "extra-children")]
7353            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7354                extra_iter
7355                    .next()
7356                    .unwrap()
7357                    .node
7358                    .write_to(writer)
7359                    .map_err(SerializeError::from)?;
7360            }
7361            item.write_element("a:grayscl", writer)?;
7362            #[cfg(feature = "extra-children")]
7363            {
7364                emit_idx += 1;
7365            }
7366        }
7367        #[cfg(feature = "dml-fills")]
7368        for item in &self.hsl {
7369            #[cfg(feature = "extra-children")]
7370            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7371                extra_iter
7372                    .next()
7373                    .unwrap()
7374                    .node
7375                    .write_to(writer)
7376                    .map_err(SerializeError::from)?;
7377            }
7378            item.write_element("a:hsl", writer)?;
7379            #[cfg(feature = "extra-children")]
7380            {
7381                emit_idx += 1;
7382            }
7383        }
7384        #[cfg(feature = "dml-fills")]
7385        for item in &self.lum {
7386            #[cfg(feature = "extra-children")]
7387            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7388                extra_iter
7389                    .next()
7390                    .unwrap()
7391                    .node
7392                    .write_to(writer)
7393                    .map_err(SerializeError::from)?;
7394            }
7395            item.write_element("a:lum", writer)?;
7396            #[cfg(feature = "extra-children")]
7397            {
7398                emit_idx += 1;
7399            }
7400        }
7401        #[cfg(feature = "dml-fills")]
7402        for item in &self.tint {
7403            #[cfg(feature = "extra-children")]
7404            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7405                extra_iter
7406                    .next()
7407                    .unwrap()
7408                    .node
7409                    .write_to(writer)
7410                    .map_err(SerializeError::from)?;
7411            }
7412            item.write_element("a:tint", writer)?;
7413            #[cfg(feature = "extra-children")]
7414            {
7415                emit_idx += 1;
7416            }
7417        }
7418        #[cfg(feature = "extra-children")]
7419        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7420            extra_iter
7421                .next()
7422                .unwrap()
7423                .node
7424                .write_to(writer)
7425                .map_err(SerializeError::from)?;
7426        }
7427        #[cfg(feature = "dml-extensions")]
7428        if let Some(ref val) = self.ext_lst {
7429            val.write_element("a:extLst", writer)?;
7430        }
7431        #[cfg(feature = "extra-children")]
7432        {
7433            emit_idx += 1;
7434        }
7435        #[cfg(feature = "extra-children")]
7436        for extra in extra_iter {
7437            extra.node.write_to(writer).map_err(SerializeError::from)?;
7438        }
7439        Ok(())
7440    }
7441
7442    fn is_empty_element(&self) -> bool {
7443        #[cfg(feature = "dml-fills")]
7444        if !self.alpha_bi_level.is_empty() {
7445            return false;
7446        }
7447        #[cfg(feature = "dml-fills")]
7448        if !self.alpha_ceiling.is_empty() {
7449            return false;
7450        }
7451        #[cfg(feature = "dml-fills")]
7452        if !self.alpha_floor.is_empty() {
7453            return false;
7454        }
7455        #[cfg(feature = "dml-fills")]
7456        if !self.alpha_inv.is_empty() {
7457            return false;
7458        }
7459        #[cfg(feature = "dml-fills")]
7460        if !self.alpha_mod.is_empty() {
7461            return false;
7462        }
7463        #[cfg(feature = "dml-fills")]
7464        if !self.alpha_mod_fix.is_empty() {
7465            return false;
7466        }
7467        #[cfg(feature = "dml-fills")]
7468        if !self.alpha_repl.is_empty() {
7469            return false;
7470        }
7471        #[cfg(feature = "dml-fills")]
7472        if !self.bi_level.is_empty() {
7473            return false;
7474        }
7475        #[cfg(feature = "dml-fills")]
7476        if !self.blur.is_empty() {
7477            return false;
7478        }
7479        #[cfg(feature = "dml-fills")]
7480        if !self.clr_change.is_empty() {
7481            return false;
7482        }
7483        #[cfg(feature = "dml-fills")]
7484        if !self.clr_repl.is_empty() {
7485            return false;
7486        }
7487        #[cfg(feature = "dml-fills")]
7488        if !self.duotone.is_empty() {
7489            return false;
7490        }
7491        #[cfg(feature = "dml-fills")]
7492        if !self.fill_overlay.is_empty() {
7493            return false;
7494        }
7495        #[cfg(feature = "dml-fills")]
7496        if !self.grayscl.is_empty() {
7497            return false;
7498        }
7499        #[cfg(feature = "dml-fills")]
7500        if !self.hsl.is_empty() {
7501            return false;
7502        }
7503        #[cfg(feature = "dml-fills")]
7504        if !self.lum.is_empty() {
7505            return false;
7506        }
7507        #[cfg(feature = "dml-fills")]
7508        if !self.tint.is_empty() {
7509            return false;
7510        }
7511        #[cfg(feature = "dml-extensions")]
7512        if self.ext_lst.is_some() {
7513            return false;
7514        }
7515        #[cfg(feature = "extra-children")]
7516        if !self.extra_children.is_empty() {
7517            return false;
7518        }
7519        true
7520    }
7521}
7522
7523impl ToXml for BlipFillProperties {
7524    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7525        #[allow(unused_mut)]
7526        let mut start = start;
7527        #[cfg(feature = "dml-fills")]
7528        if let Some(ref val) = self.dpi {
7529            {
7530                let s = val.to_string();
7531                start.push_attribute(("dpi", s.as_str()));
7532            }
7533        }
7534        #[cfg(feature = "dml-fills")]
7535        if let Some(ref val) = self.rot_with_shape {
7536            start.push_attribute(("rotWithShape", if *val { "1" } else { "0" }));
7537        }
7538        #[cfg(feature = "extra-attrs")]
7539        for (key, value) in &self.extra_attrs {
7540            start.push_attribute((key.as_str(), value.as_str()));
7541        }
7542        start
7543    }
7544
7545    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
7546        #[cfg(feature = "extra-children")]
7547        let mut extra_iter = self.extra_children.iter().peekable();
7548        #[cfg(feature = "extra-children")]
7549        let mut emit_idx: usize = 0;
7550        #[cfg(feature = "extra-children")]
7551        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7552            extra_iter
7553                .next()
7554                .unwrap()
7555                .node
7556                .write_to(writer)
7557                .map_err(SerializeError::from)?;
7558        }
7559        #[cfg(feature = "dml-fills")]
7560        if let Some(ref val) = self.blip {
7561            val.write_element("a:blip", writer)?;
7562        }
7563        #[cfg(feature = "extra-children")]
7564        {
7565            emit_idx += 1;
7566        }
7567        #[cfg(feature = "extra-children")]
7568        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7569            extra_iter
7570                .next()
7571                .unwrap()
7572                .node
7573                .write_to(writer)
7574                .map_err(SerializeError::from)?;
7575        }
7576        #[cfg(feature = "dml-fills")]
7577        if let Some(ref val) = self.src_rect {
7578            val.write_element("a:srcRect", writer)?;
7579        }
7580        #[cfg(feature = "extra-children")]
7581        {
7582            emit_idx += 1;
7583        }
7584        #[cfg(feature = "extra-children")]
7585        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7586            extra_iter
7587                .next()
7588                .unwrap()
7589                .node
7590                .write_to(writer)
7591                .map_err(SerializeError::from)?;
7592        }
7593        if let Some(ref val) = self.fill_mode_properties {
7594            val.write_element("", writer)?;
7595        }
7596        #[cfg(feature = "extra-children")]
7597        {
7598            emit_idx += 1;
7599        }
7600        #[cfg(feature = "extra-children")]
7601        for extra in extra_iter {
7602            extra.node.write_to(writer).map_err(SerializeError::from)?;
7603        }
7604        Ok(())
7605    }
7606
7607    fn is_empty_element(&self) -> bool {
7608        #[cfg(feature = "dml-fills")]
7609        if self.blip.is_some() {
7610            return false;
7611        }
7612        #[cfg(feature = "dml-fills")]
7613        if self.src_rect.is_some() {
7614            return false;
7615        }
7616        if self.fill_mode_properties.is_some() {
7617            return false;
7618        }
7619        #[cfg(feature = "extra-children")]
7620        if !self.extra_children.is_empty() {
7621            return false;
7622        }
7623        true
7624    }
7625}
7626
7627impl ToXml for PatternFill {
7628    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7629        #[allow(unused_mut)]
7630        let mut start = start;
7631        #[cfg(feature = "dml-fills")]
7632        if let Some(ref val) = self.preset {
7633            {
7634                let s = val.to_string();
7635                start.push_attribute(("prst", s.as_str()));
7636            }
7637        }
7638        #[cfg(feature = "extra-attrs")]
7639        for (key, value) in &self.extra_attrs {
7640            start.push_attribute((key.as_str(), value.as_str()));
7641        }
7642        start
7643    }
7644
7645    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
7646        #[cfg(feature = "extra-children")]
7647        let mut extra_iter = self.extra_children.iter().peekable();
7648        #[cfg(feature = "extra-children")]
7649        let mut emit_idx: usize = 0;
7650        #[cfg(feature = "extra-children")]
7651        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7652            extra_iter
7653                .next()
7654                .unwrap()
7655                .node
7656                .write_to(writer)
7657                .map_err(SerializeError::from)?;
7658        }
7659        #[cfg(feature = "dml-fills")]
7660        if let Some(ref val) = self.fg_clr {
7661            val.write_element("a:fgClr", writer)?;
7662        }
7663        #[cfg(feature = "extra-children")]
7664        {
7665            emit_idx += 1;
7666        }
7667        #[cfg(feature = "extra-children")]
7668        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7669            extra_iter
7670                .next()
7671                .unwrap()
7672                .node
7673                .write_to(writer)
7674                .map_err(SerializeError::from)?;
7675        }
7676        #[cfg(feature = "dml-fills")]
7677        if let Some(ref val) = self.bg_clr {
7678            val.write_element("a:bgClr", writer)?;
7679        }
7680        #[cfg(feature = "extra-children")]
7681        {
7682            emit_idx += 1;
7683        }
7684        #[cfg(feature = "extra-children")]
7685        for extra in extra_iter {
7686            extra.node.write_to(writer).map_err(SerializeError::from)?;
7687        }
7688        Ok(())
7689    }
7690
7691    fn is_empty_element(&self) -> bool {
7692        #[cfg(feature = "dml-fills")]
7693        if self.fg_clr.is_some() {
7694            return false;
7695        }
7696        #[cfg(feature = "dml-fills")]
7697        if self.bg_clr.is_some() {
7698            return false;
7699        }
7700        #[cfg(feature = "extra-children")]
7701        if !self.extra_children.is_empty() {
7702            return false;
7703        }
7704        true
7705    }
7706}
7707
7708impl ToXml for CTGroupFillProperties {
7709    fn is_empty_element(&self) -> bool {
7710        true
7711    }
7712}
7713
7714impl ToXml for EGFillProperties {
7715    fn write_element<W: Write>(
7716        &self,
7717        _tag: &str,
7718        writer: &mut Writer<W>,
7719    ) -> Result<(), SerializeError> {
7720        match self {
7721            Self::NoFill(inner) => inner.write_element("a:noFill", writer)?,
7722            Self::SolidFill(inner) => inner.write_element("a:solidFill", writer)?,
7723            Self::GradFill(inner) => inner.write_element("a:gradFill", writer)?,
7724            Self::BlipFill(inner) => inner.write_element("a:blipFill", writer)?,
7725            Self::PattFill(inner) => inner.write_element("a:pattFill", writer)?,
7726            Self::GrpFill(inner) => inner.write_element("a:grpFill", writer)?,
7727        }
7728        Ok(())
7729    }
7730}
7731
7732impl ToXml for CTFillProperties {
7733    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
7734        #[cfg(feature = "extra-children")]
7735        let mut extra_iter = self.extra_children.iter().peekable();
7736        #[cfg(feature = "extra-children")]
7737        let mut emit_idx: usize = 0;
7738        #[cfg(feature = "extra-children")]
7739        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7740            extra_iter
7741                .next()
7742                .unwrap()
7743                .node
7744                .write_to(writer)
7745                .map_err(SerializeError::from)?;
7746        }
7747        if let Some(ref val) = self.fill_properties {
7748            val.write_element("", writer)?;
7749        }
7750        #[cfg(feature = "extra-children")]
7751        {
7752            emit_idx += 1;
7753        }
7754        #[cfg(feature = "extra-children")]
7755        for extra in extra_iter {
7756            extra.node.write_to(writer).map_err(SerializeError::from)?;
7757        }
7758        Ok(())
7759    }
7760
7761    fn is_empty_element(&self) -> bool {
7762        false
7763    }
7764}
7765
7766impl ToXml for CTFillEffect {
7767    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
7768        #[cfg(feature = "extra-children")]
7769        let mut extra_iter = self.extra_children.iter().peekable();
7770        #[cfg(feature = "extra-children")]
7771        let mut emit_idx: usize = 0;
7772        #[cfg(feature = "extra-children")]
7773        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7774            extra_iter
7775                .next()
7776                .unwrap()
7777                .node
7778                .write_to(writer)
7779                .map_err(SerializeError::from)?;
7780        }
7781        if let Some(ref val) = self.fill_properties {
7782            val.write_element("", writer)?;
7783        }
7784        #[cfg(feature = "extra-children")]
7785        {
7786            emit_idx += 1;
7787        }
7788        #[cfg(feature = "extra-children")]
7789        for extra in extra_iter {
7790            extra.node.write_to(writer).map_err(SerializeError::from)?;
7791        }
7792        Ok(())
7793    }
7794
7795    fn is_empty_element(&self) -> bool {
7796        false
7797    }
7798}
7799
7800impl ToXml for CTFillOverlayEffect {
7801    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7802        #[allow(unused_mut)]
7803        let mut start = start;
7804        {
7805            let val = &self.blend;
7806            {
7807                let s = val.to_string();
7808                start.push_attribute(("blend", s.as_str()));
7809            }
7810        }
7811        #[cfg(feature = "extra-attrs")]
7812        for (key, value) in &self.extra_attrs {
7813            start.push_attribute((key.as_str(), value.as_str()));
7814        }
7815        start
7816    }
7817
7818    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
7819        #[cfg(feature = "extra-children")]
7820        let mut extra_iter = self.extra_children.iter().peekable();
7821        #[cfg(feature = "extra-children")]
7822        let mut emit_idx: usize = 0;
7823        #[cfg(feature = "extra-children")]
7824        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7825            extra_iter
7826                .next()
7827                .unwrap()
7828                .node
7829                .write_to(writer)
7830                .map_err(SerializeError::from)?;
7831        }
7832        if let Some(ref val) = self.fill_properties {
7833            val.write_element("", writer)?;
7834        }
7835        #[cfg(feature = "extra-children")]
7836        {
7837            emit_idx += 1;
7838        }
7839        #[cfg(feature = "extra-children")]
7840        for extra in extra_iter {
7841            extra.node.write_to(writer).map_err(SerializeError::from)?;
7842        }
7843        Ok(())
7844    }
7845
7846    fn is_empty_element(&self) -> bool {
7847        false
7848    }
7849}
7850
7851impl ToXml for CTEffectReference {
7852    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7853        #[allow(unused_mut)]
7854        let mut start = start;
7855        {
7856            let val = &self.r#ref;
7857            start.push_attribute(("ref", val.as_str()));
7858        }
7859        #[cfg(feature = "extra-attrs")]
7860        for (key, value) in &self.extra_attrs {
7861            start.push_attribute((key.as_str(), value.as_str()));
7862        }
7863        start
7864    }
7865
7866    fn is_empty_element(&self) -> bool {
7867        true
7868    }
7869}
7870
7871impl ToXml for EGEffect {
7872    fn write_element<W: Write>(
7873        &self,
7874        _tag: &str,
7875        writer: &mut Writer<W>,
7876    ) -> Result<(), SerializeError> {
7877        match self {
7878            Self::Cont(inner) => inner.write_element("a:cont", writer)?,
7879            Self::Effect(inner) => inner.write_element("a:effect", writer)?,
7880            Self::AlphaBiLevel(inner) => inner.write_element("a:alphaBiLevel", writer)?,
7881            Self::AlphaCeiling(inner) => inner.write_element("a:alphaCeiling", writer)?,
7882            Self::AlphaFloor(inner) => inner.write_element("a:alphaFloor", writer)?,
7883            Self::AlphaInv(inner) => inner.write_element("a:alphaInv", writer)?,
7884            Self::AlphaMod(inner) => inner.write_element("a:alphaMod", writer)?,
7885            Self::AlphaModFix(inner) => inner.write_element("a:alphaModFix", writer)?,
7886            Self::AlphaOutset(inner) => inner.write_element("a:alphaOutset", writer)?,
7887            Self::AlphaRepl(inner) => inner.write_element("a:alphaRepl", writer)?,
7888            Self::BiLevel(inner) => inner.write_element("a:biLevel", writer)?,
7889            Self::Blend(inner) => inner.write_element("a:blend", writer)?,
7890            Self::Blur(inner) => inner.write_element("a:blur", writer)?,
7891            Self::ClrChange(inner) => inner.write_element("a:clrChange", writer)?,
7892            Self::ClrRepl(inner) => inner.write_element("a:clrRepl", writer)?,
7893            Self::Duotone(inner) => inner.write_element("a:duotone", writer)?,
7894            Self::Fill(inner) => inner.write_element("a:fill", writer)?,
7895            Self::FillOverlay(inner) => inner.write_element("a:fillOverlay", writer)?,
7896            Self::Glow(inner) => inner.write_element("a:glow", writer)?,
7897            Self::Grayscl(inner) => inner.write_element("a:grayscl", writer)?,
7898            Self::Hsl(inner) => inner.write_element("a:hsl", writer)?,
7899            Self::InnerShdw(inner) => inner.write_element("a:innerShdw", writer)?,
7900            Self::Lum(inner) => inner.write_element("a:lum", writer)?,
7901            Self::OuterShdw(inner) => inner.write_element("a:outerShdw", writer)?,
7902            Self::PrstShdw(inner) => inner.write_element("a:prstShdw", writer)?,
7903            Self::Reflection(inner) => inner.write_element("a:reflection", writer)?,
7904            Self::RelOff(inner) => inner.write_element("a:relOff", writer)?,
7905            Self::SoftEdge(inner) => inner.write_element("a:softEdge", writer)?,
7906            Self::Tint(inner) => inner.write_element("a:tint", writer)?,
7907            Self::Xfrm(inner) => inner.write_element("a:xfrm", writer)?,
7908        }
7909        Ok(())
7910    }
7911}
7912
7913impl ToXml for EffectContainer {
7914    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7915        #[allow(unused_mut)]
7916        let mut start = start;
7917        if let Some(ref val) = self.r#type {
7918            {
7919                let s = val.to_string();
7920                start.push_attribute(("type", s.as_str()));
7921            }
7922        }
7923        if let Some(ref val) = self.name {
7924            start.push_attribute(("name", val.as_str()));
7925        }
7926        #[cfg(feature = "extra-attrs")]
7927        for (key, value) in &self.extra_attrs {
7928            start.push_attribute((key.as_str(), value.as_str()));
7929        }
7930        start
7931    }
7932
7933    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
7934        #[cfg(feature = "extra-children")]
7935        let mut extra_iter = self.extra_children.iter().peekable();
7936        #[cfg(feature = "extra-children")]
7937        let mut emit_idx: usize = 0;
7938        for item in &self.effect {
7939            #[cfg(feature = "extra-children")]
7940            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7941                extra_iter
7942                    .next()
7943                    .unwrap()
7944                    .node
7945                    .write_to(writer)
7946                    .map_err(SerializeError::from)?;
7947            }
7948            item.write_element("", writer)?;
7949            #[cfg(feature = "extra-children")]
7950            {
7951                emit_idx += 1;
7952            }
7953        }
7954        #[cfg(feature = "extra-children")]
7955        for extra in extra_iter {
7956            extra.node.write_to(writer).map_err(SerializeError::from)?;
7957        }
7958        Ok(())
7959    }
7960
7961    fn is_empty_element(&self) -> bool {
7962        if !self.effect.is_empty() {
7963            return false;
7964        }
7965        #[cfg(feature = "extra-children")]
7966        if !self.extra_children.is_empty() {
7967            return false;
7968        }
7969        true
7970    }
7971}
7972
7973impl ToXml for CTBlendEffect {
7974    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
7975        #[allow(unused_mut)]
7976        let mut start = start;
7977        {
7978            let val = &self.blend;
7979            {
7980                let s = val.to_string();
7981                start.push_attribute(("blend", s.as_str()));
7982            }
7983        }
7984        #[cfg(feature = "extra-attrs")]
7985        for (key, value) in &self.extra_attrs {
7986            start.push_attribute((key.as_str(), value.as_str()));
7987        }
7988        start
7989    }
7990
7991    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
7992        #[cfg(feature = "extra-children")]
7993        let mut extra_iter = self.extra_children.iter().peekable();
7994        #[cfg(feature = "extra-children")]
7995        let mut emit_idx: usize = 0;
7996        #[cfg(feature = "extra-children")]
7997        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
7998            extra_iter
7999                .next()
8000                .unwrap()
8001                .node
8002                .write_to(writer)
8003                .map_err(SerializeError::from)?;
8004        }
8005        {
8006            let val = &self.cont;
8007            val.write_element("a:cont", writer)?;
8008        }
8009        #[cfg(feature = "extra-children")]
8010        {
8011            emit_idx += 1;
8012        }
8013        #[cfg(feature = "extra-children")]
8014        for extra in extra_iter {
8015            extra.node.write_to(writer).map_err(SerializeError::from)?;
8016        }
8017        Ok(())
8018    }
8019
8020    fn is_empty_element(&self) -> bool {
8021        false
8022    }
8023}
8024
8025impl ToXml for EffectList {
8026    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
8027        #[cfg(feature = "extra-children")]
8028        let mut extra_iter = self.extra_children.iter().peekable();
8029        #[cfg(feature = "extra-children")]
8030        let mut emit_idx: usize = 0;
8031        #[cfg(feature = "extra-children")]
8032        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8033            extra_iter
8034                .next()
8035                .unwrap()
8036                .node
8037                .write_to(writer)
8038                .map_err(SerializeError::from)?;
8039        }
8040        #[cfg(feature = "dml-effects")]
8041        if let Some(ref val) = self.blur {
8042            val.write_element("a:blur", writer)?;
8043        }
8044        #[cfg(feature = "extra-children")]
8045        {
8046            emit_idx += 1;
8047        }
8048        #[cfg(feature = "extra-children")]
8049        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8050            extra_iter
8051                .next()
8052                .unwrap()
8053                .node
8054                .write_to(writer)
8055                .map_err(SerializeError::from)?;
8056        }
8057        #[cfg(feature = "dml-effects")]
8058        if let Some(ref val) = self.fill_overlay {
8059            val.write_element("a:fillOverlay", writer)?;
8060        }
8061        #[cfg(feature = "extra-children")]
8062        {
8063            emit_idx += 1;
8064        }
8065        #[cfg(feature = "extra-children")]
8066        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8067            extra_iter
8068                .next()
8069                .unwrap()
8070                .node
8071                .write_to(writer)
8072                .map_err(SerializeError::from)?;
8073        }
8074        #[cfg(feature = "dml-effects")]
8075        if let Some(ref val) = self.glow {
8076            val.write_element("a:glow", writer)?;
8077        }
8078        #[cfg(feature = "extra-children")]
8079        {
8080            emit_idx += 1;
8081        }
8082        #[cfg(feature = "extra-children")]
8083        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8084            extra_iter
8085                .next()
8086                .unwrap()
8087                .node
8088                .write_to(writer)
8089                .map_err(SerializeError::from)?;
8090        }
8091        #[cfg(feature = "dml-effects")]
8092        if let Some(ref val) = self.inner_shdw {
8093            val.write_element("a:innerShdw", writer)?;
8094        }
8095        #[cfg(feature = "extra-children")]
8096        {
8097            emit_idx += 1;
8098        }
8099        #[cfg(feature = "extra-children")]
8100        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8101            extra_iter
8102                .next()
8103                .unwrap()
8104                .node
8105                .write_to(writer)
8106                .map_err(SerializeError::from)?;
8107        }
8108        #[cfg(feature = "dml-effects")]
8109        if let Some(ref val) = self.outer_shdw {
8110            val.write_element("a:outerShdw", writer)?;
8111        }
8112        #[cfg(feature = "extra-children")]
8113        {
8114            emit_idx += 1;
8115        }
8116        #[cfg(feature = "extra-children")]
8117        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8118            extra_iter
8119                .next()
8120                .unwrap()
8121                .node
8122                .write_to(writer)
8123                .map_err(SerializeError::from)?;
8124        }
8125        #[cfg(feature = "dml-effects")]
8126        if let Some(ref val) = self.prst_shdw {
8127            val.write_element("a:prstShdw", writer)?;
8128        }
8129        #[cfg(feature = "extra-children")]
8130        {
8131            emit_idx += 1;
8132        }
8133        #[cfg(feature = "extra-children")]
8134        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8135            extra_iter
8136                .next()
8137                .unwrap()
8138                .node
8139                .write_to(writer)
8140                .map_err(SerializeError::from)?;
8141        }
8142        #[cfg(feature = "dml-effects")]
8143        if let Some(ref val) = self.reflection {
8144            val.write_element("a:reflection", writer)?;
8145        }
8146        #[cfg(feature = "extra-children")]
8147        {
8148            emit_idx += 1;
8149        }
8150        #[cfg(feature = "extra-children")]
8151        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8152            extra_iter
8153                .next()
8154                .unwrap()
8155                .node
8156                .write_to(writer)
8157                .map_err(SerializeError::from)?;
8158        }
8159        #[cfg(feature = "dml-effects")]
8160        if let Some(ref val) = self.soft_edge {
8161            val.write_element("a:softEdge", writer)?;
8162        }
8163        #[cfg(feature = "extra-children")]
8164        {
8165            emit_idx += 1;
8166        }
8167        #[cfg(feature = "extra-children")]
8168        for extra in extra_iter {
8169            extra.node.write_to(writer).map_err(SerializeError::from)?;
8170        }
8171        Ok(())
8172    }
8173
8174    fn is_empty_element(&self) -> bool {
8175        #[cfg(feature = "dml-effects")]
8176        if self.blur.is_some() {
8177            return false;
8178        }
8179        #[cfg(feature = "dml-effects")]
8180        if self.fill_overlay.is_some() {
8181            return false;
8182        }
8183        #[cfg(feature = "dml-effects")]
8184        if self.glow.is_some() {
8185            return false;
8186        }
8187        #[cfg(feature = "dml-effects")]
8188        if self.inner_shdw.is_some() {
8189            return false;
8190        }
8191        #[cfg(feature = "dml-effects")]
8192        if self.outer_shdw.is_some() {
8193            return false;
8194        }
8195        #[cfg(feature = "dml-effects")]
8196        if self.prst_shdw.is_some() {
8197            return false;
8198        }
8199        #[cfg(feature = "dml-effects")]
8200        if self.reflection.is_some() {
8201            return false;
8202        }
8203        #[cfg(feature = "dml-effects")]
8204        if self.soft_edge.is_some() {
8205            return false;
8206        }
8207        #[cfg(feature = "extra-children")]
8208        if !self.extra_children.is_empty() {
8209            return false;
8210        }
8211        true
8212    }
8213}
8214
8215impl ToXml for EGEffectProperties {
8216    fn write_element<W: Write>(
8217        &self,
8218        _tag: &str,
8219        writer: &mut Writer<W>,
8220    ) -> Result<(), SerializeError> {
8221        match self {
8222            Self::EffectLst(inner) => inner.write_element("a:effectLst", writer)?,
8223            Self::EffectDag(inner) => inner.write_element("a:effectDag", writer)?,
8224        }
8225        Ok(())
8226    }
8227}
8228
8229impl ToXml for CTEffectProperties {
8230    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
8231        #[cfg(feature = "extra-children")]
8232        let mut extra_iter = self.extra_children.iter().peekable();
8233        #[cfg(feature = "extra-children")]
8234        let mut emit_idx: usize = 0;
8235        #[cfg(feature = "extra-children")]
8236        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8237            extra_iter
8238                .next()
8239                .unwrap()
8240                .node
8241                .write_to(writer)
8242                .map_err(SerializeError::from)?;
8243        }
8244        if let Some(ref val) = self.effect_properties {
8245            val.write_element("", writer)?;
8246        }
8247        #[cfg(feature = "extra-children")]
8248        {
8249            emit_idx += 1;
8250        }
8251        #[cfg(feature = "extra-children")]
8252        for extra in extra_iter {
8253            extra.node.write_to(writer).map_err(SerializeError::from)?;
8254        }
8255        Ok(())
8256    }
8257
8258    fn is_empty_element(&self) -> bool {
8259        false
8260    }
8261}
8262
8263impl ToXml for CTGeomGuide {
8264    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
8265        #[allow(unused_mut)]
8266        let mut start = start;
8267        {
8268            let val = &self.name;
8269            start.push_attribute(("name", val.as_str()));
8270        }
8271        {
8272            let val = &self.fmla;
8273            start.push_attribute(("fmla", val.as_str()));
8274        }
8275        #[cfg(feature = "extra-attrs")]
8276        for (key, value) in &self.extra_attrs {
8277            start.push_attribute((key.as_str(), value.as_str()));
8278        }
8279        start
8280    }
8281
8282    fn is_empty_element(&self) -> bool {
8283        true
8284    }
8285}
8286
8287impl ToXml for CTGeomGuideList {
8288    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
8289        #[cfg(feature = "extra-children")]
8290        let mut extra_iter = self.extra_children.iter().peekable();
8291        #[cfg(feature = "extra-children")]
8292        let mut emit_idx: usize = 0;
8293        for item in &self.gd {
8294            #[cfg(feature = "extra-children")]
8295            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8296                extra_iter
8297                    .next()
8298                    .unwrap()
8299                    .node
8300                    .write_to(writer)
8301                    .map_err(SerializeError::from)?;
8302            }
8303            item.write_element("a:gd", writer)?;
8304            #[cfg(feature = "extra-children")]
8305            {
8306                emit_idx += 1;
8307            }
8308        }
8309        #[cfg(feature = "extra-children")]
8310        for extra in extra_iter {
8311            extra.node.write_to(writer).map_err(SerializeError::from)?;
8312        }
8313        Ok(())
8314    }
8315
8316    fn is_empty_element(&self) -> bool {
8317        if !self.gd.is_empty() {
8318            return false;
8319        }
8320        #[cfg(feature = "extra-children")]
8321        if !self.extra_children.is_empty() {
8322            return false;
8323        }
8324        true
8325    }
8326}
8327
8328impl ToXml for CTAdjPoint2D {
8329    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
8330        #[allow(unused_mut)]
8331        let mut start = start;
8332        {
8333            let val = &self.x;
8334            {
8335                let s = val.to_string();
8336                start.push_attribute(("x", s.as_str()));
8337            }
8338        }
8339        {
8340            let val = &self.y;
8341            {
8342                let s = val.to_string();
8343                start.push_attribute(("y", s.as_str()));
8344            }
8345        }
8346        #[cfg(feature = "extra-attrs")]
8347        for (key, value) in &self.extra_attrs {
8348            start.push_attribute((key.as_str(), value.as_str()));
8349        }
8350        start
8351    }
8352
8353    fn is_empty_element(&self) -> bool {
8354        true
8355    }
8356}
8357
8358impl ToXml for CTGeomRect {
8359    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
8360        #[allow(unused_mut)]
8361        let mut start = start;
8362        {
8363            let val = &self.l;
8364            {
8365                let s = val.to_string();
8366                start.push_attribute(("l", s.as_str()));
8367            }
8368        }
8369        {
8370            let val = &self.t;
8371            {
8372                let s = val.to_string();
8373                start.push_attribute(("t", s.as_str()));
8374            }
8375        }
8376        {
8377            let val = &self.relationship_id;
8378            {
8379                let s = val.to_string();
8380                start.push_attribute(("r", s.as_str()));
8381            }
8382        }
8383        {
8384            let val = &self.b;
8385            {
8386                let s = val.to_string();
8387                start.push_attribute(("b", s.as_str()));
8388            }
8389        }
8390        #[cfg(feature = "extra-attrs")]
8391        for (key, value) in &self.extra_attrs {
8392            start.push_attribute((key.as_str(), value.as_str()));
8393        }
8394        start
8395    }
8396
8397    fn is_empty_element(&self) -> bool {
8398        true
8399    }
8400}
8401
8402impl ToXml for CTXYAdjustHandle {
8403    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
8404        #[allow(unused_mut)]
8405        let mut start = start;
8406        if let Some(ref val) = self.gd_ref_x {
8407            start.push_attribute(("gdRefX", val.as_str()));
8408        }
8409        if let Some(ref val) = self.min_x {
8410            {
8411                let s = val.to_string();
8412                start.push_attribute(("minX", s.as_str()));
8413            }
8414        }
8415        if let Some(ref val) = self.max_x {
8416            {
8417                let s = val.to_string();
8418                start.push_attribute(("maxX", s.as_str()));
8419            }
8420        }
8421        if let Some(ref val) = self.gd_ref_y {
8422            start.push_attribute(("gdRefY", val.as_str()));
8423        }
8424        if let Some(ref val) = self.min_y {
8425            {
8426                let s = val.to_string();
8427                start.push_attribute(("minY", s.as_str()));
8428            }
8429        }
8430        if let Some(ref val) = self.max_y {
8431            {
8432                let s = val.to_string();
8433                start.push_attribute(("maxY", s.as_str()));
8434            }
8435        }
8436        #[cfg(feature = "extra-attrs")]
8437        for (key, value) in &self.extra_attrs {
8438            start.push_attribute((key.as_str(), value.as_str()));
8439        }
8440        start
8441    }
8442
8443    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
8444        #[cfg(feature = "extra-children")]
8445        let mut extra_iter = self.extra_children.iter().peekable();
8446        #[cfg(feature = "extra-children")]
8447        let mut emit_idx: usize = 0;
8448        #[cfg(feature = "extra-children")]
8449        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8450            extra_iter
8451                .next()
8452                .unwrap()
8453                .node
8454                .write_to(writer)
8455                .map_err(SerializeError::from)?;
8456        }
8457        {
8458            let val = &self.pos;
8459            val.write_element("a:pos", writer)?;
8460        }
8461        #[cfg(feature = "extra-children")]
8462        {
8463            emit_idx += 1;
8464        }
8465        #[cfg(feature = "extra-children")]
8466        for extra in extra_iter {
8467            extra.node.write_to(writer).map_err(SerializeError::from)?;
8468        }
8469        Ok(())
8470    }
8471
8472    fn is_empty_element(&self) -> bool {
8473        false
8474    }
8475}
8476
8477impl ToXml for CTPolarAdjustHandle {
8478    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
8479        #[allow(unused_mut)]
8480        let mut start = start;
8481        if let Some(ref val) = self.gd_ref_r {
8482            start.push_attribute(("gdRefR", val.as_str()));
8483        }
8484        if let Some(ref val) = self.min_r {
8485            {
8486                let s = val.to_string();
8487                start.push_attribute(("minR", s.as_str()));
8488            }
8489        }
8490        if let Some(ref val) = self.max_r {
8491            {
8492                let s = val.to_string();
8493                start.push_attribute(("maxR", s.as_str()));
8494            }
8495        }
8496        if let Some(ref val) = self.gd_ref_ang {
8497            start.push_attribute(("gdRefAng", val.as_str()));
8498        }
8499        if let Some(ref val) = self.min_ang {
8500            {
8501                let s = val.to_string();
8502                start.push_attribute(("minAng", s.as_str()));
8503            }
8504        }
8505        if let Some(ref val) = self.max_ang {
8506            {
8507                let s = val.to_string();
8508                start.push_attribute(("maxAng", s.as_str()));
8509            }
8510        }
8511        #[cfg(feature = "extra-attrs")]
8512        for (key, value) in &self.extra_attrs {
8513            start.push_attribute((key.as_str(), value.as_str()));
8514        }
8515        start
8516    }
8517
8518    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
8519        #[cfg(feature = "extra-children")]
8520        let mut extra_iter = self.extra_children.iter().peekable();
8521        #[cfg(feature = "extra-children")]
8522        let mut emit_idx: usize = 0;
8523        #[cfg(feature = "extra-children")]
8524        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8525            extra_iter
8526                .next()
8527                .unwrap()
8528                .node
8529                .write_to(writer)
8530                .map_err(SerializeError::from)?;
8531        }
8532        {
8533            let val = &self.pos;
8534            val.write_element("a:pos", writer)?;
8535        }
8536        #[cfg(feature = "extra-children")]
8537        {
8538            emit_idx += 1;
8539        }
8540        #[cfg(feature = "extra-children")]
8541        for extra in extra_iter {
8542            extra.node.write_to(writer).map_err(SerializeError::from)?;
8543        }
8544        Ok(())
8545    }
8546
8547    fn is_empty_element(&self) -> bool {
8548        false
8549    }
8550}
8551
8552impl ToXml for CTConnectionSite {
8553    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
8554        #[allow(unused_mut)]
8555        let mut start = start;
8556        {
8557            let val = &self.ang;
8558            {
8559                let s = val.to_string();
8560                start.push_attribute(("ang", s.as_str()));
8561            }
8562        }
8563        #[cfg(feature = "extra-attrs")]
8564        for (key, value) in &self.extra_attrs {
8565            start.push_attribute((key.as_str(), value.as_str()));
8566        }
8567        start
8568    }
8569
8570    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
8571        #[cfg(feature = "extra-children")]
8572        let mut extra_iter = self.extra_children.iter().peekable();
8573        #[cfg(feature = "extra-children")]
8574        let mut emit_idx: usize = 0;
8575        #[cfg(feature = "extra-children")]
8576        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8577            extra_iter
8578                .next()
8579                .unwrap()
8580                .node
8581                .write_to(writer)
8582                .map_err(SerializeError::from)?;
8583        }
8584        {
8585            let val = &self.pos;
8586            val.write_element("a:pos", writer)?;
8587        }
8588        #[cfg(feature = "extra-children")]
8589        {
8590            emit_idx += 1;
8591        }
8592        #[cfg(feature = "extra-children")]
8593        for extra in extra_iter {
8594            extra.node.write_to(writer).map_err(SerializeError::from)?;
8595        }
8596        Ok(())
8597    }
8598
8599    fn is_empty_element(&self) -> bool {
8600        false
8601    }
8602}
8603
8604impl ToXml for CTAdjustHandleList {
8605    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
8606        #[cfg(feature = "extra-children")]
8607        let mut extra_iter = self.extra_children.iter().peekable();
8608        #[cfg(feature = "extra-children")]
8609        let mut emit_idx: usize = 0;
8610        for item in &self.ah_x_y {
8611            #[cfg(feature = "extra-children")]
8612            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8613                extra_iter
8614                    .next()
8615                    .unwrap()
8616                    .node
8617                    .write_to(writer)
8618                    .map_err(SerializeError::from)?;
8619            }
8620            item.write_element("a:ahXY", writer)?;
8621            #[cfg(feature = "extra-children")]
8622            {
8623                emit_idx += 1;
8624            }
8625        }
8626        for item in &self.ah_polar {
8627            #[cfg(feature = "extra-children")]
8628            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8629                extra_iter
8630                    .next()
8631                    .unwrap()
8632                    .node
8633                    .write_to(writer)
8634                    .map_err(SerializeError::from)?;
8635            }
8636            item.write_element("a:ahPolar", writer)?;
8637            #[cfg(feature = "extra-children")]
8638            {
8639                emit_idx += 1;
8640            }
8641        }
8642        #[cfg(feature = "extra-children")]
8643        for extra in extra_iter {
8644            extra.node.write_to(writer).map_err(SerializeError::from)?;
8645        }
8646        Ok(())
8647    }
8648
8649    fn is_empty_element(&self) -> bool {
8650        if !self.ah_x_y.is_empty() {
8651            return false;
8652        }
8653        if !self.ah_polar.is_empty() {
8654            return false;
8655        }
8656        #[cfg(feature = "extra-children")]
8657        if !self.extra_children.is_empty() {
8658            return false;
8659        }
8660        true
8661    }
8662}
8663
8664impl ToXml for CTConnectionSiteList {
8665    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
8666        #[cfg(feature = "extra-children")]
8667        let mut extra_iter = self.extra_children.iter().peekable();
8668        #[cfg(feature = "extra-children")]
8669        let mut emit_idx: usize = 0;
8670        for item in &self.cxn {
8671            #[cfg(feature = "extra-children")]
8672            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8673                extra_iter
8674                    .next()
8675                    .unwrap()
8676                    .node
8677                    .write_to(writer)
8678                    .map_err(SerializeError::from)?;
8679            }
8680            item.write_element("a:cxn", writer)?;
8681            #[cfg(feature = "extra-children")]
8682            {
8683                emit_idx += 1;
8684            }
8685        }
8686        #[cfg(feature = "extra-children")]
8687        for extra in extra_iter {
8688            extra.node.write_to(writer).map_err(SerializeError::from)?;
8689        }
8690        Ok(())
8691    }
8692
8693    fn is_empty_element(&self) -> bool {
8694        if !self.cxn.is_empty() {
8695            return false;
8696        }
8697        #[cfg(feature = "extra-children")]
8698        if !self.extra_children.is_empty() {
8699            return false;
8700        }
8701        true
8702    }
8703}
8704
8705impl ToXml for CTConnection {
8706    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
8707        #[allow(unused_mut)]
8708        let mut start = start;
8709        {
8710            let val = &self.id;
8711            {
8712                let s = val.to_string();
8713                start.push_attribute(("id", s.as_str()));
8714            }
8715        }
8716        {
8717            let val = &self.idx;
8718            {
8719                let s = val.to_string();
8720                start.push_attribute(("idx", s.as_str()));
8721            }
8722        }
8723        #[cfg(feature = "extra-attrs")]
8724        for (key, value) in &self.extra_attrs {
8725            start.push_attribute((key.as_str(), value.as_str()));
8726        }
8727        start
8728    }
8729
8730    fn is_empty_element(&self) -> bool {
8731        true
8732    }
8733}
8734
8735impl ToXml for CTPath2DArcTo {
8736    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
8737        #[allow(unused_mut)]
8738        let mut start = start;
8739        {
8740            let val = &self.w_r;
8741            {
8742                let s = val.to_string();
8743                start.push_attribute(("wR", s.as_str()));
8744            }
8745        }
8746        {
8747            let val = &self.h_r;
8748            {
8749                let s = val.to_string();
8750                start.push_attribute(("hR", s.as_str()));
8751            }
8752        }
8753        {
8754            let val = &self.st_ang;
8755            {
8756                let s = val.to_string();
8757                start.push_attribute(("stAng", s.as_str()));
8758            }
8759        }
8760        {
8761            let val = &self.sw_ang;
8762            {
8763                let s = val.to_string();
8764                start.push_attribute(("swAng", s.as_str()));
8765            }
8766        }
8767        #[cfg(feature = "extra-attrs")]
8768        for (key, value) in &self.extra_attrs {
8769            start.push_attribute((key.as_str(), value.as_str()));
8770        }
8771        start
8772    }
8773
8774    fn is_empty_element(&self) -> bool {
8775        true
8776    }
8777}
8778
8779impl ToXml for CTPath2DQuadBezierTo {
8780    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
8781        #[cfg(feature = "extra-children")]
8782        let mut extra_iter = self.extra_children.iter().peekable();
8783        #[cfg(feature = "extra-children")]
8784        let mut emit_idx: usize = 0;
8785        for item in &self.pt {
8786            #[cfg(feature = "extra-children")]
8787            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8788                extra_iter
8789                    .next()
8790                    .unwrap()
8791                    .node
8792                    .write_to(writer)
8793                    .map_err(SerializeError::from)?;
8794            }
8795            item.write_element("a:pt", writer)?;
8796            #[cfg(feature = "extra-children")]
8797            {
8798                emit_idx += 1;
8799            }
8800        }
8801        #[cfg(feature = "extra-children")]
8802        for extra in extra_iter {
8803            extra.node.write_to(writer).map_err(SerializeError::from)?;
8804        }
8805        Ok(())
8806    }
8807
8808    fn is_empty_element(&self) -> bool {
8809        if !self.pt.is_empty() {
8810            return false;
8811        }
8812        #[cfg(feature = "extra-children")]
8813        if !self.extra_children.is_empty() {
8814            return false;
8815        }
8816        true
8817    }
8818}
8819
8820impl ToXml for CTPath2DCubicBezierTo {
8821    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
8822        #[cfg(feature = "extra-children")]
8823        let mut extra_iter = self.extra_children.iter().peekable();
8824        #[cfg(feature = "extra-children")]
8825        let mut emit_idx: usize = 0;
8826        for item in &self.pt {
8827            #[cfg(feature = "extra-children")]
8828            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8829                extra_iter
8830                    .next()
8831                    .unwrap()
8832                    .node
8833                    .write_to(writer)
8834                    .map_err(SerializeError::from)?;
8835            }
8836            item.write_element("a:pt", writer)?;
8837            #[cfg(feature = "extra-children")]
8838            {
8839                emit_idx += 1;
8840            }
8841        }
8842        #[cfg(feature = "extra-children")]
8843        for extra in extra_iter {
8844            extra.node.write_to(writer).map_err(SerializeError::from)?;
8845        }
8846        Ok(())
8847    }
8848
8849    fn is_empty_element(&self) -> bool {
8850        if !self.pt.is_empty() {
8851            return false;
8852        }
8853        #[cfg(feature = "extra-children")]
8854        if !self.extra_children.is_empty() {
8855            return false;
8856        }
8857        true
8858    }
8859}
8860
8861impl ToXml for CTPath2DClose {
8862    fn is_empty_element(&self) -> bool {
8863        true
8864    }
8865}
8866
8867impl ToXml for CTPath2D {
8868    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
8869        #[allow(unused_mut)]
8870        let mut start = start;
8871        if let Some(ref val) = self.width {
8872            {
8873                let s = val.to_string();
8874                start.push_attribute(("w", s.as_str()));
8875            }
8876        }
8877        if let Some(ref val) = self.height {
8878            {
8879                let s = val.to_string();
8880                start.push_attribute(("h", s.as_str()));
8881            }
8882        }
8883        if let Some(ref val) = self.fill {
8884            {
8885                let s = val.to_string();
8886                start.push_attribute(("fill", s.as_str()));
8887            }
8888        }
8889        if let Some(ref val) = self.stroke {
8890            start.push_attribute(("stroke", if *val { "1" } else { "0" }));
8891        }
8892        if let Some(ref val) = self.extrusion_ok {
8893            start.push_attribute(("extrusionOk", if *val { "1" } else { "0" }));
8894        }
8895        #[cfg(feature = "extra-attrs")]
8896        for (key, value) in &self.extra_attrs {
8897            start.push_attribute((key.as_str(), value.as_str()));
8898        }
8899        start
8900    }
8901
8902    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
8903        #[cfg(feature = "extra-children")]
8904        let mut extra_iter = self.extra_children.iter().peekable();
8905        #[cfg(feature = "extra-children")]
8906        let mut emit_idx: usize = 0;
8907        for item in &self.close {
8908            #[cfg(feature = "extra-children")]
8909            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8910                extra_iter
8911                    .next()
8912                    .unwrap()
8913                    .node
8914                    .write_to(writer)
8915                    .map_err(SerializeError::from)?;
8916            }
8917            item.write_element("a:close", writer)?;
8918            #[cfg(feature = "extra-children")]
8919            {
8920                emit_idx += 1;
8921            }
8922        }
8923        for item in &self.move_to {
8924            #[cfg(feature = "extra-children")]
8925            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8926                extra_iter
8927                    .next()
8928                    .unwrap()
8929                    .node
8930                    .write_to(writer)
8931                    .map_err(SerializeError::from)?;
8932            }
8933            item.write_element("a:moveTo", writer)?;
8934            #[cfg(feature = "extra-children")]
8935            {
8936                emit_idx += 1;
8937            }
8938        }
8939        for item in &self.ln_to {
8940            #[cfg(feature = "extra-children")]
8941            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8942                extra_iter
8943                    .next()
8944                    .unwrap()
8945                    .node
8946                    .write_to(writer)
8947                    .map_err(SerializeError::from)?;
8948            }
8949            item.write_element("a:lnTo", writer)?;
8950            #[cfg(feature = "extra-children")]
8951            {
8952                emit_idx += 1;
8953            }
8954        }
8955        for item in &self.arc_to {
8956            #[cfg(feature = "extra-children")]
8957            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8958                extra_iter
8959                    .next()
8960                    .unwrap()
8961                    .node
8962                    .write_to(writer)
8963                    .map_err(SerializeError::from)?;
8964            }
8965            item.write_element("a:arcTo", writer)?;
8966            #[cfg(feature = "extra-children")]
8967            {
8968                emit_idx += 1;
8969            }
8970        }
8971        for item in &self.quad_bez_to {
8972            #[cfg(feature = "extra-children")]
8973            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8974                extra_iter
8975                    .next()
8976                    .unwrap()
8977                    .node
8978                    .write_to(writer)
8979                    .map_err(SerializeError::from)?;
8980            }
8981            item.write_element("a:quadBezTo", writer)?;
8982            #[cfg(feature = "extra-children")]
8983            {
8984                emit_idx += 1;
8985            }
8986        }
8987        for item in &self.cubic_bez_to {
8988            #[cfg(feature = "extra-children")]
8989            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
8990                extra_iter
8991                    .next()
8992                    .unwrap()
8993                    .node
8994                    .write_to(writer)
8995                    .map_err(SerializeError::from)?;
8996            }
8997            item.write_element("a:cubicBezTo", writer)?;
8998            #[cfg(feature = "extra-children")]
8999            {
9000                emit_idx += 1;
9001            }
9002        }
9003        #[cfg(feature = "extra-children")]
9004        for extra in extra_iter {
9005            extra.node.write_to(writer).map_err(SerializeError::from)?;
9006        }
9007        Ok(())
9008    }
9009
9010    fn is_empty_element(&self) -> bool {
9011        if !self.close.is_empty() {
9012            return false;
9013        }
9014        if !self.move_to.is_empty() {
9015            return false;
9016        }
9017        if !self.ln_to.is_empty() {
9018            return false;
9019        }
9020        if !self.arc_to.is_empty() {
9021            return false;
9022        }
9023        if !self.quad_bez_to.is_empty() {
9024            return false;
9025        }
9026        if !self.cubic_bez_to.is_empty() {
9027            return false;
9028        }
9029        #[cfg(feature = "extra-children")]
9030        if !self.extra_children.is_empty() {
9031            return false;
9032        }
9033        true
9034    }
9035}
9036
9037impl ToXml for CTPath2DList {
9038    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
9039        #[cfg(feature = "extra-children")]
9040        let mut extra_iter = self.extra_children.iter().peekable();
9041        #[cfg(feature = "extra-children")]
9042        let mut emit_idx: usize = 0;
9043        for item in &self.path {
9044            #[cfg(feature = "extra-children")]
9045            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9046                extra_iter
9047                    .next()
9048                    .unwrap()
9049                    .node
9050                    .write_to(writer)
9051                    .map_err(SerializeError::from)?;
9052            }
9053            item.write_element("a:path", writer)?;
9054            #[cfg(feature = "extra-children")]
9055            {
9056                emit_idx += 1;
9057            }
9058        }
9059        #[cfg(feature = "extra-children")]
9060        for extra in extra_iter {
9061            extra.node.write_to(writer).map_err(SerializeError::from)?;
9062        }
9063        Ok(())
9064    }
9065
9066    fn is_empty_element(&self) -> bool {
9067        if !self.path.is_empty() {
9068            return false;
9069        }
9070        #[cfg(feature = "extra-children")]
9071        if !self.extra_children.is_empty() {
9072            return false;
9073        }
9074        true
9075    }
9076}
9077
9078impl ToXml for CTPresetGeometry2D {
9079    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9080        #[allow(unused_mut)]
9081        let mut start = start;
9082        {
9083            let val = &self.preset;
9084            {
9085                let s = val.to_string();
9086                start.push_attribute(("prst", s.as_str()));
9087            }
9088        }
9089        #[cfg(feature = "extra-attrs")]
9090        for (key, value) in &self.extra_attrs {
9091            start.push_attribute((key.as_str(), value.as_str()));
9092        }
9093        start
9094    }
9095
9096    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
9097        #[cfg(feature = "extra-children")]
9098        let mut extra_iter = self.extra_children.iter().peekable();
9099        #[cfg(feature = "extra-children")]
9100        let mut emit_idx: usize = 0;
9101        #[cfg(feature = "extra-children")]
9102        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9103            extra_iter
9104                .next()
9105                .unwrap()
9106                .node
9107                .write_to(writer)
9108                .map_err(SerializeError::from)?;
9109        }
9110        if let Some(ref val) = self.av_lst {
9111            val.write_element("a:avLst", writer)?;
9112        }
9113        #[cfg(feature = "extra-children")]
9114        {
9115            emit_idx += 1;
9116        }
9117        #[cfg(feature = "extra-children")]
9118        for extra in extra_iter {
9119            extra.node.write_to(writer).map_err(SerializeError::from)?;
9120        }
9121        Ok(())
9122    }
9123
9124    fn is_empty_element(&self) -> bool {
9125        if self.av_lst.is_some() {
9126            return false;
9127        }
9128        #[cfg(feature = "extra-children")]
9129        if !self.extra_children.is_empty() {
9130            return false;
9131        }
9132        true
9133    }
9134}
9135
9136impl ToXml for CTPresetTextShape {
9137    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9138        #[allow(unused_mut)]
9139        let mut start = start;
9140        {
9141            let val = &self.preset;
9142            {
9143                let s = val.to_string();
9144                start.push_attribute(("prst", s.as_str()));
9145            }
9146        }
9147        #[cfg(feature = "extra-attrs")]
9148        for (key, value) in &self.extra_attrs {
9149            start.push_attribute((key.as_str(), value.as_str()));
9150        }
9151        start
9152    }
9153
9154    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
9155        #[cfg(feature = "extra-children")]
9156        let mut extra_iter = self.extra_children.iter().peekable();
9157        #[cfg(feature = "extra-children")]
9158        let mut emit_idx: usize = 0;
9159        #[cfg(feature = "extra-children")]
9160        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9161            extra_iter
9162                .next()
9163                .unwrap()
9164                .node
9165                .write_to(writer)
9166                .map_err(SerializeError::from)?;
9167        }
9168        if let Some(ref val) = self.av_lst {
9169            val.write_element("a:avLst", writer)?;
9170        }
9171        #[cfg(feature = "extra-children")]
9172        {
9173            emit_idx += 1;
9174        }
9175        #[cfg(feature = "extra-children")]
9176        for extra in extra_iter {
9177            extra.node.write_to(writer).map_err(SerializeError::from)?;
9178        }
9179        Ok(())
9180    }
9181
9182    fn is_empty_element(&self) -> bool {
9183        if self.av_lst.is_some() {
9184            return false;
9185        }
9186        #[cfg(feature = "extra-children")]
9187        if !self.extra_children.is_empty() {
9188            return false;
9189        }
9190        true
9191    }
9192}
9193
9194impl ToXml for CTCustomGeometry2D {
9195    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
9196        #[cfg(feature = "extra-children")]
9197        let mut extra_iter = self.extra_children.iter().peekable();
9198        #[cfg(feature = "extra-children")]
9199        let mut emit_idx: usize = 0;
9200        #[cfg(feature = "extra-children")]
9201        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9202            extra_iter
9203                .next()
9204                .unwrap()
9205                .node
9206                .write_to(writer)
9207                .map_err(SerializeError::from)?;
9208        }
9209        if let Some(ref val) = self.av_lst {
9210            val.write_element("a:avLst", writer)?;
9211        }
9212        #[cfg(feature = "extra-children")]
9213        {
9214            emit_idx += 1;
9215        }
9216        #[cfg(feature = "extra-children")]
9217        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9218            extra_iter
9219                .next()
9220                .unwrap()
9221                .node
9222                .write_to(writer)
9223                .map_err(SerializeError::from)?;
9224        }
9225        if let Some(ref val) = self.gd_lst {
9226            val.write_element("a:gdLst", writer)?;
9227        }
9228        #[cfg(feature = "extra-children")]
9229        {
9230            emit_idx += 1;
9231        }
9232        #[cfg(feature = "extra-children")]
9233        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9234            extra_iter
9235                .next()
9236                .unwrap()
9237                .node
9238                .write_to(writer)
9239                .map_err(SerializeError::from)?;
9240        }
9241        if let Some(ref val) = self.ah_lst {
9242            val.write_element("a:ahLst", writer)?;
9243        }
9244        #[cfg(feature = "extra-children")]
9245        {
9246            emit_idx += 1;
9247        }
9248        #[cfg(feature = "extra-children")]
9249        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9250            extra_iter
9251                .next()
9252                .unwrap()
9253                .node
9254                .write_to(writer)
9255                .map_err(SerializeError::from)?;
9256        }
9257        if let Some(ref val) = self.cxn_lst {
9258            val.write_element("a:cxnLst", writer)?;
9259        }
9260        #[cfg(feature = "extra-children")]
9261        {
9262            emit_idx += 1;
9263        }
9264        #[cfg(feature = "extra-children")]
9265        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9266            extra_iter
9267                .next()
9268                .unwrap()
9269                .node
9270                .write_to(writer)
9271                .map_err(SerializeError::from)?;
9272        }
9273        if let Some(ref val) = self.rect {
9274            val.write_element("a:rect", writer)?;
9275        }
9276        #[cfg(feature = "extra-children")]
9277        {
9278            emit_idx += 1;
9279        }
9280        #[cfg(feature = "extra-children")]
9281        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9282            extra_iter
9283                .next()
9284                .unwrap()
9285                .node
9286                .write_to(writer)
9287                .map_err(SerializeError::from)?;
9288        }
9289        {
9290            let val = &self.path_lst;
9291            val.write_element("a:pathLst", writer)?;
9292        }
9293        #[cfg(feature = "extra-children")]
9294        {
9295            emit_idx += 1;
9296        }
9297        #[cfg(feature = "extra-children")]
9298        for extra in extra_iter {
9299            extra.node.write_to(writer).map_err(SerializeError::from)?;
9300        }
9301        Ok(())
9302    }
9303
9304    fn is_empty_element(&self) -> bool {
9305        if self.av_lst.is_some() {
9306            return false;
9307        }
9308        if self.gd_lst.is_some() {
9309            return false;
9310        }
9311        if self.ah_lst.is_some() {
9312            return false;
9313        }
9314        if self.cxn_lst.is_some() {
9315            return false;
9316        }
9317        if self.rect.is_some() {
9318            return false;
9319        }
9320        false
9321    }
9322}
9323
9324impl ToXml for EGGeometry {
9325    fn write_element<W: Write>(
9326        &self,
9327        _tag: &str,
9328        writer: &mut Writer<W>,
9329    ) -> Result<(), SerializeError> {
9330        match self {
9331            Self::CustGeom(inner) => inner.write_element("a:custGeom", writer)?,
9332            Self::PrstGeom(inner) => inner.write_element("a:prstGeom", writer)?,
9333        }
9334        Ok(())
9335    }
9336}
9337
9338impl ToXml for EGTextGeometry {
9339    fn write_element<W: Write>(
9340        &self,
9341        _tag: &str,
9342        writer: &mut Writer<W>,
9343    ) -> Result<(), SerializeError> {
9344        match self {
9345            Self::CustGeom(inner) => inner.write_element("a:custGeom", writer)?,
9346            Self::PrstTxWarp(inner) => inner.write_element("a:prstTxWarp", writer)?,
9347        }
9348        Ok(())
9349    }
9350}
9351
9352impl ToXml for CTLineEndProperties {
9353    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9354        #[allow(unused_mut)]
9355        let mut start = start;
9356        #[cfg(feature = "dml-lines")]
9357        if let Some(ref val) = self.r#type {
9358            {
9359                let s = val.to_string();
9360                start.push_attribute(("type", s.as_str()));
9361            }
9362        }
9363        #[cfg(feature = "dml-lines")]
9364        if let Some(ref val) = self.width {
9365            {
9366                let s = val.to_string();
9367                start.push_attribute(("w", s.as_str()));
9368            }
9369        }
9370        #[cfg(feature = "dml-lines")]
9371        if let Some(ref val) = self.len {
9372            {
9373                let s = val.to_string();
9374                start.push_attribute(("len", s.as_str()));
9375            }
9376        }
9377        #[cfg(feature = "extra-attrs")]
9378        for (key, value) in &self.extra_attrs {
9379            start.push_attribute((key.as_str(), value.as_str()));
9380        }
9381        start
9382    }
9383
9384    fn is_empty_element(&self) -> bool {
9385        true
9386    }
9387}
9388
9389impl ToXml for EGLineFillProperties {
9390    fn write_element<W: Write>(
9391        &self,
9392        _tag: &str,
9393        writer: &mut Writer<W>,
9394    ) -> Result<(), SerializeError> {
9395        match self {
9396            Self::NoFill(inner) => inner.write_element("a:noFill", writer)?,
9397            Self::SolidFill(inner) => inner.write_element("a:solidFill", writer)?,
9398            Self::GradFill(inner) => inner.write_element("a:gradFill", writer)?,
9399            Self::PattFill(inner) => inner.write_element("a:pattFill", writer)?,
9400        }
9401        Ok(())
9402    }
9403}
9404
9405impl ToXml for CTLineJoinBevel {
9406    fn is_empty_element(&self) -> bool {
9407        true
9408    }
9409}
9410
9411impl ToXml for CTLineJoinRound {
9412    fn is_empty_element(&self) -> bool {
9413        true
9414    }
9415}
9416
9417impl ToXml for CTLineJoinMiterProperties {
9418    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9419        #[allow(unused_mut)]
9420        let mut start = start;
9421        if let Some(ref val) = self.lim {
9422            {
9423                let s = val.to_string();
9424                start.push_attribute(("lim", s.as_str()));
9425            }
9426        }
9427        #[cfg(feature = "extra-attrs")]
9428        for (key, value) in &self.extra_attrs {
9429            start.push_attribute((key.as_str(), value.as_str()));
9430        }
9431        start
9432    }
9433
9434    fn is_empty_element(&self) -> bool {
9435        true
9436    }
9437}
9438
9439impl ToXml for EGLineJoinProperties {
9440    fn write_element<W: Write>(
9441        &self,
9442        _tag: &str,
9443        writer: &mut Writer<W>,
9444    ) -> Result<(), SerializeError> {
9445        match self {
9446            Self::Round(inner) => inner.write_element("a:round", writer)?,
9447            Self::Bevel(inner) => inner.write_element("a:bevel", writer)?,
9448            Self::Miter(inner) => inner.write_element("a:miter", writer)?,
9449        }
9450        Ok(())
9451    }
9452}
9453
9454impl ToXml for CTPresetLineDashProperties {
9455    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9456        #[allow(unused_mut)]
9457        let mut start = start;
9458        #[cfg(feature = "dml-lines")]
9459        if let Some(ref val) = self.value {
9460            {
9461                let s = val.to_string();
9462                start.push_attribute(("val", s.as_str()));
9463            }
9464        }
9465        #[cfg(feature = "extra-attrs")]
9466        for (key, value) in &self.extra_attrs {
9467            start.push_attribute((key.as_str(), value.as_str()));
9468        }
9469        start
9470    }
9471
9472    fn is_empty_element(&self) -> bool {
9473        true
9474    }
9475}
9476
9477impl ToXml for CTDashStop {
9478    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9479        #[allow(unused_mut)]
9480        let mut start = start;
9481        #[cfg(feature = "dml-lines")]
9482        {
9483            let val = &self.d;
9484            {
9485                let s = val.to_string();
9486                start.push_attribute(("d", s.as_str()));
9487            }
9488        }
9489        #[cfg(feature = "dml-lines")]
9490        {
9491            let val = &self.sp;
9492            {
9493                let s = val.to_string();
9494                start.push_attribute(("sp", s.as_str()));
9495            }
9496        }
9497        #[cfg(feature = "extra-attrs")]
9498        for (key, value) in &self.extra_attrs {
9499            start.push_attribute((key.as_str(), value.as_str()));
9500        }
9501        start
9502    }
9503
9504    fn is_empty_element(&self) -> bool {
9505        true
9506    }
9507}
9508
9509impl ToXml for CTDashStopList {
9510    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
9511        #[cfg(feature = "extra-children")]
9512        let mut extra_iter = self.extra_children.iter().peekable();
9513        #[cfg(feature = "extra-children")]
9514        let mut emit_idx: usize = 0;
9515        for item in &self.ds {
9516            #[cfg(feature = "extra-children")]
9517            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9518                extra_iter
9519                    .next()
9520                    .unwrap()
9521                    .node
9522                    .write_to(writer)
9523                    .map_err(SerializeError::from)?;
9524            }
9525            item.write_element("a:ds", writer)?;
9526            #[cfg(feature = "extra-children")]
9527            {
9528                emit_idx += 1;
9529            }
9530        }
9531        #[cfg(feature = "extra-children")]
9532        for extra in extra_iter {
9533            extra.node.write_to(writer).map_err(SerializeError::from)?;
9534        }
9535        Ok(())
9536    }
9537
9538    fn is_empty_element(&self) -> bool {
9539        if !self.ds.is_empty() {
9540            return false;
9541        }
9542        #[cfg(feature = "extra-children")]
9543        if !self.extra_children.is_empty() {
9544            return false;
9545        }
9546        true
9547    }
9548}
9549
9550impl ToXml for EGLineDashProperties {
9551    fn write_element<W: Write>(
9552        &self,
9553        _tag: &str,
9554        writer: &mut Writer<W>,
9555    ) -> Result<(), SerializeError> {
9556        match self {
9557            Self::PrstDash(inner) => inner.write_element("a:prstDash", writer)?,
9558            Self::CustDash(inner) => inner.write_element("a:custDash", writer)?,
9559        }
9560        Ok(())
9561    }
9562}
9563
9564impl ToXml for LineProperties {
9565    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9566        #[allow(unused_mut)]
9567        let mut start = start;
9568        #[cfg(feature = "dml-lines")]
9569        if let Some(ref val) = self.width {
9570            {
9571                let s = val.to_string();
9572                start.push_attribute(("w", s.as_str()));
9573            }
9574        }
9575        #[cfg(feature = "dml-lines")]
9576        if let Some(ref val) = self.cap {
9577            {
9578                let s = val.to_string();
9579                start.push_attribute(("cap", s.as_str()));
9580            }
9581        }
9582        #[cfg(feature = "dml-lines")]
9583        if let Some(ref val) = self.cmpd {
9584            {
9585                let s = val.to_string();
9586                start.push_attribute(("cmpd", s.as_str()));
9587            }
9588        }
9589        #[cfg(feature = "dml-lines")]
9590        if let Some(ref val) = self.algn {
9591            {
9592                let s = val.to_string();
9593                start.push_attribute(("algn", s.as_str()));
9594            }
9595        }
9596        #[cfg(feature = "extra-attrs")]
9597        for (key, value) in &self.extra_attrs {
9598            start.push_attribute((key.as_str(), value.as_str()));
9599        }
9600        start
9601    }
9602
9603    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
9604        #[cfg(feature = "extra-children")]
9605        let mut extra_iter = self.extra_children.iter().peekable();
9606        #[cfg(feature = "extra-children")]
9607        let mut emit_idx: usize = 0;
9608        #[cfg(feature = "extra-children")]
9609        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9610            extra_iter
9611                .next()
9612                .unwrap()
9613                .node
9614                .write_to(writer)
9615                .map_err(SerializeError::from)?;
9616        }
9617        if let Some(ref val) = self.line_fill_properties {
9618            val.write_element("", writer)?;
9619        }
9620        #[cfg(feature = "extra-children")]
9621        {
9622            emit_idx += 1;
9623        }
9624        #[cfg(feature = "extra-children")]
9625        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9626            extra_iter
9627                .next()
9628                .unwrap()
9629                .node
9630                .write_to(writer)
9631                .map_err(SerializeError::from)?;
9632        }
9633        if let Some(ref val) = self.line_dash_properties {
9634            val.write_element("", writer)?;
9635        }
9636        #[cfg(feature = "extra-children")]
9637        {
9638            emit_idx += 1;
9639        }
9640        #[cfg(feature = "extra-children")]
9641        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9642            extra_iter
9643                .next()
9644                .unwrap()
9645                .node
9646                .write_to(writer)
9647                .map_err(SerializeError::from)?;
9648        }
9649        if let Some(ref val) = self.line_join_properties {
9650            val.write_element("", writer)?;
9651        }
9652        #[cfg(feature = "extra-children")]
9653        {
9654            emit_idx += 1;
9655        }
9656        #[cfg(feature = "extra-children")]
9657        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9658            extra_iter
9659                .next()
9660                .unwrap()
9661                .node
9662                .write_to(writer)
9663                .map_err(SerializeError::from)?;
9664        }
9665        #[cfg(feature = "dml-lines")]
9666        if let Some(ref val) = self.head_end {
9667            val.write_element("a:headEnd", writer)?;
9668        }
9669        #[cfg(feature = "extra-children")]
9670        {
9671            emit_idx += 1;
9672        }
9673        #[cfg(feature = "extra-children")]
9674        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9675            extra_iter
9676                .next()
9677                .unwrap()
9678                .node
9679                .write_to(writer)
9680                .map_err(SerializeError::from)?;
9681        }
9682        #[cfg(feature = "dml-lines")]
9683        if let Some(ref val) = self.tail_end {
9684            val.write_element("a:tailEnd", writer)?;
9685        }
9686        #[cfg(feature = "extra-children")]
9687        {
9688            emit_idx += 1;
9689        }
9690        #[cfg(feature = "extra-children")]
9691        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9692            extra_iter
9693                .next()
9694                .unwrap()
9695                .node
9696                .write_to(writer)
9697                .map_err(SerializeError::from)?;
9698        }
9699        #[cfg(feature = "dml-extensions")]
9700        if let Some(ref val) = self.ext_lst {
9701            val.write_element("a:extLst", writer)?;
9702        }
9703        #[cfg(feature = "extra-children")]
9704        {
9705            emit_idx += 1;
9706        }
9707        #[cfg(feature = "extra-children")]
9708        for extra in extra_iter {
9709            extra.node.write_to(writer).map_err(SerializeError::from)?;
9710        }
9711        Ok(())
9712    }
9713
9714    fn is_empty_element(&self) -> bool {
9715        if self.line_fill_properties.is_some() {
9716            return false;
9717        }
9718        if self.line_dash_properties.is_some() {
9719            return false;
9720        }
9721        if self.line_join_properties.is_some() {
9722            return false;
9723        }
9724        #[cfg(feature = "dml-lines")]
9725        if self.head_end.is_some() {
9726            return false;
9727        }
9728        #[cfg(feature = "dml-lines")]
9729        if self.tail_end.is_some() {
9730            return false;
9731        }
9732        #[cfg(feature = "dml-extensions")]
9733        if self.ext_lst.is_some() {
9734            return false;
9735        }
9736        #[cfg(feature = "extra-children")]
9737        if !self.extra_children.is_empty() {
9738            return false;
9739        }
9740        true
9741    }
9742}
9743
9744impl ToXml for CTShapeProperties {
9745    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9746        #[allow(unused_mut)]
9747        let mut start = start;
9748        #[cfg(feature = "dml-shapes")]
9749        if let Some(ref val) = self.bw_mode {
9750            {
9751                let s = val.to_string();
9752                start.push_attribute(("bwMode", s.as_str()));
9753            }
9754        }
9755        #[cfg(feature = "extra-attrs")]
9756        for (key, value) in &self.extra_attrs {
9757            start.push_attribute((key.as_str(), value.as_str()));
9758        }
9759        start
9760    }
9761
9762    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
9763        #[cfg(feature = "extra-children")]
9764        let mut extra_iter = self.extra_children.iter().peekable();
9765        #[cfg(feature = "extra-children")]
9766        let mut emit_idx: usize = 0;
9767        #[cfg(feature = "extra-children")]
9768        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9769            extra_iter
9770                .next()
9771                .unwrap()
9772                .node
9773                .write_to(writer)
9774                .map_err(SerializeError::from)?;
9775        }
9776        if let Some(ref val) = self.transform {
9777            val.write_element("a:xfrm", writer)?;
9778        }
9779        #[cfg(feature = "extra-children")]
9780        {
9781            emit_idx += 1;
9782        }
9783        #[cfg(feature = "extra-children")]
9784        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9785            extra_iter
9786                .next()
9787                .unwrap()
9788                .node
9789                .write_to(writer)
9790                .map_err(SerializeError::from)?;
9791        }
9792        if let Some(ref val) = self.geometry {
9793            val.write_element("", writer)?;
9794        }
9795        #[cfg(feature = "extra-children")]
9796        {
9797            emit_idx += 1;
9798        }
9799        #[cfg(feature = "extra-children")]
9800        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9801            extra_iter
9802                .next()
9803                .unwrap()
9804                .node
9805                .write_to(writer)
9806                .map_err(SerializeError::from)?;
9807        }
9808        if let Some(ref val) = self.fill_properties {
9809            val.write_element("", writer)?;
9810        }
9811        #[cfg(feature = "extra-children")]
9812        {
9813            emit_idx += 1;
9814        }
9815        #[cfg(feature = "extra-children")]
9816        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9817            extra_iter
9818                .next()
9819                .unwrap()
9820                .node
9821                .write_to(writer)
9822                .map_err(SerializeError::from)?;
9823        }
9824        #[cfg(feature = "dml-lines")]
9825        if let Some(ref val) = self.line {
9826            val.write_element("a:ln", writer)?;
9827        }
9828        #[cfg(feature = "extra-children")]
9829        {
9830            emit_idx += 1;
9831        }
9832        #[cfg(feature = "extra-children")]
9833        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9834            extra_iter
9835                .next()
9836                .unwrap()
9837                .node
9838                .write_to(writer)
9839                .map_err(SerializeError::from)?;
9840        }
9841        if let Some(ref val) = self.effect_properties {
9842            val.write_element("", writer)?;
9843        }
9844        #[cfg(feature = "extra-children")]
9845        {
9846            emit_idx += 1;
9847        }
9848        #[cfg(feature = "extra-children")]
9849        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9850            extra_iter
9851                .next()
9852                .unwrap()
9853                .node
9854                .write_to(writer)
9855                .map_err(SerializeError::from)?;
9856        }
9857        #[cfg(feature = "dml-3d")]
9858        if let Some(ref val) = self.scene3d {
9859            val.write_element("a:scene3d", writer)?;
9860        }
9861        #[cfg(feature = "extra-children")]
9862        {
9863            emit_idx += 1;
9864        }
9865        #[cfg(feature = "extra-children")]
9866        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9867            extra_iter
9868                .next()
9869                .unwrap()
9870                .node
9871                .write_to(writer)
9872                .map_err(SerializeError::from)?;
9873        }
9874        #[cfg(feature = "dml-3d")]
9875        if let Some(ref val) = self.sp3d {
9876            val.write_element("a:sp3d", writer)?;
9877        }
9878        #[cfg(feature = "extra-children")]
9879        {
9880            emit_idx += 1;
9881        }
9882        #[cfg(feature = "extra-children")]
9883        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9884            extra_iter
9885                .next()
9886                .unwrap()
9887                .node
9888                .write_to(writer)
9889                .map_err(SerializeError::from)?;
9890        }
9891        #[cfg(feature = "dml-extensions")]
9892        if let Some(ref val) = self.ext_lst {
9893            val.write_element("a:extLst", writer)?;
9894        }
9895        #[cfg(feature = "extra-children")]
9896        {
9897            emit_idx += 1;
9898        }
9899        #[cfg(feature = "extra-children")]
9900        for extra in extra_iter {
9901            extra.node.write_to(writer).map_err(SerializeError::from)?;
9902        }
9903        Ok(())
9904    }
9905
9906    fn is_empty_element(&self) -> bool {
9907        if self.transform.is_some() {
9908            return false;
9909        }
9910        if self.geometry.is_some() {
9911            return false;
9912        }
9913        if self.fill_properties.is_some() {
9914            return false;
9915        }
9916        #[cfg(feature = "dml-lines")]
9917        if self.line.is_some() {
9918            return false;
9919        }
9920        if self.effect_properties.is_some() {
9921            return false;
9922        }
9923        #[cfg(feature = "dml-3d")]
9924        if self.scene3d.is_some() {
9925            return false;
9926        }
9927        #[cfg(feature = "dml-3d")]
9928        if self.sp3d.is_some() {
9929            return false;
9930        }
9931        #[cfg(feature = "dml-extensions")]
9932        if self.ext_lst.is_some() {
9933            return false;
9934        }
9935        #[cfg(feature = "extra-children")]
9936        if !self.extra_children.is_empty() {
9937            return false;
9938        }
9939        true
9940    }
9941}
9942
9943impl ToXml for CTGroupShapeProperties {
9944    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
9945        #[allow(unused_mut)]
9946        let mut start = start;
9947        #[cfg(feature = "dml-shapes")]
9948        if let Some(ref val) = self.bw_mode {
9949            {
9950                let s = val.to_string();
9951                start.push_attribute(("bwMode", s.as_str()));
9952            }
9953        }
9954        #[cfg(feature = "extra-attrs")]
9955        for (key, value) in &self.extra_attrs {
9956            start.push_attribute((key.as_str(), value.as_str()));
9957        }
9958        start
9959    }
9960
9961    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
9962        #[cfg(feature = "extra-children")]
9963        let mut extra_iter = self.extra_children.iter().peekable();
9964        #[cfg(feature = "extra-children")]
9965        let mut emit_idx: usize = 0;
9966        #[cfg(feature = "extra-children")]
9967        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9968            extra_iter
9969                .next()
9970                .unwrap()
9971                .node
9972                .write_to(writer)
9973                .map_err(SerializeError::from)?;
9974        }
9975        if let Some(ref val) = self.transform {
9976            val.write_element("a:xfrm", writer)?;
9977        }
9978        #[cfg(feature = "extra-children")]
9979        {
9980            emit_idx += 1;
9981        }
9982        #[cfg(feature = "extra-children")]
9983        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
9984            extra_iter
9985                .next()
9986                .unwrap()
9987                .node
9988                .write_to(writer)
9989                .map_err(SerializeError::from)?;
9990        }
9991        if let Some(ref val) = self.fill_properties {
9992            val.write_element("", writer)?;
9993        }
9994        #[cfg(feature = "extra-children")]
9995        {
9996            emit_idx += 1;
9997        }
9998        #[cfg(feature = "extra-children")]
9999        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10000            extra_iter
10001                .next()
10002                .unwrap()
10003                .node
10004                .write_to(writer)
10005                .map_err(SerializeError::from)?;
10006        }
10007        if let Some(ref val) = self.effect_properties {
10008            val.write_element("", writer)?;
10009        }
10010        #[cfg(feature = "extra-children")]
10011        {
10012            emit_idx += 1;
10013        }
10014        #[cfg(feature = "extra-children")]
10015        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10016            extra_iter
10017                .next()
10018                .unwrap()
10019                .node
10020                .write_to(writer)
10021                .map_err(SerializeError::from)?;
10022        }
10023        #[cfg(feature = "dml-3d")]
10024        if let Some(ref val) = self.scene3d {
10025            val.write_element("a:scene3d", writer)?;
10026        }
10027        #[cfg(feature = "extra-children")]
10028        {
10029            emit_idx += 1;
10030        }
10031        #[cfg(feature = "extra-children")]
10032        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10033            extra_iter
10034                .next()
10035                .unwrap()
10036                .node
10037                .write_to(writer)
10038                .map_err(SerializeError::from)?;
10039        }
10040        #[cfg(feature = "dml-extensions")]
10041        if let Some(ref val) = self.ext_lst {
10042            val.write_element("a:extLst", writer)?;
10043        }
10044        #[cfg(feature = "extra-children")]
10045        {
10046            emit_idx += 1;
10047        }
10048        #[cfg(feature = "extra-children")]
10049        for extra in extra_iter {
10050            extra.node.write_to(writer).map_err(SerializeError::from)?;
10051        }
10052        Ok(())
10053    }
10054
10055    fn is_empty_element(&self) -> bool {
10056        if self.transform.is_some() {
10057            return false;
10058        }
10059        if self.fill_properties.is_some() {
10060            return false;
10061        }
10062        if self.effect_properties.is_some() {
10063            return false;
10064        }
10065        #[cfg(feature = "dml-3d")]
10066        if self.scene3d.is_some() {
10067            return false;
10068        }
10069        #[cfg(feature = "dml-extensions")]
10070        if self.ext_lst.is_some() {
10071            return false;
10072        }
10073        #[cfg(feature = "extra-children")]
10074        if !self.extra_children.is_empty() {
10075            return false;
10076        }
10077        true
10078    }
10079}
10080
10081impl ToXml for CTStyleMatrixReference {
10082    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
10083        #[allow(unused_mut)]
10084        let mut start = start;
10085        #[cfg(feature = "dml-themes")]
10086        {
10087            let val = &self.idx;
10088            {
10089                let s = val.to_string();
10090                start.push_attribute(("idx", s.as_str()));
10091            }
10092        }
10093        #[cfg(feature = "extra-attrs")]
10094        for (key, value) in &self.extra_attrs {
10095            start.push_attribute((key.as_str(), value.as_str()));
10096        }
10097        start
10098    }
10099
10100    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
10101        #[cfg(feature = "extra-children")]
10102        let mut extra_iter = self.extra_children.iter().peekable();
10103        #[cfg(feature = "extra-children")]
10104        let mut emit_idx: usize = 0;
10105        #[cfg(feature = "extra-children")]
10106        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10107            extra_iter
10108                .next()
10109                .unwrap()
10110                .node
10111                .write_to(writer)
10112                .map_err(SerializeError::from)?;
10113        }
10114        if let Some(ref val) = self.color_choice {
10115            val.write_element("", writer)?;
10116        }
10117        #[cfg(feature = "extra-children")]
10118        {
10119            emit_idx += 1;
10120        }
10121        #[cfg(feature = "extra-children")]
10122        for extra in extra_iter {
10123            extra.node.write_to(writer).map_err(SerializeError::from)?;
10124        }
10125        Ok(())
10126    }
10127
10128    fn is_empty_element(&self) -> bool {
10129        if self.color_choice.is_some() {
10130            return false;
10131        }
10132        #[cfg(feature = "extra-children")]
10133        if !self.extra_children.is_empty() {
10134            return false;
10135        }
10136        true
10137    }
10138}
10139
10140impl ToXml for CTFontReference {
10141    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
10142        #[allow(unused_mut)]
10143        let mut start = start;
10144        #[cfg(feature = "dml-themes")]
10145        {
10146            let val = &self.idx;
10147            {
10148                let s = val.to_string();
10149                start.push_attribute(("idx", s.as_str()));
10150            }
10151        }
10152        #[cfg(feature = "extra-attrs")]
10153        for (key, value) in &self.extra_attrs {
10154            start.push_attribute((key.as_str(), value.as_str()));
10155        }
10156        start
10157    }
10158
10159    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
10160        #[cfg(feature = "extra-children")]
10161        let mut extra_iter = self.extra_children.iter().peekable();
10162        #[cfg(feature = "extra-children")]
10163        let mut emit_idx: usize = 0;
10164        #[cfg(feature = "extra-children")]
10165        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10166            extra_iter
10167                .next()
10168                .unwrap()
10169                .node
10170                .write_to(writer)
10171                .map_err(SerializeError::from)?;
10172        }
10173        if let Some(ref val) = self.color_choice {
10174            val.write_element("", writer)?;
10175        }
10176        #[cfg(feature = "extra-children")]
10177        {
10178            emit_idx += 1;
10179        }
10180        #[cfg(feature = "extra-children")]
10181        for extra in extra_iter {
10182            extra.node.write_to(writer).map_err(SerializeError::from)?;
10183        }
10184        Ok(())
10185    }
10186
10187    fn is_empty_element(&self) -> bool {
10188        if self.color_choice.is_some() {
10189            return false;
10190        }
10191        #[cfg(feature = "extra-children")]
10192        if !self.extra_children.is_empty() {
10193            return false;
10194        }
10195        true
10196    }
10197}
10198
10199impl ToXml for ShapeStyle {
10200    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
10201        #[cfg(feature = "extra-children")]
10202        let mut extra_iter = self.extra_children.iter().peekable();
10203        #[cfg(feature = "extra-children")]
10204        let mut emit_idx: usize = 0;
10205        #[cfg(feature = "extra-children")]
10206        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10207            extra_iter
10208                .next()
10209                .unwrap()
10210                .node
10211                .write_to(writer)
10212                .map_err(SerializeError::from)?;
10213        }
10214        #[cfg(feature = "dml-shapes")]
10215        {
10216            let val = &self.ln_ref;
10217            val.write_element("a:lnRef", writer)?;
10218        }
10219        #[cfg(feature = "extra-children")]
10220        {
10221            emit_idx += 1;
10222        }
10223        #[cfg(feature = "extra-children")]
10224        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10225            extra_iter
10226                .next()
10227                .unwrap()
10228                .node
10229                .write_to(writer)
10230                .map_err(SerializeError::from)?;
10231        }
10232        #[cfg(feature = "dml-shapes")]
10233        {
10234            let val = &self.fill_ref;
10235            val.write_element("a:fillRef", writer)?;
10236        }
10237        #[cfg(feature = "extra-children")]
10238        {
10239            emit_idx += 1;
10240        }
10241        #[cfg(feature = "extra-children")]
10242        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10243            extra_iter
10244                .next()
10245                .unwrap()
10246                .node
10247                .write_to(writer)
10248                .map_err(SerializeError::from)?;
10249        }
10250        #[cfg(feature = "dml-shapes")]
10251        {
10252            let val = &self.effect_ref;
10253            val.write_element("a:effectRef", writer)?;
10254        }
10255        #[cfg(feature = "extra-children")]
10256        {
10257            emit_idx += 1;
10258        }
10259        #[cfg(feature = "extra-children")]
10260        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10261            extra_iter
10262                .next()
10263                .unwrap()
10264                .node
10265                .write_to(writer)
10266                .map_err(SerializeError::from)?;
10267        }
10268        #[cfg(feature = "dml-shapes")]
10269        {
10270            let val = &self.font_ref;
10271            val.write_element("a:fontRef", writer)?;
10272        }
10273        #[cfg(feature = "extra-children")]
10274        {
10275            emit_idx += 1;
10276        }
10277        #[cfg(feature = "extra-children")]
10278        for extra in extra_iter {
10279            extra.node.write_to(writer).map_err(SerializeError::from)?;
10280        }
10281        Ok(())
10282    }
10283
10284    fn is_empty_element(&self) -> bool {
10285        #[cfg(feature = "dml-shapes")]
10286        return false;
10287        #[cfg(feature = "dml-shapes")]
10288        return false;
10289        #[cfg(feature = "dml-shapes")]
10290        return false;
10291        #[cfg(feature = "dml-shapes")]
10292        return false;
10293        #[cfg(feature = "extra-children")]
10294        if !self.extra_children.is_empty() {
10295            return false;
10296        }
10297        true
10298    }
10299}
10300
10301impl ToXml for CTDefaultShapeDefinition {
10302    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
10303        #[cfg(feature = "extra-children")]
10304        let mut extra_iter = self.extra_children.iter().peekable();
10305        #[cfg(feature = "extra-children")]
10306        let mut emit_idx: usize = 0;
10307        #[cfg(feature = "extra-children")]
10308        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10309            extra_iter
10310                .next()
10311                .unwrap()
10312                .node
10313                .write_to(writer)
10314                .map_err(SerializeError::from)?;
10315        }
10316        {
10317            let val = &self.sp_pr;
10318            val.write_element("a:spPr", writer)?;
10319        }
10320        #[cfg(feature = "extra-children")]
10321        {
10322            emit_idx += 1;
10323        }
10324        #[cfg(feature = "extra-children")]
10325        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10326            extra_iter
10327                .next()
10328                .unwrap()
10329                .node
10330                .write_to(writer)
10331                .map_err(SerializeError::from)?;
10332        }
10333        {
10334            let val = &self.body_pr;
10335            val.write_element("a:bodyPr", writer)?;
10336        }
10337        #[cfg(feature = "extra-children")]
10338        {
10339            emit_idx += 1;
10340        }
10341        #[cfg(feature = "extra-children")]
10342        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10343            extra_iter
10344                .next()
10345                .unwrap()
10346                .node
10347                .write_to(writer)
10348                .map_err(SerializeError::from)?;
10349        }
10350        {
10351            let val = &self.lst_style;
10352            val.write_element("a:lstStyle", writer)?;
10353        }
10354        #[cfg(feature = "extra-children")]
10355        {
10356            emit_idx += 1;
10357        }
10358        #[cfg(feature = "extra-children")]
10359        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10360            extra_iter
10361                .next()
10362                .unwrap()
10363                .node
10364                .write_to(writer)
10365                .map_err(SerializeError::from)?;
10366        }
10367        if let Some(ref val) = self.style {
10368            val.write_element("a:style", writer)?;
10369        }
10370        #[cfg(feature = "extra-children")]
10371        {
10372            emit_idx += 1;
10373        }
10374        #[cfg(feature = "extra-children")]
10375        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10376            extra_iter
10377                .next()
10378                .unwrap()
10379                .node
10380                .write_to(writer)
10381                .map_err(SerializeError::from)?;
10382        }
10383        if let Some(ref val) = self.ext_lst {
10384            val.write_element("a:extLst", writer)?;
10385        }
10386        #[cfg(feature = "extra-children")]
10387        {
10388            emit_idx += 1;
10389        }
10390        #[cfg(feature = "extra-children")]
10391        for extra in extra_iter {
10392            extra.node.write_to(writer).map_err(SerializeError::from)?;
10393        }
10394        Ok(())
10395    }
10396
10397    fn is_empty_element(&self) -> bool {
10398        false
10399    }
10400}
10401
10402impl ToXml for CTObjectStyleDefaults {
10403    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
10404        #[cfg(feature = "extra-children")]
10405        let mut extra_iter = self.extra_children.iter().peekable();
10406        #[cfg(feature = "extra-children")]
10407        let mut emit_idx: usize = 0;
10408        #[cfg(feature = "extra-children")]
10409        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10410            extra_iter
10411                .next()
10412                .unwrap()
10413                .node
10414                .write_to(writer)
10415                .map_err(SerializeError::from)?;
10416        }
10417        if let Some(ref val) = self.sp_def {
10418            val.write_element("a:spDef", writer)?;
10419        }
10420        #[cfg(feature = "extra-children")]
10421        {
10422            emit_idx += 1;
10423        }
10424        #[cfg(feature = "extra-children")]
10425        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10426            extra_iter
10427                .next()
10428                .unwrap()
10429                .node
10430                .write_to(writer)
10431                .map_err(SerializeError::from)?;
10432        }
10433        if let Some(ref val) = self.ln_def {
10434            val.write_element("a:lnDef", writer)?;
10435        }
10436        #[cfg(feature = "extra-children")]
10437        {
10438            emit_idx += 1;
10439        }
10440        #[cfg(feature = "extra-children")]
10441        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10442            extra_iter
10443                .next()
10444                .unwrap()
10445                .node
10446                .write_to(writer)
10447                .map_err(SerializeError::from)?;
10448        }
10449        if let Some(ref val) = self.tx_def {
10450            val.write_element("a:txDef", writer)?;
10451        }
10452        #[cfg(feature = "extra-children")]
10453        {
10454            emit_idx += 1;
10455        }
10456        #[cfg(feature = "extra-children")]
10457        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10458            extra_iter
10459                .next()
10460                .unwrap()
10461                .node
10462                .write_to(writer)
10463                .map_err(SerializeError::from)?;
10464        }
10465        if let Some(ref val) = self.ext_lst {
10466            val.write_element("a:extLst", writer)?;
10467        }
10468        #[cfg(feature = "extra-children")]
10469        {
10470            emit_idx += 1;
10471        }
10472        #[cfg(feature = "extra-children")]
10473        for extra in extra_iter {
10474            extra.node.write_to(writer).map_err(SerializeError::from)?;
10475        }
10476        Ok(())
10477    }
10478
10479    fn is_empty_element(&self) -> bool {
10480        if self.sp_def.is_some() {
10481            return false;
10482        }
10483        if self.ln_def.is_some() {
10484            return false;
10485        }
10486        if self.tx_def.is_some() {
10487            return false;
10488        }
10489        if self.ext_lst.is_some() {
10490            return false;
10491        }
10492        #[cfg(feature = "extra-children")]
10493        if !self.extra_children.is_empty() {
10494            return false;
10495        }
10496        true
10497    }
10498}
10499
10500impl ToXml for CTEmptyElement {
10501    fn is_empty_element(&self) -> bool {
10502        true
10503    }
10504}
10505
10506impl ToXml for CTColorMapping {
10507    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
10508        #[allow(unused_mut)]
10509        let mut start = start;
10510        {
10511            let val = &self.bg1;
10512            {
10513                let s = val.to_string();
10514                start.push_attribute(("bg1", s.as_str()));
10515            }
10516        }
10517        {
10518            let val = &self.tx1;
10519            {
10520                let s = val.to_string();
10521                start.push_attribute(("tx1", s.as_str()));
10522            }
10523        }
10524        {
10525            let val = &self.bg2;
10526            {
10527                let s = val.to_string();
10528                start.push_attribute(("bg2", s.as_str()));
10529            }
10530        }
10531        {
10532            let val = &self.tx2;
10533            {
10534                let s = val.to_string();
10535                start.push_attribute(("tx2", s.as_str()));
10536            }
10537        }
10538        {
10539            let val = &self.accent1;
10540            {
10541                let s = val.to_string();
10542                start.push_attribute(("accent1", s.as_str()));
10543            }
10544        }
10545        {
10546            let val = &self.accent2;
10547            {
10548                let s = val.to_string();
10549                start.push_attribute(("accent2", s.as_str()));
10550            }
10551        }
10552        {
10553            let val = &self.accent3;
10554            {
10555                let s = val.to_string();
10556                start.push_attribute(("accent3", s.as_str()));
10557            }
10558        }
10559        {
10560            let val = &self.accent4;
10561            {
10562                let s = val.to_string();
10563                start.push_attribute(("accent4", s.as_str()));
10564            }
10565        }
10566        {
10567            let val = &self.accent5;
10568            {
10569                let s = val.to_string();
10570                start.push_attribute(("accent5", s.as_str()));
10571            }
10572        }
10573        {
10574            let val = &self.accent6;
10575            {
10576                let s = val.to_string();
10577                start.push_attribute(("accent6", s.as_str()));
10578            }
10579        }
10580        {
10581            let val = &self.hlink;
10582            {
10583                let s = val.to_string();
10584                start.push_attribute(("hlink", s.as_str()));
10585            }
10586        }
10587        {
10588            let val = &self.fol_hlink;
10589            {
10590                let s = val.to_string();
10591                start.push_attribute(("folHlink", s.as_str()));
10592            }
10593        }
10594        #[cfg(feature = "extra-attrs")]
10595        for (key, value) in &self.extra_attrs {
10596            start.push_attribute((key.as_str(), value.as_str()));
10597        }
10598        start
10599    }
10600
10601    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
10602        #[cfg(feature = "extra-children")]
10603        let mut extra_iter = self.extra_children.iter().peekable();
10604        #[cfg(feature = "extra-children")]
10605        let mut emit_idx: usize = 0;
10606        #[cfg(feature = "extra-children")]
10607        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10608            extra_iter
10609                .next()
10610                .unwrap()
10611                .node
10612                .write_to(writer)
10613                .map_err(SerializeError::from)?;
10614        }
10615        if let Some(ref val) = self.ext_lst {
10616            val.write_element("a:extLst", writer)?;
10617        }
10618        #[cfg(feature = "extra-children")]
10619        {
10620            emit_idx += 1;
10621        }
10622        #[cfg(feature = "extra-children")]
10623        for extra in extra_iter {
10624            extra.node.write_to(writer).map_err(SerializeError::from)?;
10625        }
10626        Ok(())
10627    }
10628
10629    fn is_empty_element(&self) -> bool {
10630        if self.ext_lst.is_some() {
10631            return false;
10632        }
10633        #[cfg(feature = "extra-children")]
10634        if !self.extra_children.is_empty() {
10635            return false;
10636        }
10637        true
10638    }
10639}
10640
10641impl ToXml for CTColorMappingOverride {
10642    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
10643        #[cfg(feature = "extra-children")]
10644        let mut extra_iter = self.extra_children.iter().peekable();
10645        #[cfg(feature = "extra-children")]
10646        let mut emit_idx: usize = 0;
10647        #[cfg(feature = "extra-children")]
10648        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10649            extra_iter
10650                .next()
10651                .unwrap()
10652                .node
10653                .write_to(writer)
10654                .map_err(SerializeError::from)?;
10655        }
10656        #[cfg(feature = "dml-colors")]
10657        if let Some(ref val) = self.master_clr_mapping {
10658            val.write_element("a:masterClrMapping", writer)?;
10659        }
10660        #[cfg(feature = "extra-children")]
10661        {
10662            emit_idx += 1;
10663        }
10664        #[cfg(feature = "extra-children")]
10665        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10666            extra_iter
10667                .next()
10668                .unwrap()
10669                .node
10670                .write_to(writer)
10671                .map_err(SerializeError::from)?;
10672        }
10673        #[cfg(feature = "dml-colors")]
10674        if let Some(ref val) = self.override_clr_mapping {
10675            val.write_element("a:overrideClrMapping", writer)?;
10676        }
10677        #[cfg(feature = "extra-children")]
10678        {
10679            emit_idx += 1;
10680        }
10681        #[cfg(feature = "extra-children")]
10682        for extra in extra_iter {
10683            extra.node.write_to(writer).map_err(SerializeError::from)?;
10684        }
10685        Ok(())
10686    }
10687
10688    fn is_empty_element(&self) -> bool {
10689        #[cfg(feature = "dml-colors")]
10690        if self.master_clr_mapping.is_some() {
10691            return false;
10692        }
10693        #[cfg(feature = "dml-colors")]
10694        if self.override_clr_mapping.is_some() {
10695            return false;
10696        }
10697        #[cfg(feature = "extra-children")]
10698        if !self.extra_children.is_empty() {
10699            return false;
10700        }
10701        true
10702    }
10703}
10704
10705impl ToXml for CTColorSchemeAndMapping {
10706    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
10707        #[cfg(feature = "extra-children")]
10708        let mut extra_iter = self.extra_children.iter().peekable();
10709        #[cfg(feature = "extra-children")]
10710        let mut emit_idx: usize = 0;
10711        #[cfg(feature = "extra-children")]
10712        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10713            extra_iter
10714                .next()
10715                .unwrap()
10716                .node
10717                .write_to(writer)
10718                .map_err(SerializeError::from)?;
10719        }
10720        {
10721            let val = &self.clr_scheme;
10722            val.write_element("a:clrScheme", writer)?;
10723        }
10724        #[cfg(feature = "extra-children")]
10725        {
10726            emit_idx += 1;
10727        }
10728        #[cfg(feature = "extra-children")]
10729        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10730            extra_iter
10731                .next()
10732                .unwrap()
10733                .node
10734                .write_to(writer)
10735                .map_err(SerializeError::from)?;
10736        }
10737        if let Some(ref val) = self.clr_map {
10738            val.write_element("a:clrMap", writer)?;
10739        }
10740        #[cfg(feature = "extra-children")]
10741        {
10742            emit_idx += 1;
10743        }
10744        #[cfg(feature = "extra-children")]
10745        for extra in extra_iter {
10746            extra.node.write_to(writer).map_err(SerializeError::from)?;
10747        }
10748        Ok(())
10749    }
10750
10751    fn is_empty_element(&self) -> bool {
10752        false
10753    }
10754}
10755
10756impl ToXml for CTColorSchemeList {
10757    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
10758        #[cfg(feature = "extra-children")]
10759        let mut extra_iter = self.extra_children.iter().peekable();
10760        #[cfg(feature = "extra-children")]
10761        let mut emit_idx: usize = 0;
10762        for item in &self.extra_clr_scheme {
10763            #[cfg(feature = "extra-children")]
10764            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10765                extra_iter
10766                    .next()
10767                    .unwrap()
10768                    .node
10769                    .write_to(writer)
10770                    .map_err(SerializeError::from)?;
10771            }
10772            item.write_element("a:extraClrScheme", writer)?;
10773            #[cfg(feature = "extra-children")]
10774            {
10775                emit_idx += 1;
10776            }
10777        }
10778        #[cfg(feature = "extra-children")]
10779        for extra in extra_iter {
10780            extra.node.write_to(writer).map_err(SerializeError::from)?;
10781        }
10782        Ok(())
10783    }
10784
10785    fn is_empty_element(&self) -> bool {
10786        if !self.extra_clr_scheme.is_empty() {
10787            return false;
10788        }
10789        #[cfg(feature = "extra-children")]
10790        if !self.extra_children.is_empty() {
10791            return false;
10792        }
10793        true
10794    }
10795}
10796
10797impl ToXml for CTOfficeStyleSheet {
10798    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
10799        #[allow(unused_mut)]
10800        let mut start = start;
10801        #[cfg(feature = "dml-themes")]
10802        if let Some(ref val) = self.name {
10803            start.push_attribute(("name", val.as_str()));
10804        }
10805        #[cfg(feature = "extra-attrs")]
10806        for (key, value) in &self.extra_attrs {
10807            start.push_attribute((key.as_str(), value.as_str()));
10808        }
10809        start
10810    }
10811
10812    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
10813        #[cfg(feature = "extra-children")]
10814        let mut extra_iter = self.extra_children.iter().peekable();
10815        #[cfg(feature = "extra-children")]
10816        let mut emit_idx: usize = 0;
10817        #[cfg(feature = "extra-children")]
10818        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10819            extra_iter
10820                .next()
10821                .unwrap()
10822                .node
10823                .write_to(writer)
10824                .map_err(SerializeError::from)?;
10825        }
10826        #[cfg(feature = "dml-themes")]
10827        {
10828            let val = &self.theme_elements;
10829            val.write_element("a:themeElements", writer)?;
10830        }
10831        #[cfg(feature = "extra-children")]
10832        {
10833            emit_idx += 1;
10834        }
10835        #[cfg(feature = "extra-children")]
10836        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10837            extra_iter
10838                .next()
10839                .unwrap()
10840                .node
10841                .write_to(writer)
10842                .map_err(SerializeError::from)?;
10843        }
10844        #[cfg(feature = "dml-themes")]
10845        if let Some(ref val) = self.object_defaults {
10846            val.write_element("a:objectDefaults", writer)?;
10847        }
10848        #[cfg(feature = "extra-children")]
10849        {
10850            emit_idx += 1;
10851        }
10852        #[cfg(feature = "extra-children")]
10853        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10854            extra_iter
10855                .next()
10856                .unwrap()
10857                .node
10858                .write_to(writer)
10859                .map_err(SerializeError::from)?;
10860        }
10861        #[cfg(feature = "dml-themes")]
10862        if let Some(ref val) = self.extra_clr_scheme_lst {
10863            val.write_element("a:extraClrSchemeLst", writer)?;
10864        }
10865        #[cfg(feature = "extra-children")]
10866        {
10867            emit_idx += 1;
10868        }
10869        #[cfg(feature = "extra-children")]
10870        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10871            extra_iter
10872                .next()
10873                .unwrap()
10874                .node
10875                .write_to(writer)
10876                .map_err(SerializeError::from)?;
10877        }
10878        #[cfg(feature = "dml-themes")]
10879        if let Some(ref val) = self.cust_clr_lst {
10880            val.write_element("a:custClrLst", writer)?;
10881        }
10882        #[cfg(feature = "extra-children")]
10883        {
10884            emit_idx += 1;
10885        }
10886        #[cfg(feature = "extra-children")]
10887        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10888            extra_iter
10889                .next()
10890                .unwrap()
10891                .node
10892                .write_to(writer)
10893                .map_err(SerializeError::from)?;
10894        }
10895        #[cfg(feature = "dml-extensions")]
10896        if let Some(ref val) = self.ext_lst {
10897            val.write_element("a:extLst", writer)?;
10898        }
10899        #[cfg(feature = "extra-children")]
10900        {
10901            emit_idx += 1;
10902        }
10903        #[cfg(feature = "extra-children")]
10904        for extra in extra_iter {
10905            extra.node.write_to(writer).map_err(SerializeError::from)?;
10906        }
10907        Ok(())
10908    }
10909
10910    fn is_empty_element(&self) -> bool {
10911        #[cfg(feature = "dml-themes")]
10912        return false;
10913        #[cfg(feature = "dml-themes")]
10914        if self.object_defaults.is_some() {
10915            return false;
10916        }
10917        #[cfg(feature = "dml-themes")]
10918        if self.extra_clr_scheme_lst.is_some() {
10919            return false;
10920        }
10921        #[cfg(feature = "dml-themes")]
10922        if self.cust_clr_lst.is_some() {
10923            return false;
10924        }
10925        #[cfg(feature = "dml-extensions")]
10926        if self.ext_lst.is_some() {
10927            return false;
10928        }
10929        #[cfg(feature = "extra-children")]
10930        if !self.extra_children.is_empty() {
10931            return false;
10932        }
10933        true
10934    }
10935}
10936
10937impl ToXml for CTBaseStylesOverride {
10938    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
10939        #[cfg(feature = "extra-children")]
10940        let mut extra_iter = self.extra_children.iter().peekable();
10941        #[cfg(feature = "extra-children")]
10942        let mut emit_idx: usize = 0;
10943        #[cfg(feature = "extra-children")]
10944        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10945            extra_iter
10946                .next()
10947                .unwrap()
10948                .node
10949                .write_to(writer)
10950                .map_err(SerializeError::from)?;
10951        }
10952        if let Some(ref val) = self.clr_scheme {
10953            val.write_element("a:clrScheme", writer)?;
10954        }
10955        #[cfg(feature = "extra-children")]
10956        {
10957            emit_idx += 1;
10958        }
10959        #[cfg(feature = "extra-children")]
10960        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10961            extra_iter
10962                .next()
10963                .unwrap()
10964                .node
10965                .write_to(writer)
10966                .map_err(SerializeError::from)?;
10967        }
10968        if let Some(ref val) = self.font_scheme {
10969            val.write_element("a:fontScheme", writer)?;
10970        }
10971        #[cfg(feature = "extra-children")]
10972        {
10973            emit_idx += 1;
10974        }
10975        #[cfg(feature = "extra-children")]
10976        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
10977            extra_iter
10978                .next()
10979                .unwrap()
10980                .node
10981                .write_to(writer)
10982                .map_err(SerializeError::from)?;
10983        }
10984        if let Some(ref val) = self.fmt_scheme {
10985            val.write_element("a:fmtScheme", writer)?;
10986        }
10987        #[cfg(feature = "extra-children")]
10988        {
10989            emit_idx += 1;
10990        }
10991        #[cfg(feature = "extra-children")]
10992        for extra in extra_iter {
10993            extra.node.write_to(writer).map_err(SerializeError::from)?;
10994        }
10995        Ok(())
10996    }
10997
10998    fn is_empty_element(&self) -> bool {
10999        if self.clr_scheme.is_some() {
11000            return false;
11001        }
11002        if self.font_scheme.is_some() {
11003            return false;
11004        }
11005        if self.fmt_scheme.is_some() {
11006            return false;
11007        }
11008        #[cfg(feature = "extra-children")]
11009        if !self.extra_children.is_empty() {
11010            return false;
11011        }
11012        true
11013    }
11014}
11015
11016impl ToXml for CTClipboardStyleSheet {
11017    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
11018        #[cfg(feature = "extra-children")]
11019        let mut extra_iter = self.extra_children.iter().peekable();
11020        #[cfg(feature = "extra-children")]
11021        let mut emit_idx: usize = 0;
11022        #[cfg(feature = "extra-children")]
11023        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11024            extra_iter
11025                .next()
11026                .unwrap()
11027                .node
11028                .write_to(writer)
11029                .map_err(SerializeError::from)?;
11030        }
11031        {
11032            let val = &self.theme_elements;
11033            val.write_element("a:themeElements", writer)?;
11034        }
11035        #[cfg(feature = "extra-children")]
11036        {
11037            emit_idx += 1;
11038        }
11039        #[cfg(feature = "extra-children")]
11040        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11041            extra_iter
11042                .next()
11043                .unwrap()
11044                .node
11045                .write_to(writer)
11046                .map_err(SerializeError::from)?;
11047        }
11048        {
11049            let val = &self.clr_map;
11050            val.write_element("a:clrMap", writer)?;
11051        }
11052        #[cfg(feature = "extra-children")]
11053        {
11054            emit_idx += 1;
11055        }
11056        #[cfg(feature = "extra-children")]
11057        for extra in extra_iter {
11058            extra.node.write_to(writer).map_err(SerializeError::from)?;
11059        }
11060        Ok(())
11061    }
11062
11063    fn is_empty_element(&self) -> bool {
11064        false
11065    }
11066}
11067
11068impl ToXml for CTTableCellProperties {
11069    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
11070        #[allow(unused_mut)]
11071        let mut start = start;
11072        #[cfg(feature = "dml-tables")]
11073        if let Some(ref val) = self.mar_l {
11074            {
11075                let s = val.to_string();
11076                start.push_attribute(("marL", s.as_str()));
11077            }
11078        }
11079        #[cfg(feature = "dml-tables")]
11080        if let Some(ref val) = self.mar_r {
11081            {
11082                let s = val.to_string();
11083                start.push_attribute(("marR", s.as_str()));
11084            }
11085        }
11086        #[cfg(feature = "dml-tables")]
11087        if let Some(ref val) = self.mar_t {
11088            {
11089                let s = val.to_string();
11090                start.push_attribute(("marT", s.as_str()));
11091            }
11092        }
11093        #[cfg(feature = "dml-tables")]
11094        if let Some(ref val) = self.mar_b {
11095            {
11096                let s = val.to_string();
11097                start.push_attribute(("marB", s.as_str()));
11098            }
11099        }
11100        #[cfg(feature = "dml-tables")]
11101        if let Some(ref val) = self.vert {
11102            {
11103                let s = val.to_string();
11104                start.push_attribute(("vert", s.as_str()));
11105            }
11106        }
11107        #[cfg(feature = "dml-tables")]
11108        if let Some(ref val) = self.anchor {
11109            {
11110                let s = val.to_string();
11111                start.push_attribute(("anchor", s.as_str()));
11112            }
11113        }
11114        #[cfg(feature = "dml-tables")]
11115        if let Some(ref val) = self.anchor_ctr {
11116            start.push_attribute(("anchorCtr", if *val { "1" } else { "0" }));
11117        }
11118        #[cfg(feature = "dml-tables")]
11119        if let Some(ref val) = self.horz_overflow {
11120            {
11121                let s = val.to_string();
11122                start.push_attribute(("horzOverflow", s.as_str()));
11123            }
11124        }
11125        #[cfg(feature = "extra-attrs")]
11126        for (key, value) in &self.extra_attrs {
11127            start.push_attribute((key.as_str(), value.as_str()));
11128        }
11129        start
11130    }
11131
11132    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
11133        #[cfg(feature = "extra-children")]
11134        let mut extra_iter = self.extra_children.iter().peekable();
11135        #[cfg(feature = "extra-children")]
11136        let mut emit_idx: usize = 0;
11137        #[cfg(feature = "extra-children")]
11138        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11139            extra_iter
11140                .next()
11141                .unwrap()
11142                .node
11143                .write_to(writer)
11144                .map_err(SerializeError::from)?;
11145        }
11146        #[cfg(feature = "dml-tables")]
11147        if let Some(ref val) = self.ln_l {
11148            val.write_element("a:lnL", writer)?;
11149        }
11150        #[cfg(feature = "extra-children")]
11151        {
11152            emit_idx += 1;
11153        }
11154        #[cfg(feature = "extra-children")]
11155        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11156            extra_iter
11157                .next()
11158                .unwrap()
11159                .node
11160                .write_to(writer)
11161                .map_err(SerializeError::from)?;
11162        }
11163        #[cfg(feature = "dml-tables")]
11164        if let Some(ref val) = self.ln_r {
11165            val.write_element("a:lnR", writer)?;
11166        }
11167        #[cfg(feature = "extra-children")]
11168        {
11169            emit_idx += 1;
11170        }
11171        #[cfg(feature = "extra-children")]
11172        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11173            extra_iter
11174                .next()
11175                .unwrap()
11176                .node
11177                .write_to(writer)
11178                .map_err(SerializeError::from)?;
11179        }
11180        #[cfg(feature = "dml-tables")]
11181        if let Some(ref val) = self.ln_t {
11182            val.write_element("a:lnT", writer)?;
11183        }
11184        #[cfg(feature = "extra-children")]
11185        {
11186            emit_idx += 1;
11187        }
11188        #[cfg(feature = "extra-children")]
11189        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11190            extra_iter
11191                .next()
11192                .unwrap()
11193                .node
11194                .write_to(writer)
11195                .map_err(SerializeError::from)?;
11196        }
11197        #[cfg(feature = "dml-tables")]
11198        if let Some(ref val) = self.ln_b {
11199            val.write_element("a:lnB", writer)?;
11200        }
11201        #[cfg(feature = "extra-children")]
11202        {
11203            emit_idx += 1;
11204        }
11205        #[cfg(feature = "extra-children")]
11206        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11207            extra_iter
11208                .next()
11209                .unwrap()
11210                .node
11211                .write_to(writer)
11212                .map_err(SerializeError::from)?;
11213        }
11214        #[cfg(feature = "dml-tables")]
11215        if let Some(ref val) = self.ln_tl_to_br {
11216            val.write_element("a:lnTlToBr", writer)?;
11217        }
11218        #[cfg(feature = "extra-children")]
11219        {
11220            emit_idx += 1;
11221        }
11222        #[cfg(feature = "extra-children")]
11223        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11224            extra_iter
11225                .next()
11226                .unwrap()
11227                .node
11228                .write_to(writer)
11229                .map_err(SerializeError::from)?;
11230        }
11231        #[cfg(feature = "dml-tables")]
11232        if let Some(ref val) = self.ln_bl_to_tr {
11233            val.write_element("a:lnBlToTr", writer)?;
11234        }
11235        #[cfg(feature = "extra-children")]
11236        {
11237            emit_idx += 1;
11238        }
11239        #[cfg(feature = "extra-children")]
11240        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11241            extra_iter
11242                .next()
11243                .unwrap()
11244                .node
11245                .write_to(writer)
11246                .map_err(SerializeError::from)?;
11247        }
11248        #[cfg(feature = "dml-tables")]
11249        if let Some(ref val) = self.cell3_d {
11250            val.write_element("a:cell3D", writer)?;
11251        }
11252        #[cfg(feature = "extra-children")]
11253        {
11254            emit_idx += 1;
11255        }
11256        #[cfg(feature = "extra-children")]
11257        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11258            extra_iter
11259                .next()
11260                .unwrap()
11261                .node
11262                .write_to(writer)
11263                .map_err(SerializeError::from)?;
11264        }
11265        if let Some(ref val) = self.fill_properties {
11266            val.write_element("", writer)?;
11267        }
11268        #[cfg(feature = "extra-children")]
11269        {
11270            emit_idx += 1;
11271        }
11272        #[cfg(feature = "extra-children")]
11273        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11274            extra_iter
11275                .next()
11276                .unwrap()
11277                .node
11278                .write_to(writer)
11279                .map_err(SerializeError::from)?;
11280        }
11281        if let Some(ref val) = self.headers {
11282            val.write_element("a:headers", writer)?;
11283        }
11284        #[cfg(feature = "extra-children")]
11285        {
11286            emit_idx += 1;
11287        }
11288        #[cfg(feature = "extra-children")]
11289        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11290            extra_iter
11291                .next()
11292                .unwrap()
11293                .node
11294                .write_to(writer)
11295                .map_err(SerializeError::from)?;
11296        }
11297        #[cfg(feature = "dml-extensions")]
11298        if let Some(ref val) = self.ext_lst {
11299            val.write_element("a:extLst", writer)?;
11300        }
11301        #[cfg(feature = "extra-children")]
11302        {
11303            emit_idx += 1;
11304        }
11305        #[cfg(feature = "extra-children")]
11306        for extra in extra_iter {
11307            extra.node.write_to(writer).map_err(SerializeError::from)?;
11308        }
11309        Ok(())
11310    }
11311
11312    fn is_empty_element(&self) -> bool {
11313        #[cfg(feature = "dml-tables")]
11314        if self.ln_l.is_some() {
11315            return false;
11316        }
11317        #[cfg(feature = "dml-tables")]
11318        if self.ln_r.is_some() {
11319            return false;
11320        }
11321        #[cfg(feature = "dml-tables")]
11322        if self.ln_t.is_some() {
11323            return false;
11324        }
11325        #[cfg(feature = "dml-tables")]
11326        if self.ln_b.is_some() {
11327            return false;
11328        }
11329        #[cfg(feature = "dml-tables")]
11330        if self.ln_tl_to_br.is_some() {
11331            return false;
11332        }
11333        #[cfg(feature = "dml-tables")]
11334        if self.ln_bl_to_tr.is_some() {
11335            return false;
11336        }
11337        #[cfg(feature = "dml-tables")]
11338        if self.cell3_d.is_some() {
11339            return false;
11340        }
11341        if self.fill_properties.is_some() {
11342            return false;
11343        }
11344        if self.headers.is_some() {
11345            return false;
11346        }
11347        #[cfg(feature = "dml-extensions")]
11348        if self.ext_lst.is_some() {
11349            return false;
11350        }
11351        #[cfg(feature = "extra-children")]
11352        if !self.extra_children.is_empty() {
11353            return false;
11354        }
11355        true
11356    }
11357}
11358
11359impl ToXml for CTHeaders {
11360    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
11361        #[cfg(feature = "extra-children")]
11362        let mut extra_iter = self.extra_children.iter().peekable();
11363        #[cfg(feature = "extra-children")]
11364        let mut emit_idx: usize = 0;
11365        for item in &self.header {
11366            #[cfg(feature = "extra-children")]
11367            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11368                extra_iter
11369                    .next()
11370                    .unwrap()
11371                    .node
11372                    .write_to(writer)
11373                    .map_err(SerializeError::from)?;
11374            }
11375            {
11376                let start = BytesStart::new("a:header");
11377                writer.write_event(Event::Start(start))?;
11378                writer.write_event(Event::Text(BytesText::new(item.as_str())))?;
11379                writer.write_event(Event::End(BytesEnd::new("a:header")))?;
11380            }
11381            #[cfg(feature = "extra-children")]
11382            {
11383                emit_idx += 1;
11384            }
11385        }
11386        #[cfg(feature = "extra-children")]
11387        for extra in extra_iter {
11388            extra.node.write_to(writer).map_err(SerializeError::from)?;
11389        }
11390        Ok(())
11391    }
11392
11393    fn is_empty_element(&self) -> bool {
11394        if !self.header.is_empty() {
11395            return false;
11396        }
11397        #[cfg(feature = "extra-children")]
11398        if !self.extra_children.is_empty() {
11399            return false;
11400        }
11401        true
11402    }
11403}
11404
11405impl ToXml for CTTableCol {
11406    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
11407        #[allow(unused_mut)]
11408        let mut start = start;
11409        {
11410            let val = &self.width;
11411            {
11412                let s = val.to_string();
11413                start.push_attribute(("w", s.as_str()));
11414            }
11415        }
11416        #[cfg(feature = "extra-attrs")]
11417        for (key, value) in &self.extra_attrs {
11418            start.push_attribute((key.as_str(), value.as_str()));
11419        }
11420        start
11421    }
11422
11423    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
11424        #[cfg(feature = "extra-children")]
11425        let mut extra_iter = self.extra_children.iter().peekable();
11426        #[cfg(feature = "extra-children")]
11427        let mut emit_idx: usize = 0;
11428        #[cfg(feature = "extra-children")]
11429        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11430            extra_iter
11431                .next()
11432                .unwrap()
11433                .node
11434                .write_to(writer)
11435                .map_err(SerializeError::from)?;
11436        }
11437        if let Some(ref val) = self.ext_lst {
11438            val.write_element("a:extLst", writer)?;
11439        }
11440        #[cfg(feature = "extra-children")]
11441        {
11442            emit_idx += 1;
11443        }
11444        #[cfg(feature = "extra-children")]
11445        for extra in extra_iter {
11446            extra.node.write_to(writer).map_err(SerializeError::from)?;
11447        }
11448        Ok(())
11449    }
11450
11451    fn is_empty_element(&self) -> bool {
11452        if self.ext_lst.is_some() {
11453            return false;
11454        }
11455        #[cfg(feature = "extra-children")]
11456        if !self.extra_children.is_empty() {
11457            return false;
11458        }
11459        true
11460    }
11461}
11462
11463impl ToXml for CTTableGrid {
11464    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
11465        #[cfg(feature = "extra-children")]
11466        let mut extra_iter = self.extra_children.iter().peekable();
11467        #[cfg(feature = "extra-children")]
11468        let mut emit_idx: usize = 0;
11469        #[cfg(feature = "dml-tables")]
11470        for item in &self.grid_col {
11471            #[cfg(feature = "extra-children")]
11472            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11473                extra_iter
11474                    .next()
11475                    .unwrap()
11476                    .node
11477                    .write_to(writer)
11478                    .map_err(SerializeError::from)?;
11479            }
11480            item.write_element("a:gridCol", writer)?;
11481            #[cfg(feature = "extra-children")]
11482            {
11483                emit_idx += 1;
11484            }
11485        }
11486        #[cfg(feature = "extra-children")]
11487        for extra in extra_iter {
11488            extra.node.write_to(writer).map_err(SerializeError::from)?;
11489        }
11490        Ok(())
11491    }
11492
11493    fn is_empty_element(&self) -> bool {
11494        #[cfg(feature = "dml-tables")]
11495        if !self.grid_col.is_empty() {
11496            return false;
11497        }
11498        #[cfg(feature = "extra-children")]
11499        if !self.extra_children.is_empty() {
11500            return false;
11501        }
11502        true
11503    }
11504}
11505
11506impl ToXml for CTTableCell {
11507    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
11508        #[allow(unused_mut)]
11509        let mut start = start;
11510        #[cfg(feature = "dml-tables")]
11511        if let Some(ref val) = self.row_span {
11512            {
11513                let s = val.to_string();
11514                start.push_attribute(("rowSpan", s.as_str()));
11515            }
11516        }
11517        #[cfg(feature = "dml-tables")]
11518        if let Some(ref val) = self.grid_span {
11519            {
11520                let s = val.to_string();
11521                start.push_attribute(("gridSpan", s.as_str()));
11522            }
11523        }
11524        #[cfg(feature = "dml-tables")]
11525        if let Some(ref val) = self.h_merge {
11526            start.push_attribute(("hMerge", if *val { "1" } else { "0" }));
11527        }
11528        #[cfg(feature = "dml-tables")]
11529        if let Some(ref val) = self.v_merge {
11530            start.push_attribute(("vMerge", if *val { "1" } else { "0" }));
11531        }
11532        if let Some(ref val) = self.id {
11533            start.push_attribute(("id", val.as_str()));
11534        }
11535        #[cfg(feature = "extra-attrs")]
11536        for (key, value) in &self.extra_attrs {
11537            start.push_attribute((key.as_str(), value.as_str()));
11538        }
11539        start
11540    }
11541
11542    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
11543        #[cfg(feature = "extra-children")]
11544        let mut extra_iter = self.extra_children.iter().peekable();
11545        #[cfg(feature = "extra-children")]
11546        let mut emit_idx: usize = 0;
11547        #[cfg(feature = "extra-children")]
11548        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11549            extra_iter
11550                .next()
11551                .unwrap()
11552                .node
11553                .write_to(writer)
11554                .map_err(SerializeError::from)?;
11555        }
11556        #[cfg(feature = "dml-tables")]
11557        if let Some(ref val) = self.tx_body {
11558            val.write_element("a:txBody", writer)?;
11559        }
11560        #[cfg(feature = "extra-children")]
11561        {
11562            emit_idx += 1;
11563        }
11564        #[cfg(feature = "extra-children")]
11565        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11566            extra_iter
11567                .next()
11568                .unwrap()
11569                .node
11570                .write_to(writer)
11571                .map_err(SerializeError::from)?;
11572        }
11573        #[cfg(feature = "dml-tables")]
11574        if let Some(ref val) = self.tc_pr {
11575            val.write_element("a:tcPr", writer)?;
11576        }
11577        #[cfg(feature = "extra-children")]
11578        {
11579            emit_idx += 1;
11580        }
11581        #[cfg(feature = "extra-children")]
11582        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11583            extra_iter
11584                .next()
11585                .unwrap()
11586                .node
11587                .write_to(writer)
11588                .map_err(SerializeError::from)?;
11589        }
11590        #[cfg(feature = "dml-extensions")]
11591        if let Some(ref val) = self.ext_lst {
11592            val.write_element("a:extLst", writer)?;
11593        }
11594        #[cfg(feature = "extra-children")]
11595        {
11596            emit_idx += 1;
11597        }
11598        #[cfg(feature = "extra-children")]
11599        for extra in extra_iter {
11600            extra.node.write_to(writer).map_err(SerializeError::from)?;
11601        }
11602        Ok(())
11603    }
11604
11605    fn is_empty_element(&self) -> bool {
11606        #[cfg(feature = "dml-tables")]
11607        if self.tx_body.is_some() {
11608            return false;
11609        }
11610        #[cfg(feature = "dml-tables")]
11611        if self.tc_pr.is_some() {
11612            return false;
11613        }
11614        #[cfg(feature = "dml-extensions")]
11615        if self.ext_lst.is_some() {
11616            return false;
11617        }
11618        #[cfg(feature = "extra-children")]
11619        if !self.extra_children.is_empty() {
11620            return false;
11621        }
11622        true
11623    }
11624}
11625
11626impl ToXml for CTTableRow {
11627    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
11628        #[allow(unused_mut)]
11629        let mut start = start;
11630        #[cfg(feature = "dml-tables")]
11631        {
11632            let val = &self.height;
11633            {
11634                let s = val.to_string();
11635                start.push_attribute(("h", s.as_str()));
11636            }
11637        }
11638        #[cfg(feature = "extra-attrs")]
11639        for (key, value) in &self.extra_attrs {
11640            start.push_attribute((key.as_str(), value.as_str()));
11641        }
11642        start
11643    }
11644
11645    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
11646        #[cfg(feature = "extra-children")]
11647        let mut extra_iter = self.extra_children.iter().peekable();
11648        #[cfg(feature = "extra-children")]
11649        let mut emit_idx: usize = 0;
11650        #[cfg(feature = "dml-tables")]
11651        for item in &self.tc {
11652            #[cfg(feature = "extra-children")]
11653            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11654                extra_iter
11655                    .next()
11656                    .unwrap()
11657                    .node
11658                    .write_to(writer)
11659                    .map_err(SerializeError::from)?;
11660            }
11661            item.write_element("a:tc", writer)?;
11662            #[cfg(feature = "extra-children")]
11663            {
11664                emit_idx += 1;
11665            }
11666        }
11667        #[cfg(feature = "extra-children")]
11668        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11669            extra_iter
11670                .next()
11671                .unwrap()
11672                .node
11673                .write_to(writer)
11674                .map_err(SerializeError::from)?;
11675        }
11676        #[cfg(feature = "dml-extensions")]
11677        if let Some(ref val) = self.ext_lst {
11678            val.write_element("a:extLst", writer)?;
11679        }
11680        #[cfg(feature = "extra-children")]
11681        {
11682            emit_idx += 1;
11683        }
11684        #[cfg(feature = "extra-children")]
11685        for extra in extra_iter {
11686            extra.node.write_to(writer).map_err(SerializeError::from)?;
11687        }
11688        Ok(())
11689    }
11690
11691    fn is_empty_element(&self) -> bool {
11692        #[cfg(feature = "dml-tables")]
11693        if !self.tc.is_empty() {
11694            return false;
11695        }
11696        #[cfg(feature = "dml-extensions")]
11697        if self.ext_lst.is_some() {
11698            return false;
11699        }
11700        #[cfg(feature = "extra-children")]
11701        if !self.extra_children.is_empty() {
11702            return false;
11703        }
11704        true
11705    }
11706}
11707
11708impl ToXml for CTTableProperties {
11709    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
11710        #[allow(unused_mut)]
11711        let mut start = start;
11712        #[cfg(feature = "dml-tables")]
11713        if let Some(ref val) = self.rtl {
11714            start.push_attribute(("rtl", if *val { "1" } else { "0" }));
11715        }
11716        #[cfg(feature = "dml-tables")]
11717        if let Some(ref val) = self.first_row {
11718            start.push_attribute(("firstRow", if *val { "1" } else { "0" }));
11719        }
11720        #[cfg(feature = "dml-tables")]
11721        if let Some(ref val) = self.first_col {
11722            start.push_attribute(("firstCol", if *val { "1" } else { "0" }));
11723        }
11724        #[cfg(feature = "dml-tables")]
11725        if let Some(ref val) = self.last_row {
11726            start.push_attribute(("lastRow", if *val { "1" } else { "0" }));
11727        }
11728        #[cfg(feature = "dml-tables")]
11729        if let Some(ref val) = self.last_col {
11730            start.push_attribute(("lastCol", if *val { "1" } else { "0" }));
11731        }
11732        #[cfg(feature = "dml-tables")]
11733        if let Some(ref val) = self.band_row {
11734            start.push_attribute(("bandRow", if *val { "1" } else { "0" }));
11735        }
11736        #[cfg(feature = "dml-tables")]
11737        if let Some(ref val) = self.band_col {
11738            start.push_attribute(("bandCol", if *val { "1" } else { "0" }));
11739        }
11740        #[cfg(feature = "extra-attrs")]
11741        for (key, value) in &self.extra_attrs {
11742            start.push_attribute((key.as_str(), value.as_str()));
11743        }
11744        start
11745    }
11746
11747    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
11748        #[cfg(feature = "extra-children")]
11749        let mut extra_iter = self.extra_children.iter().peekable();
11750        #[cfg(feature = "extra-children")]
11751        let mut emit_idx: usize = 0;
11752        #[cfg(feature = "extra-children")]
11753        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11754            extra_iter
11755                .next()
11756                .unwrap()
11757                .node
11758                .write_to(writer)
11759                .map_err(SerializeError::from)?;
11760        }
11761        if let Some(ref val) = self.fill_properties {
11762            val.write_element("", writer)?;
11763        }
11764        #[cfg(feature = "extra-children")]
11765        {
11766            emit_idx += 1;
11767        }
11768        #[cfg(feature = "extra-children")]
11769        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11770            extra_iter
11771                .next()
11772                .unwrap()
11773                .node
11774                .write_to(writer)
11775                .map_err(SerializeError::from)?;
11776        }
11777        if let Some(ref val) = self.effect_properties {
11778            val.write_element("", writer)?;
11779        }
11780        #[cfg(feature = "extra-children")]
11781        {
11782            emit_idx += 1;
11783        }
11784        #[cfg(feature = "extra-children")]
11785        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11786            extra_iter
11787                .next()
11788                .unwrap()
11789                .node
11790                .write_to(writer)
11791                .map_err(SerializeError::from)?;
11792        }
11793        if let Some(ref val) = self.table_style {
11794            val.write_element("a:tableStyle", writer)?;
11795        }
11796        #[cfg(feature = "extra-children")]
11797        {
11798            emit_idx += 1;
11799        }
11800        #[cfg(feature = "extra-children")]
11801        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11802            extra_iter
11803                .next()
11804                .unwrap()
11805                .node
11806                .write_to(writer)
11807                .map_err(SerializeError::from)?;
11808        }
11809        #[cfg(feature = "dml-tables")]
11810        if let Some(ref val) = self.table_style_id {
11811            {
11812                let start = BytesStart::new("a:tableStyleId");
11813                writer.write_event(Event::Start(start))?;
11814                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
11815                writer.write_event(Event::End(BytesEnd::new("a:tableStyleId")))?;
11816            }
11817        }
11818        #[cfg(feature = "extra-children")]
11819        {
11820            emit_idx += 1;
11821        }
11822        #[cfg(feature = "extra-children")]
11823        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11824            extra_iter
11825                .next()
11826                .unwrap()
11827                .node
11828                .write_to(writer)
11829                .map_err(SerializeError::from)?;
11830        }
11831        #[cfg(feature = "dml-extensions")]
11832        if let Some(ref val) = self.ext_lst {
11833            val.write_element("a:extLst", writer)?;
11834        }
11835        #[cfg(feature = "extra-children")]
11836        {
11837            emit_idx += 1;
11838        }
11839        #[cfg(feature = "extra-children")]
11840        for extra in extra_iter {
11841            extra.node.write_to(writer).map_err(SerializeError::from)?;
11842        }
11843        Ok(())
11844    }
11845
11846    fn is_empty_element(&self) -> bool {
11847        if self.fill_properties.is_some() {
11848            return false;
11849        }
11850        if self.effect_properties.is_some() {
11851            return false;
11852        }
11853        if self.table_style.is_some() {
11854            return false;
11855        }
11856        #[cfg(feature = "dml-tables")]
11857        if self.table_style_id.is_some() {
11858            return false;
11859        }
11860        #[cfg(feature = "dml-extensions")]
11861        if self.ext_lst.is_some() {
11862            return false;
11863        }
11864        #[cfg(feature = "extra-children")]
11865        if !self.extra_children.is_empty() {
11866            return false;
11867        }
11868        true
11869    }
11870}
11871
11872impl ToXml for CTTable {
11873    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
11874        #[cfg(feature = "extra-children")]
11875        let mut extra_iter = self.extra_children.iter().peekable();
11876        #[cfg(feature = "extra-children")]
11877        let mut emit_idx: usize = 0;
11878        #[cfg(feature = "extra-children")]
11879        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11880            extra_iter
11881                .next()
11882                .unwrap()
11883                .node
11884                .write_to(writer)
11885                .map_err(SerializeError::from)?;
11886        }
11887        #[cfg(feature = "dml-tables")]
11888        if let Some(ref val) = self.tbl_pr {
11889            val.write_element("a:tblPr", writer)?;
11890        }
11891        #[cfg(feature = "extra-children")]
11892        {
11893            emit_idx += 1;
11894        }
11895        #[cfg(feature = "extra-children")]
11896        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11897            extra_iter
11898                .next()
11899                .unwrap()
11900                .node
11901                .write_to(writer)
11902                .map_err(SerializeError::from)?;
11903        }
11904        #[cfg(feature = "dml-tables")]
11905        {
11906            let val = &self.tbl_grid;
11907            val.write_element("a:tblGrid", writer)?;
11908        }
11909        #[cfg(feature = "extra-children")]
11910        {
11911            emit_idx += 1;
11912        }
11913        #[cfg(feature = "dml-tables")]
11914        for item in &self.tr {
11915            #[cfg(feature = "extra-children")]
11916            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11917                extra_iter
11918                    .next()
11919                    .unwrap()
11920                    .node
11921                    .write_to(writer)
11922                    .map_err(SerializeError::from)?;
11923            }
11924            item.write_element("a:tr", writer)?;
11925            #[cfg(feature = "extra-children")]
11926            {
11927                emit_idx += 1;
11928            }
11929        }
11930        #[cfg(feature = "extra-children")]
11931        for extra in extra_iter {
11932            extra.node.write_to(writer).map_err(SerializeError::from)?;
11933        }
11934        Ok(())
11935    }
11936
11937    fn is_empty_element(&self) -> bool {
11938        #[cfg(feature = "dml-tables")]
11939        if self.tbl_pr.is_some() {
11940            return false;
11941        }
11942        #[cfg(feature = "dml-tables")]
11943        return false;
11944        #[cfg(feature = "dml-tables")]
11945        if !self.tr.is_empty() {
11946            return false;
11947        }
11948        #[cfg(feature = "extra-children")]
11949        if !self.extra_children.is_empty() {
11950            return false;
11951        }
11952        true
11953    }
11954}
11955
11956impl ToXml for CTCell3D {
11957    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
11958        #[allow(unused_mut)]
11959        let mut start = start;
11960        if let Some(ref val) = self.prst_material {
11961            {
11962                let s = val.to_string();
11963                start.push_attribute(("prstMaterial", s.as_str()));
11964            }
11965        }
11966        #[cfg(feature = "extra-attrs")]
11967        for (key, value) in &self.extra_attrs {
11968            start.push_attribute((key.as_str(), value.as_str()));
11969        }
11970        start
11971    }
11972
11973    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
11974        #[cfg(feature = "extra-children")]
11975        let mut extra_iter = self.extra_children.iter().peekable();
11976        #[cfg(feature = "extra-children")]
11977        let mut emit_idx: usize = 0;
11978        #[cfg(feature = "extra-children")]
11979        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11980            extra_iter
11981                .next()
11982                .unwrap()
11983                .node
11984                .write_to(writer)
11985                .map_err(SerializeError::from)?;
11986        }
11987        {
11988            let val = &self.bevel;
11989            val.write_element("a:bevel", writer)?;
11990        }
11991        #[cfg(feature = "extra-children")]
11992        {
11993            emit_idx += 1;
11994        }
11995        #[cfg(feature = "extra-children")]
11996        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
11997            extra_iter
11998                .next()
11999                .unwrap()
12000                .node
12001                .write_to(writer)
12002                .map_err(SerializeError::from)?;
12003        }
12004        if let Some(ref val) = self.light_rig {
12005            val.write_element("a:lightRig", writer)?;
12006        }
12007        #[cfg(feature = "extra-children")]
12008        {
12009            emit_idx += 1;
12010        }
12011        #[cfg(feature = "extra-children")]
12012        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12013            extra_iter
12014                .next()
12015                .unwrap()
12016                .node
12017                .write_to(writer)
12018                .map_err(SerializeError::from)?;
12019        }
12020        if let Some(ref val) = self.ext_lst {
12021            val.write_element("a:extLst", writer)?;
12022        }
12023        #[cfg(feature = "extra-children")]
12024        {
12025            emit_idx += 1;
12026        }
12027        #[cfg(feature = "extra-children")]
12028        for extra in extra_iter {
12029            extra.node.write_to(writer).map_err(SerializeError::from)?;
12030        }
12031        Ok(())
12032    }
12033
12034    fn is_empty_element(&self) -> bool {
12035        false
12036    }
12037}
12038
12039impl ToXml for EGThemeableFillStyle {
12040    fn write_element<W: Write>(
12041        &self,
12042        _tag: &str,
12043        writer: &mut Writer<W>,
12044    ) -> Result<(), SerializeError> {
12045        match self {
12046            Self::Fill(inner) => inner.write_element("a:fill", writer)?,
12047            Self::FillRef(inner) => inner.write_element("a:fillRef", writer)?,
12048        }
12049        Ok(())
12050    }
12051}
12052
12053impl ToXml for CTThemeableLineStyle {
12054    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
12055        #[cfg(feature = "extra-children")]
12056        let mut extra_iter = self.extra_children.iter().peekable();
12057        #[cfg(feature = "extra-children")]
12058        let mut emit_idx: usize = 0;
12059        #[cfg(feature = "extra-children")]
12060        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12061            extra_iter
12062                .next()
12063                .unwrap()
12064                .node
12065                .write_to(writer)
12066                .map_err(SerializeError::from)?;
12067        }
12068        if let Some(ref val) = self.line {
12069            val.write_element("a:ln", writer)?;
12070        }
12071        #[cfg(feature = "extra-children")]
12072        {
12073            emit_idx += 1;
12074        }
12075        #[cfg(feature = "extra-children")]
12076        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12077            extra_iter
12078                .next()
12079                .unwrap()
12080                .node
12081                .write_to(writer)
12082                .map_err(SerializeError::from)?;
12083        }
12084        if let Some(ref val) = self.ln_ref {
12085            val.write_element("a:lnRef", writer)?;
12086        }
12087        #[cfg(feature = "extra-children")]
12088        {
12089            emit_idx += 1;
12090        }
12091        #[cfg(feature = "extra-children")]
12092        for extra in extra_iter {
12093            extra.node.write_to(writer).map_err(SerializeError::from)?;
12094        }
12095        Ok(())
12096    }
12097
12098    fn is_empty_element(&self) -> bool {
12099        if self.line.is_some() {
12100            return false;
12101        }
12102        if self.ln_ref.is_some() {
12103            return false;
12104        }
12105        #[cfg(feature = "extra-children")]
12106        if !self.extra_children.is_empty() {
12107            return false;
12108        }
12109        true
12110    }
12111}
12112
12113impl ToXml for EGThemeableEffectStyle {
12114    fn write_element<W: Write>(
12115        &self,
12116        _tag: &str,
12117        writer: &mut Writer<W>,
12118    ) -> Result<(), SerializeError> {
12119        match self {
12120            Self::Effect(inner) => inner.write_element("a:effect", writer)?,
12121            Self::EffectRef(inner) => inner.write_element("a:effectRef", writer)?,
12122        }
12123        Ok(())
12124    }
12125}
12126
12127impl ToXml for EGThemeableFontStyles {
12128    fn write_element<W: Write>(
12129        &self,
12130        _tag: &str,
12131        writer: &mut Writer<W>,
12132    ) -> Result<(), SerializeError> {
12133        match self {
12134            Self::Font(inner) => inner.write_element("a:font", writer)?,
12135            Self::FontRef(inner) => inner.write_element("a:fontRef", writer)?,
12136        }
12137        Ok(())
12138    }
12139}
12140
12141impl ToXml for CTTableStyleTextStyle {
12142    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
12143        #[allow(unused_mut)]
12144        let mut start = start;
12145        if let Some(ref val) = self.b {
12146            {
12147                let s = val.to_string();
12148                start.push_attribute(("b", s.as_str()));
12149            }
12150        }
12151        if let Some(ref val) = self.i {
12152            {
12153                let s = val.to_string();
12154                start.push_attribute(("i", s.as_str()));
12155            }
12156        }
12157        #[cfg(feature = "extra-attrs")]
12158        for (key, value) in &self.extra_attrs {
12159            start.push_attribute((key.as_str(), value.as_str()));
12160        }
12161        start
12162    }
12163
12164    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
12165        #[cfg(feature = "extra-children")]
12166        let mut extra_iter = self.extra_children.iter().peekable();
12167        #[cfg(feature = "extra-children")]
12168        let mut emit_idx: usize = 0;
12169        #[cfg(feature = "extra-children")]
12170        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12171            extra_iter
12172                .next()
12173                .unwrap()
12174                .node
12175                .write_to(writer)
12176                .map_err(SerializeError::from)?;
12177        }
12178        if let Some(ref val) = self.themeable_font_styles {
12179            val.write_element("", writer)?;
12180        }
12181        #[cfg(feature = "extra-children")]
12182        {
12183            emit_idx += 1;
12184        }
12185        #[cfg(feature = "extra-children")]
12186        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12187            extra_iter
12188                .next()
12189                .unwrap()
12190                .node
12191                .write_to(writer)
12192                .map_err(SerializeError::from)?;
12193        }
12194        if let Some(ref val) = self.color_choice {
12195            val.write_element("", writer)?;
12196        }
12197        #[cfg(feature = "extra-children")]
12198        {
12199            emit_idx += 1;
12200        }
12201        #[cfg(feature = "extra-children")]
12202        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12203            extra_iter
12204                .next()
12205                .unwrap()
12206                .node
12207                .write_to(writer)
12208                .map_err(SerializeError::from)?;
12209        }
12210        if let Some(ref val) = self.ext_lst {
12211            val.write_element("a:extLst", writer)?;
12212        }
12213        #[cfg(feature = "extra-children")]
12214        {
12215            emit_idx += 1;
12216        }
12217        #[cfg(feature = "extra-children")]
12218        for extra in extra_iter {
12219            extra.node.write_to(writer).map_err(SerializeError::from)?;
12220        }
12221        Ok(())
12222    }
12223
12224    fn is_empty_element(&self) -> bool {
12225        if self.themeable_font_styles.is_some() {
12226            return false;
12227        }
12228        if self.color_choice.is_some() {
12229            return false;
12230        }
12231        if self.ext_lst.is_some() {
12232            return false;
12233        }
12234        #[cfg(feature = "extra-children")]
12235        if !self.extra_children.is_empty() {
12236            return false;
12237        }
12238        true
12239    }
12240}
12241
12242impl ToXml for CTTableCellBorderStyle {
12243    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
12244        #[cfg(feature = "extra-children")]
12245        let mut extra_iter = self.extra_children.iter().peekable();
12246        #[cfg(feature = "extra-children")]
12247        let mut emit_idx: usize = 0;
12248        #[cfg(feature = "extra-children")]
12249        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12250            extra_iter
12251                .next()
12252                .unwrap()
12253                .node
12254                .write_to(writer)
12255                .map_err(SerializeError::from)?;
12256        }
12257        if let Some(ref val) = self.left {
12258            val.write_element("a:left", writer)?;
12259        }
12260        #[cfg(feature = "extra-children")]
12261        {
12262            emit_idx += 1;
12263        }
12264        #[cfg(feature = "extra-children")]
12265        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12266            extra_iter
12267                .next()
12268                .unwrap()
12269                .node
12270                .write_to(writer)
12271                .map_err(SerializeError::from)?;
12272        }
12273        if let Some(ref val) = self.right {
12274            val.write_element("a:right", writer)?;
12275        }
12276        #[cfg(feature = "extra-children")]
12277        {
12278            emit_idx += 1;
12279        }
12280        #[cfg(feature = "extra-children")]
12281        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12282            extra_iter
12283                .next()
12284                .unwrap()
12285                .node
12286                .write_to(writer)
12287                .map_err(SerializeError::from)?;
12288        }
12289        if let Some(ref val) = self.top {
12290            val.write_element("a:top", writer)?;
12291        }
12292        #[cfg(feature = "extra-children")]
12293        {
12294            emit_idx += 1;
12295        }
12296        #[cfg(feature = "extra-children")]
12297        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12298            extra_iter
12299                .next()
12300                .unwrap()
12301                .node
12302                .write_to(writer)
12303                .map_err(SerializeError::from)?;
12304        }
12305        if let Some(ref val) = self.bottom {
12306            val.write_element("a:bottom", writer)?;
12307        }
12308        #[cfg(feature = "extra-children")]
12309        {
12310            emit_idx += 1;
12311        }
12312        #[cfg(feature = "extra-children")]
12313        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12314            extra_iter
12315                .next()
12316                .unwrap()
12317                .node
12318                .write_to(writer)
12319                .map_err(SerializeError::from)?;
12320        }
12321        if let Some(ref val) = self.inside_h {
12322            val.write_element("a:insideH", writer)?;
12323        }
12324        #[cfg(feature = "extra-children")]
12325        {
12326            emit_idx += 1;
12327        }
12328        #[cfg(feature = "extra-children")]
12329        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12330            extra_iter
12331                .next()
12332                .unwrap()
12333                .node
12334                .write_to(writer)
12335                .map_err(SerializeError::from)?;
12336        }
12337        if let Some(ref val) = self.inside_v {
12338            val.write_element("a:insideV", writer)?;
12339        }
12340        #[cfg(feature = "extra-children")]
12341        {
12342            emit_idx += 1;
12343        }
12344        #[cfg(feature = "extra-children")]
12345        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12346            extra_iter
12347                .next()
12348                .unwrap()
12349                .node
12350                .write_to(writer)
12351                .map_err(SerializeError::from)?;
12352        }
12353        if let Some(ref val) = self.tl2br {
12354            val.write_element("a:tl2br", writer)?;
12355        }
12356        #[cfg(feature = "extra-children")]
12357        {
12358            emit_idx += 1;
12359        }
12360        #[cfg(feature = "extra-children")]
12361        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12362            extra_iter
12363                .next()
12364                .unwrap()
12365                .node
12366                .write_to(writer)
12367                .map_err(SerializeError::from)?;
12368        }
12369        if let Some(ref val) = self.tr2bl {
12370            val.write_element("a:tr2bl", writer)?;
12371        }
12372        #[cfg(feature = "extra-children")]
12373        {
12374            emit_idx += 1;
12375        }
12376        #[cfg(feature = "extra-children")]
12377        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12378            extra_iter
12379                .next()
12380                .unwrap()
12381                .node
12382                .write_to(writer)
12383                .map_err(SerializeError::from)?;
12384        }
12385        if let Some(ref val) = self.ext_lst {
12386            val.write_element("a:extLst", writer)?;
12387        }
12388        #[cfg(feature = "extra-children")]
12389        {
12390            emit_idx += 1;
12391        }
12392        #[cfg(feature = "extra-children")]
12393        for extra in extra_iter {
12394            extra.node.write_to(writer).map_err(SerializeError::from)?;
12395        }
12396        Ok(())
12397    }
12398
12399    fn is_empty_element(&self) -> bool {
12400        if self.left.is_some() {
12401            return false;
12402        }
12403        if self.right.is_some() {
12404            return false;
12405        }
12406        if self.top.is_some() {
12407            return false;
12408        }
12409        if self.bottom.is_some() {
12410            return false;
12411        }
12412        if self.inside_h.is_some() {
12413            return false;
12414        }
12415        if self.inside_v.is_some() {
12416            return false;
12417        }
12418        if self.tl2br.is_some() {
12419            return false;
12420        }
12421        if self.tr2bl.is_some() {
12422            return false;
12423        }
12424        if self.ext_lst.is_some() {
12425            return false;
12426        }
12427        #[cfg(feature = "extra-children")]
12428        if !self.extra_children.is_empty() {
12429            return false;
12430        }
12431        true
12432    }
12433}
12434
12435impl ToXml for CTTableBackgroundStyle {
12436    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
12437        #[cfg(feature = "extra-children")]
12438        let mut extra_iter = self.extra_children.iter().peekable();
12439        #[cfg(feature = "extra-children")]
12440        let mut emit_idx: usize = 0;
12441        #[cfg(feature = "extra-children")]
12442        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12443            extra_iter
12444                .next()
12445                .unwrap()
12446                .node
12447                .write_to(writer)
12448                .map_err(SerializeError::from)?;
12449        }
12450        if let Some(ref val) = self.themeable_fill_style {
12451            val.write_element("", writer)?;
12452        }
12453        #[cfg(feature = "extra-children")]
12454        {
12455            emit_idx += 1;
12456        }
12457        #[cfg(feature = "extra-children")]
12458        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12459            extra_iter
12460                .next()
12461                .unwrap()
12462                .node
12463                .write_to(writer)
12464                .map_err(SerializeError::from)?;
12465        }
12466        if let Some(ref val) = self.themeable_effect_style {
12467            val.write_element("", writer)?;
12468        }
12469        #[cfg(feature = "extra-children")]
12470        {
12471            emit_idx += 1;
12472        }
12473        #[cfg(feature = "extra-children")]
12474        for extra in extra_iter {
12475            extra.node.write_to(writer).map_err(SerializeError::from)?;
12476        }
12477        Ok(())
12478    }
12479
12480    fn is_empty_element(&self) -> bool {
12481        if self.themeable_fill_style.is_some() {
12482            return false;
12483        }
12484        if self.themeable_effect_style.is_some() {
12485            return false;
12486        }
12487        #[cfg(feature = "extra-children")]
12488        if !self.extra_children.is_empty() {
12489            return false;
12490        }
12491        true
12492    }
12493}
12494
12495impl ToXml for CTTableStyleCellStyle {
12496    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
12497        #[cfg(feature = "extra-children")]
12498        let mut extra_iter = self.extra_children.iter().peekable();
12499        #[cfg(feature = "extra-children")]
12500        let mut emit_idx: usize = 0;
12501        #[cfg(feature = "extra-children")]
12502        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12503            extra_iter
12504                .next()
12505                .unwrap()
12506                .node
12507                .write_to(writer)
12508                .map_err(SerializeError::from)?;
12509        }
12510        if let Some(ref val) = self.tc_bdr {
12511            val.write_element("a:tcBdr", writer)?;
12512        }
12513        #[cfg(feature = "extra-children")]
12514        {
12515            emit_idx += 1;
12516        }
12517        #[cfg(feature = "extra-children")]
12518        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12519            extra_iter
12520                .next()
12521                .unwrap()
12522                .node
12523                .write_to(writer)
12524                .map_err(SerializeError::from)?;
12525        }
12526        if let Some(ref val) = self.themeable_fill_style {
12527            val.write_element("", writer)?;
12528        }
12529        #[cfg(feature = "extra-children")]
12530        {
12531            emit_idx += 1;
12532        }
12533        #[cfg(feature = "extra-children")]
12534        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12535            extra_iter
12536                .next()
12537                .unwrap()
12538                .node
12539                .write_to(writer)
12540                .map_err(SerializeError::from)?;
12541        }
12542        if let Some(ref val) = self.cell3_d {
12543            val.write_element("a:cell3D", writer)?;
12544        }
12545        #[cfg(feature = "extra-children")]
12546        {
12547            emit_idx += 1;
12548        }
12549        #[cfg(feature = "extra-children")]
12550        for extra in extra_iter {
12551            extra.node.write_to(writer).map_err(SerializeError::from)?;
12552        }
12553        Ok(())
12554    }
12555
12556    fn is_empty_element(&self) -> bool {
12557        if self.tc_bdr.is_some() {
12558            return false;
12559        }
12560        if self.themeable_fill_style.is_some() {
12561            return false;
12562        }
12563        if self.cell3_d.is_some() {
12564            return false;
12565        }
12566        #[cfg(feature = "extra-children")]
12567        if !self.extra_children.is_empty() {
12568            return false;
12569        }
12570        true
12571    }
12572}
12573
12574impl ToXml for CTTablePartStyle {
12575    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
12576        #[cfg(feature = "extra-children")]
12577        let mut extra_iter = self.extra_children.iter().peekable();
12578        #[cfg(feature = "extra-children")]
12579        let mut emit_idx: usize = 0;
12580        #[cfg(feature = "extra-children")]
12581        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12582            extra_iter
12583                .next()
12584                .unwrap()
12585                .node
12586                .write_to(writer)
12587                .map_err(SerializeError::from)?;
12588        }
12589        if let Some(ref val) = self.tc_tx_style {
12590            val.write_element("a:tcTxStyle", writer)?;
12591        }
12592        #[cfg(feature = "extra-children")]
12593        {
12594            emit_idx += 1;
12595        }
12596        #[cfg(feature = "extra-children")]
12597        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12598            extra_iter
12599                .next()
12600                .unwrap()
12601                .node
12602                .write_to(writer)
12603                .map_err(SerializeError::from)?;
12604        }
12605        if let Some(ref val) = self.tc_style {
12606            val.write_element("a:tcStyle", writer)?;
12607        }
12608        #[cfg(feature = "extra-children")]
12609        {
12610            emit_idx += 1;
12611        }
12612        #[cfg(feature = "extra-children")]
12613        for extra in extra_iter {
12614            extra.node.write_to(writer).map_err(SerializeError::from)?;
12615        }
12616        Ok(())
12617    }
12618
12619    fn is_empty_element(&self) -> bool {
12620        if self.tc_tx_style.is_some() {
12621            return false;
12622        }
12623        if self.tc_style.is_some() {
12624            return false;
12625        }
12626        #[cfg(feature = "extra-children")]
12627        if !self.extra_children.is_empty() {
12628            return false;
12629        }
12630        true
12631    }
12632}
12633
12634impl ToXml for CTTableStyle {
12635    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
12636        #[allow(unused_mut)]
12637        let mut start = start;
12638        {
12639            let val = &self.style_id;
12640            start.push_attribute(("styleId", val.as_str()));
12641        }
12642        {
12643            let val = &self.style_name;
12644            start.push_attribute(("styleName", val.as_str()));
12645        }
12646        #[cfg(feature = "extra-attrs")]
12647        for (key, value) in &self.extra_attrs {
12648            start.push_attribute((key.as_str(), value.as_str()));
12649        }
12650        start
12651    }
12652
12653    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
12654        #[cfg(feature = "extra-children")]
12655        let mut extra_iter = self.extra_children.iter().peekable();
12656        #[cfg(feature = "extra-children")]
12657        let mut emit_idx: usize = 0;
12658        #[cfg(feature = "extra-children")]
12659        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12660            extra_iter
12661                .next()
12662                .unwrap()
12663                .node
12664                .write_to(writer)
12665                .map_err(SerializeError::from)?;
12666        }
12667        if let Some(ref val) = self.tbl_bg {
12668            val.write_element("a:tblBg", writer)?;
12669        }
12670        #[cfg(feature = "extra-children")]
12671        {
12672            emit_idx += 1;
12673        }
12674        #[cfg(feature = "extra-children")]
12675        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12676            extra_iter
12677                .next()
12678                .unwrap()
12679                .node
12680                .write_to(writer)
12681                .map_err(SerializeError::from)?;
12682        }
12683        if let Some(ref val) = self.whole_tbl {
12684            val.write_element("a:wholeTbl", writer)?;
12685        }
12686        #[cfg(feature = "extra-children")]
12687        {
12688            emit_idx += 1;
12689        }
12690        #[cfg(feature = "extra-children")]
12691        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12692            extra_iter
12693                .next()
12694                .unwrap()
12695                .node
12696                .write_to(writer)
12697                .map_err(SerializeError::from)?;
12698        }
12699        if let Some(ref val) = self.band1_h {
12700            val.write_element("a:band1H", writer)?;
12701        }
12702        #[cfg(feature = "extra-children")]
12703        {
12704            emit_idx += 1;
12705        }
12706        #[cfg(feature = "extra-children")]
12707        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12708            extra_iter
12709                .next()
12710                .unwrap()
12711                .node
12712                .write_to(writer)
12713                .map_err(SerializeError::from)?;
12714        }
12715        if let Some(ref val) = self.band2_h {
12716            val.write_element("a:band2H", writer)?;
12717        }
12718        #[cfg(feature = "extra-children")]
12719        {
12720            emit_idx += 1;
12721        }
12722        #[cfg(feature = "extra-children")]
12723        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12724            extra_iter
12725                .next()
12726                .unwrap()
12727                .node
12728                .write_to(writer)
12729                .map_err(SerializeError::from)?;
12730        }
12731        if let Some(ref val) = self.band1_v {
12732            val.write_element("a:band1V", writer)?;
12733        }
12734        #[cfg(feature = "extra-children")]
12735        {
12736            emit_idx += 1;
12737        }
12738        #[cfg(feature = "extra-children")]
12739        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12740            extra_iter
12741                .next()
12742                .unwrap()
12743                .node
12744                .write_to(writer)
12745                .map_err(SerializeError::from)?;
12746        }
12747        if let Some(ref val) = self.band2_v {
12748            val.write_element("a:band2V", writer)?;
12749        }
12750        #[cfg(feature = "extra-children")]
12751        {
12752            emit_idx += 1;
12753        }
12754        #[cfg(feature = "extra-children")]
12755        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12756            extra_iter
12757                .next()
12758                .unwrap()
12759                .node
12760                .write_to(writer)
12761                .map_err(SerializeError::from)?;
12762        }
12763        if let Some(ref val) = self.last_col {
12764            val.write_element("a:lastCol", writer)?;
12765        }
12766        #[cfg(feature = "extra-children")]
12767        {
12768            emit_idx += 1;
12769        }
12770        #[cfg(feature = "extra-children")]
12771        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12772            extra_iter
12773                .next()
12774                .unwrap()
12775                .node
12776                .write_to(writer)
12777                .map_err(SerializeError::from)?;
12778        }
12779        if let Some(ref val) = self.first_col {
12780            val.write_element("a:firstCol", writer)?;
12781        }
12782        #[cfg(feature = "extra-children")]
12783        {
12784            emit_idx += 1;
12785        }
12786        #[cfg(feature = "extra-children")]
12787        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12788            extra_iter
12789                .next()
12790                .unwrap()
12791                .node
12792                .write_to(writer)
12793                .map_err(SerializeError::from)?;
12794        }
12795        if let Some(ref val) = self.last_row {
12796            val.write_element("a:lastRow", writer)?;
12797        }
12798        #[cfg(feature = "extra-children")]
12799        {
12800            emit_idx += 1;
12801        }
12802        #[cfg(feature = "extra-children")]
12803        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12804            extra_iter
12805                .next()
12806                .unwrap()
12807                .node
12808                .write_to(writer)
12809                .map_err(SerializeError::from)?;
12810        }
12811        if let Some(ref val) = self.se_cell {
12812            val.write_element("a:seCell", writer)?;
12813        }
12814        #[cfg(feature = "extra-children")]
12815        {
12816            emit_idx += 1;
12817        }
12818        #[cfg(feature = "extra-children")]
12819        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12820            extra_iter
12821                .next()
12822                .unwrap()
12823                .node
12824                .write_to(writer)
12825                .map_err(SerializeError::from)?;
12826        }
12827        if let Some(ref val) = self.sw_cell {
12828            val.write_element("a:swCell", writer)?;
12829        }
12830        #[cfg(feature = "extra-children")]
12831        {
12832            emit_idx += 1;
12833        }
12834        #[cfg(feature = "extra-children")]
12835        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12836            extra_iter
12837                .next()
12838                .unwrap()
12839                .node
12840                .write_to(writer)
12841                .map_err(SerializeError::from)?;
12842        }
12843        if let Some(ref val) = self.first_row {
12844            val.write_element("a:firstRow", writer)?;
12845        }
12846        #[cfg(feature = "extra-children")]
12847        {
12848            emit_idx += 1;
12849        }
12850        #[cfg(feature = "extra-children")]
12851        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12852            extra_iter
12853                .next()
12854                .unwrap()
12855                .node
12856                .write_to(writer)
12857                .map_err(SerializeError::from)?;
12858        }
12859        if let Some(ref val) = self.ne_cell {
12860            val.write_element("a:neCell", writer)?;
12861        }
12862        #[cfg(feature = "extra-children")]
12863        {
12864            emit_idx += 1;
12865        }
12866        #[cfg(feature = "extra-children")]
12867        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12868            extra_iter
12869                .next()
12870                .unwrap()
12871                .node
12872                .write_to(writer)
12873                .map_err(SerializeError::from)?;
12874        }
12875        if let Some(ref val) = self.nw_cell {
12876            val.write_element("a:nwCell", writer)?;
12877        }
12878        #[cfg(feature = "extra-children")]
12879        {
12880            emit_idx += 1;
12881        }
12882        #[cfg(feature = "extra-children")]
12883        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12884            extra_iter
12885                .next()
12886                .unwrap()
12887                .node
12888                .write_to(writer)
12889                .map_err(SerializeError::from)?;
12890        }
12891        if let Some(ref val) = self.ext_lst {
12892            val.write_element("a:extLst", writer)?;
12893        }
12894        #[cfg(feature = "extra-children")]
12895        {
12896            emit_idx += 1;
12897        }
12898        #[cfg(feature = "extra-children")]
12899        for extra in extra_iter {
12900            extra.node.write_to(writer).map_err(SerializeError::from)?;
12901        }
12902        Ok(())
12903    }
12904
12905    fn is_empty_element(&self) -> bool {
12906        if self.tbl_bg.is_some() {
12907            return false;
12908        }
12909        if self.whole_tbl.is_some() {
12910            return false;
12911        }
12912        if self.band1_h.is_some() {
12913            return false;
12914        }
12915        if self.band2_h.is_some() {
12916            return false;
12917        }
12918        if self.band1_v.is_some() {
12919            return false;
12920        }
12921        if self.band2_v.is_some() {
12922            return false;
12923        }
12924        if self.last_col.is_some() {
12925            return false;
12926        }
12927        if self.first_col.is_some() {
12928            return false;
12929        }
12930        if self.last_row.is_some() {
12931            return false;
12932        }
12933        if self.se_cell.is_some() {
12934            return false;
12935        }
12936        if self.sw_cell.is_some() {
12937            return false;
12938        }
12939        if self.first_row.is_some() {
12940            return false;
12941        }
12942        if self.ne_cell.is_some() {
12943            return false;
12944        }
12945        if self.nw_cell.is_some() {
12946            return false;
12947        }
12948        if self.ext_lst.is_some() {
12949            return false;
12950        }
12951        #[cfg(feature = "extra-children")]
12952        if !self.extra_children.is_empty() {
12953            return false;
12954        }
12955        true
12956    }
12957}
12958
12959impl ToXml for CTTableStyleList {
12960    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
12961        #[allow(unused_mut)]
12962        let mut start = start;
12963        {
12964            let val = &self.def;
12965            start.push_attribute(("def", val.as_str()));
12966        }
12967        #[cfg(feature = "extra-attrs")]
12968        for (key, value) in &self.extra_attrs {
12969            start.push_attribute((key.as_str(), value.as_str()));
12970        }
12971        start
12972    }
12973
12974    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
12975        #[cfg(feature = "extra-children")]
12976        let mut extra_iter = self.extra_children.iter().peekable();
12977        #[cfg(feature = "extra-children")]
12978        let mut emit_idx: usize = 0;
12979        for item in &self.tbl_style {
12980            #[cfg(feature = "extra-children")]
12981            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
12982                extra_iter
12983                    .next()
12984                    .unwrap()
12985                    .node
12986                    .write_to(writer)
12987                    .map_err(SerializeError::from)?;
12988            }
12989            item.write_element("a:tblStyle", writer)?;
12990            #[cfg(feature = "extra-children")]
12991            {
12992                emit_idx += 1;
12993            }
12994        }
12995        #[cfg(feature = "extra-children")]
12996        for extra in extra_iter {
12997            extra.node.write_to(writer).map_err(SerializeError::from)?;
12998        }
12999        Ok(())
13000    }
13001
13002    fn is_empty_element(&self) -> bool {
13003        if !self.tbl_style.is_empty() {
13004            return false;
13005        }
13006        #[cfg(feature = "extra-children")]
13007        if !self.extra_children.is_empty() {
13008            return false;
13009        }
13010        true
13011    }
13012}
13013
13014impl ToXml for TextParagraph {
13015    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
13016        #[cfg(feature = "extra-children")]
13017        let mut extra_iter = self.extra_children.iter().peekable();
13018        #[cfg(feature = "extra-children")]
13019        let mut emit_idx: usize = 0;
13020        #[cfg(feature = "extra-children")]
13021        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13022            extra_iter
13023                .next()
13024                .unwrap()
13025                .node
13026                .write_to(writer)
13027                .map_err(SerializeError::from)?;
13028        }
13029        #[cfg(feature = "dml-text")]
13030        if let Some(ref val) = self.p_pr {
13031            val.write_element("a:pPr", writer)?;
13032        }
13033        #[cfg(feature = "extra-children")]
13034        {
13035            emit_idx += 1;
13036        }
13037        for item in &self.text_run {
13038            #[cfg(feature = "extra-children")]
13039            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13040                extra_iter
13041                    .next()
13042                    .unwrap()
13043                    .node
13044                    .write_to(writer)
13045                    .map_err(SerializeError::from)?;
13046            }
13047            item.write_element("", writer)?;
13048            #[cfg(feature = "extra-children")]
13049            {
13050                emit_idx += 1;
13051            }
13052        }
13053        #[cfg(feature = "extra-children")]
13054        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13055            extra_iter
13056                .next()
13057                .unwrap()
13058                .node
13059                .write_to(writer)
13060                .map_err(SerializeError::from)?;
13061        }
13062        #[cfg(feature = "dml-text")]
13063        if let Some(ref val) = self.end_para_r_pr {
13064            val.write_element("a:endParaRPr", writer)?;
13065        }
13066        #[cfg(feature = "extra-children")]
13067        {
13068            emit_idx += 1;
13069        }
13070        #[cfg(feature = "extra-children")]
13071        for extra in extra_iter {
13072            extra.node.write_to(writer).map_err(SerializeError::from)?;
13073        }
13074        Ok(())
13075    }
13076
13077    fn is_empty_element(&self) -> bool {
13078        #[cfg(feature = "dml-text")]
13079        if self.p_pr.is_some() {
13080            return false;
13081        }
13082        if !self.text_run.is_empty() {
13083            return false;
13084        }
13085        #[cfg(feature = "dml-text")]
13086        if self.end_para_r_pr.is_some() {
13087            return false;
13088        }
13089        #[cfg(feature = "extra-children")]
13090        if !self.extra_children.is_empty() {
13091            return false;
13092        }
13093        true
13094    }
13095}
13096
13097impl ToXml for CTTextListStyle {
13098    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
13099        #[cfg(feature = "extra-children")]
13100        let mut extra_iter = self.extra_children.iter().peekable();
13101        #[cfg(feature = "extra-children")]
13102        let mut emit_idx: usize = 0;
13103        #[cfg(feature = "extra-children")]
13104        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13105            extra_iter
13106                .next()
13107                .unwrap()
13108                .node
13109                .write_to(writer)
13110                .map_err(SerializeError::from)?;
13111        }
13112        if let Some(ref val) = self.def_p_pr {
13113            val.write_element("a:defPPr", writer)?;
13114        }
13115        #[cfg(feature = "extra-children")]
13116        {
13117            emit_idx += 1;
13118        }
13119        #[cfg(feature = "extra-children")]
13120        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13121            extra_iter
13122                .next()
13123                .unwrap()
13124                .node
13125                .write_to(writer)
13126                .map_err(SerializeError::from)?;
13127        }
13128        if let Some(ref val) = self.lvl1p_pr {
13129            val.write_element("a:lvl1pPr", writer)?;
13130        }
13131        #[cfg(feature = "extra-children")]
13132        {
13133            emit_idx += 1;
13134        }
13135        #[cfg(feature = "extra-children")]
13136        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13137            extra_iter
13138                .next()
13139                .unwrap()
13140                .node
13141                .write_to(writer)
13142                .map_err(SerializeError::from)?;
13143        }
13144        if let Some(ref val) = self.lvl2p_pr {
13145            val.write_element("a:lvl2pPr", writer)?;
13146        }
13147        #[cfg(feature = "extra-children")]
13148        {
13149            emit_idx += 1;
13150        }
13151        #[cfg(feature = "extra-children")]
13152        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13153            extra_iter
13154                .next()
13155                .unwrap()
13156                .node
13157                .write_to(writer)
13158                .map_err(SerializeError::from)?;
13159        }
13160        if let Some(ref val) = self.lvl3p_pr {
13161            val.write_element("a:lvl3pPr", writer)?;
13162        }
13163        #[cfg(feature = "extra-children")]
13164        {
13165            emit_idx += 1;
13166        }
13167        #[cfg(feature = "extra-children")]
13168        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13169            extra_iter
13170                .next()
13171                .unwrap()
13172                .node
13173                .write_to(writer)
13174                .map_err(SerializeError::from)?;
13175        }
13176        if let Some(ref val) = self.lvl4p_pr {
13177            val.write_element("a:lvl4pPr", writer)?;
13178        }
13179        #[cfg(feature = "extra-children")]
13180        {
13181            emit_idx += 1;
13182        }
13183        #[cfg(feature = "extra-children")]
13184        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13185            extra_iter
13186                .next()
13187                .unwrap()
13188                .node
13189                .write_to(writer)
13190                .map_err(SerializeError::from)?;
13191        }
13192        if let Some(ref val) = self.lvl5p_pr {
13193            val.write_element("a:lvl5pPr", writer)?;
13194        }
13195        #[cfg(feature = "extra-children")]
13196        {
13197            emit_idx += 1;
13198        }
13199        #[cfg(feature = "extra-children")]
13200        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13201            extra_iter
13202                .next()
13203                .unwrap()
13204                .node
13205                .write_to(writer)
13206                .map_err(SerializeError::from)?;
13207        }
13208        if let Some(ref val) = self.lvl6p_pr {
13209            val.write_element("a:lvl6pPr", writer)?;
13210        }
13211        #[cfg(feature = "extra-children")]
13212        {
13213            emit_idx += 1;
13214        }
13215        #[cfg(feature = "extra-children")]
13216        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13217            extra_iter
13218                .next()
13219                .unwrap()
13220                .node
13221                .write_to(writer)
13222                .map_err(SerializeError::from)?;
13223        }
13224        if let Some(ref val) = self.lvl7p_pr {
13225            val.write_element("a:lvl7pPr", writer)?;
13226        }
13227        #[cfg(feature = "extra-children")]
13228        {
13229            emit_idx += 1;
13230        }
13231        #[cfg(feature = "extra-children")]
13232        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13233            extra_iter
13234                .next()
13235                .unwrap()
13236                .node
13237                .write_to(writer)
13238                .map_err(SerializeError::from)?;
13239        }
13240        if let Some(ref val) = self.lvl8p_pr {
13241            val.write_element("a:lvl8pPr", writer)?;
13242        }
13243        #[cfg(feature = "extra-children")]
13244        {
13245            emit_idx += 1;
13246        }
13247        #[cfg(feature = "extra-children")]
13248        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13249            extra_iter
13250                .next()
13251                .unwrap()
13252                .node
13253                .write_to(writer)
13254                .map_err(SerializeError::from)?;
13255        }
13256        if let Some(ref val) = self.lvl9p_pr {
13257            val.write_element("a:lvl9pPr", writer)?;
13258        }
13259        #[cfg(feature = "extra-children")]
13260        {
13261            emit_idx += 1;
13262        }
13263        #[cfg(feature = "extra-children")]
13264        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13265            extra_iter
13266                .next()
13267                .unwrap()
13268                .node
13269                .write_to(writer)
13270                .map_err(SerializeError::from)?;
13271        }
13272        if let Some(ref val) = self.ext_lst {
13273            val.write_element("a:extLst", writer)?;
13274        }
13275        #[cfg(feature = "extra-children")]
13276        {
13277            emit_idx += 1;
13278        }
13279        #[cfg(feature = "extra-children")]
13280        for extra in extra_iter {
13281            extra.node.write_to(writer).map_err(SerializeError::from)?;
13282        }
13283        Ok(())
13284    }
13285
13286    fn is_empty_element(&self) -> bool {
13287        if self.def_p_pr.is_some() {
13288            return false;
13289        }
13290        if self.lvl1p_pr.is_some() {
13291            return false;
13292        }
13293        if self.lvl2p_pr.is_some() {
13294            return false;
13295        }
13296        if self.lvl3p_pr.is_some() {
13297            return false;
13298        }
13299        if self.lvl4p_pr.is_some() {
13300            return false;
13301        }
13302        if self.lvl5p_pr.is_some() {
13303            return false;
13304        }
13305        if self.lvl6p_pr.is_some() {
13306            return false;
13307        }
13308        if self.lvl7p_pr.is_some() {
13309            return false;
13310        }
13311        if self.lvl8p_pr.is_some() {
13312            return false;
13313        }
13314        if self.lvl9p_pr.is_some() {
13315            return false;
13316        }
13317        if self.ext_lst.is_some() {
13318            return false;
13319        }
13320        #[cfg(feature = "extra-children")]
13321        if !self.extra_children.is_empty() {
13322            return false;
13323        }
13324        true
13325    }
13326}
13327
13328impl ToXml for CTTextNormalAutofit {
13329    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
13330        #[allow(unused_mut)]
13331        let mut start = start;
13332        if let Some(ref val) = self.font_scale {
13333            {
13334                let s = val.to_string();
13335                start.push_attribute(("fontScale", s.as_str()));
13336            }
13337        }
13338        if let Some(ref val) = self.ln_spc_reduction {
13339            {
13340                let s = val.to_string();
13341                start.push_attribute(("lnSpcReduction", s.as_str()));
13342            }
13343        }
13344        #[cfg(feature = "extra-attrs")]
13345        for (key, value) in &self.extra_attrs {
13346            start.push_attribute((key.as_str(), value.as_str()));
13347        }
13348        start
13349    }
13350
13351    fn is_empty_element(&self) -> bool {
13352        true
13353    }
13354}
13355
13356impl ToXml for CTTextShapeAutofit {
13357    fn is_empty_element(&self) -> bool {
13358        true
13359    }
13360}
13361
13362impl ToXml for CTTextNoAutofit {
13363    fn is_empty_element(&self) -> bool {
13364        true
13365    }
13366}
13367
13368impl ToXml for EGTextAutofit {
13369    fn write_element<W: Write>(
13370        &self,
13371        _tag: &str,
13372        writer: &mut Writer<W>,
13373    ) -> Result<(), SerializeError> {
13374        match self {
13375            Self::NoAutofit(inner) => inner.write_element("a:noAutofit", writer)?,
13376            Self::NormAutofit(inner) => inner.write_element("a:normAutofit", writer)?,
13377            Self::SpAutoFit(inner) => inner.write_element("a:spAutoFit", writer)?,
13378        }
13379        Ok(())
13380    }
13381}
13382
13383impl ToXml for CTTextBodyProperties {
13384    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
13385        #[allow(unused_mut)]
13386        let mut start = start;
13387        #[cfg(feature = "dml-text")]
13388        if let Some(ref val) = self.rot {
13389            {
13390                let s = val.to_string();
13391                start.push_attribute(("rot", s.as_str()));
13392            }
13393        }
13394        #[cfg(feature = "dml-text")]
13395        if let Some(ref val) = self.spc_first_last_para {
13396            start.push_attribute(("spcFirstLastPara", if *val { "1" } else { "0" }));
13397        }
13398        #[cfg(feature = "dml-text")]
13399        if let Some(ref val) = self.vert_overflow {
13400            {
13401                let s = val.to_string();
13402                start.push_attribute(("vertOverflow", s.as_str()));
13403            }
13404        }
13405        #[cfg(feature = "dml-text")]
13406        if let Some(ref val) = self.horz_overflow {
13407            {
13408                let s = val.to_string();
13409                start.push_attribute(("horzOverflow", s.as_str()));
13410            }
13411        }
13412        #[cfg(feature = "dml-text")]
13413        if let Some(ref val) = self.vert {
13414            {
13415                let s = val.to_string();
13416                start.push_attribute(("vert", s.as_str()));
13417            }
13418        }
13419        #[cfg(feature = "dml-text")]
13420        if let Some(ref val) = self.wrap {
13421            {
13422                let s = val.to_string();
13423                start.push_attribute(("wrap", s.as_str()));
13424            }
13425        }
13426        #[cfg(feature = "dml-text")]
13427        if let Some(ref val) = self.l_ins {
13428            {
13429                let s = val.to_string();
13430                start.push_attribute(("lIns", s.as_str()));
13431            }
13432        }
13433        #[cfg(feature = "dml-text")]
13434        if let Some(ref val) = self.t_ins {
13435            {
13436                let s = val.to_string();
13437                start.push_attribute(("tIns", s.as_str()));
13438            }
13439        }
13440        #[cfg(feature = "dml-text")]
13441        if let Some(ref val) = self.r_ins {
13442            {
13443                let s = val.to_string();
13444                start.push_attribute(("rIns", s.as_str()));
13445            }
13446        }
13447        #[cfg(feature = "dml-text")]
13448        if let Some(ref val) = self.b_ins {
13449            {
13450                let s = val.to_string();
13451                start.push_attribute(("bIns", s.as_str()));
13452            }
13453        }
13454        #[cfg(feature = "dml-text")]
13455        if let Some(ref val) = self.num_col {
13456            {
13457                let s = val.to_string();
13458                start.push_attribute(("numCol", s.as_str()));
13459            }
13460        }
13461        #[cfg(feature = "dml-text")]
13462        if let Some(ref val) = self.spc_col {
13463            {
13464                let s = val.to_string();
13465                start.push_attribute(("spcCol", s.as_str()));
13466            }
13467        }
13468        #[cfg(feature = "dml-text")]
13469        if let Some(ref val) = self.rtl_col {
13470            start.push_attribute(("rtlCol", if *val { "1" } else { "0" }));
13471        }
13472        #[cfg(feature = "dml-text")]
13473        if let Some(ref val) = self.from_word_art {
13474            start.push_attribute(("fromWordArt", if *val { "1" } else { "0" }));
13475        }
13476        #[cfg(feature = "dml-text")]
13477        if let Some(ref val) = self.anchor {
13478            {
13479                let s = val.to_string();
13480                start.push_attribute(("anchor", s.as_str()));
13481            }
13482        }
13483        #[cfg(feature = "dml-text")]
13484        if let Some(ref val) = self.anchor_ctr {
13485            start.push_attribute(("anchorCtr", if *val { "1" } else { "0" }));
13486        }
13487        #[cfg(feature = "dml-text")]
13488        if let Some(ref val) = self.force_a_a {
13489            start.push_attribute(("forceAA", if *val { "1" } else { "0" }));
13490        }
13491        #[cfg(feature = "dml-text")]
13492        if let Some(ref val) = self.upright {
13493            start.push_attribute(("upright", if *val { "1" } else { "0" }));
13494        }
13495        #[cfg(feature = "dml-text")]
13496        if let Some(ref val) = self.compat_ln_spc {
13497            start.push_attribute(("compatLnSpc", if *val { "1" } else { "0" }));
13498        }
13499        #[cfg(feature = "extra-attrs")]
13500        for (key, value) in &self.extra_attrs {
13501            start.push_attribute((key.as_str(), value.as_str()));
13502        }
13503        start
13504    }
13505
13506    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
13507        #[cfg(feature = "extra-children")]
13508        let mut extra_iter = self.extra_children.iter().peekable();
13509        #[cfg(feature = "extra-children")]
13510        let mut emit_idx: usize = 0;
13511        #[cfg(feature = "extra-children")]
13512        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13513            extra_iter
13514                .next()
13515                .unwrap()
13516                .node
13517                .write_to(writer)
13518                .map_err(SerializeError::from)?;
13519        }
13520        #[cfg(feature = "dml-text")]
13521        if let Some(ref val) = self.prst_tx_warp {
13522            val.write_element("a:prstTxWarp", writer)?;
13523        }
13524        #[cfg(feature = "extra-children")]
13525        {
13526            emit_idx += 1;
13527        }
13528        #[cfg(feature = "extra-children")]
13529        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13530            extra_iter
13531                .next()
13532                .unwrap()
13533                .node
13534                .write_to(writer)
13535                .map_err(SerializeError::from)?;
13536        }
13537        if let Some(ref val) = self.text_autofit {
13538            val.write_element("", writer)?;
13539        }
13540        #[cfg(feature = "extra-children")]
13541        {
13542            emit_idx += 1;
13543        }
13544        #[cfg(feature = "extra-children")]
13545        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13546            extra_iter
13547                .next()
13548                .unwrap()
13549                .node
13550                .write_to(writer)
13551                .map_err(SerializeError::from)?;
13552        }
13553        #[cfg(feature = "dml-3d")]
13554        if let Some(ref val) = self.scene3d {
13555            val.write_element("a:scene3d", writer)?;
13556        }
13557        #[cfg(feature = "extra-children")]
13558        {
13559            emit_idx += 1;
13560        }
13561        #[cfg(feature = "extra-children")]
13562        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13563            extra_iter
13564                .next()
13565                .unwrap()
13566                .node
13567                .write_to(writer)
13568                .map_err(SerializeError::from)?;
13569        }
13570        if let Some(ref val) = self.text3_d {
13571            val.write_element("", writer)?;
13572        }
13573        #[cfg(feature = "extra-children")]
13574        {
13575            emit_idx += 1;
13576        }
13577        #[cfg(feature = "extra-children")]
13578        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13579            extra_iter
13580                .next()
13581                .unwrap()
13582                .node
13583                .write_to(writer)
13584                .map_err(SerializeError::from)?;
13585        }
13586        #[cfg(feature = "dml-extensions")]
13587        if let Some(ref val) = self.ext_lst {
13588            val.write_element("a:extLst", writer)?;
13589        }
13590        #[cfg(feature = "extra-children")]
13591        {
13592            emit_idx += 1;
13593        }
13594        #[cfg(feature = "extra-children")]
13595        for extra in extra_iter {
13596            extra.node.write_to(writer).map_err(SerializeError::from)?;
13597        }
13598        Ok(())
13599    }
13600
13601    fn is_empty_element(&self) -> bool {
13602        #[cfg(feature = "dml-text")]
13603        if self.prst_tx_warp.is_some() {
13604            return false;
13605        }
13606        if self.text_autofit.is_some() {
13607            return false;
13608        }
13609        #[cfg(feature = "dml-3d")]
13610        if self.scene3d.is_some() {
13611            return false;
13612        }
13613        if self.text3_d.is_some() {
13614            return false;
13615        }
13616        #[cfg(feature = "dml-extensions")]
13617        if self.ext_lst.is_some() {
13618            return false;
13619        }
13620        #[cfg(feature = "extra-children")]
13621        if !self.extra_children.is_empty() {
13622            return false;
13623        }
13624        true
13625    }
13626}
13627
13628impl ToXml for TextBody {
13629    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
13630        #[cfg(feature = "extra-children")]
13631        let mut extra_iter = self.extra_children.iter().peekable();
13632        #[cfg(feature = "extra-children")]
13633        let mut emit_idx: usize = 0;
13634        #[cfg(feature = "extra-children")]
13635        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13636            extra_iter
13637                .next()
13638                .unwrap()
13639                .node
13640                .write_to(writer)
13641                .map_err(SerializeError::from)?;
13642        }
13643        #[cfg(feature = "dml-text")]
13644        {
13645            let val = &self.body_pr;
13646            val.write_element("a:bodyPr", writer)?;
13647        }
13648        #[cfg(feature = "extra-children")]
13649        {
13650            emit_idx += 1;
13651        }
13652        #[cfg(feature = "extra-children")]
13653        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13654            extra_iter
13655                .next()
13656                .unwrap()
13657                .node
13658                .write_to(writer)
13659                .map_err(SerializeError::from)?;
13660        }
13661        #[cfg(feature = "dml-text")]
13662        if let Some(ref val) = self.lst_style {
13663            val.write_element("a:lstStyle", writer)?;
13664        }
13665        #[cfg(feature = "extra-children")]
13666        {
13667            emit_idx += 1;
13668        }
13669        #[cfg(feature = "dml-text")]
13670        for item in &self.p {
13671            #[cfg(feature = "extra-children")]
13672            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13673                extra_iter
13674                    .next()
13675                    .unwrap()
13676                    .node
13677                    .write_to(writer)
13678                    .map_err(SerializeError::from)?;
13679            }
13680            item.write_element("a:p", writer)?;
13681            #[cfg(feature = "extra-children")]
13682            {
13683                emit_idx += 1;
13684            }
13685        }
13686        #[cfg(feature = "extra-children")]
13687        for extra in extra_iter {
13688            extra.node.write_to(writer).map_err(SerializeError::from)?;
13689        }
13690        Ok(())
13691    }
13692
13693    fn is_empty_element(&self) -> bool {
13694        #[cfg(feature = "dml-text")]
13695        return false;
13696        #[cfg(feature = "dml-text")]
13697        if self.lst_style.is_some() {
13698            return false;
13699        }
13700        #[cfg(feature = "dml-text")]
13701        if !self.p.is_empty() {
13702            return false;
13703        }
13704        #[cfg(feature = "extra-children")]
13705        if !self.extra_children.is_empty() {
13706            return false;
13707        }
13708        true
13709    }
13710}
13711
13712impl ToXml for CTTextBulletColorFollowText {
13713    fn is_empty_element(&self) -> bool {
13714        true
13715    }
13716}
13717
13718impl ToXml for EGTextBulletColor {
13719    fn write_element<W: Write>(
13720        &self,
13721        _tag: &str,
13722        writer: &mut Writer<W>,
13723    ) -> Result<(), SerializeError> {
13724        match self {
13725            Self::BuClrTx(inner) => inner.write_element("a:buClrTx", writer)?,
13726            Self::BuClr(inner) => inner.write_element("a:buClr", writer)?,
13727        }
13728        Ok(())
13729    }
13730}
13731
13732impl ToXml for CTTextBulletSizeFollowText {
13733    fn is_empty_element(&self) -> bool {
13734        true
13735    }
13736}
13737
13738impl ToXml for TextBulletSizePercentElement {
13739    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
13740        #[allow(unused_mut)]
13741        let mut start = start;
13742        {
13743            let val = &self.value;
13744            start.push_attribute(("val", val.as_str()));
13745        }
13746        #[cfg(feature = "extra-attrs")]
13747        for (key, value) in &self.extra_attrs {
13748            start.push_attribute((key.as_str(), value.as_str()));
13749        }
13750        start
13751    }
13752
13753    fn is_empty_element(&self) -> bool {
13754        true
13755    }
13756}
13757
13758impl ToXml for CTTextBulletSizePoint {
13759    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
13760        #[allow(unused_mut)]
13761        let mut start = start;
13762        {
13763            let val = &self.value;
13764            {
13765                let s = val.to_string();
13766                start.push_attribute(("val", s.as_str()));
13767            }
13768        }
13769        #[cfg(feature = "extra-attrs")]
13770        for (key, value) in &self.extra_attrs {
13771            start.push_attribute((key.as_str(), value.as_str()));
13772        }
13773        start
13774    }
13775
13776    fn is_empty_element(&self) -> bool {
13777        true
13778    }
13779}
13780
13781impl ToXml for EGTextBulletSize {
13782    fn write_element<W: Write>(
13783        &self,
13784        _tag: &str,
13785        writer: &mut Writer<W>,
13786    ) -> Result<(), SerializeError> {
13787        match self {
13788            Self::BuSzTx(inner) => inner.write_element("a:buSzTx", writer)?,
13789            Self::BuSzPct(inner) => inner.write_element("a:buSzPct", writer)?,
13790            Self::BuSzPts(inner) => inner.write_element("a:buSzPts", writer)?,
13791        }
13792        Ok(())
13793    }
13794}
13795
13796impl ToXml for CTTextBulletTypefaceFollowText {
13797    fn is_empty_element(&self) -> bool {
13798        true
13799    }
13800}
13801
13802impl ToXml for EGTextBulletTypeface {
13803    fn write_element<W: Write>(
13804        &self,
13805        _tag: &str,
13806        writer: &mut Writer<W>,
13807    ) -> Result<(), SerializeError> {
13808        match self {
13809            Self::BuFontTx(inner) => inner.write_element("a:buFontTx", writer)?,
13810            Self::BuFont(inner) => inner.write_element("a:buFont", writer)?,
13811        }
13812        Ok(())
13813    }
13814}
13815
13816impl ToXml for CTTextAutonumberBullet {
13817    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
13818        #[allow(unused_mut)]
13819        let mut start = start;
13820        {
13821            let val = &self.r#type;
13822            {
13823                let s = val.to_string();
13824                start.push_attribute(("type", s.as_str()));
13825            }
13826        }
13827        if let Some(ref val) = self.start_at {
13828            {
13829                let s = val.to_string();
13830                start.push_attribute(("startAt", s.as_str()));
13831            }
13832        }
13833        #[cfg(feature = "extra-attrs")]
13834        for (key, value) in &self.extra_attrs {
13835            start.push_attribute((key.as_str(), value.as_str()));
13836        }
13837        start
13838    }
13839
13840    fn is_empty_element(&self) -> bool {
13841        true
13842    }
13843}
13844
13845impl ToXml for CTTextCharBullet {
13846    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
13847        #[allow(unused_mut)]
13848        let mut start = start;
13849        {
13850            let val = &self.char;
13851            start.push_attribute(("char", val.as_str()));
13852        }
13853        #[cfg(feature = "extra-attrs")]
13854        for (key, value) in &self.extra_attrs {
13855            start.push_attribute((key.as_str(), value.as_str()));
13856        }
13857        start
13858    }
13859
13860    fn is_empty_element(&self) -> bool {
13861        true
13862    }
13863}
13864
13865impl ToXml for CTTextNoBullet {
13866    fn is_empty_element(&self) -> bool {
13867        true
13868    }
13869}
13870
13871impl ToXml for EGTextBullet {
13872    fn write_element<W: Write>(
13873        &self,
13874        _tag: &str,
13875        writer: &mut Writer<W>,
13876    ) -> Result<(), SerializeError> {
13877        match self {
13878            Self::BuNone(inner) => inner.write_element("a:buNone", writer)?,
13879            Self::BuAutoNum(inner) => inner.write_element("a:buAutoNum", writer)?,
13880            Self::BuChar(inner) => inner.write_element("a:buChar", writer)?,
13881            Self::BuBlip(inner) => inner.write_element("a:buBlip", writer)?,
13882        }
13883        Ok(())
13884    }
13885}
13886
13887impl ToXml for TextFont {
13888    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
13889        #[allow(unused_mut)]
13890        let mut start = start;
13891        #[cfg(feature = "dml-text")]
13892        {
13893            let val = &self.typeface;
13894            start.push_attribute(("typeface", val.as_str()));
13895        }
13896        #[cfg(feature = "dml-text")]
13897        if let Some(ref val) = self.panose {
13898            {
13899                let hex = encode_hex(val);
13900                start.push_attribute(("panose", hex.as_str()));
13901            }
13902        }
13903        #[cfg(feature = "dml-text")]
13904        if let Some(ref val) = self.pitch_family {
13905            {
13906                let s = val.to_string();
13907                start.push_attribute(("pitchFamily", s.as_str()));
13908            }
13909        }
13910        #[cfg(feature = "dml-text")]
13911        if let Some(ref val) = self.charset {
13912            {
13913                let s = val.to_string();
13914                start.push_attribute(("charset", s.as_str()));
13915            }
13916        }
13917        #[cfg(feature = "extra-attrs")]
13918        for (key, value) in &self.extra_attrs {
13919            start.push_attribute((key.as_str(), value.as_str()));
13920        }
13921        start
13922    }
13923
13924    fn is_empty_element(&self) -> bool {
13925        true
13926    }
13927}
13928
13929impl ToXml for CTTextUnderlineLineFollowText {
13930    fn is_empty_element(&self) -> bool {
13931        true
13932    }
13933}
13934
13935impl ToXml for CTTextUnderlineFillFollowText {
13936    fn is_empty_element(&self) -> bool {
13937        true
13938    }
13939}
13940
13941impl ToXml for CTTextUnderlineFillGroupWrapper {
13942    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
13943        #[cfg(feature = "extra-children")]
13944        let mut extra_iter = self.extra_children.iter().peekable();
13945        #[cfg(feature = "extra-children")]
13946        let mut emit_idx: usize = 0;
13947        #[cfg(feature = "extra-children")]
13948        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
13949            extra_iter
13950                .next()
13951                .unwrap()
13952                .node
13953                .write_to(writer)
13954                .map_err(SerializeError::from)?;
13955        }
13956        if let Some(ref val) = self.fill_properties {
13957            val.write_element("", writer)?;
13958        }
13959        #[cfg(feature = "extra-children")]
13960        {
13961            emit_idx += 1;
13962        }
13963        #[cfg(feature = "extra-children")]
13964        for extra in extra_iter {
13965            extra.node.write_to(writer).map_err(SerializeError::from)?;
13966        }
13967        Ok(())
13968    }
13969
13970    fn is_empty_element(&self) -> bool {
13971        false
13972    }
13973}
13974
13975impl ToXml for EGTextUnderlineLine {
13976    fn write_element<W: Write>(
13977        &self,
13978        _tag: &str,
13979        writer: &mut Writer<W>,
13980    ) -> Result<(), SerializeError> {
13981        match self {
13982            Self::ULnTx(inner) => inner.write_element("a:uLnTx", writer)?,
13983            Self::ULn(inner) => inner.write_element("a:uLn", writer)?,
13984        }
13985        Ok(())
13986    }
13987}
13988
13989impl ToXml for EGTextUnderlineFill {
13990    fn write_element<W: Write>(
13991        &self,
13992        _tag: &str,
13993        writer: &mut Writer<W>,
13994    ) -> Result<(), SerializeError> {
13995        match self {
13996            Self::UFillTx(inner) => inner.write_element("a:uFillTx", writer)?,
13997            Self::UFill(inner) => inner.write_element("a:uFill", writer)?,
13998        }
13999        Ok(())
14000    }
14001}
14002
14003impl ToXml for TextCharacterProperties {
14004    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
14005        #[allow(unused_mut)]
14006        let mut start = start;
14007        #[cfg(feature = "dml-text")]
14008        if let Some(ref val) = self.kumimoji {
14009            start.push_attribute(("kumimoji", if *val { "1" } else { "0" }));
14010        }
14011        #[cfg(feature = "dml-text")]
14012        if let Some(ref val) = self.lang {
14013            start.push_attribute(("lang", val.as_str()));
14014        }
14015        #[cfg(feature = "dml-text")]
14016        if let Some(ref val) = self.alt_lang {
14017            start.push_attribute(("altLang", val.as_str()));
14018        }
14019        #[cfg(feature = "dml-text")]
14020        if let Some(ref val) = self.sz {
14021            {
14022                let s = val.to_string();
14023                start.push_attribute(("sz", s.as_str()));
14024            }
14025        }
14026        #[cfg(feature = "dml-text")]
14027        if let Some(ref val) = self.b {
14028            start.push_attribute(("b", if *val { "1" } else { "0" }));
14029        }
14030        #[cfg(feature = "dml-text")]
14031        if let Some(ref val) = self.i {
14032            start.push_attribute(("i", if *val { "1" } else { "0" }));
14033        }
14034        #[cfg(feature = "dml-text")]
14035        if let Some(ref val) = self.u {
14036            {
14037                let s = val.to_string();
14038                start.push_attribute(("u", s.as_str()));
14039            }
14040        }
14041        #[cfg(feature = "dml-text")]
14042        if let Some(ref val) = self.strike {
14043            {
14044                let s = val.to_string();
14045                start.push_attribute(("strike", s.as_str()));
14046            }
14047        }
14048        #[cfg(feature = "dml-text")]
14049        if let Some(ref val) = self.kern {
14050            {
14051                let s = val.to_string();
14052                start.push_attribute(("kern", s.as_str()));
14053            }
14054        }
14055        #[cfg(feature = "dml-text")]
14056        if let Some(ref val) = self.cap {
14057            {
14058                let s = val.to_string();
14059                start.push_attribute(("cap", s.as_str()));
14060            }
14061        }
14062        #[cfg(feature = "dml-text")]
14063        if let Some(ref val) = self.spc {
14064            {
14065                let s = val.to_string();
14066                start.push_attribute(("spc", s.as_str()));
14067            }
14068        }
14069        #[cfg(feature = "dml-text")]
14070        if let Some(ref val) = self.normalize_h {
14071            start.push_attribute(("normalizeH", if *val { "1" } else { "0" }));
14072        }
14073        #[cfg(feature = "dml-text")]
14074        if let Some(ref val) = self.baseline {
14075            {
14076                let s = val.to_string();
14077                start.push_attribute(("baseline", s.as_str()));
14078            }
14079        }
14080        #[cfg(feature = "dml-text")]
14081        if let Some(ref val) = self.no_proof {
14082            start.push_attribute(("noProof", if *val { "1" } else { "0" }));
14083        }
14084        #[cfg(feature = "dml-text")]
14085        if let Some(ref val) = self.dirty {
14086            start.push_attribute(("dirty", if *val { "1" } else { "0" }));
14087        }
14088        #[cfg(feature = "dml-text")]
14089        if let Some(ref val) = self.err {
14090            start.push_attribute(("err", if *val { "1" } else { "0" }));
14091        }
14092        #[cfg(feature = "dml-text")]
14093        if let Some(ref val) = self.smt_clean {
14094            start.push_attribute(("smtClean", if *val { "1" } else { "0" }));
14095        }
14096        #[cfg(feature = "dml-text")]
14097        if let Some(ref val) = self.smt_id {
14098            {
14099                let s = val.to_string();
14100                start.push_attribute(("smtId", s.as_str()));
14101            }
14102        }
14103        #[cfg(feature = "dml-text")]
14104        if let Some(ref val) = self.bmk {
14105            start.push_attribute(("bmk", val.as_str()));
14106        }
14107        #[cfg(feature = "extra-attrs")]
14108        for (key, value) in &self.extra_attrs {
14109            start.push_attribute((key.as_str(), value.as_str()));
14110        }
14111        start
14112    }
14113
14114    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
14115        #[cfg(feature = "extra-children")]
14116        let mut extra_iter = self.extra_children.iter().peekable();
14117        #[cfg(feature = "extra-children")]
14118        let mut emit_idx: usize = 0;
14119        #[cfg(feature = "extra-children")]
14120        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14121            extra_iter
14122                .next()
14123                .unwrap()
14124                .node
14125                .write_to(writer)
14126                .map_err(SerializeError::from)?;
14127        }
14128        #[cfg(feature = "dml-text")]
14129        if let Some(ref val) = self.line {
14130            val.write_element("a:ln", writer)?;
14131        }
14132        #[cfg(feature = "extra-children")]
14133        {
14134            emit_idx += 1;
14135        }
14136        #[cfg(feature = "extra-children")]
14137        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14138            extra_iter
14139                .next()
14140                .unwrap()
14141                .node
14142                .write_to(writer)
14143                .map_err(SerializeError::from)?;
14144        }
14145        if let Some(ref val) = self.fill_properties {
14146            val.write_element("", writer)?;
14147        }
14148        #[cfg(feature = "extra-children")]
14149        {
14150            emit_idx += 1;
14151        }
14152        #[cfg(feature = "extra-children")]
14153        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14154            extra_iter
14155                .next()
14156                .unwrap()
14157                .node
14158                .write_to(writer)
14159                .map_err(SerializeError::from)?;
14160        }
14161        if let Some(ref val) = self.effect_properties {
14162            val.write_element("", writer)?;
14163        }
14164        #[cfg(feature = "extra-children")]
14165        {
14166            emit_idx += 1;
14167        }
14168        #[cfg(feature = "extra-children")]
14169        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14170            extra_iter
14171                .next()
14172                .unwrap()
14173                .node
14174                .write_to(writer)
14175                .map_err(SerializeError::from)?;
14176        }
14177        #[cfg(feature = "dml-text")]
14178        if let Some(ref val) = self.highlight {
14179            val.write_element("a:highlight", writer)?;
14180        }
14181        #[cfg(feature = "extra-children")]
14182        {
14183            emit_idx += 1;
14184        }
14185        #[cfg(feature = "extra-children")]
14186        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14187            extra_iter
14188                .next()
14189                .unwrap()
14190                .node
14191                .write_to(writer)
14192                .map_err(SerializeError::from)?;
14193        }
14194        if let Some(ref val) = self.text_underline_line {
14195            val.write_element("", writer)?;
14196        }
14197        #[cfg(feature = "extra-children")]
14198        {
14199            emit_idx += 1;
14200        }
14201        #[cfg(feature = "extra-children")]
14202        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14203            extra_iter
14204                .next()
14205                .unwrap()
14206                .node
14207                .write_to(writer)
14208                .map_err(SerializeError::from)?;
14209        }
14210        if let Some(ref val) = self.text_underline_fill {
14211            val.write_element("", writer)?;
14212        }
14213        #[cfg(feature = "extra-children")]
14214        {
14215            emit_idx += 1;
14216        }
14217        #[cfg(feature = "extra-children")]
14218        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14219            extra_iter
14220                .next()
14221                .unwrap()
14222                .node
14223                .write_to(writer)
14224                .map_err(SerializeError::from)?;
14225        }
14226        #[cfg(feature = "dml-text")]
14227        if let Some(ref val) = self.latin {
14228            val.write_element("a:latin", writer)?;
14229        }
14230        #[cfg(feature = "extra-children")]
14231        {
14232            emit_idx += 1;
14233        }
14234        #[cfg(feature = "extra-children")]
14235        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14236            extra_iter
14237                .next()
14238                .unwrap()
14239                .node
14240                .write_to(writer)
14241                .map_err(SerializeError::from)?;
14242        }
14243        #[cfg(feature = "dml-text")]
14244        if let Some(ref val) = self.ea {
14245            val.write_element("a:ea", writer)?;
14246        }
14247        #[cfg(feature = "extra-children")]
14248        {
14249            emit_idx += 1;
14250        }
14251        #[cfg(feature = "extra-children")]
14252        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14253            extra_iter
14254                .next()
14255                .unwrap()
14256                .node
14257                .write_to(writer)
14258                .map_err(SerializeError::from)?;
14259        }
14260        #[cfg(feature = "dml-text")]
14261        if let Some(ref val) = self.cs {
14262            val.write_element("a:cs", writer)?;
14263        }
14264        #[cfg(feature = "extra-children")]
14265        {
14266            emit_idx += 1;
14267        }
14268        #[cfg(feature = "extra-children")]
14269        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14270            extra_iter
14271                .next()
14272                .unwrap()
14273                .node
14274                .write_to(writer)
14275                .map_err(SerializeError::from)?;
14276        }
14277        #[cfg(feature = "dml-text")]
14278        if let Some(ref val) = self.sym {
14279            val.write_element("a:sym", writer)?;
14280        }
14281        #[cfg(feature = "extra-children")]
14282        {
14283            emit_idx += 1;
14284        }
14285        #[cfg(feature = "extra-children")]
14286        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14287            extra_iter
14288                .next()
14289                .unwrap()
14290                .node
14291                .write_to(writer)
14292                .map_err(SerializeError::from)?;
14293        }
14294        #[cfg(feature = "dml-text")]
14295        if let Some(ref val) = self.hlink_click {
14296            val.write_element("a:hlinkClick", writer)?;
14297        }
14298        #[cfg(feature = "extra-children")]
14299        {
14300            emit_idx += 1;
14301        }
14302        #[cfg(feature = "extra-children")]
14303        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14304            extra_iter
14305                .next()
14306                .unwrap()
14307                .node
14308                .write_to(writer)
14309                .map_err(SerializeError::from)?;
14310        }
14311        #[cfg(feature = "dml-text")]
14312        if let Some(ref val) = self.hlink_mouse_over {
14313            val.write_element("a:hlinkMouseOver", writer)?;
14314        }
14315        #[cfg(feature = "extra-children")]
14316        {
14317            emit_idx += 1;
14318        }
14319        #[cfg(feature = "extra-children")]
14320        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14321            extra_iter
14322                .next()
14323                .unwrap()
14324                .node
14325                .write_to(writer)
14326                .map_err(SerializeError::from)?;
14327        }
14328        #[cfg(feature = "dml-text")]
14329        if let Some(ref val) = self.rtl {
14330            val.write_element("a:rtl", writer)?;
14331        }
14332        #[cfg(feature = "extra-children")]
14333        {
14334            emit_idx += 1;
14335        }
14336        #[cfg(feature = "extra-children")]
14337        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14338            extra_iter
14339                .next()
14340                .unwrap()
14341                .node
14342                .write_to(writer)
14343                .map_err(SerializeError::from)?;
14344        }
14345        #[cfg(feature = "dml-extensions")]
14346        if let Some(ref val) = self.ext_lst {
14347            val.write_element("a:extLst", writer)?;
14348        }
14349        #[cfg(feature = "extra-children")]
14350        {
14351            emit_idx += 1;
14352        }
14353        #[cfg(feature = "extra-children")]
14354        for extra in extra_iter {
14355            extra.node.write_to(writer).map_err(SerializeError::from)?;
14356        }
14357        Ok(())
14358    }
14359
14360    fn is_empty_element(&self) -> bool {
14361        #[cfg(feature = "dml-text")]
14362        if self.line.is_some() {
14363            return false;
14364        }
14365        if self.fill_properties.is_some() {
14366            return false;
14367        }
14368        if self.effect_properties.is_some() {
14369            return false;
14370        }
14371        #[cfg(feature = "dml-text")]
14372        if self.highlight.is_some() {
14373            return false;
14374        }
14375        if self.text_underline_line.is_some() {
14376            return false;
14377        }
14378        if self.text_underline_fill.is_some() {
14379            return false;
14380        }
14381        #[cfg(feature = "dml-text")]
14382        if self.latin.is_some() {
14383            return false;
14384        }
14385        #[cfg(feature = "dml-text")]
14386        if self.ea.is_some() {
14387            return false;
14388        }
14389        #[cfg(feature = "dml-text")]
14390        if self.cs.is_some() {
14391            return false;
14392        }
14393        #[cfg(feature = "dml-text")]
14394        if self.sym.is_some() {
14395            return false;
14396        }
14397        #[cfg(feature = "dml-text")]
14398        if self.hlink_click.is_some() {
14399            return false;
14400        }
14401        #[cfg(feature = "dml-text")]
14402        if self.hlink_mouse_over.is_some() {
14403            return false;
14404        }
14405        #[cfg(feature = "dml-text")]
14406        if self.rtl.is_some() {
14407            return false;
14408        }
14409        #[cfg(feature = "dml-extensions")]
14410        if self.ext_lst.is_some() {
14411            return false;
14412        }
14413        #[cfg(feature = "extra-children")]
14414        if !self.extra_children.is_empty() {
14415            return false;
14416        }
14417        true
14418    }
14419}
14420
14421impl ToXml for CTBoolean {
14422    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
14423        #[allow(unused_mut)]
14424        let mut start = start;
14425        if let Some(ref val) = self.value {
14426            {
14427                let s = val.to_string();
14428                start.push_attribute(("val", s.as_str()));
14429            }
14430        }
14431        #[cfg(feature = "extra-attrs")]
14432        for (key, value) in &self.extra_attrs {
14433            start.push_attribute((key.as_str(), value.as_str()));
14434        }
14435        start
14436    }
14437
14438    fn is_empty_element(&self) -> bool {
14439        true
14440    }
14441}
14442
14443impl ToXml for CTTextSpacingPercent {
14444    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
14445        #[allow(unused_mut)]
14446        let mut start = start;
14447        {
14448            let val = &self.value;
14449            {
14450                let s = val.to_string();
14451                start.push_attribute(("val", s.as_str()));
14452            }
14453        }
14454        #[cfg(feature = "extra-attrs")]
14455        for (key, value) in &self.extra_attrs {
14456            start.push_attribute((key.as_str(), value.as_str()));
14457        }
14458        start
14459    }
14460
14461    fn is_empty_element(&self) -> bool {
14462        true
14463    }
14464}
14465
14466impl ToXml for CTTextSpacingPoint {
14467    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
14468        #[allow(unused_mut)]
14469        let mut start = start;
14470        {
14471            let val = &self.value;
14472            {
14473                let s = val.to_string();
14474                start.push_attribute(("val", s.as_str()));
14475            }
14476        }
14477        #[cfg(feature = "extra-attrs")]
14478        for (key, value) in &self.extra_attrs {
14479            start.push_attribute((key.as_str(), value.as_str()));
14480        }
14481        start
14482    }
14483
14484    fn is_empty_element(&self) -> bool {
14485        true
14486    }
14487}
14488
14489impl ToXml for CTTextTabStop {
14490    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
14491        #[allow(unused_mut)]
14492        let mut start = start;
14493        if let Some(ref val) = self.pos {
14494            {
14495                let s = val.to_string();
14496                start.push_attribute(("pos", s.as_str()));
14497            }
14498        }
14499        if let Some(ref val) = self.algn {
14500            {
14501                let s = val.to_string();
14502                start.push_attribute(("algn", s.as_str()));
14503            }
14504        }
14505        #[cfg(feature = "extra-attrs")]
14506        for (key, value) in &self.extra_attrs {
14507            start.push_attribute((key.as_str(), value.as_str()));
14508        }
14509        start
14510    }
14511
14512    fn is_empty_element(&self) -> bool {
14513        true
14514    }
14515}
14516
14517impl ToXml for CTTextTabStopList {
14518    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
14519        #[cfg(feature = "extra-children")]
14520        let mut extra_iter = self.extra_children.iter().peekable();
14521        #[cfg(feature = "extra-children")]
14522        let mut emit_idx: usize = 0;
14523        for item in &self.tab {
14524            #[cfg(feature = "extra-children")]
14525            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14526                extra_iter
14527                    .next()
14528                    .unwrap()
14529                    .node
14530                    .write_to(writer)
14531                    .map_err(SerializeError::from)?;
14532            }
14533            item.write_element("a:tab", writer)?;
14534            #[cfg(feature = "extra-children")]
14535            {
14536                emit_idx += 1;
14537            }
14538        }
14539        #[cfg(feature = "extra-children")]
14540        for extra in extra_iter {
14541            extra.node.write_to(writer).map_err(SerializeError::from)?;
14542        }
14543        Ok(())
14544    }
14545
14546    fn is_empty_element(&self) -> bool {
14547        if !self.tab.is_empty() {
14548            return false;
14549        }
14550        #[cfg(feature = "extra-children")]
14551        if !self.extra_children.is_empty() {
14552            return false;
14553        }
14554        true
14555    }
14556}
14557
14558impl ToXml for CTTextLineBreak {
14559    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
14560        #[cfg(feature = "extra-children")]
14561        let mut extra_iter = self.extra_children.iter().peekable();
14562        #[cfg(feature = "extra-children")]
14563        let mut emit_idx: usize = 0;
14564        #[cfg(feature = "extra-children")]
14565        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14566            extra_iter
14567                .next()
14568                .unwrap()
14569                .node
14570                .write_to(writer)
14571                .map_err(SerializeError::from)?;
14572        }
14573        if let Some(ref val) = self.r_pr {
14574            val.write_element("a:rPr", writer)?;
14575        }
14576        #[cfg(feature = "extra-children")]
14577        {
14578            emit_idx += 1;
14579        }
14580        #[cfg(feature = "extra-children")]
14581        for extra in extra_iter {
14582            extra.node.write_to(writer).map_err(SerializeError::from)?;
14583        }
14584        Ok(())
14585    }
14586
14587    fn is_empty_element(&self) -> bool {
14588        if self.r_pr.is_some() {
14589            return false;
14590        }
14591        #[cfg(feature = "extra-children")]
14592        if !self.extra_children.is_empty() {
14593            return false;
14594        }
14595        true
14596    }
14597}
14598
14599impl ToXml for CTTextSpacing {
14600    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
14601        #[cfg(feature = "extra-children")]
14602        let mut extra_iter = self.extra_children.iter().peekable();
14603        #[cfg(feature = "extra-children")]
14604        let mut emit_idx: usize = 0;
14605        #[cfg(feature = "extra-children")]
14606        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14607            extra_iter
14608                .next()
14609                .unwrap()
14610                .node
14611                .write_to(writer)
14612                .map_err(SerializeError::from)?;
14613        }
14614        if let Some(ref val) = self.spc_pct {
14615            val.write_element("a:spcPct", writer)?;
14616        }
14617        #[cfg(feature = "extra-children")]
14618        {
14619            emit_idx += 1;
14620        }
14621        #[cfg(feature = "extra-children")]
14622        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14623            extra_iter
14624                .next()
14625                .unwrap()
14626                .node
14627                .write_to(writer)
14628                .map_err(SerializeError::from)?;
14629        }
14630        if let Some(ref val) = self.spc_pts {
14631            val.write_element("a:spcPts", writer)?;
14632        }
14633        #[cfg(feature = "extra-children")]
14634        {
14635            emit_idx += 1;
14636        }
14637        #[cfg(feature = "extra-children")]
14638        for extra in extra_iter {
14639            extra.node.write_to(writer).map_err(SerializeError::from)?;
14640        }
14641        Ok(())
14642    }
14643
14644    fn is_empty_element(&self) -> bool {
14645        if self.spc_pct.is_some() {
14646            return false;
14647        }
14648        if self.spc_pts.is_some() {
14649            return false;
14650        }
14651        #[cfg(feature = "extra-children")]
14652        if !self.extra_children.is_empty() {
14653            return false;
14654        }
14655        true
14656    }
14657}
14658
14659impl ToXml for TextParagraphProperties {
14660    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
14661        #[allow(unused_mut)]
14662        let mut start = start;
14663        #[cfg(feature = "dml-text")]
14664        if let Some(ref val) = self.mar_l {
14665            {
14666                let s = val.to_string();
14667                start.push_attribute(("marL", s.as_str()));
14668            }
14669        }
14670        #[cfg(feature = "dml-text")]
14671        if let Some(ref val) = self.mar_r {
14672            {
14673                let s = val.to_string();
14674                start.push_attribute(("marR", s.as_str()));
14675            }
14676        }
14677        #[cfg(feature = "dml-text")]
14678        if let Some(ref val) = self.lvl {
14679            {
14680                let s = val.to_string();
14681                start.push_attribute(("lvl", s.as_str()));
14682            }
14683        }
14684        #[cfg(feature = "dml-text")]
14685        if let Some(ref val) = self.indent {
14686            {
14687                let s = val.to_string();
14688                start.push_attribute(("indent", s.as_str()));
14689            }
14690        }
14691        #[cfg(feature = "dml-text")]
14692        if let Some(ref val) = self.algn {
14693            {
14694                let s = val.to_string();
14695                start.push_attribute(("algn", s.as_str()));
14696            }
14697        }
14698        #[cfg(feature = "dml-text")]
14699        if let Some(ref val) = self.def_tab_sz {
14700            {
14701                let s = val.to_string();
14702                start.push_attribute(("defTabSz", s.as_str()));
14703            }
14704        }
14705        #[cfg(feature = "dml-text")]
14706        if let Some(ref val) = self.rtl {
14707            start.push_attribute(("rtl", if *val { "1" } else { "0" }));
14708        }
14709        #[cfg(feature = "dml-text")]
14710        if let Some(ref val) = self.ea_ln_brk {
14711            start.push_attribute(("eaLnBrk", if *val { "1" } else { "0" }));
14712        }
14713        #[cfg(feature = "dml-text")]
14714        if let Some(ref val) = self.font_algn {
14715            {
14716                let s = val.to_string();
14717                start.push_attribute(("fontAlgn", s.as_str()));
14718            }
14719        }
14720        #[cfg(feature = "dml-text")]
14721        if let Some(ref val) = self.latin_ln_brk {
14722            start.push_attribute(("latinLnBrk", if *val { "1" } else { "0" }));
14723        }
14724        #[cfg(feature = "dml-text")]
14725        if let Some(ref val) = self.hanging_punct {
14726            start.push_attribute(("hangingPunct", if *val { "1" } else { "0" }));
14727        }
14728        #[cfg(feature = "extra-attrs")]
14729        for (key, value) in &self.extra_attrs {
14730            start.push_attribute((key.as_str(), value.as_str()));
14731        }
14732        start
14733    }
14734
14735    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
14736        #[cfg(feature = "extra-children")]
14737        let mut extra_iter = self.extra_children.iter().peekable();
14738        #[cfg(feature = "extra-children")]
14739        let mut emit_idx: usize = 0;
14740        #[cfg(feature = "extra-children")]
14741        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14742            extra_iter
14743                .next()
14744                .unwrap()
14745                .node
14746                .write_to(writer)
14747                .map_err(SerializeError::from)?;
14748        }
14749        #[cfg(feature = "dml-text")]
14750        if let Some(ref val) = self.ln_spc {
14751            val.write_element("a:lnSpc", writer)?;
14752        }
14753        #[cfg(feature = "extra-children")]
14754        {
14755            emit_idx += 1;
14756        }
14757        #[cfg(feature = "extra-children")]
14758        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14759            extra_iter
14760                .next()
14761                .unwrap()
14762                .node
14763                .write_to(writer)
14764                .map_err(SerializeError::from)?;
14765        }
14766        #[cfg(feature = "dml-text")]
14767        if let Some(ref val) = self.spc_bef {
14768            val.write_element("a:spcBef", writer)?;
14769        }
14770        #[cfg(feature = "extra-children")]
14771        {
14772            emit_idx += 1;
14773        }
14774        #[cfg(feature = "extra-children")]
14775        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14776            extra_iter
14777                .next()
14778                .unwrap()
14779                .node
14780                .write_to(writer)
14781                .map_err(SerializeError::from)?;
14782        }
14783        #[cfg(feature = "dml-text")]
14784        if let Some(ref val) = self.spc_aft {
14785            val.write_element("a:spcAft", writer)?;
14786        }
14787        #[cfg(feature = "extra-children")]
14788        {
14789            emit_idx += 1;
14790        }
14791        #[cfg(feature = "extra-children")]
14792        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14793            extra_iter
14794                .next()
14795                .unwrap()
14796                .node
14797                .write_to(writer)
14798                .map_err(SerializeError::from)?;
14799        }
14800        if let Some(ref val) = self.text_bullet_color {
14801            val.write_element("", writer)?;
14802        }
14803        #[cfg(feature = "extra-children")]
14804        {
14805            emit_idx += 1;
14806        }
14807        #[cfg(feature = "extra-children")]
14808        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14809            extra_iter
14810                .next()
14811                .unwrap()
14812                .node
14813                .write_to(writer)
14814                .map_err(SerializeError::from)?;
14815        }
14816        if let Some(ref val) = self.text_bullet_size {
14817            val.write_element("", writer)?;
14818        }
14819        #[cfg(feature = "extra-children")]
14820        {
14821            emit_idx += 1;
14822        }
14823        #[cfg(feature = "extra-children")]
14824        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14825            extra_iter
14826                .next()
14827                .unwrap()
14828                .node
14829                .write_to(writer)
14830                .map_err(SerializeError::from)?;
14831        }
14832        if let Some(ref val) = self.text_bullet_typeface {
14833            val.write_element("", writer)?;
14834        }
14835        #[cfg(feature = "extra-children")]
14836        {
14837            emit_idx += 1;
14838        }
14839        #[cfg(feature = "extra-children")]
14840        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14841            extra_iter
14842                .next()
14843                .unwrap()
14844                .node
14845                .write_to(writer)
14846                .map_err(SerializeError::from)?;
14847        }
14848        if let Some(ref val) = self.text_bullet {
14849            val.write_element("", writer)?;
14850        }
14851        #[cfg(feature = "extra-children")]
14852        {
14853            emit_idx += 1;
14854        }
14855        #[cfg(feature = "extra-children")]
14856        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14857            extra_iter
14858                .next()
14859                .unwrap()
14860                .node
14861                .write_to(writer)
14862                .map_err(SerializeError::from)?;
14863        }
14864        #[cfg(feature = "dml-text")]
14865        if let Some(ref val) = self.tab_lst {
14866            val.write_element("a:tabLst", writer)?;
14867        }
14868        #[cfg(feature = "extra-children")]
14869        {
14870            emit_idx += 1;
14871        }
14872        #[cfg(feature = "extra-children")]
14873        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14874            extra_iter
14875                .next()
14876                .unwrap()
14877                .node
14878                .write_to(writer)
14879                .map_err(SerializeError::from)?;
14880        }
14881        #[cfg(feature = "dml-text")]
14882        if let Some(ref val) = self.def_r_pr {
14883            val.write_element("a:defRPr", writer)?;
14884        }
14885        #[cfg(feature = "extra-children")]
14886        {
14887            emit_idx += 1;
14888        }
14889        #[cfg(feature = "extra-children")]
14890        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14891            extra_iter
14892                .next()
14893                .unwrap()
14894                .node
14895                .write_to(writer)
14896                .map_err(SerializeError::from)?;
14897        }
14898        #[cfg(feature = "dml-extensions")]
14899        if let Some(ref val) = self.ext_lst {
14900            val.write_element("a:extLst", writer)?;
14901        }
14902        #[cfg(feature = "extra-children")]
14903        {
14904            emit_idx += 1;
14905        }
14906        #[cfg(feature = "extra-children")]
14907        for extra in extra_iter {
14908            extra.node.write_to(writer).map_err(SerializeError::from)?;
14909        }
14910        Ok(())
14911    }
14912
14913    fn is_empty_element(&self) -> bool {
14914        #[cfg(feature = "dml-text")]
14915        if self.ln_spc.is_some() {
14916            return false;
14917        }
14918        #[cfg(feature = "dml-text")]
14919        if self.spc_bef.is_some() {
14920            return false;
14921        }
14922        #[cfg(feature = "dml-text")]
14923        if self.spc_aft.is_some() {
14924            return false;
14925        }
14926        if self.text_bullet_color.is_some() {
14927            return false;
14928        }
14929        if self.text_bullet_size.is_some() {
14930            return false;
14931        }
14932        if self.text_bullet_typeface.is_some() {
14933            return false;
14934        }
14935        if self.text_bullet.is_some() {
14936            return false;
14937        }
14938        #[cfg(feature = "dml-text")]
14939        if self.tab_lst.is_some() {
14940            return false;
14941        }
14942        #[cfg(feature = "dml-text")]
14943        if self.def_r_pr.is_some() {
14944            return false;
14945        }
14946        #[cfg(feature = "dml-extensions")]
14947        if self.ext_lst.is_some() {
14948            return false;
14949        }
14950        #[cfg(feature = "extra-children")]
14951        if !self.extra_children.is_empty() {
14952            return false;
14953        }
14954        true
14955    }
14956}
14957
14958impl ToXml for CTTextField {
14959    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
14960        #[allow(unused_mut)]
14961        let mut start = start;
14962        {
14963            let val = &self.id;
14964            start.push_attribute(("id", val.as_str()));
14965        }
14966        if let Some(ref val) = self.r#type {
14967            start.push_attribute(("type", val.as_str()));
14968        }
14969        #[cfg(feature = "extra-attrs")]
14970        for (key, value) in &self.extra_attrs {
14971            start.push_attribute((key.as_str(), value.as_str()));
14972        }
14973        start
14974    }
14975
14976    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
14977        #[cfg(feature = "extra-children")]
14978        let mut extra_iter = self.extra_children.iter().peekable();
14979        #[cfg(feature = "extra-children")]
14980        let mut emit_idx: usize = 0;
14981        #[cfg(feature = "extra-children")]
14982        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14983            extra_iter
14984                .next()
14985                .unwrap()
14986                .node
14987                .write_to(writer)
14988                .map_err(SerializeError::from)?;
14989        }
14990        if let Some(ref val) = self.r_pr {
14991            val.write_element("a:rPr", writer)?;
14992        }
14993        #[cfg(feature = "extra-children")]
14994        {
14995            emit_idx += 1;
14996        }
14997        #[cfg(feature = "extra-children")]
14998        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
14999            extra_iter
15000                .next()
15001                .unwrap()
15002                .node
15003                .write_to(writer)
15004                .map_err(SerializeError::from)?;
15005        }
15006        if let Some(ref val) = self.p_pr {
15007            val.write_element("a:pPr", writer)?;
15008        }
15009        #[cfg(feature = "extra-children")]
15010        {
15011            emit_idx += 1;
15012        }
15013        #[cfg(feature = "extra-children")]
15014        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15015            extra_iter
15016                .next()
15017                .unwrap()
15018                .node
15019                .write_to(writer)
15020                .map_err(SerializeError::from)?;
15021        }
15022        if let Some(ref val) = self.t {
15023            {
15024                let start = BytesStart::new("a:t");
15025                writer.write_event(Event::Start(start))?;
15026                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
15027                writer.write_event(Event::End(BytesEnd::new("a:t")))?;
15028            }
15029        }
15030        #[cfg(feature = "extra-children")]
15031        {
15032            emit_idx += 1;
15033        }
15034        #[cfg(feature = "extra-children")]
15035        for extra in extra_iter {
15036            extra.node.write_to(writer).map_err(SerializeError::from)?;
15037        }
15038        Ok(())
15039    }
15040
15041    fn is_empty_element(&self) -> bool {
15042        if self.r_pr.is_some() {
15043            return false;
15044        }
15045        if self.p_pr.is_some() {
15046            return false;
15047        }
15048        if self.t.is_some() {
15049            return false;
15050        }
15051        #[cfg(feature = "extra-children")]
15052        if !self.extra_children.is_empty() {
15053            return false;
15054        }
15055        true
15056    }
15057}
15058
15059impl ToXml for EGTextRun {
15060    fn write_element<W: Write>(
15061        &self,
15062        _tag: &str,
15063        writer: &mut Writer<W>,
15064    ) -> Result<(), SerializeError> {
15065        match self {
15066            Self::R(inner) => inner.write_element("a:r", writer)?,
15067            Self::Br(inner) => inner.write_element("a:br", writer)?,
15068            Self::Fld(inner) => inner.write_element("a:fld", writer)?,
15069        }
15070        Ok(())
15071    }
15072}
15073
15074impl ToXml for TextRun {
15075    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15076        #[cfg(feature = "extra-children")]
15077        let mut extra_iter = self.extra_children.iter().peekable();
15078        #[cfg(feature = "extra-children")]
15079        let mut emit_idx: usize = 0;
15080        #[cfg(feature = "extra-children")]
15081        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15082            extra_iter
15083                .next()
15084                .unwrap()
15085                .node
15086                .write_to(writer)
15087                .map_err(SerializeError::from)?;
15088        }
15089        #[cfg(feature = "dml-text")]
15090        if let Some(ref val) = self.r_pr {
15091            val.write_element("a:rPr", writer)?;
15092        }
15093        #[cfg(feature = "extra-children")]
15094        {
15095            emit_idx += 1;
15096        }
15097        #[cfg(feature = "extra-children")]
15098        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15099            extra_iter
15100                .next()
15101                .unwrap()
15102                .node
15103                .write_to(writer)
15104                .map_err(SerializeError::from)?;
15105        }
15106        #[cfg(feature = "dml-text")]
15107        {
15108            let val = &self.t;
15109            {
15110                let start = BytesStart::new("a:t");
15111                writer.write_event(Event::Start(start))?;
15112                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
15113                writer.write_event(Event::End(BytesEnd::new("a:t")))?;
15114            }
15115        }
15116        #[cfg(feature = "extra-children")]
15117        {
15118            emit_idx += 1;
15119        }
15120        #[cfg(feature = "extra-children")]
15121        for extra in extra_iter {
15122            extra.node.write_to(writer).map_err(SerializeError::from)?;
15123        }
15124        Ok(())
15125    }
15126
15127    fn is_empty_element(&self) -> bool {
15128        #[cfg(feature = "dml-text")]
15129        if self.r_pr.is_some() {
15130            return false;
15131        }
15132        #[cfg(feature = "dml-text")]
15133        return false;
15134        #[cfg(feature = "extra-children")]
15135        if !self.extra_children.is_empty() {
15136            return false;
15137        }
15138        true
15139    }
15140}
15141
15142impl ToXml for CTDouble {
15143    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15144        #[allow(unused_mut)]
15145        let mut start = start;
15146        {
15147            let val = &self.value;
15148            {
15149                let s = val.to_string();
15150                start.push_attribute(("val", s.as_str()));
15151            }
15152        }
15153        #[cfg(feature = "extra-attrs")]
15154        for (key, value) in &self.extra_attrs {
15155            start.push_attribute((key.as_str(), value.as_str()));
15156        }
15157        start
15158    }
15159
15160    fn is_empty_element(&self) -> bool {
15161        true
15162    }
15163}
15164
15165impl ToXml for CTUnsignedInt {
15166    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15167        #[allow(unused_mut)]
15168        let mut start = start;
15169        {
15170            let val = &self.value;
15171            {
15172                let s = val.to_string();
15173                start.push_attribute(("val", s.as_str()));
15174            }
15175        }
15176        #[cfg(feature = "extra-attrs")]
15177        for (key, value) in &self.extra_attrs {
15178            start.push_attribute((key.as_str(), value.as_str()));
15179        }
15180        start
15181    }
15182
15183    fn is_empty_element(&self) -> bool {
15184        true
15185    }
15186}
15187
15188impl ToXml for ChartRelId {
15189    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15190        #[allow(unused_mut)]
15191        let mut start = start;
15192        #[cfg(feature = "dml-charts")]
15193        {
15194            let val = &self.id;
15195            start.push_attribute(("r:id", val.as_str()));
15196        }
15197        #[cfg(feature = "extra-attrs")]
15198        for (key, value) in &self.extra_attrs {
15199            start.push_attribute((key.as_str(), value.as_str()));
15200        }
15201        start
15202    }
15203
15204    fn is_empty_element(&self) -> bool {
15205        true
15206    }
15207}
15208
15209impl ToXml for ChartExtension {
15210    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15211        #[allow(unused_mut)]
15212        let mut start = start;
15213        #[cfg(feature = "dml-charts")]
15214        if let Some(ref val) = self.uri {
15215            start.push_attribute(("uri", val.as_str()));
15216        }
15217        #[cfg(feature = "extra-attrs")]
15218        for (key, value) in &self.extra_attrs {
15219            start.push_attribute((key.as_str(), value.as_str()));
15220        }
15221        start
15222    }
15223
15224    fn is_empty_element(&self) -> bool {
15225        true
15226    }
15227}
15228
15229impl ToXml for ChartExtensionList {
15230    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15231        #[cfg(feature = "extra-children")]
15232        let mut extra_iter = self.extra_children.iter().peekable();
15233        #[cfg(feature = "extra-children")]
15234        let mut emit_idx: usize = 0;
15235        #[cfg(feature = "dml-charts")]
15236        for item in &self.extents {
15237            #[cfg(feature = "extra-children")]
15238            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15239                extra_iter
15240                    .next()
15241                    .unwrap()
15242                    .node
15243                    .write_to(writer)
15244                    .map_err(SerializeError::from)?;
15245            }
15246            item.write_element("a:ext", writer)?;
15247            #[cfg(feature = "extra-children")]
15248            {
15249                emit_idx += 1;
15250            }
15251        }
15252        #[cfg(feature = "extra-children")]
15253        for extra in extra_iter {
15254            extra.node.write_to(writer).map_err(SerializeError::from)?;
15255        }
15256        Ok(())
15257    }
15258
15259    fn is_empty_element(&self) -> bool {
15260        #[cfg(feature = "dml-charts")]
15261        if !self.extents.is_empty() {
15262            return false;
15263        }
15264        #[cfg(feature = "extra-children")]
15265        if !self.extra_children.is_empty() {
15266            return false;
15267        }
15268        true
15269    }
15270}
15271
15272impl ToXml for NumericValue {
15273    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15274        #[allow(unused_mut)]
15275        let mut start = start;
15276        #[cfg(feature = "dml-charts")]
15277        {
15278            let val = &self.idx;
15279            {
15280                let s = val.to_string();
15281                start.push_attribute(("idx", s.as_str()));
15282            }
15283        }
15284        #[cfg(feature = "dml-charts")]
15285        if let Some(ref val) = self.format_code {
15286            start.push_attribute(("formatCode", val.as_str()));
15287        }
15288        #[cfg(feature = "extra-attrs")]
15289        for (key, value) in &self.extra_attrs {
15290            start.push_attribute((key.as_str(), value.as_str()));
15291        }
15292        start
15293    }
15294
15295    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15296        #[cfg(feature = "extra-children")]
15297        let mut extra_iter = self.extra_children.iter().peekable();
15298        #[cfg(feature = "extra-children")]
15299        let mut emit_idx: usize = 0;
15300        #[cfg(feature = "extra-children")]
15301        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15302            extra_iter
15303                .next()
15304                .unwrap()
15305                .node
15306                .write_to(writer)
15307                .map_err(SerializeError::from)?;
15308        }
15309        #[cfg(feature = "dml-charts")]
15310        {
15311            let val = &self.v;
15312            {
15313                let start = BytesStart::new("a:v");
15314                writer.write_event(Event::Start(start))?;
15315                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
15316                writer.write_event(Event::End(BytesEnd::new("a:v")))?;
15317            }
15318        }
15319        #[cfg(feature = "extra-children")]
15320        {
15321            emit_idx += 1;
15322        }
15323        #[cfg(feature = "extra-children")]
15324        for extra in extra_iter {
15325            extra.node.write_to(writer).map_err(SerializeError::from)?;
15326        }
15327        Ok(())
15328    }
15329
15330    fn is_empty_element(&self) -> bool {
15331        #[cfg(feature = "dml-charts")]
15332        return false;
15333        #[cfg(feature = "extra-children")]
15334        if !self.extra_children.is_empty() {
15335            return false;
15336        }
15337        true
15338    }
15339}
15340
15341impl ToXml for NumericData {
15342    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15343        #[cfg(feature = "extra-children")]
15344        let mut extra_iter = self.extra_children.iter().peekable();
15345        #[cfg(feature = "extra-children")]
15346        let mut emit_idx: usize = 0;
15347        #[cfg(feature = "extra-children")]
15348        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15349            extra_iter
15350                .next()
15351                .unwrap()
15352                .node
15353                .write_to(writer)
15354                .map_err(SerializeError::from)?;
15355        }
15356        #[cfg(feature = "dml-charts")]
15357        if let Some(ref val) = self.format_code {
15358            {
15359                let start = BytesStart::new("a:formatCode");
15360                writer.write_event(Event::Start(start))?;
15361                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
15362                writer.write_event(Event::End(BytesEnd::new("a:formatCode")))?;
15363            }
15364        }
15365        #[cfg(feature = "extra-children")]
15366        {
15367            emit_idx += 1;
15368        }
15369        #[cfg(feature = "extra-children")]
15370        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15371            extra_iter
15372                .next()
15373                .unwrap()
15374                .node
15375                .write_to(writer)
15376                .map_err(SerializeError::from)?;
15377        }
15378        #[cfg(feature = "dml-charts")]
15379        if let Some(ref val) = self.pt_count {
15380            val.write_element("a:ptCount", writer)?;
15381        }
15382        #[cfg(feature = "extra-children")]
15383        {
15384            emit_idx += 1;
15385        }
15386        #[cfg(feature = "dml-charts")]
15387        for item in &self.pt {
15388            #[cfg(feature = "extra-children")]
15389            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15390                extra_iter
15391                    .next()
15392                    .unwrap()
15393                    .node
15394                    .write_to(writer)
15395                    .map_err(SerializeError::from)?;
15396            }
15397            item.write_element("a:pt", writer)?;
15398            #[cfg(feature = "extra-children")]
15399            {
15400                emit_idx += 1;
15401            }
15402        }
15403        #[cfg(feature = "extra-children")]
15404        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15405            extra_iter
15406                .next()
15407                .unwrap()
15408                .node
15409                .write_to(writer)
15410                .map_err(SerializeError::from)?;
15411        }
15412        #[cfg(feature = "dml-charts")]
15413        if let Some(ref val) = self.ext_lst {
15414            val.write_element("a:extLst", writer)?;
15415        }
15416        #[cfg(feature = "extra-children")]
15417        {
15418            emit_idx += 1;
15419        }
15420        #[cfg(feature = "extra-children")]
15421        for extra in extra_iter {
15422            extra.node.write_to(writer).map_err(SerializeError::from)?;
15423        }
15424        Ok(())
15425    }
15426
15427    fn is_empty_element(&self) -> bool {
15428        #[cfg(feature = "dml-charts")]
15429        if self.format_code.is_some() {
15430            return false;
15431        }
15432        #[cfg(feature = "dml-charts")]
15433        if self.pt_count.is_some() {
15434            return false;
15435        }
15436        #[cfg(feature = "dml-charts")]
15437        if !self.pt.is_empty() {
15438            return false;
15439        }
15440        #[cfg(feature = "dml-charts")]
15441        if self.ext_lst.is_some() {
15442            return false;
15443        }
15444        #[cfg(feature = "extra-children")]
15445        if !self.extra_children.is_empty() {
15446            return false;
15447        }
15448        true
15449    }
15450}
15451
15452impl ToXml for NumericReference {
15453    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15454        #[cfg(feature = "extra-children")]
15455        let mut extra_iter = self.extra_children.iter().peekable();
15456        #[cfg(feature = "extra-children")]
15457        let mut emit_idx: usize = 0;
15458        #[cfg(feature = "extra-children")]
15459        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15460            extra_iter
15461                .next()
15462                .unwrap()
15463                .node
15464                .write_to(writer)
15465                .map_err(SerializeError::from)?;
15466        }
15467        #[cfg(feature = "dml-charts")]
15468        {
15469            let val = &self.f;
15470            {
15471                let start = BytesStart::new("a:f");
15472                writer.write_event(Event::Start(start))?;
15473                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
15474                writer.write_event(Event::End(BytesEnd::new("a:f")))?;
15475            }
15476        }
15477        #[cfg(feature = "extra-children")]
15478        {
15479            emit_idx += 1;
15480        }
15481        #[cfg(feature = "extra-children")]
15482        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15483            extra_iter
15484                .next()
15485                .unwrap()
15486                .node
15487                .write_to(writer)
15488                .map_err(SerializeError::from)?;
15489        }
15490        #[cfg(feature = "dml-charts")]
15491        if let Some(ref val) = self.num_cache {
15492            val.write_element("a:numCache", writer)?;
15493        }
15494        #[cfg(feature = "extra-children")]
15495        {
15496            emit_idx += 1;
15497        }
15498        #[cfg(feature = "extra-children")]
15499        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15500            extra_iter
15501                .next()
15502                .unwrap()
15503                .node
15504                .write_to(writer)
15505                .map_err(SerializeError::from)?;
15506        }
15507        #[cfg(feature = "dml-charts")]
15508        if let Some(ref val) = self.ext_lst {
15509            val.write_element("a:extLst", writer)?;
15510        }
15511        #[cfg(feature = "extra-children")]
15512        {
15513            emit_idx += 1;
15514        }
15515        #[cfg(feature = "extra-children")]
15516        for extra in extra_iter {
15517            extra.node.write_to(writer).map_err(SerializeError::from)?;
15518        }
15519        Ok(())
15520    }
15521
15522    fn is_empty_element(&self) -> bool {
15523        #[cfg(feature = "dml-charts")]
15524        return false;
15525        #[cfg(feature = "dml-charts")]
15526        if self.num_cache.is_some() {
15527            return false;
15528        }
15529        #[cfg(feature = "dml-charts")]
15530        if self.ext_lst.is_some() {
15531            return false;
15532        }
15533        #[cfg(feature = "extra-children")]
15534        if !self.extra_children.is_empty() {
15535            return false;
15536        }
15537        true
15538    }
15539}
15540
15541impl ToXml for NumericDataSource {
15542    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15543        #[cfg(feature = "extra-children")]
15544        let mut extra_iter = self.extra_children.iter().peekable();
15545        #[cfg(feature = "extra-children")]
15546        let mut emit_idx: usize = 0;
15547        #[cfg(feature = "extra-children")]
15548        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15549            extra_iter
15550                .next()
15551                .unwrap()
15552                .node
15553                .write_to(writer)
15554                .map_err(SerializeError::from)?;
15555        }
15556        #[cfg(feature = "dml-charts")]
15557        if let Some(ref val) = self.num_ref {
15558            val.write_element("a:numRef", writer)?;
15559        }
15560        #[cfg(feature = "extra-children")]
15561        {
15562            emit_idx += 1;
15563        }
15564        #[cfg(feature = "extra-children")]
15565        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15566            extra_iter
15567                .next()
15568                .unwrap()
15569                .node
15570                .write_to(writer)
15571                .map_err(SerializeError::from)?;
15572        }
15573        #[cfg(feature = "dml-charts")]
15574        if let Some(ref val) = self.num_lit {
15575            val.write_element("a:numLit", writer)?;
15576        }
15577        #[cfg(feature = "extra-children")]
15578        {
15579            emit_idx += 1;
15580        }
15581        #[cfg(feature = "extra-children")]
15582        for extra in extra_iter {
15583            extra.node.write_to(writer).map_err(SerializeError::from)?;
15584        }
15585        Ok(())
15586    }
15587
15588    fn is_empty_element(&self) -> bool {
15589        #[cfg(feature = "dml-charts")]
15590        if self.num_ref.is_some() {
15591            return false;
15592        }
15593        #[cfg(feature = "dml-charts")]
15594        if self.num_lit.is_some() {
15595            return false;
15596        }
15597        #[cfg(feature = "extra-children")]
15598        if !self.extra_children.is_empty() {
15599            return false;
15600        }
15601        true
15602    }
15603}
15604
15605impl ToXml for StringValue {
15606    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15607        #[allow(unused_mut)]
15608        let mut start = start;
15609        #[cfg(feature = "dml-charts")]
15610        {
15611            let val = &self.idx;
15612            {
15613                let s = val.to_string();
15614                start.push_attribute(("idx", s.as_str()));
15615            }
15616        }
15617        #[cfg(feature = "extra-attrs")]
15618        for (key, value) in &self.extra_attrs {
15619            start.push_attribute((key.as_str(), value.as_str()));
15620        }
15621        start
15622    }
15623
15624    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15625        #[cfg(feature = "extra-children")]
15626        let mut extra_iter = self.extra_children.iter().peekable();
15627        #[cfg(feature = "extra-children")]
15628        let mut emit_idx: usize = 0;
15629        #[cfg(feature = "extra-children")]
15630        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15631            extra_iter
15632                .next()
15633                .unwrap()
15634                .node
15635                .write_to(writer)
15636                .map_err(SerializeError::from)?;
15637        }
15638        #[cfg(feature = "dml-charts")]
15639        {
15640            let val = &self.v;
15641            {
15642                let start = BytesStart::new("a:v");
15643                writer.write_event(Event::Start(start))?;
15644                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
15645                writer.write_event(Event::End(BytesEnd::new("a:v")))?;
15646            }
15647        }
15648        #[cfg(feature = "extra-children")]
15649        {
15650            emit_idx += 1;
15651        }
15652        #[cfg(feature = "extra-children")]
15653        for extra in extra_iter {
15654            extra.node.write_to(writer).map_err(SerializeError::from)?;
15655        }
15656        Ok(())
15657    }
15658
15659    fn is_empty_element(&self) -> bool {
15660        #[cfg(feature = "dml-charts")]
15661        return false;
15662        #[cfg(feature = "extra-children")]
15663        if !self.extra_children.is_empty() {
15664            return false;
15665        }
15666        true
15667    }
15668}
15669
15670impl ToXml for StringData {
15671    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15672        #[cfg(feature = "extra-children")]
15673        let mut extra_iter = self.extra_children.iter().peekable();
15674        #[cfg(feature = "extra-children")]
15675        let mut emit_idx: usize = 0;
15676        #[cfg(feature = "extra-children")]
15677        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15678            extra_iter
15679                .next()
15680                .unwrap()
15681                .node
15682                .write_to(writer)
15683                .map_err(SerializeError::from)?;
15684        }
15685        #[cfg(feature = "dml-charts")]
15686        if let Some(ref val) = self.pt_count {
15687            val.write_element("a:ptCount", writer)?;
15688        }
15689        #[cfg(feature = "extra-children")]
15690        {
15691            emit_idx += 1;
15692        }
15693        #[cfg(feature = "dml-charts")]
15694        for item in &self.pt {
15695            #[cfg(feature = "extra-children")]
15696            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15697                extra_iter
15698                    .next()
15699                    .unwrap()
15700                    .node
15701                    .write_to(writer)
15702                    .map_err(SerializeError::from)?;
15703            }
15704            item.write_element("a:pt", writer)?;
15705            #[cfg(feature = "extra-children")]
15706            {
15707                emit_idx += 1;
15708            }
15709        }
15710        #[cfg(feature = "extra-children")]
15711        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15712            extra_iter
15713                .next()
15714                .unwrap()
15715                .node
15716                .write_to(writer)
15717                .map_err(SerializeError::from)?;
15718        }
15719        #[cfg(feature = "dml-charts")]
15720        if let Some(ref val) = self.ext_lst {
15721            val.write_element("a:extLst", writer)?;
15722        }
15723        #[cfg(feature = "extra-children")]
15724        {
15725            emit_idx += 1;
15726        }
15727        #[cfg(feature = "extra-children")]
15728        for extra in extra_iter {
15729            extra.node.write_to(writer).map_err(SerializeError::from)?;
15730        }
15731        Ok(())
15732    }
15733
15734    fn is_empty_element(&self) -> bool {
15735        #[cfg(feature = "dml-charts")]
15736        if self.pt_count.is_some() {
15737            return false;
15738        }
15739        #[cfg(feature = "dml-charts")]
15740        if !self.pt.is_empty() {
15741            return false;
15742        }
15743        #[cfg(feature = "dml-charts")]
15744        if self.ext_lst.is_some() {
15745            return false;
15746        }
15747        #[cfg(feature = "extra-children")]
15748        if !self.extra_children.is_empty() {
15749            return false;
15750        }
15751        true
15752    }
15753}
15754
15755impl ToXml for StringReference {
15756    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15757        #[cfg(feature = "extra-children")]
15758        let mut extra_iter = self.extra_children.iter().peekable();
15759        #[cfg(feature = "extra-children")]
15760        let mut emit_idx: usize = 0;
15761        #[cfg(feature = "extra-children")]
15762        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15763            extra_iter
15764                .next()
15765                .unwrap()
15766                .node
15767                .write_to(writer)
15768                .map_err(SerializeError::from)?;
15769        }
15770        #[cfg(feature = "dml-charts")]
15771        {
15772            let val = &self.f;
15773            {
15774                let start = BytesStart::new("a:f");
15775                writer.write_event(Event::Start(start))?;
15776                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
15777                writer.write_event(Event::End(BytesEnd::new("a:f")))?;
15778            }
15779        }
15780        #[cfg(feature = "extra-children")]
15781        {
15782            emit_idx += 1;
15783        }
15784        #[cfg(feature = "extra-children")]
15785        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15786            extra_iter
15787                .next()
15788                .unwrap()
15789                .node
15790                .write_to(writer)
15791                .map_err(SerializeError::from)?;
15792        }
15793        #[cfg(feature = "dml-charts")]
15794        if let Some(ref val) = self.str_cache {
15795            val.write_element("a:strCache", writer)?;
15796        }
15797        #[cfg(feature = "extra-children")]
15798        {
15799            emit_idx += 1;
15800        }
15801        #[cfg(feature = "extra-children")]
15802        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15803            extra_iter
15804                .next()
15805                .unwrap()
15806                .node
15807                .write_to(writer)
15808                .map_err(SerializeError::from)?;
15809        }
15810        #[cfg(feature = "dml-charts")]
15811        if let Some(ref val) = self.ext_lst {
15812            val.write_element("a:extLst", writer)?;
15813        }
15814        #[cfg(feature = "extra-children")]
15815        {
15816            emit_idx += 1;
15817        }
15818        #[cfg(feature = "extra-children")]
15819        for extra in extra_iter {
15820            extra.node.write_to(writer).map_err(SerializeError::from)?;
15821        }
15822        Ok(())
15823    }
15824
15825    fn is_empty_element(&self) -> bool {
15826        #[cfg(feature = "dml-charts")]
15827        return false;
15828        #[cfg(feature = "dml-charts")]
15829        if self.str_cache.is_some() {
15830            return false;
15831        }
15832        #[cfg(feature = "dml-charts")]
15833        if self.ext_lst.is_some() {
15834            return false;
15835        }
15836        #[cfg(feature = "extra-children")]
15837        if !self.extra_children.is_empty() {
15838            return false;
15839        }
15840        true
15841    }
15842}
15843
15844impl ToXml for ChartText {
15845    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15846        #[cfg(feature = "extra-children")]
15847        let mut extra_iter = self.extra_children.iter().peekable();
15848        #[cfg(feature = "extra-children")]
15849        let mut emit_idx: usize = 0;
15850        #[cfg(feature = "extra-children")]
15851        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15852            extra_iter
15853                .next()
15854                .unwrap()
15855                .node
15856                .write_to(writer)
15857                .map_err(SerializeError::from)?;
15858        }
15859        #[cfg(feature = "dml-charts")]
15860        if let Some(ref val) = self.str_ref {
15861            val.write_element("a:strRef", writer)?;
15862        }
15863        #[cfg(feature = "extra-children")]
15864        {
15865            emit_idx += 1;
15866        }
15867        #[cfg(feature = "extra-children")]
15868        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15869            extra_iter
15870                .next()
15871                .unwrap()
15872                .node
15873                .write_to(writer)
15874                .map_err(SerializeError::from)?;
15875        }
15876        #[cfg(feature = "dml-charts")]
15877        if let Some(ref val) = self.rich {
15878            val.write_element("a:rich", writer)?;
15879        }
15880        #[cfg(feature = "extra-children")]
15881        {
15882            emit_idx += 1;
15883        }
15884        #[cfg(feature = "extra-children")]
15885        for extra in extra_iter {
15886            extra.node.write_to(writer).map_err(SerializeError::from)?;
15887        }
15888        Ok(())
15889    }
15890
15891    fn is_empty_element(&self) -> bool {
15892        #[cfg(feature = "dml-charts")]
15893        if self.str_ref.is_some() {
15894            return false;
15895        }
15896        #[cfg(feature = "dml-charts")]
15897        if self.rich.is_some() {
15898            return false;
15899        }
15900        #[cfg(feature = "extra-children")]
15901        if !self.extra_children.is_empty() {
15902            return false;
15903        }
15904        true
15905    }
15906}
15907
15908impl ToXml for TextLanguageId {
15909    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
15910        #[allow(unused_mut)]
15911        let mut start = start;
15912        #[cfg(feature = "dml-charts")]
15913        {
15914            let val = &self.value;
15915            start.push_attribute(("val", val.as_str()));
15916        }
15917        #[cfg(feature = "extra-attrs")]
15918        for (key, value) in &self.extra_attrs {
15919            start.push_attribute((key.as_str(), value.as_str()));
15920        }
15921        start
15922    }
15923
15924    fn is_empty_element(&self) -> bool {
15925        true
15926    }
15927}
15928
15929impl ToXml for MultiLevelStrLevel {
15930    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15931        #[cfg(feature = "extra-children")]
15932        let mut extra_iter = self.extra_children.iter().peekable();
15933        #[cfg(feature = "extra-children")]
15934        let mut emit_idx: usize = 0;
15935        #[cfg(feature = "dml-charts")]
15936        for item in &self.pt {
15937            #[cfg(feature = "extra-children")]
15938            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15939                extra_iter
15940                    .next()
15941                    .unwrap()
15942                    .node
15943                    .write_to(writer)
15944                    .map_err(SerializeError::from)?;
15945            }
15946            item.write_element("a:pt", writer)?;
15947            #[cfg(feature = "extra-children")]
15948            {
15949                emit_idx += 1;
15950            }
15951        }
15952        #[cfg(feature = "extra-children")]
15953        for extra in extra_iter {
15954            extra.node.write_to(writer).map_err(SerializeError::from)?;
15955        }
15956        Ok(())
15957    }
15958
15959    fn is_empty_element(&self) -> bool {
15960        #[cfg(feature = "dml-charts")]
15961        if !self.pt.is_empty() {
15962            return false;
15963        }
15964        #[cfg(feature = "extra-children")]
15965        if !self.extra_children.is_empty() {
15966            return false;
15967        }
15968        true
15969    }
15970}
15971
15972impl ToXml for MultiLevelStrData {
15973    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
15974        #[cfg(feature = "extra-children")]
15975        let mut extra_iter = self.extra_children.iter().peekable();
15976        #[cfg(feature = "extra-children")]
15977        let mut emit_idx: usize = 0;
15978        #[cfg(feature = "extra-children")]
15979        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15980            extra_iter
15981                .next()
15982                .unwrap()
15983                .node
15984                .write_to(writer)
15985                .map_err(SerializeError::from)?;
15986        }
15987        #[cfg(feature = "dml-charts")]
15988        if let Some(ref val) = self.pt_count {
15989            val.write_element("a:ptCount", writer)?;
15990        }
15991        #[cfg(feature = "extra-children")]
15992        {
15993            emit_idx += 1;
15994        }
15995        #[cfg(feature = "dml-charts")]
15996        for item in &self.lvl {
15997            #[cfg(feature = "extra-children")]
15998            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
15999                extra_iter
16000                    .next()
16001                    .unwrap()
16002                    .node
16003                    .write_to(writer)
16004                    .map_err(SerializeError::from)?;
16005            }
16006            item.write_element("a:lvl", writer)?;
16007            #[cfg(feature = "extra-children")]
16008            {
16009                emit_idx += 1;
16010            }
16011        }
16012        #[cfg(feature = "extra-children")]
16013        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16014            extra_iter
16015                .next()
16016                .unwrap()
16017                .node
16018                .write_to(writer)
16019                .map_err(SerializeError::from)?;
16020        }
16021        #[cfg(feature = "dml-charts")]
16022        if let Some(ref val) = self.ext_lst {
16023            val.write_element("a:extLst", writer)?;
16024        }
16025        #[cfg(feature = "extra-children")]
16026        {
16027            emit_idx += 1;
16028        }
16029        #[cfg(feature = "extra-children")]
16030        for extra in extra_iter {
16031            extra.node.write_to(writer).map_err(SerializeError::from)?;
16032        }
16033        Ok(())
16034    }
16035
16036    fn is_empty_element(&self) -> bool {
16037        #[cfg(feature = "dml-charts")]
16038        if self.pt_count.is_some() {
16039            return false;
16040        }
16041        #[cfg(feature = "dml-charts")]
16042        if !self.lvl.is_empty() {
16043            return false;
16044        }
16045        #[cfg(feature = "dml-charts")]
16046        if self.ext_lst.is_some() {
16047            return false;
16048        }
16049        #[cfg(feature = "extra-children")]
16050        if !self.extra_children.is_empty() {
16051            return false;
16052        }
16053        true
16054    }
16055}
16056
16057impl ToXml for MultiLevelStrRef {
16058    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16059        #[cfg(feature = "extra-children")]
16060        let mut extra_iter = self.extra_children.iter().peekable();
16061        #[cfg(feature = "extra-children")]
16062        let mut emit_idx: usize = 0;
16063        #[cfg(feature = "extra-children")]
16064        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16065            extra_iter
16066                .next()
16067                .unwrap()
16068                .node
16069                .write_to(writer)
16070                .map_err(SerializeError::from)?;
16071        }
16072        #[cfg(feature = "dml-charts")]
16073        {
16074            let val = &self.f;
16075            {
16076                let start = BytesStart::new("a:f");
16077                writer.write_event(Event::Start(start))?;
16078                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
16079                writer.write_event(Event::End(BytesEnd::new("a:f")))?;
16080            }
16081        }
16082        #[cfg(feature = "extra-children")]
16083        {
16084            emit_idx += 1;
16085        }
16086        #[cfg(feature = "extra-children")]
16087        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16088            extra_iter
16089                .next()
16090                .unwrap()
16091                .node
16092                .write_to(writer)
16093                .map_err(SerializeError::from)?;
16094        }
16095        #[cfg(feature = "dml-charts")]
16096        if let Some(ref val) = self.multi_lvl_str_cache {
16097            val.write_element("a:multiLvlStrCache", writer)?;
16098        }
16099        #[cfg(feature = "extra-children")]
16100        {
16101            emit_idx += 1;
16102        }
16103        #[cfg(feature = "extra-children")]
16104        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16105            extra_iter
16106                .next()
16107                .unwrap()
16108                .node
16109                .write_to(writer)
16110                .map_err(SerializeError::from)?;
16111        }
16112        #[cfg(feature = "dml-charts")]
16113        if let Some(ref val) = self.ext_lst {
16114            val.write_element("a:extLst", writer)?;
16115        }
16116        #[cfg(feature = "extra-children")]
16117        {
16118            emit_idx += 1;
16119        }
16120        #[cfg(feature = "extra-children")]
16121        for extra in extra_iter {
16122            extra.node.write_to(writer).map_err(SerializeError::from)?;
16123        }
16124        Ok(())
16125    }
16126
16127    fn is_empty_element(&self) -> bool {
16128        #[cfg(feature = "dml-charts")]
16129        return false;
16130        #[cfg(feature = "dml-charts")]
16131        if self.multi_lvl_str_cache.is_some() {
16132            return false;
16133        }
16134        #[cfg(feature = "dml-charts")]
16135        if self.ext_lst.is_some() {
16136            return false;
16137        }
16138        #[cfg(feature = "extra-children")]
16139        if !self.extra_children.is_empty() {
16140            return false;
16141        }
16142        true
16143    }
16144}
16145
16146impl ToXml for AxisDataSource {
16147    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16148        #[cfg(feature = "extra-children")]
16149        let mut extra_iter = self.extra_children.iter().peekable();
16150        #[cfg(feature = "extra-children")]
16151        let mut emit_idx: usize = 0;
16152        #[cfg(feature = "extra-children")]
16153        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16154            extra_iter
16155                .next()
16156                .unwrap()
16157                .node
16158                .write_to(writer)
16159                .map_err(SerializeError::from)?;
16160        }
16161        #[cfg(feature = "dml-charts")]
16162        if let Some(ref val) = self.multi_lvl_str_ref {
16163            val.write_element("a:multiLvlStrRef", writer)?;
16164        }
16165        #[cfg(feature = "extra-children")]
16166        {
16167            emit_idx += 1;
16168        }
16169        #[cfg(feature = "extra-children")]
16170        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16171            extra_iter
16172                .next()
16173                .unwrap()
16174                .node
16175                .write_to(writer)
16176                .map_err(SerializeError::from)?;
16177        }
16178        #[cfg(feature = "dml-charts")]
16179        if let Some(ref val) = self.num_ref {
16180            val.write_element("a:numRef", writer)?;
16181        }
16182        #[cfg(feature = "extra-children")]
16183        {
16184            emit_idx += 1;
16185        }
16186        #[cfg(feature = "extra-children")]
16187        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16188            extra_iter
16189                .next()
16190                .unwrap()
16191                .node
16192                .write_to(writer)
16193                .map_err(SerializeError::from)?;
16194        }
16195        #[cfg(feature = "dml-charts")]
16196        if let Some(ref val) = self.num_lit {
16197            val.write_element("a:numLit", writer)?;
16198        }
16199        #[cfg(feature = "extra-children")]
16200        {
16201            emit_idx += 1;
16202        }
16203        #[cfg(feature = "extra-children")]
16204        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16205            extra_iter
16206                .next()
16207                .unwrap()
16208                .node
16209                .write_to(writer)
16210                .map_err(SerializeError::from)?;
16211        }
16212        #[cfg(feature = "dml-charts")]
16213        if let Some(ref val) = self.str_ref {
16214            val.write_element("a:strRef", writer)?;
16215        }
16216        #[cfg(feature = "extra-children")]
16217        {
16218            emit_idx += 1;
16219        }
16220        #[cfg(feature = "extra-children")]
16221        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16222            extra_iter
16223                .next()
16224                .unwrap()
16225                .node
16226                .write_to(writer)
16227                .map_err(SerializeError::from)?;
16228        }
16229        #[cfg(feature = "dml-charts")]
16230        if let Some(ref val) = self.str_lit {
16231            val.write_element("a:strLit", writer)?;
16232        }
16233        #[cfg(feature = "extra-children")]
16234        {
16235            emit_idx += 1;
16236        }
16237        #[cfg(feature = "extra-children")]
16238        for extra in extra_iter {
16239            extra.node.write_to(writer).map_err(SerializeError::from)?;
16240        }
16241        Ok(())
16242    }
16243
16244    fn is_empty_element(&self) -> bool {
16245        #[cfg(feature = "dml-charts")]
16246        if self.multi_lvl_str_ref.is_some() {
16247            return false;
16248        }
16249        #[cfg(feature = "dml-charts")]
16250        if self.num_ref.is_some() {
16251            return false;
16252        }
16253        #[cfg(feature = "dml-charts")]
16254        if self.num_lit.is_some() {
16255            return false;
16256        }
16257        #[cfg(feature = "dml-charts")]
16258        if self.str_ref.is_some() {
16259            return false;
16260        }
16261        #[cfg(feature = "dml-charts")]
16262        if self.str_lit.is_some() {
16263            return false;
16264        }
16265        #[cfg(feature = "extra-children")]
16266        if !self.extra_children.is_empty() {
16267            return false;
16268        }
16269        true
16270    }
16271}
16272
16273impl ToXml for SeriesText {
16274    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16275        #[cfg(feature = "extra-children")]
16276        let mut extra_iter = self.extra_children.iter().peekable();
16277        #[cfg(feature = "extra-children")]
16278        let mut emit_idx: usize = 0;
16279        #[cfg(feature = "extra-children")]
16280        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16281            extra_iter
16282                .next()
16283                .unwrap()
16284                .node
16285                .write_to(writer)
16286                .map_err(SerializeError::from)?;
16287        }
16288        #[cfg(feature = "dml-charts")]
16289        if let Some(ref val) = self.str_ref {
16290            val.write_element("a:strRef", writer)?;
16291        }
16292        #[cfg(feature = "extra-children")]
16293        {
16294            emit_idx += 1;
16295        }
16296        #[cfg(feature = "extra-children")]
16297        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16298            extra_iter
16299                .next()
16300                .unwrap()
16301                .node
16302                .write_to(writer)
16303                .map_err(SerializeError::from)?;
16304        }
16305        #[cfg(feature = "dml-charts")]
16306        if let Some(ref val) = self.v {
16307            {
16308                let start = BytesStart::new("a:v");
16309                writer.write_event(Event::Start(start))?;
16310                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
16311                writer.write_event(Event::End(BytesEnd::new("a:v")))?;
16312            }
16313        }
16314        #[cfg(feature = "extra-children")]
16315        {
16316            emit_idx += 1;
16317        }
16318        #[cfg(feature = "extra-children")]
16319        for extra in extra_iter {
16320            extra.node.write_to(writer).map_err(SerializeError::from)?;
16321        }
16322        Ok(())
16323    }
16324
16325    fn is_empty_element(&self) -> bool {
16326        #[cfg(feature = "dml-charts")]
16327        if self.str_ref.is_some() {
16328            return false;
16329        }
16330        #[cfg(feature = "dml-charts")]
16331        if self.v.is_some() {
16332            return false;
16333        }
16334        #[cfg(feature = "extra-children")]
16335        if !self.extra_children.is_empty() {
16336            return false;
16337        }
16338        true
16339    }
16340}
16341
16342impl ToXml for LayoutTarget {
16343    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
16344        #[allow(unused_mut)]
16345        let mut start = start;
16346        #[cfg(feature = "dml-charts")]
16347        if let Some(ref val) = self.value {
16348            {
16349                let s = val.to_string();
16350                start.push_attribute(("val", s.as_str()));
16351            }
16352        }
16353        #[cfg(feature = "extra-attrs")]
16354        for (key, value) in &self.extra_attrs {
16355            start.push_attribute((key.as_str(), value.as_str()));
16356        }
16357        start
16358    }
16359
16360    fn is_empty_element(&self) -> bool {
16361        true
16362    }
16363}
16364
16365impl ToXml for LayoutMode {
16366    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
16367        #[allow(unused_mut)]
16368        let mut start = start;
16369        #[cfg(feature = "dml-charts")]
16370        if let Some(ref val) = self.value {
16371            {
16372                let s = val.to_string();
16373                start.push_attribute(("val", s.as_str()));
16374            }
16375        }
16376        #[cfg(feature = "extra-attrs")]
16377        for (key, value) in &self.extra_attrs {
16378            start.push_attribute((key.as_str(), value.as_str()));
16379        }
16380        start
16381    }
16382
16383    fn is_empty_element(&self) -> bool {
16384        true
16385    }
16386}
16387
16388impl ToXml for ManualLayout {
16389    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16390        #[cfg(feature = "extra-children")]
16391        let mut extra_iter = self.extra_children.iter().peekable();
16392        #[cfg(feature = "extra-children")]
16393        let mut emit_idx: usize = 0;
16394        #[cfg(feature = "extra-children")]
16395        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16396            extra_iter
16397                .next()
16398                .unwrap()
16399                .node
16400                .write_to(writer)
16401                .map_err(SerializeError::from)?;
16402        }
16403        #[cfg(feature = "dml-charts")]
16404        if let Some(ref val) = self.layout_target {
16405            val.write_element("a:layoutTarget", writer)?;
16406        }
16407        #[cfg(feature = "extra-children")]
16408        {
16409            emit_idx += 1;
16410        }
16411        #[cfg(feature = "extra-children")]
16412        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16413            extra_iter
16414                .next()
16415                .unwrap()
16416                .node
16417                .write_to(writer)
16418                .map_err(SerializeError::from)?;
16419        }
16420        #[cfg(feature = "dml-charts")]
16421        if let Some(ref val) = self.x_mode {
16422            val.write_element("a:xMode", writer)?;
16423        }
16424        #[cfg(feature = "extra-children")]
16425        {
16426            emit_idx += 1;
16427        }
16428        #[cfg(feature = "extra-children")]
16429        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16430            extra_iter
16431                .next()
16432                .unwrap()
16433                .node
16434                .write_to(writer)
16435                .map_err(SerializeError::from)?;
16436        }
16437        #[cfg(feature = "dml-charts")]
16438        if let Some(ref val) = self.y_mode {
16439            val.write_element("a:yMode", writer)?;
16440        }
16441        #[cfg(feature = "extra-children")]
16442        {
16443            emit_idx += 1;
16444        }
16445        #[cfg(feature = "extra-children")]
16446        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16447            extra_iter
16448                .next()
16449                .unwrap()
16450                .node
16451                .write_to(writer)
16452                .map_err(SerializeError::from)?;
16453        }
16454        #[cfg(feature = "dml-charts")]
16455        if let Some(ref val) = self.w_mode {
16456            val.write_element("a:wMode", writer)?;
16457        }
16458        #[cfg(feature = "extra-children")]
16459        {
16460            emit_idx += 1;
16461        }
16462        #[cfg(feature = "extra-children")]
16463        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16464            extra_iter
16465                .next()
16466                .unwrap()
16467                .node
16468                .write_to(writer)
16469                .map_err(SerializeError::from)?;
16470        }
16471        #[cfg(feature = "dml-charts")]
16472        if let Some(ref val) = self.h_mode {
16473            val.write_element("a:hMode", writer)?;
16474        }
16475        #[cfg(feature = "extra-children")]
16476        {
16477            emit_idx += 1;
16478        }
16479        #[cfg(feature = "extra-children")]
16480        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16481            extra_iter
16482                .next()
16483                .unwrap()
16484                .node
16485                .write_to(writer)
16486                .map_err(SerializeError::from)?;
16487        }
16488        #[cfg(feature = "dml-charts")]
16489        if let Some(ref val) = self.x {
16490            val.write_element("a:x", writer)?;
16491        }
16492        #[cfg(feature = "extra-children")]
16493        {
16494            emit_idx += 1;
16495        }
16496        #[cfg(feature = "extra-children")]
16497        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16498            extra_iter
16499                .next()
16500                .unwrap()
16501                .node
16502                .write_to(writer)
16503                .map_err(SerializeError::from)?;
16504        }
16505        #[cfg(feature = "dml-charts")]
16506        if let Some(ref val) = self.y {
16507            val.write_element("a:y", writer)?;
16508        }
16509        #[cfg(feature = "extra-children")]
16510        {
16511            emit_idx += 1;
16512        }
16513        #[cfg(feature = "extra-children")]
16514        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16515            extra_iter
16516                .next()
16517                .unwrap()
16518                .node
16519                .write_to(writer)
16520                .map_err(SerializeError::from)?;
16521        }
16522        #[cfg(feature = "dml-charts")]
16523        if let Some(ref val) = self.width {
16524            val.write_element("a:w", writer)?;
16525        }
16526        #[cfg(feature = "extra-children")]
16527        {
16528            emit_idx += 1;
16529        }
16530        #[cfg(feature = "extra-children")]
16531        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16532            extra_iter
16533                .next()
16534                .unwrap()
16535                .node
16536                .write_to(writer)
16537                .map_err(SerializeError::from)?;
16538        }
16539        #[cfg(feature = "dml-charts")]
16540        if let Some(ref val) = self.height {
16541            val.write_element("a:h", writer)?;
16542        }
16543        #[cfg(feature = "extra-children")]
16544        {
16545            emit_idx += 1;
16546        }
16547        #[cfg(feature = "extra-children")]
16548        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16549            extra_iter
16550                .next()
16551                .unwrap()
16552                .node
16553                .write_to(writer)
16554                .map_err(SerializeError::from)?;
16555        }
16556        #[cfg(feature = "dml-charts")]
16557        if let Some(ref val) = self.ext_lst {
16558            val.write_element("a:extLst", writer)?;
16559        }
16560        #[cfg(feature = "extra-children")]
16561        {
16562            emit_idx += 1;
16563        }
16564        #[cfg(feature = "extra-children")]
16565        for extra in extra_iter {
16566            extra.node.write_to(writer).map_err(SerializeError::from)?;
16567        }
16568        Ok(())
16569    }
16570
16571    fn is_empty_element(&self) -> bool {
16572        #[cfg(feature = "dml-charts")]
16573        if self.layout_target.is_some() {
16574            return false;
16575        }
16576        #[cfg(feature = "dml-charts")]
16577        if self.x_mode.is_some() {
16578            return false;
16579        }
16580        #[cfg(feature = "dml-charts")]
16581        if self.y_mode.is_some() {
16582            return false;
16583        }
16584        #[cfg(feature = "dml-charts")]
16585        if self.w_mode.is_some() {
16586            return false;
16587        }
16588        #[cfg(feature = "dml-charts")]
16589        if self.h_mode.is_some() {
16590            return false;
16591        }
16592        #[cfg(feature = "dml-charts")]
16593        if self.x.is_some() {
16594            return false;
16595        }
16596        #[cfg(feature = "dml-charts")]
16597        if self.y.is_some() {
16598            return false;
16599        }
16600        #[cfg(feature = "dml-charts")]
16601        if self.width.is_some() {
16602            return false;
16603        }
16604        #[cfg(feature = "dml-charts")]
16605        if self.height.is_some() {
16606            return false;
16607        }
16608        #[cfg(feature = "dml-charts")]
16609        if self.ext_lst.is_some() {
16610            return false;
16611        }
16612        #[cfg(feature = "extra-children")]
16613        if !self.extra_children.is_empty() {
16614            return false;
16615        }
16616        true
16617    }
16618}
16619
16620impl ToXml for ChartLayout {
16621    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16622        #[cfg(feature = "extra-children")]
16623        let mut extra_iter = self.extra_children.iter().peekable();
16624        #[cfg(feature = "extra-children")]
16625        let mut emit_idx: usize = 0;
16626        #[cfg(feature = "extra-children")]
16627        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16628            extra_iter
16629                .next()
16630                .unwrap()
16631                .node
16632                .write_to(writer)
16633                .map_err(SerializeError::from)?;
16634        }
16635        #[cfg(feature = "dml-charts")]
16636        if let Some(ref val) = self.manual_layout {
16637            val.write_element("a:manualLayout", writer)?;
16638        }
16639        #[cfg(feature = "extra-children")]
16640        {
16641            emit_idx += 1;
16642        }
16643        #[cfg(feature = "extra-children")]
16644        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16645            extra_iter
16646                .next()
16647                .unwrap()
16648                .node
16649                .write_to(writer)
16650                .map_err(SerializeError::from)?;
16651        }
16652        #[cfg(feature = "dml-charts")]
16653        if let Some(ref val) = self.ext_lst {
16654            val.write_element("a:extLst", writer)?;
16655        }
16656        #[cfg(feature = "extra-children")]
16657        {
16658            emit_idx += 1;
16659        }
16660        #[cfg(feature = "extra-children")]
16661        for extra in extra_iter {
16662            extra.node.write_to(writer).map_err(SerializeError::from)?;
16663        }
16664        Ok(())
16665    }
16666
16667    fn is_empty_element(&self) -> bool {
16668        #[cfg(feature = "dml-charts")]
16669        if self.manual_layout.is_some() {
16670            return false;
16671        }
16672        #[cfg(feature = "dml-charts")]
16673        if self.ext_lst.is_some() {
16674            return false;
16675        }
16676        #[cfg(feature = "extra-children")]
16677        if !self.extra_children.is_empty() {
16678            return false;
16679        }
16680        true
16681    }
16682}
16683
16684impl ToXml for ChartTitle {
16685    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16686        #[cfg(feature = "extra-children")]
16687        let mut extra_iter = self.extra_children.iter().peekable();
16688        #[cfg(feature = "extra-children")]
16689        let mut emit_idx: usize = 0;
16690        #[cfg(feature = "extra-children")]
16691        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16692            extra_iter
16693                .next()
16694                .unwrap()
16695                .node
16696                .write_to(writer)
16697                .map_err(SerializeError::from)?;
16698        }
16699        #[cfg(feature = "dml-charts")]
16700        if let Some(ref val) = self.tx {
16701            val.write_element("a:tx", writer)?;
16702        }
16703        #[cfg(feature = "extra-children")]
16704        {
16705            emit_idx += 1;
16706        }
16707        #[cfg(feature = "extra-children")]
16708        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16709            extra_iter
16710                .next()
16711                .unwrap()
16712                .node
16713                .write_to(writer)
16714                .map_err(SerializeError::from)?;
16715        }
16716        #[cfg(feature = "dml-charts")]
16717        if let Some(ref val) = self.layout {
16718            val.write_element("a:layout", writer)?;
16719        }
16720        #[cfg(feature = "extra-children")]
16721        {
16722            emit_idx += 1;
16723        }
16724        #[cfg(feature = "extra-children")]
16725        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16726            extra_iter
16727                .next()
16728                .unwrap()
16729                .node
16730                .write_to(writer)
16731                .map_err(SerializeError::from)?;
16732        }
16733        #[cfg(feature = "dml-charts")]
16734        if let Some(ref val) = self.overlay {
16735            val.write_element("a:overlay", writer)?;
16736        }
16737        #[cfg(feature = "extra-children")]
16738        {
16739            emit_idx += 1;
16740        }
16741        #[cfg(feature = "extra-children")]
16742        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16743            extra_iter
16744                .next()
16745                .unwrap()
16746                .node
16747                .write_to(writer)
16748                .map_err(SerializeError::from)?;
16749        }
16750        #[cfg(feature = "dml-charts")]
16751        if let Some(ref val) = self.sp_pr {
16752            val.write_element("a:spPr", writer)?;
16753        }
16754        #[cfg(feature = "extra-children")]
16755        {
16756            emit_idx += 1;
16757        }
16758        #[cfg(feature = "extra-children")]
16759        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16760            extra_iter
16761                .next()
16762                .unwrap()
16763                .node
16764                .write_to(writer)
16765                .map_err(SerializeError::from)?;
16766        }
16767        #[cfg(feature = "dml-charts")]
16768        if let Some(ref val) = self.tx_pr {
16769            val.write_element("a:txPr", writer)?;
16770        }
16771        #[cfg(feature = "extra-children")]
16772        {
16773            emit_idx += 1;
16774        }
16775        #[cfg(feature = "extra-children")]
16776        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16777            extra_iter
16778                .next()
16779                .unwrap()
16780                .node
16781                .write_to(writer)
16782                .map_err(SerializeError::from)?;
16783        }
16784        #[cfg(feature = "dml-charts")]
16785        if let Some(ref val) = self.ext_lst {
16786            val.write_element("a:extLst", writer)?;
16787        }
16788        #[cfg(feature = "extra-children")]
16789        {
16790            emit_idx += 1;
16791        }
16792        #[cfg(feature = "extra-children")]
16793        for extra in extra_iter {
16794            extra.node.write_to(writer).map_err(SerializeError::from)?;
16795        }
16796        Ok(())
16797    }
16798
16799    fn is_empty_element(&self) -> bool {
16800        #[cfg(feature = "dml-charts")]
16801        if self.tx.is_some() {
16802            return false;
16803        }
16804        #[cfg(feature = "dml-charts")]
16805        if self.layout.is_some() {
16806            return false;
16807        }
16808        #[cfg(feature = "dml-charts")]
16809        if self.overlay.is_some() {
16810            return false;
16811        }
16812        #[cfg(feature = "dml-charts")]
16813        if self.sp_pr.is_some() {
16814            return false;
16815        }
16816        #[cfg(feature = "dml-charts")]
16817        if self.tx_pr.is_some() {
16818            return false;
16819        }
16820        #[cfg(feature = "dml-charts")]
16821        if self.ext_lst.is_some() {
16822            return false;
16823        }
16824        #[cfg(feature = "extra-children")]
16825        if !self.extra_children.is_empty() {
16826            return false;
16827        }
16828        true
16829    }
16830}
16831
16832impl ToXml for RotX {
16833    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
16834        #[allow(unused_mut)]
16835        let mut start = start;
16836        #[cfg(feature = "dml-charts")]
16837        if let Some(ref val) = self.value {
16838            {
16839                let s = val.to_string();
16840                start.push_attribute(("val", s.as_str()));
16841            }
16842        }
16843        #[cfg(feature = "extra-attrs")]
16844        for (key, value) in &self.extra_attrs {
16845            start.push_attribute((key.as_str(), value.as_str()));
16846        }
16847        start
16848    }
16849
16850    fn is_empty_element(&self) -> bool {
16851        true
16852    }
16853}
16854
16855impl ToXml for HPercent {
16856    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
16857        #[allow(unused_mut)]
16858        let mut start = start;
16859        #[cfg(feature = "dml-charts")]
16860        if let Some(ref val) = self.value {
16861            {
16862                let s = val.to_string();
16863                start.push_attribute(("val", s.as_str()));
16864            }
16865        }
16866        #[cfg(feature = "extra-attrs")]
16867        for (key, value) in &self.extra_attrs {
16868            start.push_attribute((key.as_str(), value.as_str()));
16869        }
16870        start
16871    }
16872
16873    fn is_empty_element(&self) -> bool {
16874        true
16875    }
16876}
16877
16878impl ToXml for RotY {
16879    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
16880        #[allow(unused_mut)]
16881        let mut start = start;
16882        #[cfg(feature = "dml-charts")]
16883        if let Some(ref val) = self.value {
16884            {
16885                let s = val.to_string();
16886                start.push_attribute(("val", s.as_str()));
16887            }
16888        }
16889        #[cfg(feature = "extra-attrs")]
16890        for (key, value) in &self.extra_attrs {
16891            start.push_attribute((key.as_str(), value.as_str()));
16892        }
16893        start
16894    }
16895
16896    fn is_empty_element(&self) -> bool {
16897        true
16898    }
16899}
16900
16901impl ToXml for DepthPercent {
16902    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
16903        #[allow(unused_mut)]
16904        let mut start = start;
16905        #[cfg(feature = "dml-charts")]
16906        if let Some(ref val) = self.value {
16907            {
16908                let s = val.to_string();
16909                start.push_attribute(("val", s.as_str()));
16910            }
16911        }
16912        #[cfg(feature = "extra-attrs")]
16913        for (key, value) in &self.extra_attrs {
16914            start.push_attribute((key.as_str(), value.as_str()));
16915        }
16916        start
16917    }
16918
16919    fn is_empty_element(&self) -> bool {
16920        true
16921    }
16922}
16923
16924impl ToXml for Perspective {
16925    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
16926        #[allow(unused_mut)]
16927        let mut start = start;
16928        #[cfg(feature = "dml-charts")]
16929        if let Some(ref val) = self.value {
16930            {
16931                let s = val.to_string();
16932                start.push_attribute(("val", s.as_str()));
16933            }
16934        }
16935        #[cfg(feature = "extra-attrs")]
16936        for (key, value) in &self.extra_attrs {
16937            start.push_attribute((key.as_str(), value.as_str()));
16938        }
16939        start
16940    }
16941
16942    fn is_empty_element(&self) -> bool {
16943        true
16944    }
16945}
16946
16947impl ToXml for View3D {
16948    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
16949        #[cfg(feature = "extra-children")]
16950        let mut extra_iter = self.extra_children.iter().peekable();
16951        #[cfg(feature = "extra-children")]
16952        let mut emit_idx: usize = 0;
16953        #[cfg(feature = "extra-children")]
16954        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16955            extra_iter
16956                .next()
16957                .unwrap()
16958                .node
16959                .write_to(writer)
16960                .map_err(SerializeError::from)?;
16961        }
16962        #[cfg(feature = "dml-charts")]
16963        if let Some(ref val) = self.rot_x {
16964            val.write_element("a:rotX", writer)?;
16965        }
16966        #[cfg(feature = "extra-children")]
16967        {
16968            emit_idx += 1;
16969        }
16970        #[cfg(feature = "extra-children")]
16971        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16972            extra_iter
16973                .next()
16974                .unwrap()
16975                .node
16976                .write_to(writer)
16977                .map_err(SerializeError::from)?;
16978        }
16979        #[cfg(feature = "dml-charts")]
16980        if let Some(ref val) = self.h_percent {
16981            val.write_element("a:hPercent", writer)?;
16982        }
16983        #[cfg(feature = "extra-children")]
16984        {
16985            emit_idx += 1;
16986        }
16987        #[cfg(feature = "extra-children")]
16988        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
16989            extra_iter
16990                .next()
16991                .unwrap()
16992                .node
16993                .write_to(writer)
16994                .map_err(SerializeError::from)?;
16995        }
16996        #[cfg(feature = "dml-charts")]
16997        if let Some(ref val) = self.rot_y {
16998            val.write_element("a:rotY", writer)?;
16999        }
17000        #[cfg(feature = "extra-children")]
17001        {
17002            emit_idx += 1;
17003        }
17004        #[cfg(feature = "extra-children")]
17005        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17006            extra_iter
17007                .next()
17008                .unwrap()
17009                .node
17010                .write_to(writer)
17011                .map_err(SerializeError::from)?;
17012        }
17013        #[cfg(feature = "dml-charts")]
17014        if let Some(ref val) = self.depth_percent {
17015            val.write_element("a:depthPercent", writer)?;
17016        }
17017        #[cfg(feature = "extra-children")]
17018        {
17019            emit_idx += 1;
17020        }
17021        #[cfg(feature = "extra-children")]
17022        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17023            extra_iter
17024                .next()
17025                .unwrap()
17026                .node
17027                .write_to(writer)
17028                .map_err(SerializeError::from)?;
17029        }
17030        #[cfg(feature = "dml-charts")]
17031        if let Some(ref val) = self.r_ang_ax {
17032            val.write_element("a:rAngAx", writer)?;
17033        }
17034        #[cfg(feature = "extra-children")]
17035        {
17036            emit_idx += 1;
17037        }
17038        #[cfg(feature = "extra-children")]
17039        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17040            extra_iter
17041                .next()
17042                .unwrap()
17043                .node
17044                .write_to(writer)
17045                .map_err(SerializeError::from)?;
17046        }
17047        #[cfg(feature = "dml-charts")]
17048        if let Some(ref val) = self.perspective {
17049            val.write_element("a:perspective", writer)?;
17050        }
17051        #[cfg(feature = "extra-children")]
17052        {
17053            emit_idx += 1;
17054        }
17055        #[cfg(feature = "extra-children")]
17056        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17057            extra_iter
17058                .next()
17059                .unwrap()
17060                .node
17061                .write_to(writer)
17062                .map_err(SerializeError::from)?;
17063        }
17064        #[cfg(feature = "dml-charts")]
17065        if let Some(ref val) = self.ext_lst {
17066            val.write_element("a:extLst", writer)?;
17067        }
17068        #[cfg(feature = "extra-children")]
17069        {
17070            emit_idx += 1;
17071        }
17072        #[cfg(feature = "extra-children")]
17073        for extra in extra_iter {
17074            extra.node.write_to(writer).map_err(SerializeError::from)?;
17075        }
17076        Ok(())
17077    }
17078
17079    fn is_empty_element(&self) -> bool {
17080        #[cfg(feature = "dml-charts")]
17081        if self.rot_x.is_some() {
17082            return false;
17083        }
17084        #[cfg(feature = "dml-charts")]
17085        if self.h_percent.is_some() {
17086            return false;
17087        }
17088        #[cfg(feature = "dml-charts")]
17089        if self.rot_y.is_some() {
17090            return false;
17091        }
17092        #[cfg(feature = "dml-charts")]
17093        if self.depth_percent.is_some() {
17094            return false;
17095        }
17096        #[cfg(feature = "dml-charts")]
17097        if self.r_ang_ax.is_some() {
17098            return false;
17099        }
17100        #[cfg(feature = "dml-charts")]
17101        if self.perspective.is_some() {
17102            return false;
17103        }
17104        #[cfg(feature = "dml-charts")]
17105        if self.ext_lst.is_some() {
17106            return false;
17107        }
17108        #[cfg(feature = "extra-children")]
17109        if !self.extra_children.is_empty() {
17110            return false;
17111        }
17112        true
17113    }
17114}
17115
17116impl ToXml for ChartSurface {
17117    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17118        #[cfg(feature = "extra-children")]
17119        let mut extra_iter = self.extra_children.iter().peekable();
17120        #[cfg(feature = "extra-children")]
17121        let mut emit_idx: usize = 0;
17122        #[cfg(feature = "extra-children")]
17123        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17124            extra_iter
17125                .next()
17126                .unwrap()
17127                .node
17128                .write_to(writer)
17129                .map_err(SerializeError::from)?;
17130        }
17131        #[cfg(feature = "dml-charts")]
17132        if let Some(ref val) = self.thickness {
17133            val.write_element("a:thickness", writer)?;
17134        }
17135        #[cfg(feature = "extra-children")]
17136        {
17137            emit_idx += 1;
17138        }
17139        #[cfg(feature = "extra-children")]
17140        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17141            extra_iter
17142                .next()
17143                .unwrap()
17144                .node
17145                .write_to(writer)
17146                .map_err(SerializeError::from)?;
17147        }
17148        #[cfg(feature = "dml-charts")]
17149        if let Some(ref val) = self.sp_pr {
17150            val.write_element("a:spPr", writer)?;
17151        }
17152        #[cfg(feature = "extra-children")]
17153        {
17154            emit_idx += 1;
17155        }
17156        #[cfg(feature = "extra-children")]
17157        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17158            extra_iter
17159                .next()
17160                .unwrap()
17161                .node
17162                .write_to(writer)
17163                .map_err(SerializeError::from)?;
17164        }
17165        #[cfg(feature = "dml-charts")]
17166        if let Some(ref val) = self.picture_options {
17167            val.write_element("a:pictureOptions", writer)?;
17168        }
17169        #[cfg(feature = "extra-children")]
17170        {
17171            emit_idx += 1;
17172        }
17173        #[cfg(feature = "extra-children")]
17174        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17175            extra_iter
17176                .next()
17177                .unwrap()
17178                .node
17179                .write_to(writer)
17180                .map_err(SerializeError::from)?;
17181        }
17182        #[cfg(feature = "dml-charts")]
17183        if let Some(ref val) = self.ext_lst {
17184            val.write_element("a:extLst", writer)?;
17185        }
17186        #[cfg(feature = "extra-children")]
17187        {
17188            emit_idx += 1;
17189        }
17190        #[cfg(feature = "extra-children")]
17191        for extra in extra_iter {
17192            extra.node.write_to(writer).map_err(SerializeError::from)?;
17193        }
17194        Ok(())
17195    }
17196
17197    fn is_empty_element(&self) -> bool {
17198        #[cfg(feature = "dml-charts")]
17199        if self.thickness.is_some() {
17200            return false;
17201        }
17202        #[cfg(feature = "dml-charts")]
17203        if self.sp_pr.is_some() {
17204            return false;
17205        }
17206        #[cfg(feature = "dml-charts")]
17207        if self.picture_options.is_some() {
17208            return false;
17209        }
17210        #[cfg(feature = "dml-charts")]
17211        if self.ext_lst.is_some() {
17212            return false;
17213        }
17214        #[cfg(feature = "extra-children")]
17215        if !self.extra_children.is_empty() {
17216            return false;
17217        }
17218        true
17219    }
17220}
17221
17222impl ToXml for ChartThickness {
17223    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17224        #[allow(unused_mut)]
17225        let mut start = start;
17226        #[cfg(feature = "dml-charts")]
17227        {
17228            let val = &self.value;
17229            {
17230                let s = val.to_string();
17231                start.push_attribute(("val", s.as_str()));
17232            }
17233        }
17234        #[cfg(feature = "extra-attrs")]
17235        for (key, value) in &self.extra_attrs {
17236            start.push_attribute((key.as_str(), value.as_str()));
17237        }
17238        start
17239    }
17240
17241    fn is_empty_element(&self) -> bool {
17242        true
17243    }
17244}
17245
17246impl ToXml for DataTable {
17247    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17248        #[cfg(feature = "extra-children")]
17249        let mut extra_iter = self.extra_children.iter().peekable();
17250        #[cfg(feature = "extra-children")]
17251        let mut emit_idx: usize = 0;
17252        #[cfg(feature = "extra-children")]
17253        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17254            extra_iter
17255                .next()
17256                .unwrap()
17257                .node
17258                .write_to(writer)
17259                .map_err(SerializeError::from)?;
17260        }
17261        #[cfg(feature = "dml-charts")]
17262        if let Some(ref val) = self.show_horz_border {
17263            val.write_element("a:showHorzBorder", writer)?;
17264        }
17265        #[cfg(feature = "extra-children")]
17266        {
17267            emit_idx += 1;
17268        }
17269        #[cfg(feature = "extra-children")]
17270        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17271            extra_iter
17272                .next()
17273                .unwrap()
17274                .node
17275                .write_to(writer)
17276                .map_err(SerializeError::from)?;
17277        }
17278        #[cfg(feature = "dml-charts")]
17279        if let Some(ref val) = self.show_vert_border {
17280            val.write_element("a:showVertBorder", writer)?;
17281        }
17282        #[cfg(feature = "extra-children")]
17283        {
17284            emit_idx += 1;
17285        }
17286        #[cfg(feature = "extra-children")]
17287        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17288            extra_iter
17289                .next()
17290                .unwrap()
17291                .node
17292                .write_to(writer)
17293                .map_err(SerializeError::from)?;
17294        }
17295        #[cfg(feature = "dml-charts")]
17296        if let Some(ref val) = self.show_outline {
17297            val.write_element("a:showOutline", writer)?;
17298        }
17299        #[cfg(feature = "extra-children")]
17300        {
17301            emit_idx += 1;
17302        }
17303        #[cfg(feature = "extra-children")]
17304        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17305            extra_iter
17306                .next()
17307                .unwrap()
17308                .node
17309                .write_to(writer)
17310                .map_err(SerializeError::from)?;
17311        }
17312        #[cfg(feature = "dml-charts")]
17313        if let Some(ref val) = self.show_keys {
17314            val.write_element("a:showKeys", writer)?;
17315        }
17316        #[cfg(feature = "extra-children")]
17317        {
17318            emit_idx += 1;
17319        }
17320        #[cfg(feature = "extra-children")]
17321        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17322            extra_iter
17323                .next()
17324                .unwrap()
17325                .node
17326                .write_to(writer)
17327                .map_err(SerializeError::from)?;
17328        }
17329        #[cfg(feature = "dml-charts")]
17330        if let Some(ref val) = self.sp_pr {
17331            val.write_element("a:spPr", writer)?;
17332        }
17333        #[cfg(feature = "extra-children")]
17334        {
17335            emit_idx += 1;
17336        }
17337        #[cfg(feature = "extra-children")]
17338        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17339            extra_iter
17340                .next()
17341                .unwrap()
17342                .node
17343                .write_to(writer)
17344                .map_err(SerializeError::from)?;
17345        }
17346        #[cfg(feature = "dml-charts")]
17347        if let Some(ref val) = self.tx_pr {
17348            val.write_element("a:txPr", writer)?;
17349        }
17350        #[cfg(feature = "extra-children")]
17351        {
17352            emit_idx += 1;
17353        }
17354        #[cfg(feature = "extra-children")]
17355        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17356            extra_iter
17357                .next()
17358                .unwrap()
17359                .node
17360                .write_to(writer)
17361                .map_err(SerializeError::from)?;
17362        }
17363        #[cfg(feature = "dml-charts")]
17364        if let Some(ref val) = self.ext_lst {
17365            val.write_element("a:extLst", writer)?;
17366        }
17367        #[cfg(feature = "extra-children")]
17368        {
17369            emit_idx += 1;
17370        }
17371        #[cfg(feature = "extra-children")]
17372        for extra in extra_iter {
17373            extra.node.write_to(writer).map_err(SerializeError::from)?;
17374        }
17375        Ok(())
17376    }
17377
17378    fn is_empty_element(&self) -> bool {
17379        #[cfg(feature = "dml-charts")]
17380        if self.show_horz_border.is_some() {
17381            return false;
17382        }
17383        #[cfg(feature = "dml-charts")]
17384        if self.show_vert_border.is_some() {
17385            return false;
17386        }
17387        #[cfg(feature = "dml-charts")]
17388        if self.show_outline.is_some() {
17389            return false;
17390        }
17391        #[cfg(feature = "dml-charts")]
17392        if self.show_keys.is_some() {
17393            return false;
17394        }
17395        #[cfg(feature = "dml-charts")]
17396        if self.sp_pr.is_some() {
17397            return false;
17398        }
17399        #[cfg(feature = "dml-charts")]
17400        if self.tx_pr.is_some() {
17401            return false;
17402        }
17403        #[cfg(feature = "dml-charts")]
17404        if self.ext_lst.is_some() {
17405            return false;
17406        }
17407        #[cfg(feature = "extra-children")]
17408        if !self.extra_children.is_empty() {
17409            return false;
17410        }
17411        true
17412    }
17413}
17414
17415impl ToXml for GapAmount {
17416    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17417        #[allow(unused_mut)]
17418        let mut start = start;
17419        #[cfg(feature = "dml-charts")]
17420        if let Some(ref val) = self.value {
17421            {
17422                let s = val.to_string();
17423                start.push_attribute(("val", s.as_str()));
17424            }
17425        }
17426        #[cfg(feature = "extra-attrs")]
17427        for (key, value) in &self.extra_attrs {
17428            start.push_attribute((key.as_str(), value.as_str()));
17429        }
17430        start
17431    }
17432
17433    fn is_empty_element(&self) -> bool {
17434        true
17435    }
17436}
17437
17438impl ToXml for OverlapAmount {
17439    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17440        #[allow(unused_mut)]
17441        let mut start = start;
17442        #[cfg(feature = "dml-charts")]
17443        if let Some(ref val) = self.value {
17444            {
17445                let s = val.to_string();
17446                start.push_attribute(("val", s.as_str()));
17447            }
17448        }
17449        #[cfg(feature = "extra-attrs")]
17450        for (key, value) in &self.extra_attrs {
17451            start.push_attribute((key.as_str(), value.as_str()));
17452        }
17453        start
17454    }
17455
17456    fn is_empty_element(&self) -> bool {
17457        true
17458    }
17459}
17460
17461impl ToXml for BubbleScale {
17462    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17463        #[allow(unused_mut)]
17464        let mut start = start;
17465        #[cfg(feature = "dml-charts")]
17466        if let Some(ref val) = self.value {
17467            {
17468                let s = val.to_string();
17469                start.push_attribute(("val", s.as_str()));
17470            }
17471        }
17472        #[cfg(feature = "extra-attrs")]
17473        for (key, value) in &self.extra_attrs {
17474            start.push_attribute((key.as_str(), value.as_str()));
17475        }
17476        start
17477    }
17478
17479    fn is_empty_element(&self) -> bool {
17480        true
17481    }
17482}
17483
17484impl ToXml for SizeRepresents {
17485    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17486        #[allow(unused_mut)]
17487        let mut start = start;
17488        #[cfg(feature = "dml-charts")]
17489        if let Some(ref val) = self.value {
17490            {
17491                let s = val.to_string();
17492                start.push_attribute(("val", s.as_str()));
17493            }
17494        }
17495        #[cfg(feature = "extra-attrs")]
17496        for (key, value) in &self.extra_attrs {
17497            start.push_attribute((key.as_str(), value.as_str()));
17498        }
17499        start
17500    }
17501
17502    fn is_empty_element(&self) -> bool {
17503        true
17504    }
17505}
17506
17507impl ToXml for FirstSliceAngle {
17508    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17509        #[allow(unused_mut)]
17510        let mut start = start;
17511        #[cfg(feature = "dml-charts")]
17512        if let Some(ref val) = self.value {
17513            {
17514                let s = val.to_string();
17515                start.push_attribute(("val", s.as_str()));
17516            }
17517        }
17518        #[cfg(feature = "extra-attrs")]
17519        for (key, value) in &self.extra_attrs {
17520            start.push_attribute((key.as_str(), value.as_str()));
17521        }
17522        start
17523    }
17524
17525    fn is_empty_element(&self) -> bool {
17526        true
17527    }
17528}
17529
17530impl ToXml for HoleSize {
17531    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17532        #[allow(unused_mut)]
17533        let mut start = start;
17534        #[cfg(feature = "dml-charts")]
17535        if let Some(ref val) = self.value {
17536            {
17537                let s = val.to_string();
17538                start.push_attribute(("val", s.as_str()));
17539            }
17540        }
17541        #[cfg(feature = "extra-attrs")]
17542        for (key, value) in &self.extra_attrs {
17543            start.push_attribute((key.as_str(), value.as_str()));
17544        }
17545        start
17546    }
17547
17548    fn is_empty_element(&self) -> bool {
17549        true
17550    }
17551}
17552
17553impl ToXml for SplitType {
17554    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17555        #[allow(unused_mut)]
17556        let mut start = start;
17557        #[cfg(feature = "dml-charts")]
17558        if let Some(ref val) = self.value {
17559            {
17560                let s = val.to_string();
17561                start.push_attribute(("val", s.as_str()));
17562            }
17563        }
17564        #[cfg(feature = "extra-attrs")]
17565        for (key, value) in &self.extra_attrs {
17566            start.push_attribute((key.as_str(), value.as_str()));
17567        }
17568        start
17569    }
17570
17571    fn is_empty_element(&self) -> bool {
17572        true
17573    }
17574}
17575
17576impl ToXml for CustomSplit {
17577    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17578        #[cfg(feature = "extra-children")]
17579        let mut extra_iter = self.extra_children.iter().peekable();
17580        #[cfg(feature = "extra-children")]
17581        let mut emit_idx: usize = 0;
17582        #[cfg(feature = "dml-charts")]
17583        for item in &self.second_pie_pt {
17584            #[cfg(feature = "extra-children")]
17585            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17586                extra_iter
17587                    .next()
17588                    .unwrap()
17589                    .node
17590                    .write_to(writer)
17591                    .map_err(SerializeError::from)?;
17592            }
17593            item.write_element("a:secondPiePt", writer)?;
17594            #[cfg(feature = "extra-children")]
17595            {
17596                emit_idx += 1;
17597            }
17598        }
17599        #[cfg(feature = "extra-children")]
17600        for extra in extra_iter {
17601            extra.node.write_to(writer).map_err(SerializeError::from)?;
17602        }
17603        Ok(())
17604    }
17605
17606    fn is_empty_element(&self) -> bool {
17607        #[cfg(feature = "dml-charts")]
17608        if !self.second_pie_pt.is_empty() {
17609            return false;
17610        }
17611        #[cfg(feature = "extra-children")]
17612        if !self.extra_children.is_empty() {
17613            return false;
17614        }
17615        true
17616    }
17617}
17618
17619impl ToXml for SecondPieSize {
17620    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17621        #[allow(unused_mut)]
17622        let mut start = start;
17623        #[cfg(feature = "dml-charts")]
17624        if let Some(ref val) = self.value {
17625            {
17626                let s = val.to_string();
17627                start.push_attribute(("val", s.as_str()));
17628            }
17629        }
17630        #[cfg(feature = "extra-attrs")]
17631        for (key, value) in &self.extra_attrs {
17632            start.push_attribute((key.as_str(), value.as_str()));
17633        }
17634        start
17635    }
17636
17637    fn is_empty_element(&self) -> bool {
17638        true
17639    }
17640}
17641
17642impl ToXml for ChartNumFmt {
17643    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17644        #[allow(unused_mut)]
17645        let mut start = start;
17646        #[cfg(feature = "dml-charts")]
17647        {
17648            let val = &self.format_code;
17649            start.push_attribute(("formatCode", val.as_str()));
17650        }
17651        #[cfg(feature = "dml-charts")]
17652        if let Some(ref val) = self.source_linked {
17653            start.push_attribute(("sourceLinked", if *val { "1" } else { "0" }));
17654        }
17655        #[cfg(feature = "extra-attrs")]
17656        for (key, value) in &self.extra_attrs {
17657            start.push_attribute((key.as_str(), value.as_str()));
17658        }
17659        start
17660    }
17661
17662    fn is_empty_element(&self) -> bool {
17663        true
17664    }
17665}
17666
17667impl ToXml for LabelAlignment {
17668    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17669        #[allow(unused_mut)]
17670        let mut start = start;
17671        #[cfg(feature = "dml-charts")]
17672        {
17673            let val = &self.value;
17674            {
17675                let s = val.to_string();
17676                start.push_attribute(("val", s.as_str()));
17677            }
17678        }
17679        #[cfg(feature = "extra-attrs")]
17680        for (key, value) in &self.extra_attrs {
17681            start.push_attribute((key.as_str(), value.as_str()));
17682        }
17683        start
17684    }
17685
17686    fn is_empty_element(&self) -> bool {
17687        true
17688    }
17689}
17690
17691impl ToXml for DataLabelPosition {
17692    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
17693        #[allow(unused_mut)]
17694        let mut start = start;
17695        #[cfg(feature = "dml-charts")]
17696        {
17697            let val = &self.value;
17698            {
17699                let s = val.to_string();
17700                start.push_attribute(("val", s.as_str()));
17701            }
17702        }
17703        #[cfg(feature = "extra-attrs")]
17704        for (key, value) in &self.extra_attrs {
17705            start.push_attribute((key.as_str(), value.as_str()));
17706        }
17707        start
17708    }
17709
17710    fn is_empty_element(&self) -> bool {
17711        true
17712    }
17713}
17714
17715impl ToXml for EGDLblShared {
17716    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17717        #[cfg(feature = "extra-children")]
17718        let mut extra_iter = self.extra_children.iter().peekable();
17719        #[cfg(feature = "extra-children")]
17720        let mut emit_idx: usize = 0;
17721        #[cfg(feature = "extra-children")]
17722        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17723            extra_iter
17724                .next()
17725                .unwrap()
17726                .node
17727                .write_to(writer)
17728                .map_err(SerializeError::from)?;
17729        }
17730        if let Some(ref val) = self.num_fmt {
17731            val.write_element("a:numFmt", writer)?;
17732        }
17733        #[cfg(feature = "extra-children")]
17734        {
17735            emit_idx += 1;
17736        }
17737        #[cfg(feature = "extra-children")]
17738        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17739            extra_iter
17740                .next()
17741                .unwrap()
17742                .node
17743                .write_to(writer)
17744                .map_err(SerializeError::from)?;
17745        }
17746        if let Some(ref val) = self.sp_pr {
17747            val.write_element("a:spPr", writer)?;
17748        }
17749        #[cfg(feature = "extra-children")]
17750        {
17751            emit_idx += 1;
17752        }
17753        #[cfg(feature = "extra-children")]
17754        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17755            extra_iter
17756                .next()
17757                .unwrap()
17758                .node
17759                .write_to(writer)
17760                .map_err(SerializeError::from)?;
17761        }
17762        if let Some(ref val) = self.tx_pr {
17763            val.write_element("a:txPr", writer)?;
17764        }
17765        #[cfg(feature = "extra-children")]
17766        {
17767            emit_idx += 1;
17768        }
17769        #[cfg(feature = "extra-children")]
17770        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17771            extra_iter
17772                .next()
17773                .unwrap()
17774                .node
17775                .write_to(writer)
17776                .map_err(SerializeError::from)?;
17777        }
17778        if let Some(ref val) = self.d_lbl_pos {
17779            val.write_element("a:dLblPos", writer)?;
17780        }
17781        #[cfg(feature = "extra-children")]
17782        {
17783            emit_idx += 1;
17784        }
17785        #[cfg(feature = "extra-children")]
17786        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17787            extra_iter
17788                .next()
17789                .unwrap()
17790                .node
17791                .write_to(writer)
17792                .map_err(SerializeError::from)?;
17793        }
17794        if let Some(ref val) = self.show_legend_key {
17795            val.write_element("a:showLegendKey", writer)?;
17796        }
17797        #[cfg(feature = "extra-children")]
17798        {
17799            emit_idx += 1;
17800        }
17801        #[cfg(feature = "extra-children")]
17802        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17803            extra_iter
17804                .next()
17805                .unwrap()
17806                .node
17807                .write_to(writer)
17808                .map_err(SerializeError::from)?;
17809        }
17810        if let Some(ref val) = self.show_val {
17811            val.write_element("a:showVal", writer)?;
17812        }
17813        #[cfg(feature = "extra-children")]
17814        {
17815            emit_idx += 1;
17816        }
17817        #[cfg(feature = "extra-children")]
17818        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17819            extra_iter
17820                .next()
17821                .unwrap()
17822                .node
17823                .write_to(writer)
17824                .map_err(SerializeError::from)?;
17825        }
17826        if let Some(ref val) = self.show_cat_name {
17827            val.write_element("a:showCatName", writer)?;
17828        }
17829        #[cfg(feature = "extra-children")]
17830        {
17831            emit_idx += 1;
17832        }
17833        #[cfg(feature = "extra-children")]
17834        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17835            extra_iter
17836                .next()
17837                .unwrap()
17838                .node
17839                .write_to(writer)
17840                .map_err(SerializeError::from)?;
17841        }
17842        if let Some(ref val) = self.show_ser_name {
17843            val.write_element("a:showSerName", writer)?;
17844        }
17845        #[cfg(feature = "extra-children")]
17846        {
17847            emit_idx += 1;
17848        }
17849        #[cfg(feature = "extra-children")]
17850        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17851            extra_iter
17852                .next()
17853                .unwrap()
17854                .node
17855                .write_to(writer)
17856                .map_err(SerializeError::from)?;
17857        }
17858        if let Some(ref val) = self.show_percent {
17859            val.write_element("a:showPercent", writer)?;
17860        }
17861        #[cfg(feature = "extra-children")]
17862        {
17863            emit_idx += 1;
17864        }
17865        #[cfg(feature = "extra-children")]
17866        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17867            extra_iter
17868                .next()
17869                .unwrap()
17870                .node
17871                .write_to(writer)
17872                .map_err(SerializeError::from)?;
17873        }
17874        if let Some(ref val) = self.show_bubble_size {
17875            val.write_element("a:showBubbleSize", writer)?;
17876        }
17877        #[cfg(feature = "extra-children")]
17878        {
17879            emit_idx += 1;
17880        }
17881        #[cfg(feature = "extra-children")]
17882        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17883            extra_iter
17884                .next()
17885                .unwrap()
17886                .node
17887                .write_to(writer)
17888                .map_err(SerializeError::from)?;
17889        }
17890        if let Some(ref val) = self.separator {
17891            {
17892                let start = BytesStart::new("a:separator");
17893                writer.write_event(Event::Start(start))?;
17894                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
17895                writer.write_event(Event::End(BytesEnd::new("a:separator")))?;
17896            }
17897        }
17898        #[cfg(feature = "extra-children")]
17899        {
17900            emit_idx += 1;
17901        }
17902        #[cfg(feature = "extra-children")]
17903        for extra in extra_iter {
17904            extra.node.write_to(writer).map_err(SerializeError::from)?;
17905        }
17906        Ok(())
17907    }
17908
17909    fn is_empty_element(&self) -> bool {
17910        if self.num_fmt.is_some() {
17911            return false;
17912        }
17913        if self.sp_pr.is_some() {
17914            return false;
17915        }
17916        if self.tx_pr.is_some() {
17917            return false;
17918        }
17919        if self.d_lbl_pos.is_some() {
17920            return false;
17921        }
17922        if self.show_legend_key.is_some() {
17923            return false;
17924        }
17925        if self.show_val.is_some() {
17926            return false;
17927        }
17928        if self.show_cat_name.is_some() {
17929            return false;
17930        }
17931        if self.show_ser_name.is_some() {
17932            return false;
17933        }
17934        if self.show_percent.is_some() {
17935            return false;
17936        }
17937        if self.show_bubble_size.is_some() {
17938            return false;
17939        }
17940        if self.separator.is_some() {
17941            return false;
17942        }
17943        #[cfg(feature = "extra-children")]
17944        if !self.extra_children.is_empty() {
17945            return false;
17946        }
17947        true
17948    }
17949}
17950
17951impl ToXml for DchrtGroupDLbl {
17952    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
17953        #[cfg(feature = "extra-children")]
17954        let mut extra_iter = self.extra_children.iter().peekable();
17955        #[cfg(feature = "extra-children")]
17956        let mut emit_idx: usize = 0;
17957        #[cfg(feature = "extra-children")]
17958        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17959            extra_iter
17960                .next()
17961                .unwrap()
17962                .node
17963                .write_to(writer)
17964                .map_err(SerializeError::from)?;
17965        }
17966        if let Some(ref val) = self.layout {
17967            val.write_element("a:layout", writer)?;
17968        }
17969        #[cfg(feature = "extra-children")]
17970        {
17971            emit_idx += 1;
17972        }
17973        #[cfg(feature = "extra-children")]
17974        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17975            extra_iter
17976                .next()
17977                .unwrap()
17978                .node
17979                .write_to(writer)
17980                .map_err(SerializeError::from)?;
17981        }
17982        if let Some(ref val) = self.tx {
17983            val.write_element("a:tx", writer)?;
17984        }
17985        #[cfg(feature = "extra-children")]
17986        {
17987            emit_idx += 1;
17988        }
17989        #[cfg(feature = "extra-children")]
17990        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
17991            extra_iter
17992                .next()
17993                .unwrap()
17994                .node
17995                .write_to(writer)
17996                .map_err(SerializeError::from)?;
17997        }
17998        if let Some(ref val) = self.num_fmt {
17999            val.write_element("a:numFmt", writer)?;
18000        }
18001        #[cfg(feature = "extra-children")]
18002        {
18003            emit_idx += 1;
18004        }
18005        #[cfg(feature = "extra-children")]
18006        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18007            extra_iter
18008                .next()
18009                .unwrap()
18010                .node
18011                .write_to(writer)
18012                .map_err(SerializeError::from)?;
18013        }
18014        if let Some(ref val) = self.sp_pr {
18015            val.write_element("a:spPr", writer)?;
18016        }
18017        #[cfg(feature = "extra-children")]
18018        {
18019            emit_idx += 1;
18020        }
18021        #[cfg(feature = "extra-children")]
18022        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18023            extra_iter
18024                .next()
18025                .unwrap()
18026                .node
18027                .write_to(writer)
18028                .map_err(SerializeError::from)?;
18029        }
18030        if let Some(ref val) = self.tx_pr {
18031            val.write_element("a:txPr", writer)?;
18032        }
18033        #[cfg(feature = "extra-children")]
18034        {
18035            emit_idx += 1;
18036        }
18037        #[cfg(feature = "extra-children")]
18038        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18039            extra_iter
18040                .next()
18041                .unwrap()
18042                .node
18043                .write_to(writer)
18044                .map_err(SerializeError::from)?;
18045        }
18046        if let Some(ref val) = self.d_lbl_pos {
18047            val.write_element("a:dLblPos", writer)?;
18048        }
18049        #[cfg(feature = "extra-children")]
18050        {
18051            emit_idx += 1;
18052        }
18053        #[cfg(feature = "extra-children")]
18054        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18055            extra_iter
18056                .next()
18057                .unwrap()
18058                .node
18059                .write_to(writer)
18060                .map_err(SerializeError::from)?;
18061        }
18062        if let Some(ref val) = self.show_legend_key {
18063            val.write_element("a:showLegendKey", writer)?;
18064        }
18065        #[cfg(feature = "extra-children")]
18066        {
18067            emit_idx += 1;
18068        }
18069        #[cfg(feature = "extra-children")]
18070        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18071            extra_iter
18072                .next()
18073                .unwrap()
18074                .node
18075                .write_to(writer)
18076                .map_err(SerializeError::from)?;
18077        }
18078        if let Some(ref val) = self.show_val {
18079            val.write_element("a:showVal", writer)?;
18080        }
18081        #[cfg(feature = "extra-children")]
18082        {
18083            emit_idx += 1;
18084        }
18085        #[cfg(feature = "extra-children")]
18086        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18087            extra_iter
18088                .next()
18089                .unwrap()
18090                .node
18091                .write_to(writer)
18092                .map_err(SerializeError::from)?;
18093        }
18094        if let Some(ref val) = self.show_cat_name {
18095            val.write_element("a:showCatName", writer)?;
18096        }
18097        #[cfg(feature = "extra-children")]
18098        {
18099            emit_idx += 1;
18100        }
18101        #[cfg(feature = "extra-children")]
18102        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18103            extra_iter
18104                .next()
18105                .unwrap()
18106                .node
18107                .write_to(writer)
18108                .map_err(SerializeError::from)?;
18109        }
18110        if let Some(ref val) = self.show_ser_name {
18111            val.write_element("a:showSerName", writer)?;
18112        }
18113        #[cfg(feature = "extra-children")]
18114        {
18115            emit_idx += 1;
18116        }
18117        #[cfg(feature = "extra-children")]
18118        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18119            extra_iter
18120                .next()
18121                .unwrap()
18122                .node
18123                .write_to(writer)
18124                .map_err(SerializeError::from)?;
18125        }
18126        if let Some(ref val) = self.show_percent {
18127            val.write_element("a:showPercent", writer)?;
18128        }
18129        #[cfg(feature = "extra-children")]
18130        {
18131            emit_idx += 1;
18132        }
18133        #[cfg(feature = "extra-children")]
18134        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18135            extra_iter
18136                .next()
18137                .unwrap()
18138                .node
18139                .write_to(writer)
18140                .map_err(SerializeError::from)?;
18141        }
18142        if let Some(ref val) = self.show_bubble_size {
18143            val.write_element("a:showBubbleSize", writer)?;
18144        }
18145        #[cfg(feature = "extra-children")]
18146        {
18147            emit_idx += 1;
18148        }
18149        #[cfg(feature = "extra-children")]
18150        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18151            extra_iter
18152                .next()
18153                .unwrap()
18154                .node
18155                .write_to(writer)
18156                .map_err(SerializeError::from)?;
18157        }
18158        if let Some(ref val) = self.separator {
18159            {
18160                let start = BytesStart::new("a:separator");
18161                writer.write_event(Event::Start(start))?;
18162                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
18163                writer.write_event(Event::End(BytesEnd::new("a:separator")))?;
18164            }
18165        }
18166        #[cfg(feature = "extra-children")]
18167        {
18168            emit_idx += 1;
18169        }
18170        #[cfg(feature = "extra-children")]
18171        for extra in extra_iter {
18172            extra.node.write_to(writer).map_err(SerializeError::from)?;
18173        }
18174        Ok(())
18175    }
18176
18177    fn is_empty_element(&self) -> bool {
18178        if self.layout.is_some() {
18179            return false;
18180        }
18181        if self.tx.is_some() {
18182            return false;
18183        }
18184        if self.num_fmt.is_some() {
18185            return false;
18186        }
18187        if self.sp_pr.is_some() {
18188            return false;
18189        }
18190        if self.tx_pr.is_some() {
18191            return false;
18192        }
18193        if self.d_lbl_pos.is_some() {
18194            return false;
18195        }
18196        if self.show_legend_key.is_some() {
18197            return false;
18198        }
18199        if self.show_val.is_some() {
18200            return false;
18201        }
18202        if self.show_cat_name.is_some() {
18203            return false;
18204        }
18205        if self.show_ser_name.is_some() {
18206            return false;
18207        }
18208        if self.show_percent.is_some() {
18209            return false;
18210        }
18211        if self.show_bubble_size.is_some() {
18212            return false;
18213        }
18214        if self.separator.is_some() {
18215            return false;
18216        }
18217        #[cfg(feature = "extra-children")]
18218        if !self.extra_children.is_empty() {
18219            return false;
18220        }
18221        true
18222    }
18223}
18224
18225impl ToXml for DataLabel {
18226    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
18227        #[cfg(feature = "extra-children")]
18228        let mut extra_iter = self.extra_children.iter().peekable();
18229        #[cfg(feature = "extra-children")]
18230        let mut emit_idx: usize = 0;
18231        #[cfg(feature = "extra-children")]
18232        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18233            extra_iter
18234                .next()
18235                .unwrap()
18236                .node
18237                .write_to(writer)
18238                .map_err(SerializeError::from)?;
18239        }
18240        #[cfg(feature = "dml-charts")]
18241        {
18242            let val = &self.idx;
18243            val.write_element("a:idx", writer)?;
18244        }
18245        #[cfg(feature = "extra-children")]
18246        {
18247            emit_idx += 1;
18248        }
18249        #[cfg(feature = "extra-children")]
18250        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18251            extra_iter
18252                .next()
18253                .unwrap()
18254                .node
18255                .write_to(writer)
18256                .map_err(SerializeError::from)?;
18257        }
18258        #[cfg(feature = "dml-charts")]
18259        if let Some(ref val) = self.delete {
18260            val.write_element("a:delete", writer)?;
18261        }
18262        #[cfg(feature = "extra-children")]
18263        {
18264            emit_idx += 1;
18265        }
18266        #[cfg(feature = "extra-children")]
18267        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18268            extra_iter
18269                .next()
18270                .unwrap()
18271                .node
18272                .write_to(writer)
18273                .map_err(SerializeError::from)?;
18274        }
18275        #[cfg(feature = "dml-charts")]
18276        if let Some(ref val) = self.layout {
18277            val.write_element("a:layout", writer)?;
18278        }
18279        #[cfg(feature = "extra-children")]
18280        {
18281            emit_idx += 1;
18282        }
18283        #[cfg(feature = "extra-children")]
18284        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18285            extra_iter
18286                .next()
18287                .unwrap()
18288                .node
18289                .write_to(writer)
18290                .map_err(SerializeError::from)?;
18291        }
18292        #[cfg(feature = "dml-charts")]
18293        if let Some(ref val) = self.tx {
18294            val.write_element("a:tx", writer)?;
18295        }
18296        #[cfg(feature = "extra-children")]
18297        {
18298            emit_idx += 1;
18299        }
18300        #[cfg(feature = "extra-children")]
18301        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18302            extra_iter
18303                .next()
18304                .unwrap()
18305                .node
18306                .write_to(writer)
18307                .map_err(SerializeError::from)?;
18308        }
18309        #[cfg(feature = "dml-charts")]
18310        if let Some(ref val) = self.num_fmt {
18311            val.write_element("a:numFmt", writer)?;
18312        }
18313        #[cfg(feature = "extra-children")]
18314        {
18315            emit_idx += 1;
18316        }
18317        #[cfg(feature = "extra-children")]
18318        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18319            extra_iter
18320                .next()
18321                .unwrap()
18322                .node
18323                .write_to(writer)
18324                .map_err(SerializeError::from)?;
18325        }
18326        #[cfg(feature = "dml-charts")]
18327        if let Some(ref val) = self.sp_pr {
18328            val.write_element("a:spPr", writer)?;
18329        }
18330        #[cfg(feature = "extra-children")]
18331        {
18332            emit_idx += 1;
18333        }
18334        #[cfg(feature = "extra-children")]
18335        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18336            extra_iter
18337                .next()
18338                .unwrap()
18339                .node
18340                .write_to(writer)
18341                .map_err(SerializeError::from)?;
18342        }
18343        #[cfg(feature = "dml-charts")]
18344        if let Some(ref val) = self.tx_pr {
18345            val.write_element("a:txPr", writer)?;
18346        }
18347        #[cfg(feature = "extra-children")]
18348        {
18349            emit_idx += 1;
18350        }
18351        #[cfg(feature = "extra-children")]
18352        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18353            extra_iter
18354                .next()
18355                .unwrap()
18356                .node
18357                .write_to(writer)
18358                .map_err(SerializeError::from)?;
18359        }
18360        #[cfg(feature = "dml-charts")]
18361        if let Some(ref val) = self.d_lbl_pos {
18362            val.write_element("a:dLblPos", writer)?;
18363        }
18364        #[cfg(feature = "extra-children")]
18365        {
18366            emit_idx += 1;
18367        }
18368        #[cfg(feature = "extra-children")]
18369        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18370            extra_iter
18371                .next()
18372                .unwrap()
18373                .node
18374                .write_to(writer)
18375                .map_err(SerializeError::from)?;
18376        }
18377        #[cfg(feature = "dml-charts")]
18378        if let Some(ref val) = self.show_legend_key {
18379            val.write_element("a:showLegendKey", writer)?;
18380        }
18381        #[cfg(feature = "extra-children")]
18382        {
18383            emit_idx += 1;
18384        }
18385        #[cfg(feature = "extra-children")]
18386        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18387            extra_iter
18388                .next()
18389                .unwrap()
18390                .node
18391                .write_to(writer)
18392                .map_err(SerializeError::from)?;
18393        }
18394        #[cfg(feature = "dml-charts")]
18395        if let Some(ref val) = self.show_val {
18396            val.write_element("a:showVal", writer)?;
18397        }
18398        #[cfg(feature = "extra-children")]
18399        {
18400            emit_idx += 1;
18401        }
18402        #[cfg(feature = "extra-children")]
18403        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18404            extra_iter
18405                .next()
18406                .unwrap()
18407                .node
18408                .write_to(writer)
18409                .map_err(SerializeError::from)?;
18410        }
18411        #[cfg(feature = "dml-charts")]
18412        if let Some(ref val) = self.show_cat_name {
18413            val.write_element("a:showCatName", writer)?;
18414        }
18415        #[cfg(feature = "extra-children")]
18416        {
18417            emit_idx += 1;
18418        }
18419        #[cfg(feature = "extra-children")]
18420        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18421            extra_iter
18422                .next()
18423                .unwrap()
18424                .node
18425                .write_to(writer)
18426                .map_err(SerializeError::from)?;
18427        }
18428        #[cfg(feature = "dml-charts")]
18429        if let Some(ref val) = self.show_ser_name {
18430            val.write_element("a:showSerName", writer)?;
18431        }
18432        #[cfg(feature = "extra-children")]
18433        {
18434            emit_idx += 1;
18435        }
18436        #[cfg(feature = "extra-children")]
18437        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18438            extra_iter
18439                .next()
18440                .unwrap()
18441                .node
18442                .write_to(writer)
18443                .map_err(SerializeError::from)?;
18444        }
18445        #[cfg(feature = "dml-charts")]
18446        if let Some(ref val) = self.show_percent {
18447            val.write_element("a:showPercent", writer)?;
18448        }
18449        #[cfg(feature = "extra-children")]
18450        {
18451            emit_idx += 1;
18452        }
18453        #[cfg(feature = "extra-children")]
18454        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18455            extra_iter
18456                .next()
18457                .unwrap()
18458                .node
18459                .write_to(writer)
18460                .map_err(SerializeError::from)?;
18461        }
18462        #[cfg(feature = "dml-charts")]
18463        if let Some(ref val) = self.show_bubble_size {
18464            val.write_element("a:showBubbleSize", writer)?;
18465        }
18466        #[cfg(feature = "extra-children")]
18467        {
18468            emit_idx += 1;
18469        }
18470        #[cfg(feature = "extra-children")]
18471        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18472            extra_iter
18473                .next()
18474                .unwrap()
18475                .node
18476                .write_to(writer)
18477                .map_err(SerializeError::from)?;
18478        }
18479        #[cfg(feature = "dml-charts")]
18480        if let Some(ref val) = self.separator {
18481            {
18482                let start = BytesStart::new("a:separator");
18483                writer.write_event(Event::Start(start))?;
18484                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
18485                writer.write_event(Event::End(BytesEnd::new("a:separator")))?;
18486            }
18487        }
18488        #[cfg(feature = "extra-children")]
18489        {
18490            emit_idx += 1;
18491        }
18492        #[cfg(feature = "extra-children")]
18493        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18494            extra_iter
18495                .next()
18496                .unwrap()
18497                .node
18498                .write_to(writer)
18499                .map_err(SerializeError::from)?;
18500        }
18501        #[cfg(feature = "dml-charts")]
18502        if let Some(ref val) = self.ext_lst {
18503            val.write_element("a:extLst", writer)?;
18504        }
18505        #[cfg(feature = "extra-children")]
18506        {
18507            emit_idx += 1;
18508        }
18509        #[cfg(feature = "extra-children")]
18510        for extra in extra_iter {
18511            extra.node.write_to(writer).map_err(SerializeError::from)?;
18512        }
18513        Ok(())
18514    }
18515
18516    fn is_empty_element(&self) -> bool {
18517        #[cfg(feature = "dml-charts")]
18518        return false;
18519        #[cfg(feature = "dml-charts")]
18520        if self.delete.is_some() {
18521            return false;
18522        }
18523        #[cfg(feature = "dml-charts")]
18524        if self.layout.is_some() {
18525            return false;
18526        }
18527        #[cfg(feature = "dml-charts")]
18528        if self.tx.is_some() {
18529            return false;
18530        }
18531        #[cfg(feature = "dml-charts")]
18532        if self.num_fmt.is_some() {
18533            return false;
18534        }
18535        #[cfg(feature = "dml-charts")]
18536        if self.sp_pr.is_some() {
18537            return false;
18538        }
18539        #[cfg(feature = "dml-charts")]
18540        if self.tx_pr.is_some() {
18541            return false;
18542        }
18543        #[cfg(feature = "dml-charts")]
18544        if self.d_lbl_pos.is_some() {
18545            return false;
18546        }
18547        #[cfg(feature = "dml-charts")]
18548        if self.show_legend_key.is_some() {
18549            return false;
18550        }
18551        #[cfg(feature = "dml-charts")]
18552        if self.show_val.is_some() {
18553            return false;
18554        }
18555        #[cfg(feature = "dml-charts")]
18556        if self.show_cat_name.is_some() {
18557            return false;
18558        }
18559        #[cfg(feature = "dml-charts")]
18560        if self.show_ser_name.is_some() {
18561            return false;
18562        }
18563        #[cfg(feature = "dml-charts")]
18564        if self.show_percent.is_some() {
18565            return false;
18566        }
18567        #[cfg(feature = "dml-charts")]
18568        if self.show_bubble_size.is_some() {
18569            return false;
18570        }
18571        #[cfg(feature = "dml-charts")]
18572        if self.separator.is_some() {
18573            return false;
18574        }
18575        #[cfg(feature = "dml-charts")]
18576        if self.ext_lst.is_some() {
18577            return false;
18578        }
18579        #[cfg(feature = "extra-children")]
18580        if !self.extra_children.is_empty() {
18581            return false;
18582        }
18583        true
18584    }
18585}
18586
18587impl ToXml for DchrtGroupDLbls {
18588    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
18589        #[cfg(feature = "extra-children")]
18590        let mut extra_iter = self.extra_children.iter().peekable();
18591        #[cfg(feature = "extra-children")]
18592        let mut emit_idx: usize = 0;
18593        #[cfg(feature = "extra-children")]
18594        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18595            extra_iter
18596                .next()
18597                .unwrap()
18598                .node
18599                .write_to(writer)
18600                .map_err(SerializeError::from)?;
18601        }
18602        if let Some(ref val) = self.num_fmt {
18603            val.write_element("a:numFmt", writer)?;
18604        }
18605        #[cfg(feature = "extra-children")]
18606        {
18607            emit_idx += 1;
18608        }
18609        #[cfg(feature = "extra-children")]
18610        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18611            extra_iter
18612                .next()
18613                .unwrap()
18614                .node
18615                .write_to(writer)
18616                .map_err(SerializeError::from)?;
18617        }
18618        if let Some(ref val) = self.sp_pr {
18619            val.write_element("a:spPr", writer)?;
18620        }
18621        #[cfg(feature = "extra-children")]
18622        {
18623            emit_idx += 1;
18624        }
18625        #[cfg(feature = "extra-children")]
18626        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18627            extra_iter
18628                .next()
18629                .unwrap()
18630                .node
18631                .write_to(writer)
18632                .map_err(SerializeError::from)?;
18633        }
18634        if let Some(ref val) = self.tx_pr {
18635            val.write_element("a:txPr", writer)?;
18636        }
18637        #[cfg(feature = "extra-children")]
18638        {
18639            emit_idx += 1;
18640        }
18641        #[cfg(feature = "extra-children")]
18642        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18643            extra_iter
18644                .next()
18645                .unwrap()
18646                .node
18647                .write_to(writer)
18648                .map_err(SerializeError::from)?;
18649        }
18650        if let Some(ref val) = self.d_lbl_pos {
18651            val.write_element("a:dLblPos", writer)?;
18652        }
18653        #[cfg(feature = "extra-children")]
18654        {
18655            emit_idx += 1;
18656        }
18657        #[cfg(feature = "extra-children")]
18658        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18659            extra_iter
18660                .next()
18661                .unwrap()
18662                .node
18663                .write_to(writer)
18664                .map_err(SerializeError::from)?;
18665        }
18666        if let Some(ref val) = self.show_legend_key {
18667            val.write_element("a:showLegendKey", writer)?;
18668        }
18669        #[cfg(feature = "extra-children")]
18670        {
18671            emit_idx += 1;
18672        }
18673        #[cfg(feature = "extra-children")]
18674        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18675            extra_iter
18676                .next()
18677                .unwrap()
18678                .node
18679                .write_to(writer)
18680                .map_err(SerializeError::from)?;
18681        }
18682        if let Some(ref val) = self.show_val {
18683            val.write_element("a:showVal", writer)?;
18684        }
18685        #[cfg(feature = "extra-children")]
18686        {
18687            emit_idx += 1;
18688        }
18689        #[cfg(feature = "extra-children")]
18690        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18691            extra_iter
18692                .next()
18693                .unwrap()
18694                .node
18695                .write_to(writer)
18696                .map_err(SerializeError::from)?;
18697        }
18698        if let Some(ref val) = self.show_cat_name {
18699            val.write_element("a:showCatName", writer)?;
18700        }
18701        #[cfg(feature = "extra-children")]
18702        {
18703            emit_idx += 1;
18704        }
18705        #[cfg(feature = "extra-children")]
18706        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18707            extra_iter
18708                .next()
18709                .unwrap()
18710                .node
18711                .write_to(writer)
18712                .map_err(SerializeError::from)?;
18713        }
18714        if let Some(ref val) = self.show_ser_name {
18715            val.write_element("a:showSerName", writer)?;
18716        }
18717        #[cfg(feature = "extra-children")]
18718        {
18719            emit_idx += 1;
18720        }
18721        #[cfg(feature = "extra-children")]
18722        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18723            extra_iter
18724                .next()
18725                .unwrap()
18726                .node
18727                .write_to(writer)
18728                .map_err(SerializeError::from)?;
18729        }
18730        if let Some(ref val) = self.show_percent {
18731            val.write_element("a:showPercent", writer)?;
18732        }
18733        #[cfg(feature = "extra-children")]
18734        {
18735            emit_idx += 1;
18736        }
18737        #[cfg(feature = "extra-children")]
18738        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18739            extra_iter
18740                .next()
18741                .unwrap()
18742                .node
18743                .write_to(writer)
18744                .map_err(SerializeError::from)?;
18745        }
18746        if let Some(ref val) = self.show_bubble_size {
18747            val.write_element("a:showBubbleSize", writer)?;
18748        }
18749        #[cfg(feature = "extra-children")]
18750        {
18751            emit_idx += 1;
18752        }
18753        #[cfg(feature = "extra-children")]
18754        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18755            extra_iter
18756                .next()
18757                .unwrap()
18758                .node
18759                .write_to(writer)
18760                .map_err(SerializeError::from)?;
18761        }
18762        if let Some(ref val) = self.separator {
18763            {
18764                let start = BytesStart::new("a:separator");
18765                writer.write_event(Event::Start(start))?;
18766                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
18767                writer.write_event(Event::End(BytesEnd::new("a:separator")))?;
18768            }
18769        }
18770        #[cfg(feature = "extra-children")]
18771        {
18772            emit_idx += 1;
18773        }
18774        #[cfg(feature = "extra-children")]
18775        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18776            extra_iter
18777                .next()
18778                .unwrap()
18779                .node
18780                .write_to(writer)
18781                .map_err(SerializeError::from)?;
18782        }
18783        if let Some(ref val) = self.show_leader_lines {
18784            val.write_element("a:showLeaderLines", writer)?;
18785        }
18786        #[cfg(feature = "extra-children")]
18787        {
18788            emit_idx += 1;
18789        }
18790        #[cfg(feature = "extra-children")]
18791        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18792            extra_iter
18793                .next()
18794                .unwrap()
18795                .node
18796                .write_to(writer)
18797                .map_err(SerializeError::from)?;
18798        }
18799        if let Some(ref val) = self.leader_lines {
18800            val.write_element("a:leaderLines", writer)?;
18801        }
18802        #[cfg(feature = "extra-children")]
18803        {
18804            emit_idx += 1;
18805        }
18806        #[cfg(feature = "extra-children")]
18807        for extra in extra_iter {
18808            extra.node.write_to(writer).map_err(SerializeError::from)?;
18809        }
18810        Ok(())
18811    }
18812
18813    fn is_empty_element(&self) -> bool {
18814        if self.num_fmt.is_some() {
18815            return false;
18816        }
18817        if self.sp_pr.is_some() {
18818            return false;
18819        }
18820        if self.tx_pr.is_some() {
18821            return false;
18822        }
18823        if self.d_lbl_pos.is_some() {
18824            return false;
18825        }
18826        if self.show_legend_key.is_some() {
18827            return false;
18828        }
18829        if self.show_val.is_some() {
18830            return false;
18831        }
18832        if self.show_cat_name.is_some() {
18833            return false;
18834        }
18835        if self.show_ser_name.is_some() {
18836            return false;
18837        }
18838        if self.show_percent.is_some() {
18839            return false;
18840        }
18841        if self.show_bubble_size.is_some() {
18842            return false;
18843        }
18844        if self.separator.is_some() {
18845            return false;
18846        }
18847        if self.show_leader_lines.is_some() {
18848            return false;
18849        }
18850        if self.leader_lines.is_some() {
18851            return false;
18852        }
18853        #[cfg(feature = "extra-children")]
18854        if !self.extra_children.is_empty() {
18855            return false;
18856        }
18857        true
18858    }
18859}
18860
18861impl ToXml for DataLabels {
18862    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
18863        #[cfg(feature = "extra-children")]
18864        let mut extra_iter = self.extra_children.iter().peekable();
18865        #[cfg(feature = "extra-children")]
18866        let mut emit_idx: usize = 0;
18867        #[cfg(feature = "dml-charts")]
18868        for item in &self.d_lbl {
18869            #[cfg(feature = "extra-children")]
18870            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18871                extra_iter
18872                    .next()
18873                    .unwrap()
18874                    .node
18875                    .write_to(writer)
18876                    .map_err(SerializeError::from)?;
18877            }
18878            item.write_element("a:dLbl", writer)?;
18879            #[cfg(feature = "extra-children")]
18880            {
18881                emit_idx += 1;
18882            }
18883        }
18884        #[cfg(feature = "extra-children")]
18885        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18886            extra_iter
18887                .next()
18888                .unwrap()
18889                .node
18890                .write_to(writer)
18891                .map_err(SerializeError::from)?;
18892        }
18893        #[cfg(feature = "dml-charts")]
18894        if let Some(ref val) = self.delete {
18895            val.write_element("a:delete", writer)?;
18896        }
18897        #[cfg(feature = "extra-children")]
18898        {
18899            emit_idx += 1;
18900        }
18901        #[cfg(feature = "extra-children")]
18902        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18903            extra_iter
18904                .next()
18905                .unwrap()
18906                .node
18907                .write_to(writer)
18908                .map_err(SerializeError::from)?;
18909        }
18910        #[cfg(feature = "dml-charts")]
18911        if let Some(ref val) = self.num_fmt {
18912            val.write_element("a:numFmt", writer)?;
18913        }
18914        #[cfg(feature = "extra-children")]
18915        {
18916            emit_idx += 1;
18917        }
18918        #[cfg(feature = "extra-children")]
18919        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18920            extra_iter
18921                .next()
18922                .unwrap()
18923                .node
18924                .write_to(writer)
18925                .map_err(SerializeError::from)?;
18926        }
18927        #[cfg(feature = "dml-charts")]
18928        if let Some(ref val) = self.sp_pr {
18929            val.write_element("a:spPr", writer)?;
18930        }
18931        #[cfg(feature = "extra-children")]
18932        {
18933            emit_idx += 1;
18934        }
18935        #[cfg(feature = "extra-children")]
18936        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18937            extra_iter
18938                .next()
18939                .unwrap()
18940                .node
18941                .write_to(writer)
18942                .map_err(SerializeError::from)?;
18943        }
18944        #[cfg(feature = "dml-charts")]
18945        if let Some(ref val) = self.tx_pr {
18946            val.write_element("a:txPr", writer)?;
18947        }
18948        #[cfg(feature = "extra-children")]
18949        {
18950            emit_idx += 1;
18951        }
18952        #[cfg(feature = "extra-children")]
18953        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18954            extra_iter
18955                .next()
18956                .unwrap()
18957                .node
18958                .write_to(writer)
18959                .map_err(SerializeError::from)?;
18960        }
18961        #[cfg(feature = "dml-charts")]
18962        if let Some(ref val) = self.d_lbl_pos {
18963            val.write_element("a:dLblPos", writer)?;
18964        }
18965        #[cfg(feature = "extra-children")]
18966        {
18967            emit_idx += 1;
18968        }
18969        #[cfg(feature = "extra-children")]
18970        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18971            extra_iter
18972                .next()
18973                .unwrap()
18974                .node
18975                .write_to(writer)
18976                .map_err(SerializeError::from)?;
18977        }
18978        #[cfg(feature = "dml-charts")]
18979        if let Some(ref val) = self.show_legend_key {
18980            val.write_element("a:showLegendKey", writer)?;
18981        }
18982        #[cfg(feature = "extra-children")]
18983        {
18984            emit_idx += 1;
18985        }
18986        #[cfg(feature = "extra-children")]
18987        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
18988            extra_iter
18989                .next()
18990                .unwrap()
18991                .node
18992                .write_to(writer)
18993                .map_err(SerializeError::from)?;
18994        }
18995        #[cfg(feature = "dml-charts")]
18996        if let Some(ref val) = self.show_val {
18997            val.write_element("a:showVal", writer)?;
18998        }
18999        #[cfg(feature = "extra-children")]
19000        {
19001            emit_idx += 1;
19002        }
19003        #[cfg(feature = "extra-children")]
19004        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19005            extra_iter
19006                .next()
19007                .unwrap()
19008                .node
19009                .write_to(writer)
19010                .map_err(SerializeError::from)?;
19011        }
19012        #[cfg(feature = "dml-charts")]
19013        if let Some(ref val) = self.show_cat_name {
19014            val.write_element("a:showCatName", writer)?;
19015        }
19016        #[cfg(feature = "extra-children")]
19017        {
19018            emit_idx += 1;
19019        }
19020        #[cfg(feature = "extra-children")]
19021        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19022            extra_iter
19023                .next()
19024                .unwrap()
19025                .node
19026                .write_to(writer)
19027                .map_err(SerializeError::from)?;
19028        }
19029        #[cfg(feature = "dml-charts")]
19030        if let Some(ref val) = self.show_ser_name {
19031            val.write_element("a:showSerName", writer)?;
19032        }
19033        #[cfg(feature = "extra-children")]
19034        {
19035            emit_idx += 1;
19036        }
19037        #[cfg(feature = "extra-children")]
19038        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19039            extra_iter
19040                .next()
19041                .unwrap()
19042                .node
19043                .write_to(writer)
19044                .map_err(SerializeError::from)?;
19045        }
19046        #[cfg(feature = "dml-charts")]
19047        if let Some(ref val) = self.show_percent {
19048            val.write_element("a:showPercent", writer)?;
19049        }
19050        #[cfg(feature = "extra-children")]
19051        {
19052            emit_idx += 1;
19053        }
19054        #[cfg(feature = "extra-children")]
19055        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19056            extra_iter
19057                .next()
19058                .unwrap()
19059                .node
19060                .write_to(writer)
19061                .map_err(SerializeError::from)?;
19062        }
19063        #[cfg(feature = "dml-charts")]
19064        if let Some(ref val) = self.show_bubble_size {
19065            val.write_element("a:showBubbleSize", writer)?;
19066        }
19067        #[cfg(feature = "extra-children")]
19068        {
19069            emit_idx += 1;
19070        }
19071        #[cfg(feature = "extra-children")]
19072        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19073            extra_iter
19074                .next()
19075                .unwrap()
19076                .node
19077                .write_to(writer)
19078                .map_err(SerializeError::from)?;
19079        }
19080        #[cfg(feature = "dml-charts")]
19081        if let Some(ref val) = self.separator {
19082            {
19083                let start = BytesStart::new("a:separator");
19084                writer.write_event(Event::Start(start))?;
19085                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
19086                writer.write_event(Event::End(BytesEnd::new("a:separator")))?;
19087            }
19088        }
19089        #[cfg(feature = "extra-children")]
19090        {
19091            emit_idx += 1;
19092        }
19093        #[cfg(feature = "extra-children")]
19094        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19095            extra_iter
19096                .next()
19097                .unwrap()
19098                .node
19099                .write_to(writer)
19100                .map_err(SerializeError::from)?;
19101        }
19102        #[cfg(feature = "dml-charts")]
19103        if let Some(ref val) = self.show_leader_lines {
19104            val.write_element("a:showLeaderLines", writer)?;
19105        }
19106        #[cfg(feature = "extra-children")]
19107        {
19108            emit_idx += 1;
19109        }
19110        #[cfg(feature = "extra-children")]
19111        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19112            extra_iter
19113                .next()
19114                .unwrap()
19115                .node
19116                .write_to(writer)
19117                .map_err(SerializeError::from)?;
19118        }
19119        #[cfg(feature = "dml-charts")]
19120        if let Some(ref val) = self.leader_lines {
19121            val.write_element("a:leaderLines", writer)?;
19122        }
19123        #[cfg(feature = "extra-children")]
19124        {
19125            emit_idx += 1;
19126        }
19127        #[cfg(feature = "extra-children")]
19128        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19129            extra_iter
19130                .next()
19131                .unwrap()
19132                .node
19133                .write_to(writer)
19134                .map_err(SerializeError::from)?;
19135        }
19136        #[cfg(feature = "dml-charts")]
19137        if let Some(ref val) = self.ext_lst {
19138            val.write_element("a:extLst", writer)?;
19139        }
19140        #[cfg(feature = "extra-children")]
19141        {
19142            emit_idx += 1;
19143        }
19144        #[cfg(feature = "extra-children")]
19145        for extra in extra_iter {
19146            extra.node.write_to(writer).map_err(SerializeError::from)?;
19147        }
19148        Ok(())
19149    }
19150
19151    fn is_empty_element(&self) -> bool {
19152        #[cfg(feature = "dml-charts")]
19153        if !self.d_lbl.is_empty() {
19154            return false;
19155        }
19156        #[cfg(feature = "dml-charts")]
19157        if self.delete.is_some() {
19158            return false;
19159        }
19160        #[cfg(feature = "dml-charts")]
19161        if self.num_fmt.is_some() {
19162            return false;
19163        }
19164        #[cfg(feature = "dml-charts")]
19165        if self.sp_pr.is_some() {
19166            return false;
19167        }
19168        #[cfg(feature = "dml-charts")]
19169        if self.tx_pr.is_some() {
19170            return false;
19171        }
19172        #[cfg(feature = "dml-charts")]
19173        if self.d_lbl_pos.is_some() {
19174            return false;
19175        }
19176        #[cfg(feature = "dml-charts")]
19177        if self.show_legend_key.is_some() {
19178            return false;
19179        }
19180        #[cfg(feature = "dml-charts")]
19181        if self.show_val.is_some() {
19182            return false;
19183        }
19184        #[cfg(feature = "dml-charts")]
19185        if self.show_cat_name.is_some() {
19186            return false;
19187        }
19188        #[cfg(feature = "dml-charts")]
19189        if self.show_ser_name.is_some() {
19190            return false;
19191        }
19192        #[cfg(feature = "dml-charts")]
19193        if self.show_percent.is_some() {
19194            return false;
19195        }
19196        #[cfg(feature = "dml-charts")]
19197        if self.show_bubble_size.is_some() {
19198            return false;
19199        }
19200        #[cfg(feature = "dml-charts")]
19201        if self.separator.is_some() {
19202            return false;
19203        }
19204        #[cfg(feature = "dml-charts")]
19205        if self.show_leader_lines.is_some() {
19206            return false;
19207        }
19208        #[cfg(feature = "dml-charts")]
19209        if self.leader_lines.is_some() {
19210            return false;
19211        }
19212        #[cfg(feature = "dml-charts")]
19213        if self.ext_lst.is_some() {
19214            return false;
19215        }
19216        #[cfg(feature = "extra-children")]
19217        if !self.extra_children.is_empty() {
19218            return false;
19219        }
19220        true
19221    }
19222}
19223
19224impl ToXml for ChartMarkerStyle {
19225    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
19226        #[allow(unused_mut)]
19227        let mut start = start;
19228        #[cfg(feature = "dml-charts")]
19229        {
19230            let val = &self.value;
19231            {
19232                let s = val.to_string();
19233                start.push_attribute(("val", s.as_str()));
19234            }
19235        }
19236        #[cfg(feature = "extra-attrs")]
19237        for (key, value) in &self.extra_attrs {
19238            start.push_attribute((key.as_str(), value.as_str()));
19239        }
19240        start
19241    }
19242
19243    fn is_empty_element(&self) -> bool {
19244        true
19245    }
19246}
19247
19248impl ToXml for ChartMarkerSize {
19249    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
19250        #[allow(unused_mut)]
19251        let mut start = start;
19252        #[cfg(feature = "dml-charts")]
19253        if let Some(ref val) = self.value {
19254            {
19255                let s = val.to_string();
19256                start.push_attribute(("val", s.as_str()));
19257            }
19258        }
19259        #[cfg(feature = "extra-attrs")]
19260        for (key, value) in &self.extra_attrs {
19261            start.push_attribute((key.as_str(), value.as_str()));
19262        }
19263        start
19264    }
19265
19266    fn is_empty_element(&self) -> bool {
19267        true
19268    }
19269}
19270
19271impl ToXml for ChartMarker {
19272    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
19273        #[cfg(feature = "extra-children")]
19274        let mut extra_iter = self.extra_children.iter().peekable();
19275        #[cfg(feature = "extra-children")]
19276        let mut emit_idx: usize = 0;
19277        #[cfg(feature = "extra-children")]
19278        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19279            extra_iter
19280                .next()
19281                .unwrap()
19282                .node
19283                .write_to(writer)
19284                .map_err(SerializeError::from)?;
19285        }
19286        #[cfg(feature = "dml-charts")]
19287        if let Some(ref val) = self.symbol {
19288            val.write_element("a:symbol", writer)?;
19289        }
19290        #[cfg(feature = "extra-children")]
19291        {
19292            emit_idx += 1;
19293        }
19294        #[cfg(feature = "extra-children")]
19295        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19296            extra_iter
19297                .next()
19298                .unwrap()
19299                .node
19300                .write_to(writer)
19301                .map_err(SerializeError::from)?;
19302        }
19303        #[cfg(feature = "dml-charts")]
19304        if let Some(ref val) = self.size {
19305            val.write_element("a:size", writer)?;
19306        }
19307        #[cfg(feature = "extra-children")]
19308        {
19309            emit_idx += 1;
19310        }
19311        #[cfg(feature = "extra-children")]
19312        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19313            extra_iter
19314                .next()
19315                .unwrap()
19316                .node
19317                .write_to(writer)
19318                .map_err(SerializeError::from)?;
19319        }
19320        #[cfg(feature = "dml-charts")]
19321        if let Some(ref val) = self.sp_pr {
19322            val.write_element("a:spPr", writer)?;
19323        }
19324        #[cfg(feature = "extra-children")]
19325        {
19326            emit_idx += 1;
19327        }
19328        #[cfg(feature = "extra-children")]
19329        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19330            extra_iter
19331                .next()
19332                .unwrap()
19333                .node
19334                .write_to(writer)
19335                .map_err(SerializeError::from)?;
19336        }
19337        #[cfg(feature = "dml-charts")]
19338        if let Some(ref val) = self.ext_lst {
19339            val.write_element("a:extLst", writer)?;
19340        }
19341        #[cfg(feature = "extra-children")]
19342        {
19343            emit_idx += 1;
19344        }
19345        #[cfg(feature = "extra-children")]
19346        for extra in extra_iter {
19347            extra.node.write_to(writer).map_err(SerializeError::from)?;
19348        }
19349        Ok(())
19350    }
19351
19352    fn is_empty_element(&self) -> bool {
19353        #[cfg(feature = "dml-charts")]
19354        if self.symbol.is_some() {
19355            return false;
19356        }
19357        #[cfg(feature = "dml-charts")]
19358        if self.size.is_some() {
19359            return false;
19360        }
19361        #[cfg(feature = "dml-charts")]
19362        if self.sp_pr.is_some() {
19363            return false;
19364        }
19365        #[cfg(feature = "dml-charts")]
19366        if self.ext_lst.is_some() {
19367            return false;
19368        }
19369        #[cfg(feature = "extra-children")]
19370        if !self.extra_children.is_empty() {
19371            return false;
19372        }
19373        true
19374    }
19375}
19376
19377impl ToXml for DataPoint {
19378    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
19379        #[cfg(feature = "extra-children")]
19380        let mut extra_iter = self.extra_children.iter().peekable();
19381        #[cfg(feature = "extra-children")]
19382        let mut emit_idx: usize = 0;
19383        #[cfg(feature = "extra-children")]
19384        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19385            extra_iter
19386                .next()
19387                .unwrap()
19388                .node
19389                .write_to(writer)
19390                .map_err(SerializeError::from)?;
19391        }
19392        #[cfg(feature = "dml-charts")]
19393        {
19394            let val = &self.idx;
19395            val.write_element("a:idx", writer)?;
19396        }
19397        #[cfg(feature = "extra-children")]
19398        {
19399            emit_idx += 1;
19400        }
19401        #[cfg(feature = "extra-children")]
19402        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19403            extra_iter
19404                .next()
19405                .unwrap()
19406                .node
19407                .write_to(writer)
19408                .map_err(SerializeError::from)?;
19409        }
19410        #[cfg(feature = "dml-charts")]
19411        if let Some(ref val) = self.invert_if_negative {
19412            val.write_element("a:invertIfNegative", writer)?;
19413        }
19414        #[cfg(feature = "extra-children")]
19415        {
19416            emit_idx += 1;
19417        }
19418        #[cfg(feature = "extra-children")]
19419        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19420            extra_iter
19421                .next()
19422                .unwrap()
19423                .node
19424                .write_to(writer)
19425                .map_err(SerializeError::from)?;
19426        }
19427        #[cfg(feature = "dml-charts")]
19428        if let Some(ref val) = self.marker {
19429            val.write_element("a:marker", writer)?;
19430        }
19431        #[cfg(feature = "extra-children")]
19432        {
19433            emit_idx += 1;
19434        }
19435        #[cfg(feature = "extra-children")]
19436        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19437            extra_iter
19438                .next()
19439                .unwrap()
19440                .node
19441                .write_to(writer)
19442                .map_err(SerializeError::from)?;
19443        }
19444        #[cfg(feature = "dml-charts")]
19445        if let Some(ref val) = self.bubble3_d {
19446            val.write_element("a:bubble3D", writer)?;
19447        }
19448        #[cfg(feature = "extra-children")]
19449        {
19450            emit_idx += 1;
19451        }
19452        #[cfg(feature = "extra-children")]
19453        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19454            extra_iter
19455                .next()
19456                .unwrap()
19457                .node
19458                .write_to(writer)
19459                .map_err(SerializeError::from)?;
19460        }
19461        #[cfg(feature = "dml-charts")]
19462        if let Some(ref val) = self.explosion {
19463            val.write_element("a:explosion", writer)?;
19464        }
19465        #[cfg(feature = "extra-children")]
19466        {
19467            emit_idx += 1;
19468        }
19469        #[cfg(feature = "extra-children")]
19470        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19471            extra_iter
19472                .next()
19473                .unwrap()
19474                .node
19475                .write_to(writer)
19476                .map_err(SerializeError::from)?;
19477        }
19478        #[cfg(feature = "dml-charts")]
19479        if let Some(ref val) = self.sp_pr {
19480            val.write_element("a:spPr", writer)?;
19481        }
19482        #[cfg(feature = "extra-children")]
19483        {
19484            emit_idx += 1;
19485        }
19486        #[cfg(feature = "extra-children")]
19487        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19488            extra_iter
19489                .next()
19490                .unwrap()
19491                .node
19492                .write_to(writer)
19493                .map_err(SerializeError::from)?;
19494        }
19495        #[cfg(feature = "dml-charts")]
19496        if let Some(ref val) = self.picture_options {
19497            val.write_element("a:pictureOptions", writer)?;
19498        }
19499        #[cfg(feature = "extra-children")]
19500        {
19501            emit_idx += 1;
19502        }
19503        #[cfg(feature = "extra-children")]
19504        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19505            extra_iter
19506                .next()
19507                .unwrap()
19508                .node
19509                .write_to(writer)
19510                .map_err(SerializeError::from)?;
19511        }
19512        #[cfg(feature = "dml-charts")]
19513        if let Some(ref val) = self.ext_lst {
19514            val.write_element("a:extLst", writer)?;
19515        }
19516        #[cfg(feature = "extra-children")]
19517        {
19518            emit_idx += 1;
19519        }
19520        #[cfg(feature = "extra-children")]
19521        for extra in extra_iter {
19522            extra.node.write_to(writer).map_err(SerializeError::from)?;
19523        }
19524        Ok(())
19525    }
19526
19527    fn is_empty_element(&self) -> bool {
19528        #[cfg(feature = "dml-charts")]
19529        return false;
19530        #[cfg(feature = "dml-charts")]
19531        if self.invert_if_negative.is_some() {
19532            return false;
19533        }
19534        #[cfg(feature = "dml-charts")]
19535        if self.marker.is_some() {
19536            return false;
19537        }
19538        #[cfg(feature = "dml-charts")]
19539        if self.bubble3_d.is_some() {
19540            return false;
19541        }
19542        #[cfg(feature = "dml-charts")]
19543        if self.explosion.is_some() {
19544            return false;
19545        }
19546        #[cfg(feature = "dml-charts")]
19547        if self.sp_pr.is_some() {
19548            return false;
19549        }
19550        #[cfg(feature = "dml-charts")]
19551        if self.picture_options.is_some() {
19552            return false;
19553        }
19554        #[cfg(feature = "dml-charts")]
19555        if self.ext_lst.is_some() {
19556            return false;
19557        }
19558        #[cfg(feature = "extra-children")]
19559        if !self.extra_children.is_empty() {
19560            return false;
19561        }
19562        true
19563    }
19564}
19565
19566impl ToXml for TrendlineType {
19567    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
19568        #[allow(unused_mut)]
19569        let mut start = start;
19570        #[cfg(feature = "dml-charts")]
19571        if let Some(ref val) = self.value {
19572            {
19573                let s = val.to_string();
19574                start.push_attribute(("val", s.as_str()));
19575            }
19576        }
19577        #[cfg(feature = "extra-attrs")]
19578        for (key, value) in &self.extra_attrs {
19579            start.push_attribute((key.as_str(), value.as_str()));
19580        }
19581        start
19582    }
19583
19584    fn is_empty_element(&self) -> bool {
19585        true
19586    }
19587}
19588
19589impl ToXml for TrendlineOrder {
19590    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
19591        #[allow(unused_mut)]
19592        let mut start = start;
19593        #[cfg(feature = "dml-charts")]
19594        if let Some(ref val) = self.value {
19595            {
19596                let s = val.to_string();
19597                start.push_attribute(("val", s.as_str()));
19598            }
19599        }
19600        #[cfg(feature = "extra-attrs")]
19601        for (key, value) in &self.extra_attrs {
19602            start.push_attribute((key.as_str(), value.as_str()));
19603        }
19604        start
19605    }
19606
19607    fn is_empty_element(&self) -> bool {
19608        true
19609    }
19610}
19611
19612impl ToXml for TrendlinePeriod {
19613    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
19614        #[allow(unused_mut)]
19615        let mut start = start;
19616        #[cfg(feature = "dml-charts")]
19617        if let Some(ref val) = self.value {
19618            {
19619                let s = val.to_string();
19620                start.push_attribute(("val", s.as_str()));
19621            }
19622        }
19623        #[cfg(feature = "extra-attrs")]
19624        for (key, value) in &self.extra_attrs {
19625            start.push_attribute((key.as_str(), value.as_str()));
19626        }
19627        start
19628    }
19629
19630    fn is_empty_element(&self) -> bool {
19631        true
19632    }
19633}
19634
19635impl ToXml for TrendlineLabel {
19636    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
19637        #[cfg(feature = "extra-children")]
19638        let mut extra_iter = self.extra_children.iter().peekable();
19639        #[cfg(feature = "extra-children")]
19640        let mut emit_idx: usize = 0;
19641        #[cfg(feature = "extra-children")]
19642        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19643            extra_iter
19644                .next()
19645                .unwrap()
19646                .node
19647                .write_to(writer)
19648                .map_err(SerializeError::from)?;
19649        }
19650        #[cfg(feature = "dml-charts")]
19651        if let Some(ref val) = self.layout {
19652            val.write_element("a:layout", writer)?;
19653        }
19654        #[cfg(feature = "extra-children")]
19655        {
19656            emit_idx += 1;
19657        }
19658        #[cfg(feature = "extra-children")]
19659        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19660            extra_iter
19661                .next()
19662                .unwrap()
19663                .node
19664                .write_to(writer)
19665                .map_err(SerializeError::from)?;
19666        }
19667        #[cfg(feature = "dml-charts")]
19668        if let Some(ref val) = self.tx {
19669            val.write_element("a:tx", writer)?;
19670        }
19671        #[cfg(feature = "extra-children")]
19672        {
19673            emit_idx += 1;
19674        }
19675        #[cfg(feature = "extra-children")]
19676        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19677            extra_iter
19678                .next()
19679                .unwrap()
19680                .node
19681                .write_to(writer)
19682                .map_err(SerializeError::from)?;
19683        }
19684        #[cfg(feature = "dml-charts")]
19685        if let Some(ref val) = self.num_fmt {
19686            val.write_element("a:numFmt", writer)?;
19687        }
19688        #[cfg(feature = "extra-children")]
19689        {
19690            emit_idx += 1;
19691        }
19692        #[cfg(feature = "extra-children")]
19693        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19694            extra_iter
19695                .next()
19696                .unwrap()
19697                .node
19698                .write_to(writer)
19699                .map_err(SerializeError::from)?;
19700        }
19701        #[cfg(feature = "dml-charts")]
19702        if let Some(ref val) = self.sp_pr {
19703            val.write_element("a:spPr", writer)?;
19704        }
19705        #[cfg(feature = "extra-children")]
19706        {
19707            emit_idx += 1;
19708        }
19709        #[cfg(feature = "extra-children")]
19710        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19711            extra_iter
19712                .next()
19713                .unwrap()
19714                .node
19715                .write_to(writer)
19716                .map_err(SerializeError::from)?;
19717        }
19718        #[cfg(feature = "dml-charts")]
19719        if let Some(ref val) = self.tx_pr {
19720            val.write_element("a:txPr", writer)?;
19721        }
19722        #[cfg(feature = "extra-children")]
19723        {
19724            emit_idx += 1;
19725        }
19726        #[cfg(feature = "extra-children")]
19727        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19728            extra_iter
19729                .next()
19730                .unwrap()
19731                .node
19732                .write_to(writer)
19733                .map_err(SerializeError::from)?;
19734        }
19735        #[cfg(feature = "dml-charts")]
19736        if let Some(ref val) = self.ext_lst {
19737            val.write_element("a:extLst", writer)?;
19738        }
19739        #[cfg(feature = "extra-children")]
19740        {
19741            emit_idx += 1;
19742        }
19743        #[cfg(feature = "extra-children")]
19744        for extra in extra_iter {
19745            extra.node.write_to(writer).map_err(SerializeError::from)?;
19746        }
19747        Ok(())
19748    }
19749
19750    fn is_empty_element(&self) -> bool {
19751        #[cfg(feature = "dml-charts")]
19752        if self.layout.is_some() {
19753            return false;
19754        }
19755        #[cfg(feature = "dml-charts")]
19756        if self.tx.is_some() {
19757            return false;
19758        }
19759        #[cfg(feature = "dml-charts")]
19760        if self.num_fmt.is_some() {
19761            return false;
19762        }
19763        #[cfg(feature = "dml-charts")]
19764        if self.sp_pr.is_some() {
19765            return false;
19766        }
19767        #[cfg(feature = "dml-charts")]
19768        if self.tx_pr.is_some() {
19769            return false;
19770        }
19771        #[cfg(feature = "dml-charts")]
19772        if self.ext_lst.is_some() {
19773            return false;
19774        }
19775        #[cfg(feature = "extra-children")]
19776        if !self.extra_children.is_empty() {
19777            return false;
19778        }
19779        true
19780    }
19781}
19782
19783impl ToXml for Trendline {
19784    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
19785        #[cfg(feature = "extra-children")]
19786        let mut extra_iter = self.extra_children.iter().peekable();
19787        #[cfg(feature = "extra-children")]
19788        let mut emit_idx: usize = 0;
19789        #[cfg(feature = "extra-children")]
19790        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19791            extra_iter
19792                .next()
19793                .unwrap()
19794                .node
19795                .write_to(writer)
19796                .map_err(SerializeError::from)?;
19797        }
19798        #[cfg(feature = "dml-charts")]
19799        if let Some(ref val) = self.name {
19800            {
19801                let start = BytesStart::new("a:name");
19802                writer.write_event(Event::Start(start))?;
19803                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
19804                writer.write_event(Event::End(BytesEnd::new("a:name")))?;
19805            }
19806        }
19807        #[cfg(feature = "extra-children")]
19808        {
19809            emit_idx += 1;
19810        }
19811        #[cfg(feature = "extra-children")]
19812        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19813            extra_iter
19814                .next()
19815                .unwrap()
19816                .node
19817                .write_to(writer)
19818                .map_err(SerializeError::from)?;
19819        }
19820        #[cfg(feature = "dml-charts")]
19821        if let Some(ref val) = self.sp_pr {
19822            val.write_element("a:spPr", writer)?;
19823        }
19824        #[cfg(feature = "extra-children")]
19825        {
19826            emit_idx += 1;
19827        }
19828        #[cfg(feature = "extra-children")]
19829        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19830            extra_iter
19831                .next()
19832                .unwrap()
19833                .node
19834                .write_to(writer)
19835                .map_err(SerializeError::from)?;
19836        }
19837        #[cfg(feature = "dml-charts")]
19838        {
19839            let val = &self.trendline_type;
19840            val.write_element("a:trendlineType", writer)?;
19841        }
19842        #[cfg(feature = "extra-children")]
19843        {
19844            emit_idx += 1;
19845        }
19846        #[cfg(feature = "extra-children")]
19847        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19848            extra_iter
19849                .next()
19850                .unwrap()
19851                .node
19852                .write_to(writer)
19853                .map_err(SerializeError::from)?;
19854        }
19855        #[cfg(feature = "dml-charts")]
19856        if let Some(ref val) = self.order {
19857            val.write_element("a:order", writer)?;
19858        }
19859        #[cfg(feature = "extra-children")]
19860        {
19861            emit_idx += 1;
19862        }
19863        #[cfg(feature = "extra-children")]
19864        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19865            extra_iter
19866                .next()
19867                .unwrap()
19868                .node
19869                .write_to(writer)
19870                .map_err(SerializeError::from)?;
19871        }
19872        #[cfg(feature = "dml-charts")]
19873        if let Some(ref val) = self.period {
19874            val.write_element("a:period", writer)?;
19875        }
19876        #[cfg(feature = "extra-children")]
19877        {
19878            emit_idx += 1;
19879        }
19880        #[cfg(feature = "extra-children")]
19881        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19882            extra_iter
19883                .next()
19884                .unwrap()
19885                .node
19886                .write_to(writer)
19887                .map_err(SerializeError::from)?;
19888        }
19889        #[cfg(feature = "dml-charts")]
19890        if let Some(ref val) = self.forward {
19891            val.write_element("a:forward", writer)?;
19892        }
19893        #[cfg(feature = "extra-children")]
19894        {
19895            emit_idx += 1;
19896        }
19897        #[cfg(feature = "extra-children")]
19898        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19899            extra_iter
19900                .next()
19901                .unwrap()
19902                .node
19903                .write_to(writer)
19904                .map_err(SerializeError::from)?;
19905        }
19906        #[cfg(feature = "dml-charts")]
19907        if let Some(ref val) = self.backward {
19908            val.write_element("a:backward", writer)?;
19909        }
19910        #[cfg(feature = "extra-children")]
19911        {
19912            emit_idx += 1;
19913        }
19914        #[cfg(feature = "extra-children")]
19915        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19916            extra_iter
19917                .next()
19918                .unwrap()
19919                .node
19920                .write_to(writer)
19921                .map_err(SerializeError::from)?;
19922        }
19923        #[cfg(feature = "dml-charts")]
19924        if let Some(ref val) = self.intercept {
19925            val.write_element("a:intercept", writer)?;
19926        }
19927        #[cfg(feature = "extra-children")]
19928        {
19929            emit_idx += 1;
19930        }
19931        #[cfg(feature = "extra-children")]
19932        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19933            extra_iter
19934                .next()
19935                .unwrap()
19936                .node
19937                .write_to(writer)
19938                .map_err(SerializeError::from)?;
19939        }
19940        #[cfg(feature = "dml-charts")]
19941        if let Some(ref val) = self.disp_r_sqr {
19942            val.write_element("a:dispRSqr", writer)?;
19943        }
19944        #[cfg(feature = "extra-children")]
19945        {
19946            emit_idx += 1;
19947        }
19948        #[cfg(feature = "extra-children")]
19949        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19950            extra_iter
19951                .next()
19952                .unwrap()
19953                .node
19954                .write_to(writer)
19955                .map_err(SerializeError::from)?;
19956        }
19957        #[cfg(feature = "dml-charts")]
19958        if let Some(ref val) = self.disp_eq {
19959            val.write_element("a:dispEq", writer)?;
19960        }
19961        #[cfg(feature = "extra-children")]
19962        {
19963            emit_idx += 1;
19964        }
19965        #[cfg(feature = "extra-children")]
19966        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19967            extra_iter
19968                .next()
19969                .unwrap()
19970                .node
19971                .write_to(writer)
19972                .map_err(SerializeError::from)?;
19973        }
19974        #[cfg(feature = "dml-charts")]
19975        if let Some(ref val) = self.trendline_lbl {
19976            val.write_element("a:trendlineLbl", writer)?;
19977        }
19978        #[cfg(feature = "extra-children")]
19979        {
19980            emit_idx += 1;
19981        }
19982        #[cfg(feature = "extra-children")]
19983        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
19984            extra_iter
19985                .next()
19986                .unwrap()
19987                .node
19988                .write_to(writer)
19989                .map_err(SerializeError::from)?;
19990        }
19991        #[cfg(feature = "dml-charts")]
19992        if let Some(ref val) = self.ext_lst {
19993            val.write_element("a:extLst", writer)?;
19994        }
19995        #[cfg(feature = "extra-children")]
19996        {
19997            emit_idx += 1;
19998        }
19999        #[cfg(feature = "extra-children")]
20000        for extra in extra_iter {
20001            extra.node.write_to(writer).map_err(SerializeError::from)?;
20002        }
20003        Ok(())
20004    }
20005
20006    fn is_empty_element(&self) -> bool {
20007        #[cfg(feature = "dml-charts")]
20008        if self.name.is_some() {
20009            return false;
20010        }
20011        #[cfg(feature = "dml-charts")]
20012        if self.sp_pr.is_some() {
20013            return false;
20014        }
20015        #[cfg(feature = "dml-charts")]
20016        return false;
20017        #[cfg(feature = "dml-charts")]
20018        if self.order.is_some() {
20019            return false;
20020        }
20021        #[cfg(feature = "dml-charts")]
20022        if self.period.is_some() {
20023            return false;
20024        }
20025        #[cfg(feature = "dml-charts")]
20026        if self.forward.is_some() {
20027            return false;
20028        }
20029        #[cfg(feature = "dml-charts")]
20030        if self.backward.is_some() {
20031            return false;
20032        }
20033        #[cfg(feature = "dml-charts")]
20034        if self.intercept.is_some() {
20035            return false;
20036        }
20037        #[cfg(feature = "dml-charts")]
20038        if self.disp_r_sqr.is_some() {
20039            return false;
20040        }
20041        #[cfg(feature = "dml-charts")]
20042        if self.disp_eq.is_some() {
20043            return false;
20044        }
20045        #[cfg(feature = "dml-charts")]
20046        if self.trendline_lbl.is_some() {
20047            return false;
20048        }
20049        #[cfg(feature = "dml-charts")]
20050        if self.ext_lst.is_some() {
20051            return false;
20052        }
20053        #[cfg(feature = "extra-children")]
20054        if !self.extra_children.is_empty() {
20055            return false;
20056        }
20057        true
20058    }
20059}
20060
20061impl ToXml for ErrorDirection {
20062    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
20063        #[allow(unused_mut)]
20064        let mut start = start;
20065        #[cfg(feature = "dml-charts")]
20066        {
20067            let val = &self.value;
20068            {
20069                let s = val.to_string();
20070                start.push_attribute(("val", s.as_str()));
20071            }
20072        }
20073        #[cfg(feature = "extra-attrs")]
20074        for (key, value) in &self.extra_attrs {
20075            start.push_attribute((key.as_str(), value.as_str()));
20076        }
20077        start
20078    }
20079
20080    fn is_empty_element(&self) -> bool {
20081        true
20082    }
20083}
20084
20085impl ToXml for ErrorBarType {
20086    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
20087        #[allow(unused_mut)]
20088        let mut start = start;
20089        #[cfg(feature = "dml-charts")]
20090        if let Some(ref val) = self.value {
20091            {
20092                let s = val.to_string();
20093                start.push_attribute(("val", s.as_str()));
20094            }
20095        }
20096        #[cfg(feature = "extra-attrs")]
20097        for (key, value) in &self.extra_attrs {
20098            start.push_attribute((key.as_str(), value.as_str()));
20099        }
20100        start
20101    }
20102
20103    fn is_empty_element(&self) -> bool {
20104        true
20105    }
20106}
20107
20108impl ToXml for ErrorValueType {
20109    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
20110        #[allow(unused_mut)]
20111        let mut start = start;
20112        #[cfg(feature = "dml-charts")]
20113        if let Some(ref val) = self.value {
20114            {
20115                let s = val.to_string();
20116                start.push_attribute(("val", s.as_str()));
20117            }
20118        }
20119        #[cfg(feature = "extra-attrs")]
20120        for (key, value) in &self.extra_attrs {
20121            start.push_attribute((key.as_str(), value.as_str()));
20122        }
20123        start
20124    }
20125
20126    fn is_empty_element(&self) -> bool {
20127        true
20128    }
20129}
20130
20131impl ToXml for ErrorBars {
20132    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
20133        #[cfg(feature = "extra-children")]
20134        let mut extra_iter = self.extra_children.iter().peekable();
20135        #[cfg(feature = "extra-children")]
20136        let mut emit_idx: usize = 0;
20137        #[cfg(feature = "extra-children")]
20138        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20139            extra_iter
20140                .next()
20141                .unwrap()
20142                .node
20143                .write_to(writer)
20144                .map_err(SerializeError::from)?;
20145        }
20146        #[cfg(feature = "dml-charts")]
20147        if let Some(ref val) = self.err_dir {
20148            val.write_element("a:errDir", writer)?;
20149        }
20150        #[cfg(feature = "extra-children")]
20151        {
20152            emit_idx += 1;
20153        }
20154        #[cfg(feature = "extra-children")]
20155        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20156            extra_iter
20157                .next()
20158                .unwrap()
20159                .node
20160                .write_to(writer)
20161                .map_err(SerializeError::from)?;
20162        }
20163        #[cfg(feature = "dml-charts")]
20164        {
20165            let val = &self.err_bar_type;
20166            val.write_element("a:errBarType", writer)?;
20167        }
20168        #[cfg(feature = "extra-children")]
20169        {
20170            emit_idx += 1;
20171        }
20172        #[cfg(feature = "extra-children")]
20173        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20174            extra_iter
20175                .next()
20176                .unwrap()
20177                .node
20178                .write_to(writer)
20179                .map_err(SerializeError::from)?;
20180        }
20181        #[cfg(feature = "dml-charts")]
20182        {
20183            let val = &self.err_val_type;
20184            val.write_element("a:errValType", writer)?;
20185        }
20186        #[cfg(feature = "extra-children")]
20187        {
20188            emit_idx += 1;
20189        }
20190        #[cfg(feature = "extra-children")]
20191        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20192            extra_iter
20193                .next()
20194                .unwrap()
20195                .node
20196                .write_to(writer)
20197                .map_err(SerializeError::from)?;
20198        }
20199        #[cfg(feature = "dml-charts")]
20200        if let Some(ref val) = self.no_end_cap {
20201            val.write_element("a:noEndCap", writer)?;
20202        }
20203        #[cfg(feature = "extra-children")]
20204        {
20205            emit_idx += 1;
20206        }
20207        #[cfg(feature = "extra-children")]
20208        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20209            extra_iter
20210                .next()
20211                .unwrap()
20212                .node
20213                .write_to(writer)
20214                .map_err(SerializeError::from)?;
20215        }
20216        #[cfg(feature = "dml-charts")]
20217        if let Some(ref val) = self.plus {
20218            val.write_element("a:plus", writer)?;
20219        }
20220        #[cfg(feature = "extra-children")]
20221        {
20222            emit_idx += 1;
20223        }
20224        #[cfg(feature = "extra-children")]
20225        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20226            extra_iter
20227                .next()
20228                .unwrap()
20229                .node
20230                .write_to(writer)
20231                .map_err(SerializeError::from)?;
20232        }
20233        #[cfg(feature = "dml-charts")]
20234        if let Some(ref val) = self.minus {
20235            val.write_element("a:minus", writer)?;
20236        }
20237        #[cfg(feature = "extra-children")]
20238        {
20239            emit_idx += 1;
20240        }
20241        #[cfg(feature = "extra-children")]
20242        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20243            extra_iter
20244                .next()
20245                .unwrap()
20246                .node
20247                .write_to(writer)
20248                .map_err(SerializeError::from)?;
20249        }
20250        #[cfg(feature = "dml-charts")]
20251        if let Some(ref val) = self.value {
20252            val.write_element("a:val", writer)?;
20253        }
20254        #[cfg(feature = "extra-children")]
20255        {
20256            emit_idx += 1;
20257        }
20258        #[cfg(feature = "extra-children")]
20259        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20260            extra_iter
20261                .next()
20262                .unwrap()
20263                .node
20264                .write_to(writer)
20265                .map_err(SerializeError::from)?;
20266        }
20267        #[cfg(feature = "dml-charts")]
20268        if let Some(ref val) = self.sp_pr {
20269            val.write_element("a:spPr", writer)?;
20270        }
20271        #[cfg(feature = "extra-children")]
20272        {
20273            emit_idx += 1;
20274        }
20275        #[cfg(feature = "extra-children")]
20276        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20277            extra_iter
20278                .next()
20279                .unwrap()
20280                .node
20281                .write_to(writer)
20282                .map_err(SerializeError::from)?;
20283        }
20284        #[cfg(feature = "dml-charts")]
20285        if let Some(ref val) = self.ext_lst {
20286            val.write_element("a:extLst", writer)?;
20287        }
20288        #[cfg(feature = "extra-children")]
20289        {
20290            emit_idx += 1;
20291        }
20292        #[cfg(feature = "extra-children")]
20293        for extra in extra_iter {
20294            extra.node.write_to(writer).map_err(SerializeError::from)?;
20295        }
20296        Ok(())
20297    }
20298
20299    fn is_empty_element(&self) -> bool {
20300        #[cfg(feature = "dml-charts")]
20301        if self.err_dir.is_some() {
20302            return false;
20303        }
20304        #[cfg(feature = "dml-charts")]
20305        return false;
20306        #[cfg(feature = "dml-charts")]
20307        return false;
20308        #[cfg(feature = "dml-charts")]
20309        if self.no_end_cap.is_some() {
20310            return false;
20311        }
20312        #[cfg(feature = "dml-charts")]
20313        if self.plus.is_some() {
20314            return false;
20315        }
20316        #[cfg(feature = "dml-charts")]
20317        if self.minus.is_some() {
20318            return false;
20319        }
20320        #[cfg(feature = "dml-charts")]
20321        if self.value.is_some() {
20322            return false;
20323        }
20324        #[cfg(feature = "dml-charts")]
20325        if self.sp_pr.is_some() {
20326            return false;
20327        }
20328        #[cfg(feature = "dml-charts")]
20329        if self.ext_lst.is_some() {
20330            return false;
20331        }
20332        #[cfg(feature = "extra-children")]
20333        if !self.extra_children.is_empty() {
20334            return false;
20335        }
20336        true
20337    }
20338}
20339
20340impl ToXml for UpDownBar {
20341    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
20342        #[cfg(feature = "extra-children")]
20343        let mut extra_iter = self.extra_children.iter().peekable();
20344        #[cfg(feature = "extra-children")]
20345        let mut emit_idx: usize = 0;
20346        #[cfg(feature = "extra-children")]
20347        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20348            extra_iter
20349                .next()
20350                .unwrap()
20351                .node
20352                .write_to(writer)
20353                .map_err(SerializeError::from)?;
20354        }
20355        #[cfg(feature = "dml-charts")]
20356        if let Some(ref val) = self.sp_pr {
20357            val.write_element("a:spPr", writer)?;
20358        }
20359        #[cfg(feature = "extra-children")]
20360        {
20361            emit_idx += 1;
20362        }
20363        #[cfg(feature = "extra-children")]
20364        for extra in extra_iter {
20365            extra.node.write_to(writer).map_err(SerializeError::from)?;
20366        }
20367        Ok(())
20368    }
20369
20370    fn is_empty_element(&self) -> bool {
20371        #[cfg(feature = "dml-charts")]
20372        if self.sp_pr.is_some() {
20373            return false;
20374        }
20375        #[cfg(feature = "extra-children")]
20376        if !self.extra_children.is_empty() {
20377            return false;
20378        }
20379        true
20380    }
20381}
20382
20383impl ToXml for UpDownBars {
20384    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
20385        #[cfg(feature = "extra-children")]
20386        let mut extra_iter = self.extra_children.iter().peekable();
20387        #[cfg(feature = "extra-children")]
20388        let mut emit_idx: usize = 0;
20389        #[cfg(feature = "extra-children")]
20390        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20391            extra_iter
20392                .next()
20393                .unwrap()
20394                .node
20395                .write_to(writer)
20396                .map_err(SerializeError::from)?;
20397        }
20398        #[cfg(feature = "dml-charts")]
20399        if let Some(ref val) = self.gap_width {
20400            val.write_element("a:gapWidth", writer)?;
20401        }
20402        #[cfg(feature = "extra-children")]
20403        {
20404            emit_idx += 1;
20405        }
20406        #[cfg(feature = "extra-children")]
20407        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20408            extra_iter
20409                .next()
20410                .unwrap()
20411                .node
20412                .write_to(writer)
20413                .map_err(SerializeError::from)?;
20414        }
20415        #[cfg(feature = "dml-charts")]
20416        if let Some(ref val) = self.up_bars {
20417            val.write_element("a:upBars", writer)?;
20418        }
20419        #[cfg(feature = "extra-children")]
20420        {
20421            emit_idx += 1;
20422        }
20423        #[cfg(feature = "extra-children")]
20424        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20425            extra_iter
20426                .next()
20427                .unwrap()
20428                .node
20429                .write_to(writer)
20430                .map_err(SerializeError::from)?;
20431        }
20432        #[cfg(feature = "dml-charts")]
20433        if let Some(ref val) = self.down_bars {
20434            val.write_element("a:downBars", writer)?;
20435        }
20436        #[cfg(feature = "extra-children")]
20437        {
20438            emit_idx += 1;
20439        }
20440        #[cfg(feature = "extra-children")]
20441        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20442            extra_iter
20443                .next()
20444                .unwrap()
20445                .node
20446                .write_to(writer)
20447                .map_err(SerializeError::from)?;
20448        }
20449        #[cfg(feature = "dml-charts")]
20450        if let Some(ref val) = self.ext_lst {
20451            val.write_element("a:extLst", writer)?;
20452        }
20453        #[cfg(feature = "extra-children")]
20454        {
20455            emit_idx += 1;
20456        }
20457        #[cfg(feature = "extra-children")]
20458        for extra in extra_iter {
20459            extra.node.write_to(writer).map_err(SerializeError::from)?;
20460        }
20461        Ok(())
20462    }
20463
20464    fn is_empty_element(&self) -> bool {
20465        #[cfg(feature = "dml-charts")]
20466        if self.gap_width.is_some() {
20467            return false;
20468        }
20469        #[cfg(feature = "dml-charts")]
20470        if self.up_bars.is_some() {
20471            return false;
20472        }
20473        #[cfg(feature = "dml-charts")]
20474        if self.down_bars.is_some() {
20475            return false;
20476        }
20477        #[cfg(feature = "dml-charts")]
20478        if self.ext_lst.is_some() {
20479            return false;
20480        }
20481        #[cfg(feature = "extra-children")]
20482        if !self.extra_children.is_empty() {
20483            return false;
20484        }
20485        true
20486    }
20487}
20488
20489impl ToXml for EGSerShared {
20490    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
20491        #[cfg(feature = "extra-children")]
20492        let mut extra_iter = self.extra_children.iter().peekable();
20493        #[cfg(feature = "extra-children")]
20494        let mut emit_idx: usize = 0;
20495        #[cfg(feature = "extra-children")]
20496        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20497            extra_iter
20498                .next()
20499                .unwrap()
20500                .node
20501                .write_to(writer)
20502                .map_err(SerializeError::from)?;
20503        }
20504        {
20505            let val = &self.idx;
20506            val.write_element("a:idx", writer)?;
20507        }
20508        #[cfg(feature = "extra-children")]
20509        {
20510            emit_idx += 1;
20511        }
20512        #[cfg(feature = "extra-children")]
20513        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20514            extra_iter
20515                .next()
20516                .unwrap()
20517                .node
20518                .write_to(writer)
20519                .map_err(SerializeError::from)?;
20520        }
20521        {
20522            let val = &self.order;
20523            val.write_element("a:order", writer)?;
20524        }
20525        #[cfg(feature = "extra-children")]
20526        {
20527            emit_idx += 1;
20528        }
20529        #[cfg(feature = "extra-children")]
20530        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20531            extra_iter
20532                .next()
20533                .unwrap()
20534                .node
20535                .write_to(writer)
20536                .map_err(SerializeError::from)?;
20537        }
20538        if let Some(ref val) = self.tx {
20539            val.write_element("a:tx", writer)?;
20540        }
20541        #[cfg(feature = "extra-children")]
20542        {
20543            emit_idx += 1;
20544        }
20545        #[cfg(feature = "extra-children")]
20546        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20547            extra_iter
20548                .next()
20549                .unwrap()
20550                .node
20551                .write_to(writer)
20552                .map_err(SerializeError::from)?;
20553        }
20554        if let Some(ref val) = self.sp_pr {
20555            val.write_element("a:spPr", writer)?;
20556        }
20557        #[cfg(feature = "extra-children")]
20558        {
20559            emit_idx += 1;
20560        }
20561        #[cfg(feature = "extra-children")]
20562        for extra in extra_iter {
20563            extra.node.write_to(writer).map_err(SerializeError::from)?;
20564        }
20565        Ok(())
20566    }
20567
20568    fn is_empty_element(&self) -> bool {
20569        false
20570    }
20571}
20572
20573impl ToXml for LineSeries {
20574    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
20575        #[cfg(feature = "extra-children")]
20576        let mut extra_iter = self.extra_children.iter().peekable();
20577        #[cfg(feature = "extra-children")]
20578        let mut emit_idx: usize = 0;
20579        #[cfg(feature = "extra-children")]
20580        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20581            extra_iter
20582                .next()
20583                .unwrap()
20584                .node
20585                .write_to(writer)
20586                .map_err(SerializeError::from)?;
20587        }
20588        #[cfg(feature = "dml-charts")]
20589        {
20590            let val = &self.idx;
20591            val.write_element("a:idx", writer)?;
20592        }
20593        #[cfg(feature = "extra-children")]
20594        {
20595            emit_idx += 1;
20596        }
20597        #[cfg(feature = "extra-children")]
20598        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20599            extra_iter
20600                .next()
20601                .unwrap()
20602                .node
20603                .write_to(writer)
20604                .map_err(SerializeError::from)?;
20605        }
20606        #[cfg(feature = "dml-charts")]
20607        {
20608            let val = &self.order;
20609            val.write_element("a:order", writer)?;
20610        }
20611        #[cfg(feature = "extra-children")]
20612        {
20613            emit_idx += 1;
20614        }
20615        #[cfg(feature = "extra-children")]
20616        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20617            extra_iter
20618                .next()
20619                .unwrap()
20620                .node
20621                .write_to(writer)
20622                .map_err(SerializeError::from)?;
20623        }
20624        #[cfg(feature = "dml-charts")]
20625        if let Some(ref val) = self.tx {
20626            val.write_element("a:tx", writer)?;
20627        }
20628        #[cfg(feature = "extra-children")]
20629        {
20630            emit_idx += 1;
20631        }
20632        #[cfg(feature = "extra-children")]
20633        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20634            extra_iter
20635                .next()
20636                .unwrap()
20637                .node
20638                .write_to(writer)
20639                .map_err(SerializeError::from)?;
20640        }
20641        #[cfg(feature = "dml-charts")]
20642        if let Some(ref val) = self.sp_pr {
20643            val.write_element("a:spPr", writer)?;
20644        }
20645        #[cfg(feature = "extra-children")]
20646        {
20647            emit_idx += 1;
20648        }
20649        #[cfg(feature = "extra-children")]
20650        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20651            extra_iter
20652                .next()
20653                .unwrap()
20654                .node
20655                .write_to(writer)
20656                .map_err(SerializeError::from)?;
20657        }
20658        #[cfg(feature = "dml-charts")]
20659        if let Some(ref val) = self.marker {
20660            val.write_element("a:marker", writer)?;
20661        }
20662        #[cfg(feature = "extra-children")]
20663        {
20664            emit_idx += 1;
20665        }
20666        #[cfg(feature = "dml-charts")]
20667        for item in &self.d_pt {
20668            #[cfg(feature = "extra-children")]
20669            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20670                extra_iter
20671                    .next()
20672                    .unwrap()
20673                    .node
20674                    .write_to(writer)
20675                    .map_err(SerializeError::from)?;
20676            }
20677            item.write_element("a:dPt", writer)?;
20678            #[cfg(feature = "extra-children")]
20679            {
20680                emit_idx += 1;
20681            }
20682        }
20683        #[cfg(feature = "extra-children")]
20684        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20685            extra_iter
20686                .next()
20687                .unwrap()
20688                .node
20689                .write_to(writer)
20690                .map_err(SerializeError::from)?;
20691        }
20692        #[cfg(feature = "dml-charts")]
20693        if let Some(ref val) = self.d_lbls {
20694            val.write_element("a:dLbls", writer)?;
20695        }
20696        #[cfg(feature = "extra-children")]
20697        {
20698            emit_idx += 1;
20699        }
20700        #[cfg(feature = "dml-charts")]
20701        for item in &self.trendline {
20702            #[cfg(feature = "extra-children")]
20703            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20704                extra_iter
20705                    .next()
20706                    .unwrap()
20707                    .node
20708                    .write_to(writer)
20709                    .map_err(SerializeError::from)?;
20710            }
20711            item.write_element("a:trendline", writer)?;
20712            #[cfg(feature = "extra-children")]
20713            {
20714                emit_idx += 1;
20715            }
20716        }
20717        #[cfg(feature = "extra-children")]
20718        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20719            extra_iter
20720                .next()
20721                .unwrap()
20722                .node
20723                .write_to(writer)
20724                .map_err(SerializeError::from)?;
20725        }
20726        #[cfg(feature = "dml-charts")]
20727        if let Some(ref val) = self.err_bars {
20728            val.write_element("a:errBars", writer)?;
20729        }
20730        #[cfg(feature = "extra-children")]
20731        {
20732            emit_idx += 1;
20733        }
20734        #[cfg(feature = "extra-children")]
20735        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20736            extra_iter
20737                .next()
20738                .unwrap()
20739                .node
20740                .write_to(writer)
20741                .map_err(SerializeError::from)?;
20742        }
20743        #[cfg(feature = "dml-charts")]
20744        if let Some(ref val) = self.cat {
20745            val.write_element("a:cat", writer)?;
20746        }
20747        #[cfg(feature = "extra-children")]
20748        {
20749            emit_idx += 1;
20750        }
20751        #[cfg(feature = "extra-children")]
20752        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20753            extra_iter
20754                .next()
20755                .unwrap()
20756                .node
20757                .write_to(writer)
20758                .map_err(SerializeError::from)?;
20759        }
20760        #[cfg(feature = "dml-charts")]
20761        if let Some(ref val) = self.value {
20762            val.write_element("a:val", writer)?;
20763        }
20764        #[cfg(feature = "extra-children")]
20765        {
20766            emit_idx += 1;
20767        }
20768        #[cfg(feature = "extra-children")]
20769        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20770            extra_iter
20771                .next()
20772                .unwrap()
20773                .node
20774                .write_to(writer)
20775                .map_err(SerializeError::from)?;
20776        }
20777        #[cfg(feature = "dml-charts")]
20778        if let Some(ref val) = self.smooth {
20779            val.write_element("a:smooth", writer)?;
20780        }
20781        #[cfg(feature = "extra-children")]
20782        {
20783            emit_idx += 1;
20784        }
20785        #[cfg(feature = "extra-children")]
20786        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20787            extra_iter
20788                .next()
20789                .unwrap()
20790                .node
20791                .write_to(writer)
20792                .map_err(SerializeError::from)?;
20793        }
20794        #[cfg(feature = "dml-charts")]
20795        if let Some(ref val) = self.ext_lst {
20796            val.write_element("a:extLst", writer)?;
20797        }
20798        #[cfg(feature = "extra-children")]
20799        {
20800            emit_idx += 1;
20801        }
20802        #[cfg(feature = "extra-children")]
20803        for extra in extra_iter {
20804            extra.node.write_to(writer).map_err(SerializeError::from)?;
20805        }
20806        Ok(())
20807    }
20808
20809    fn is_empty_element(&self) -> bool {
20810        #[cfg(feature = "dml-charts")]
20811        return false;
20812        #[cfg(feature = "dml-charts")]
20813        return false;
20814        #[cfg(feature = "dml-charts")]
20815        if self.tx.is_some() {
20816            return false;
20817        }
20818        #[cfg(feature = "dml-charts")]
20819        if self.sp_pr.is_some() {
20820            return false;
20821        }
20822        #[cfg(feature = "dml-charts")]
20823        if self.marker.is_some() {
20824            return false;
20825        }
20826        #[cfg(feature = "dml-charts")]
20827        if !self.d_pt.is_empty() {
20828            return false;
20829        }
20830        #[cfg(feature = "dml-charts")]
20831        if self.d_lbls.is_some() {
20832            return false;
20833        }
20834        #[cfg(feature = "dml-charts")]
20835        if !self.trendline.is_empty() {
20836            return false;
20837        }
20838        #[cfg(feature = "dml-charts")]
20839        if self.err_bars.is_some() {
20840            return false;
20841        }
20842        #[cfg(feature = "dml-charts")]
20843        if self.cat.is_some() {
20844            return false;
20845        }
20846        #[cfg(feature = "dml-charts")]
20847        if self.value.is_some() {
20848            return false;
20849        }
20850        #[cfg(feature = "dml-charts")]
20851        if self.smooth.is_some() {
20852            return false;
20853        }
20854        #[cfg(feature = "dml-charts")]
20855        if self.ext_lst.is_some() {
20856            return false;
20857        }
20858        #[cfg(feature = "extra-children")]
20859        if !self.extra_children.is_empty() {
20860            return false;
20861        }
20862        true
20863    }
20864}
20865
20866impl ToXml for ScatterSeries {
20867    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
20868        #[cfg(feature = "extra-children")]
20869        let mut extra_iter = self.extra_children.iter().peekable();
20870        #[cfg(feature = "extra-children")]
20871        let mut emit_idx: usize = 0;
20872        #[cfg(feature = "extra-children")]
20873        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20874            extra_iter
20875                .next()
20876                .unwrap()
20877                .node
20878                .write_to(writer)
20879                .map_err(SerializeError::from)?;
20880        }
20881        #[cfg(feature = "dml-charts")]
20882        {
20883            let val = &self.idx;
20884            val.write_element("a:idx", writer)?;
20885        }
20886        #[cfg(feature = "extra-children")]
20887        {
20888            emit_idx += 1;
20889        }
20890        #[cfg(feature = "extra-children")]
20891        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20892            extra_iter
20893                .next()
20894                .unwrap()
20895                .node
20896                .write_to(writer)
20897                .map_err(SerializeError::from)?;
20898        }
20899        #[cfg(feature = "dml-charts")]
20900        {
20901            let val = &self.order;
20902            val.write_element("a:order", writer)?;
20903        }
20904        #[cfg(feature = "extra-children")]
20905        {
20906            emit_idx += 1;
20907        }
20908        #[cfg(feature = "extra-children")]
20909        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20910            extra_iter
20911                .next()
20912                .unwrap()
20913                .node
20914                .write_to(writer)
20915                .map_err(SerializeError::from)?;
20916        }
20917        #[cfg(feature = "dml-charts")]
20918        if let Some(ref val) = self.tx {
20919            val.write_element("a:tx", writer)?;
20920        }
20921        #[cfg(feature = "extra-children")]
20922        {
20923            emit_idx += 1;
20924        }
20925        #[cfg(feature = "extra-children")]
20926        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20927            extra_iter
20928                .next()
20929                .unwrap()
20930                .node
20931                .write_to(writer)
20932                .map_err(SerializeError::from)?;
20933        }
20934        #[cfg(feature = "dml-charts")]
20935        if let Some(ref val) = self.sp_pr {
20936            val.write_element("a:spPr", writer)?;
20937        }
20938        #[cfg(feature = "extra-children")]
20939        {
20940            emit_idx += 1;
20941        }
20942        #[cfg(feature = "extra-children")]
20943        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20944            extra_iter
20945                .next()
20946                .unwrap()
20947                .node
20948                .write_to(writer)
20949                .map_err(SerializeError::from)?;
20950        }
20951        #[cfg(feature = "dml-charts")]
20952        if let Some(ref val) = self.marker {
20953            val.write_element("a:marker", writer)?;
20954        }
20955        #[cfg(feature = "extra-children")]
20956        {
20957            emit_idx += 1;
20958        }
20959        #[cfg(feature = "dml-charts")]
20960        for item in &self.d_pt {
20961            #[cfg(feature = "extra-children")]
20962            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20963                extra_iter
20964                    .next()
20965                    .unwrap()
20966                    .node
20967                    .write_to(writer)
20968                    .map_err(SerializeError::from)?;
20969            }
20970            item.write_element("a:dPt", writer)?;
20971            #[cfg(feature = "extra-children")]
20972            {
20973                emit_idx += 1;
20974            }
20975        }
20976        #[cfg(feature = "extra-children")]
20977        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20978            extra_iter
20979                .next()
20980                .unwrap()
20981                .node
20982                .write_to(writer)
20983                .map_err(SerializeError::from)?;
20984        }
20985        #[cfg(feature = "dml-charts")]
20986        if let Some(ref val) = self.d_lbls {
20987            val.write_element("a:dLbls", writer)?;
20988        }
20989        #[cfg(feature = "extra-children")]
20990        {
20991            emit_idx += 1;
20992        }
20993        #[cfg(feature = "dml-charts")]
20994        for item in &self.trendline {
20995            #[cfg(feature = "extra-children")]
20996            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
20997                extra_iter
20998                    .next()
20999                    .unwrap()
21000                    .node
21001                    .write_to(writer)
21002                    .map_err(SerializeError::from)?;
21003            }
21004            item.write_element("a:trendline", writer)?;
21005            #[cfg(feature = "extra-children")]
21006            {
21007                emit_idx += 1;
21008            }
21009        }
21010        #[cfg(feature = "dml-charts")]
21011        for item in &self.err_bars {
21012            #[cfg(feature = "extra-children")]
21013            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21014                extra_iter
21015                    .next()
21016                    .unwrap()
21017                    .node
21018                    .write_to(writer)
21019                    .map_err(SerializeError::from)?;
21020            }
21021            item.write_element("a:errBars", writer)?;
21022            #[cfg(feature = "extra-children")]
21023            {
21024                emit_idx += 1;
21025            }
21026        }
21027        #[cfg(feature = "extra-children")]
21028        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21029            extra_iter
21030                .next()
21031                .unwrap()
21032                .node
21033                .write_to(writer)
21034                .map_err(SerializeError::from)?;
21035        }
21036        #[cfg(feature = "dml-charts")]
21037        if let Some(ref val) = self.x_val {
21038            val.write_element("a:xVal", writer)?;
21039        }
21040        #[cfg(feature = "extra-children")]
21041        {
21042            emit_idx += 1;
21043        }
21044        #[cfg(feature = "extra-children")]
21045        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21046            extra_iter
21047                .next()
21048                .unwrap()
21049                .node
21050                .write_to(writer)
21051                .map_err(SerializeError::from)?;
21052        }
21053        #[cfg(feature = "dml-charts")]
21054        if let Some(ref val) = self.y_val {
21055            val.write_element("a:yVal", writer)?;
21056        }
21057        #[cfg(feature = "extra-children")]
21058        {
21059            emit_idx += 1;
21060        }
21061        #[cfg(feature = "extra-children")]
21062        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21063            extra_iter
21064                .next()
21065                .unwrap()
21066                .node
21067                .write_to(writer)
21068                .map_err(SerializeError::from)?;
21069        }
21070        #[cfg(feature = "dml-charts")]
21071        if let Some(ref val) = self.smooth {
21072            val.write_element("a:smooth", writer)?;
21073        }
21074        #[cfg(feature = "extra-children")]
21075        {
21076            emit_idx += 1;
21077        }
21078        #[cfg(feature = "extra-children")]
21079        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21080            extra_iter
21081                .next()
21082                .unwrap()
21083                .node
21084                .write_to(writer)
21085                .map_err(SerializeError::from)?;
21086        }
21087        #[cfg(feature = "dml-charts")]
21088        if let Some(ref val) = self.ext_lst {
21089            val.write_element("a:extLst", writer)?;
21090        }
21091        #[cfg(feature = "extra-children")]
21092        {
21093            emit_idx += 1;
21094        }
21095        #[cfg(feature = "extra-children")]
21096        for extra in extra_iter {
21097            extra.node.write_to(writer).map_err(SerializeError::from)?;
21098        }
21099        Ok(())
21100    }
21101
21102    fn is_empty_element(&self) -> bool {
21103        #[cfg(feature = "dml-charts")]
21104        return false;
21105        #[cfg(feature = "dml-charts")]
21106        return false;
21107        #[cfg(feature = "dml-charts")]
21108        if self.tx.is_some() {
21109            return false;
21110        }
21111        #[cfg(feature = "dml-charts")]
21112        if self.sp_pr.is_some() {
21113            return false;
21114        }
21115        #[cfg(feature = "dml-charts")]
21116        if self.marker.is_some() {
21117            return false;
21118        }
21119        #[cfg(feature = "dml-charts")]
21120        if !self.d_pt.is_empty() {
21121            return false;
21122        }
21123        #[cfg(feature = "dml-charts")]
21124        if self.d_lbls.is_some() {
21125            return false;
21126        }
21127        #[cfg(feature = "dml-charts")]
21128        if !self.trendline.is_empty() {
21129            return false;
21130        }
21131        #[cfg(feature = "dml-charts")]
21132        if !self.err_bars.is_empty() {
21133            return false;
21134        }
21135        #[cfg(feature = "dml-charts")]
21136        if self.x_val.is_some() {
21137            return false;
21138        }
21139        #[cfg(feature = "dml-charts")]
21140        if self.y_val.is_some() {
21141            return false;
21142        }
21143        #[cfg(feature = "dml-charts")]
21144        if self.smooth.is_some() {
21145            return false;
21146        }
21147        #[cfg(feature = "dml-charts")]
21148        if self.ext_lst.is_some() {
21149            return false;
21150        }
21151        #[cfg(feature = "extra-children")]
21152        if !self.extra_children.is_empty() {
21153            return false;
21154        }
21155        true
21156    }
21157}
21158
21159impl ToXml for RadarSeries {
21160    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
21161        #[cfg(feature = "extra-children")]
21162        let mut extra_iter = self.extra_children.iter().peekable();
21163        #[cfg(feature = "extra-children")]
21164        let mut emit_idx: usize = 0;
21165        #[cfg(feature = "extra-children")]
21166        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21167            extra_iter
21168                .next()
21169                .unwrap()
21170                .node
21171                .write_to(writer)
21172                .map_err(SerializeError::from)?;
21173        }
21174        #[cfg(feature = "dml-charts")]
21175        {
21176            let val = &self.idx;
21177            val.write_element("a:idx", writer)?;
21178        }
21179        #[cfg(feature = "extra-children")]
21180        {
21181            emit_idx += 1;
21182        }
21183        #[cfg(feature = "extra-children")]
21184        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21185            extra_iter
21186                .next()
21187                .unwrap()
21188                .node
21189                .write_to(writer)
21190                .map_err(SerializeError::from)?;
21191        }
21192        #[cfg(feature = "dml-charts")]
21193        {
21194            let val = &self.order;
21195            val.write_element("a:order", writer)?;
21196        }
21197        #[cfg(feature = "extra-children")]
21198        {
21199            emit_idx += 1;
21200        }
21201        #[cfg(feature = "extra-children")]
21202        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21203            extra_iter
21204                .next()
21205                .unwrap()
21206                .node
21207                .write_to(writer)
21208                .map_err(SerializeError::from)?;
21209        }
21210        #[cfg(feature = "dml-charts")]
21211        if let Some(ref val) = self.tx {
21212            val.write_element("a:tx", writer)?;
21213        }
21214        #[cfg(feature = "extra-children")]
21215        {
21216            emit_idx += 1;
21217        }
21218        #[cfg(feature = "extra-children")]
21219        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21220            extra_iter
21221                .next()
21222                .unwrap()
21223                .node
21224                .write_to(writer)
21225                .map_err(SerializeError::from)?;
21226        }
21227        #[cfg(feature = "dml-charts")]
21228        if let Some(ref val) = self.sp_pr {
21229            val.write_element("a:spPr", writer)?;
21230        }
21231        #[cfg(feature = "extra-children")]
21232        {
21233            emit_idx += 1;
21234        }
21235        #[cfg(feature = "extra-children")]
21236        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21237            extra_iter
21238                .next()
21239                .unwrap()
21240                .node
21241                .write_to(writer)
21242                .map_err(SerializeError::from)?;
21243        }
21244        #[cfg(feature = "dml-charts")]
21245        if let Some(ref val) = self.marker {
21246            val.write_element("a:marker", writer)?;
21247        }
21248        #[cfg(feature = "extra-children")]
21249        {
21250            emit_idx += 1;
21251        }
21252        #[cfg(feature = "dml-charts")]
21253        for item in &self.d_pt {
21254            #[cfg(feature = "extra-children")]
21255            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21256                extra_iter
21257                    .next()
21258                    .unwrap()
21259                    .node
21260                    .write_to(writer)
21261                    .map_err(SerializeError::from)?;
21262            }
21263            item.write_element("a:dPt", writer)?;
21264            #[cfg(feature = "extra-children")]
21265            {
21266                emit_idx += 1;
21267            }
21268        }
21269        #[cfg(feature = "extra-children")]
21270        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21271            extra_iter
21272                .next()
21273                .unwrap()
21274                .node
21275                .write_to(writer)
21276                .map_err(SerializeError::from)?;
21277        }
21278        #[cfg(feature = "dml-charts")]
21279        if let Some(ref val) = self.d_lbls {
21280            val.write_element("a:dLbls", writer)?;
21281        }
21282        #[cfg(feature = "extra-children")]
21283        {
21284            emit_idx += 1;
21285        }
21286        #[cfg(feature = "extra-children")]
21287        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21288            extra_iter
21289                .next()
21290                .unwrap()
21291                .node
21292                .write_to(writer)
21293                .map_err(SerializeError::from)?;
21294        }
21295        #[cfg(feature = "dml-charts")]
21296        if let Some(ref val) = self.cat {
21297            val.write_element("a:cat", writer)?;
21298        }
21299        #[cfg(feature = "extra-children")]
21300        {
21301            emit_idx += 1;
21302        }
21303        #[cfg(feature = "extra-children")]
21304        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21305            extra_iter
21306                .next()
21307                .unwrap()
21308                .node
21309                .write_to(writer)
21310                .map_err(SerializeError::from)?;
21311        }
21312        #[cfg(feature = "dml-charts")]
21313        if let Some(ref val) = self.value {
21314            val.write_element("a:val", writer)?;
21315        }
21316        #[cfg(feature = "extra-children")]
21317        {
21318            emit_idx += 1;
21319        }
21320        #[cfg(feature = "extra-children")]
21321        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21322            extra_iter
21323                .next()
21324                .unwrap()
21325                .node
21326                .write_to(writer)
21327                .map_err(SerializeError::from)?;
21328        }
21329        #[cfg(feature = "dml-charts")]
21330        if let Some(ref val) = self.ext_lst {
21331            val.write_element("a:extLst", writer)?;
21332        }
21333        #[cfg(feature = "extra-children")]
21334        {
21335            emit_idx += 1;
21336        }
21337        #[cfg(feature = "extra-children")]
21338        for extra in extra_iter {
21339            extra.node.write_to(writer).map_err(SerializeError::from)?;
21340        }
21341        Ok(())
21342    }
21343
21344    fn is_empty_element(&self) -> bool {
21345        #[cfg(feature = "dml-charts")]
21346        return false;
21347        #[cfg(feature = "dml-charts")]
21348        return false;
21349        #[cfg(feature = "dml-charts")]
21350        if self.tx.is_some() {
21351            return false;
21352        }
21353        #[cfg(feature = "dml-charts")]
21354        if self.sp_pr.is_some() {
21355            return false;
21356        }
21357        #[cfg(feature = "dml-charts")]
21358        if self.marker.is_some() {
21359            return false;
21360        }
21361        #[cfg(feature = "dml-charts")]
21362        if !self.d_pt.is_empty() {
21363            return false;
21364        }
21365        #[cfg(feature = "dml-charts")]
21366        if self.d_lbls.is_some() {
21367            return false;
21368        }
21369        #[cfg(feature = "dml-charts")]
21370        if self.cat.is_some() {
21371            return false;
21372        }
21373        #[cfg(feature = "dml-charts")]
21374        if self.value.is_some() {
21375            return false;
21376        }
21377        #[cfg(feature = "dml-charts")]
21378        if self.ext_lst.is_some() {
21379            return false;
21380        }
21381        #[cfg(feature = "extra-children")]
21382        if !self.extra_children.is_empty() {
21383            return false;
21384        }
21385        true
21386    }
21387}
21388
21389impl ToXml for BarSeries {
21390    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
21391        #[cfg(feature = "extra-children")]
21392        let mut extra_iter = self.extra_children.iter().peekable();
21393        #[cfg(feature = "extra-children")]
21394        let mut emit_idx: usize = 0;
21395        #[cfg(feature = "extra-children")]
21396        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21397            extra_iter
21398                .next()
21399                .unwrap()
21400                .node
21401                .write_to(writer)
21402                .map_err(SerializeError::from)?;
21403        }
21404        #[cfg(feature = "dml-charts")]
21405        {
21406            let val = &self.idx;
21407            val.write_element("a:idx", writer)?;
21408        }
21409        #[cfg(feature = "extra-children")]
21410        {
21411            emit_idx += 1;
21412        }
21413        #[cfg(feature = "extra-children")]
21414        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21415            extra_iter
21416                .next()
21417                .unwrap()
21418                .node
21419                .write_to(writer)
21420                .map_err(SerializeError::from)?;
21421        }
21422        #[cfg(feature = "dml-charts")]
21423        {
21424            let val = &self.order;
21425            val.write_element("a:order", writer)?;
21426        }
21427        #[cfg(feature = "extra-children")]
21428        {
21429            emit_idx += 1;
21430        }
21431        #[cfg(feature = "extra-children")]
21432        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21433            extra_iter
21434                .next()
21435                .unwrap()
21436                .node
21437                .write_to(writer)
21438                .map_err(SerializeError::from)?;
21439        }
21440        #[cfg(feature = "dml-charts")]
21441        if let Some(ref val) = self.tx {
21442            val.write_element("a:tx", writer)?;
21443        }
21444        #[cfg(feature = "extra-children")]
21445        {
21446            emit_idx += 1;
21447        }
21448        #[cfg(feature = "extra-children")]
21449        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21450            extra_iter
21451                .next()
21452                .unwrap()
21453                .node
21454                .write_to(writer)
21455                .map_err(SerializeError::from)?;
21456        }
21457        #[cfg(feature = "dml-charts")]
21458        if let Some(ref val) = self.sp_pr {
21459            val.write_element("a:spPr", writer)?;
21460        }
21461        #[cfg(feature = "extra-children")]
21462        {
21463            emit_idx += 1;
21464        }
21465        #[cfg(feature = "extra-children")]
21466        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21467            extra_iter
21468                .next()
21469                .unwrap()
21470                .node
21471                .write_to(writer)
21472                .map_err(SerializeError::from)?;
21473        }
21474        #[cfg(feature = "dml-charts")]
21475        if let Some(ref val) = self.invert_if_negative {
21476            val.write_element("a:invertIfNegative", writer)?;
21477        }
21478        #[cfg(feature = "extra-children")]
21479        {
21480            emit_idx += 1;
21481        }
21482        #[cfg(feature = "extra-children")]
21483        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21484            extra_iter
21485                .next()
21486                .unwrap()
21487                .node
21488                .write_to(writer)
21489                .map_err(SerializeError::from)?;
21490        }
21491        #[cfg(feature = "dml-charts")]
21492        if let Some(ref val) = self.picture_options {
21493            val.write_element("a:pictureOptions", writer)?;
21494        }
21495        #[cfg(feature = "extra-children")]
21496        {
21497            emit_idx += 1;
21498        }
21499        #[cfg(feature = "dml-charts")]
21500        for item in &self.d_pt {
21501            #[cfg(feature = "extra-children")]
21502            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21503                extra_iter
21504                    .next()
21505                    .unwrap()
21506                    .node
21507                    .write_to(writer)
21508                    .map_err(SerializeError::from)?;
21509            }
21510            item.write_element("a:dPt", writer)?;
21511            #[cfg(feature = "extra-children")]
21512            {
21513                emit_idx += 1;
21514            }
21515        }
21516        #[cfg(feature = "extra-children")]
21517        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21518            extra_iter
21519                .next()
21520                .unwrap()
21521                .node
21522                .write_to(writer)
21523                .map_err(SerializeError::from)?;
21524        }
21525        #[cfg(feature = "dml-charts")]
21526        if let Some(ref val) = self.d_lbls {
21527            val.write_element("a:dLbls", writer)?;
21528        }
21529        #[cfg(feature = "extra-children")]
21530        {
21531            emit_idx += 1;
21532        }
21533        #[cfg(feature = "dml-charts")]
21534        for item in &self.trendline {
21535            #[cfg(feature = "extra-children")]
21536            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21537                extra_iter
21538                    .next()
21539                    .unwrap()
21540                    .node
21541                    .write_to(writer)
21542                    .map_err(SerializeError::from)?;
21543            }
21544            item.write_element("a:trendline", writer)?;
21545            #[cfg(feature = "extra-children")]
21546            {
21547                emit_idx += 1;
21548            }
21549        }
21550        #[cfg(feature = "extra-children")]
21551        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21552            extra_iter
21553                .next()
21554                .unwrap()
21555                .node
21556                .write_to(writer)
21557                .map_err(SerializeError::from)?;
21558        }
21559        #[cfg(feature = "dml-charts")]
21560        if let Some(ref val) = self.err_bars {
21561            val.write_element("a:errBars", writer)?;
21562        }
21563        #[cfg(feature = "extra-children")]
21564        {
21565            emit_idx += 1;
21566        }
21567        #[cfg(feature = "extra-children")]
21568        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21569            extra_iter
21570                .next()
21571                .unwrap()
21572                .node
21573                .write_to(writer)
21574                .map_err(SerializeError::from)?;
21575        }
21576        #[cfg(feature = "dml-charts")]
21577        if let Some(ref val) = self.cat {
21578            val.write_element("a:cat", writer)?;
21579        }
21580        #[cfg(feature = "extra-children")]
21581        {
21582            emit_idx += 1;
21583        }
21584        #[cfg(feature = "extra-children")]
21585        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21586            extra_iter
21587                .next()
21588                .unwrap()
21589                .node
21590                .write_to(writer)
21591                .map_err(SerializeError::from)?;
21592        }
21593        #[cfg(feature = "dml-charts")]
21594        if let Some(ref val) = self.value {
21595            val.write_element("a:val", writer)?;
21596        }
21597        #[cfg(feature = "extra-children")]
21598        {
21599            emit_idx += 1;
21600        }
21601        #[cfg(feature = "extra-children")]
21602        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21603            extra_iter
21604                .next()
21605                .unwrap()
21606                .node
21607                .write_to(writer)
21608                .map_err(SerializeError::from)?;
21609        }
21610        #[cfg(feature = "dml-charts")]
21611        if let Some(ref val) = self.shape {
21612            val.write_element("a:shape", writer)?;
21613        }
21614        #[cfg(feature = "extra-children")]
21615        {
21616            emit_idx += 1;
21617        }
21618        #[cfg(feature = "extra-children")]
21619        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21620            extra_iter
21621                .next()
21622                .unwrap()
21623                .node
21624                .write_to(writer)
21625                .map_err(SerializeError::from)?;
21626        }
21627        #[cfg(feature = "dml-charts")]
21628        if let Some(ref val) = self.ext_lst {
21629            val.write_element("a:extLst", writer)?;
21630        }
21631        #[cfg(feature = "extra-children")]
21632        {
21633            emit_idx += 1;
21634        }
21635        #[cfg(feature = "extra-children")]
21636        for extra in extra_iter {
21637            extra.node.write_to(writer).map_err(SerializeError::from)?;
21638        }
21639        Ok(())
21640    }
21641
21642    fn is_empty_element(&self) -> bool {
21643        #[cfg(feature = "dml-charts")]
21644        return false;
21645        #[cfg(feature = "dml-charts")]
21646        return false;
21647        #[cfg(feature = "dml-charts")]
21648        if self.tx.is_some() {
21649            return false;
21650        }
21651        #[cfg(feature = "dml-charts")]
21652        if self.sp_pr.is_some() {
21653            return false;
21654        }
21655        #[cfg(feature = "dml-charts")]
21656        if self.invert_if_negative.is_some() {
21657            return false;
21658        }
21659        #[cfg(feature = "dml-charts")]
21660        if self.picture_options.is_some() {
21661            return false;
21662        }
21663        #[cfg(feature = "dml-charts")]
21664        if !self.d_pt.is_empty() {
21665            return false;
21666        }
21667        #[cfg(feature = "dml-charts")]
21668        if self.d_lbls.is_some() {
21669            return false;
21670        }
21671        #[cfg(feature = "dml-charts")]
21672        if !self.trendline.is_empty() {
21673            return false;
21674        }
21675        #[cfg(feature = "dml-charts")]
21676        if self.err_bars.is_some() {
21677            return false;
21678        }
21679        #[cfg(feature = "dml-charts")]
21680        if self.cat.is_some() {
21681            return false;
21682        }
21683        #[cfg(feature = "dml-charts")]
21684        if self.value.is_some() {
21685            return false;
21686        }
21687        #[cfg(feature = "dml-charts")]
21688        if self.shape.is_some() {
21689            return false;
21690        }
21691        #[cfg(feature = "dml-charts")]
21692        if self.ext_lst.is_some() {
21693            return false;
21694        }
21695        #[cfg(feature = "extra-children")]
21696        if !self.extra_children.is_empty() {
21697            return false;
21698        }
21699        true
21700    }
21701}
21702
21703impl ToXml for AreaSeries {
21704    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
21705        #[cfg(feature = "extra-children")]
21706        let mut extra_iter = self.extra_children.iter().peekable();
21707        #[cfg(feature = "extra-children")]
21708        let mut emit_idx: usize = 0;
21709        #[cfg(feature = "extra-children")]
21710        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21711            extra_iter
21712                .next()
21713                .unwrap()
21714                .node
21715                .write_to(writer)
21716                .map_err(SerializeError::from)?;
21717        }
21718        #[cfg(feature = "dml-charts")]
21719        {
21720            let val = &self.idx;
21721            val.write_element("a:idx", writer)?;
21722        }
21723        #[cfg(feature = "extra-children")]
21724        {
21725            emit_idx += 1;
21726        }
21727        #[cfg(feature = "extra-children")]
21728        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21729            extra_iter
21730                .next()
21731                .unwrap()
21732                .node
21733                .write_to(writer)
21734                .map_err(SerializeError::from)?;
21735        }
21736        #[cfg(feature = "dml-charts")]
21737        {
21738            let val = &self.order;
21739            val.write_element("a:order", writer)?;
21740        }
21741        #[cfg(feature = "extra-children")]
21742        {
21743            emit_idx += 1;
21744        }
21745        #[cfg(feature = "extra-children")]
21746        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21747            extra_iter
21748                .next()
21749                .unwrap()
21750                .node
21751                .write_to(writer)
21752                .map_err(SerializeError::from)?;
21753        }
21754        #[cfg(feature = "dml-charts")]
21755        if let Some(ref val) = self.tx {
21756            val.write_element("a:tx", writer)?;
21757        }
21758        #[cfg(feature = "extra-children")]
21759        {
21760            emit_idx += 1;
21761        }
21762        #[cfg(feature = "extra-children")]
21763        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21764            extra_iter
21765                .next()
21766                .unwrap()
21767                .node
21768                .write_to(writer)
21769                .map_err(SerializeError::from)?;
21770        }
21771        #[cfg(feature = "dml-charts")]
21772        if let Some(ref val) = self.sp_pr {
21773            val.write_element("a:spPr", writer)?;
21774        }
21775        #[cfg(feature = "extra-children")]
21776        {
21777            emit_idx += 1;
21778        }
21779        #[cfg(feature = "extra-children")]
21780        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21781            extra_iter
21782                .next()
21783                .unwrap()
21784                .node
21785                .write_to(writer)
21786                .map_err(SerializeError::from)?;
21787        }
21788        #[cfg(feature = "dml-charts")]
21789        if let Some(ref val) = self.picture_options {
21790            val.write_element("a:pictureOptions", writer)?;
21791        }
21792        #[cfg(feature = "extra-children")]
21793        {
21794            emit_idx += 1;
21795        }
21796        #[cfg(feature = "dml-charts")]
21797        for item in &self.d_pt {
21798            #[cfg(feature = "extra-children")]
21799            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21800                extra_iter
21801                    .next()
21802                    .unwrap()
21803                    .node
21804                    .write_to(writer)
21805                    .map_err(SerializeError::from)?;
21806            }
21807            item.write_element("a:dPt", writer)?;
21808            #[cfg(feature = "extra-children")]
21809            {
21810                emit_idx += 1;
21811            }
21812        }
21813        #[cfg(feature = "extra-children")]
21814        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21815            extra_iter
21816                .next()
21817                .unwrap()
21818                .node
21819                .write_to(writer)
21820                .map_err(SerializeError::from)?;
21821        }
21822        #[cfg(feature = "dml-charts")]
21823        if let Some(ref val) = self.d_lbls {
21824            val.write_element("a:dLbls", writer)?;
21825        }
21826        #[cfg(feature = "extra-children")]
21827        {
21828            emit_idx += 1;
21829        }
21830        #[cfg(feature = "dml-charts")]
21831        for item in &self.trendline {
21832            #[cfg(feature = "extra-children")]
21833            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21834                extra_iter
21835                    .next()
21836                    .unwrap()
21837                    .node
21838                    .write_to(writer)
21839                    .map_err(SerializeError::from)?;
21840            }
21841            item.write_element("a:trendline", writer)?;
21842            #[cfg(feature = "extra-children")]
21843            {
21844                emit_idx += 1;
21845            }
21846        }
21847        #[cfg(feature = "dml-charts")]
21848        for item in &self.err_bars {
21849            #[cfg(feature = "extra-children")]
21850            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21851                extra_iter
21852                    .next()
21853                    .unwrap()
21854                    .node
21855                    .write_to(writer)
21856                    .map_err(SerializeError::from)?;
21857            }
21858            item.write_element("a:errBars", writer)?;
21859            #[cfg(feature = "extra-children")]
21860            {
21861                emit_idx += 1;
21862            }
21863        }
21864        #[cfg(feature = "extra-children")]
21865        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21866            extra_iter
21867                .next()
21868                .unwrap()
21869                .node
21870                .write_to(writer)
21871                .map_err(SerializeError::from)?;
21872        }
21873        #[cfg(feature = "dml-charts")]
21874        if let Some(ref val) = self.cat {
21875            val.write_element("a:cat", writer)?;
21876        }
21877        #[cfg(feature = "extra-children")]
21878        {
21879            emit_idx += 1;
21880        }
21881        #[cfg(feature = "extra-children")]
21882        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21883            extra_iter
21884                .next()
21885                .unwrap()
21886                .node
21887                .write_to(writer)
21888                .map_err(SerializeError::from)?;
21889        }
21890        #[cfg(feature = "dml-charts")]
21891        if let Some(ref val) = self.value {
21892            val.write_element("a:val", writer)?;
21893        }
21894        #[cfg(feature = "extra-children")]
21895        {
21896            emit_idx += 1;
21897        }
21898        #[cfg(feature = "extra-children")]
21899        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21900            extra_iter
21901                .next()
21902                .unwrap()
21903                .node
21904                .write_to(writer)
21905                .map_err(SerializeError::from)?;
21906        }
21907        #[cfg(feature = "dml-charts")]
21908        if let Some(ref val) = self.ext_lst {
21909            val.write_element("a:extLst", writer)?;
21910        }
21911        #[cfg(feature = "extra-children")]
21912        {
21913            emit_idx += 1;
21914        }
21915        #[cfg(feature = "extra-children")]
21916        for extra in extra_iter {
21917            extra.node.write_to(writer).map_err(SerializeError::from)?;
21918        }
21919        Ok(())
21920    }
21921
21922    fn is_empty_element(&self) -> bool {
21923        #[cfg(feature = "dml-charts")]
21924        return false;
21925        #[cfg(feature = "dml-charts")]
21926        return false;
21927        #[cfg(feature = "dml-charts")]
21928        if self.tx.is_some() {
21929            return false;
21930        }
21931        #[cfg(feature = "dml-charts")]
21932        if self.sp_pr.is_some() {
21933            return false;
21934        }
21935        #[cfg(feature = "dml-charts")]
21936        if self.picture_options.is_some() {
21937            return false;
21938        }
21939        #[cfg(feature = "dml-charts")]
21940        if !self.d_pt.is_empty() {
21941            return false;
21942        }
21943        #[cfg(feature = "dml-charts")]
21944        if self.d_lbls.is_some() {
21945            return false;
21946        }
21947        #[cfg(feature = "dml-charts")]
21948        if !self.trendline.is_empty() {
21949            return false;
21950        }
21951        #[cfg(feature = "dml-charts")]
21952        if !self.err_bars.is_empty() {
21953            return false;
21954        }
21955        #[cfg(feature = "dml-charts")]
21956        if self.cat.is_some() {
21957            return false;
21958        }
21959        #[cfg(feature = "dml-charts")]
21960        if self.value.is_some() {
21961            return false;
21962        }
21963        #[cfg(feature = "dml-charts")]
21964        if self.ext_lst.is_some() {
21965            return false;
21966        }
21967        #[cfg(feature = "extra-children")]
21968        if !self.extra_children.is_empty() {
21969            return false;
21970        }
21971        true
21972    }
21973}
21974
21975impl ToXml for PieSeries {
21976    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
21977        #[cfg(feature = "extra-children")]
21978        let mut extra_iter = self.extra_children.iter().peekable();
21979        #[cfg(feature = "extra-children")]
21980        let mut emit_idx: usize = 0;
21981        #[cfg(feature = "extra-children")]
21982        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
21983            extra_iter
21984                .next()
21985                .unwrap()
21986                .node
21987                .write_to(writer)
21988                .map_err(SerializeError::from)?;
21989        }
21990        #[cfg(feature = "dml-charts")]
21991        {
21992            let val = &self.idx;
21993            val.write_element("a:idx", writer)?;
21994        }
21995        #[cfg(feature = "extra-children")]
21996        {
21997            emit_idx += 1;
21998        }
21999        #[cfg(feature = "extra-children")]
22000        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22001            extra_iter
22002                .next()
22003                .unwrap()
22004                .node
22005                .write_to(writer)
22006                .map_err(SerializeError::from)?;
22007        }
22008        #[cfg(feature = "dml-charts")]
22009        {
22010            let val = &self.order;
22011            val.write_element("a:order", writer)?;
22012        }
22013        #[cfg(feature = "extra-children")]
22014        {
22015            emit_idx += 1;
22016        }
22017        #[cfg(feature = "extra-children")]
22018        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22019            extra_iter
22020                .next()
22021                .unwrap()
22022                .node
22023                .write_to(writer)
22024                .map_err(SerializeError::from)?;
22025        }
22026        #[cfg(feature = "dml-charts")]
22027        if let Some(ref val) = self.tx {
22028            val.write_element("a:tx", writer)?;
22029        }
22030        #[cfg(feature = "extra-children")]
22031        {
22032            emit_idx += 1;
22033        }
22034        #[cfg(feature = "extra-children")]
22035        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22036            extra_iter
22037                .next()
22038                .unwrap()
22039                .node
22040                .write_to(writer)
22041                .map_err(SerializeError::from)?;
22042        }
22043        #[cfg(feature = "dml-charts")]
22044        if let Some(ref val) = self.sp_pr {
22045            val.write_element("a:spPr", writer)?;
22046        }
22047        #[cfg(feature = "extra-children")]
22048        {
22049            emit_idx += 1;
22050        }
22051        #[cfg(feature = "extra-children")]
22052        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22053            extra_iter
22054                .next()
22055                .unwrap()
22056                .node
22057                .write_to(writer)
22058                .map_err(SerializeError::from)?;
22059        }
22060        #[cfg(feature = "dml-charts")]
22061        if let Some(ref val) = self.explosion {
22062            val.write_element("a:explosion", writer)?;
22063        }
22064        #[cfg(feature = "extra-children")]
22065        {
22066            emit_idx += 1;
22067        }
22068        #[cfg(feature = "dml-charts")]
22069        for item in &self.d_pt {
22070            #[cfg(feature = "extra-children")]
22071            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22072                extra_iter
22073                    .next()
22074                    .unwrap()
22075                    .node
22076                    .write_to(writer)
22077                    .map_err(SerializeError::from)?;
22078            }
22079            item.write_element("a:dPt", writer)?;
22080            #[cfg(feature = "extra-children")]
22081            {
22082                emit_idx += 1;
22083            }
22084        }
22085        #[cfg(feature = "extra-children")]
22086        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22087            extra_iter
22088                .next()
22089                .unwrap()
22090                .node
22091                .write_to(writer)
22092                .map_err(SerializeError::from)?;
22093        }
22094        #[cfg(feature = "dml-charts")]
22095        if let Some(ref val) = self.d_lbls {
22096            val.write_element("a:dLbls", writer)?;
22097        }
22098        #[cfg(feature = "extra-children")]
22099        {
22100            emit_idx += 1;
22101        }
22102        #[cfg(feature = "extra-children")]
22103        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22104            extra_iter
22105                .next()
22106                .unwrap()
22107                .node
22108                .write_to(writer)
22109                .map_err(SerializeError::from)?;
22110        }
22111        #[cfg(feature = "dml-charts")]
22112        if let Some(ref val) = self.cat {
22113            val.write_element("a:cat", writer)?;
22114        }
22115        #[cfg(feature = "extra-children")]
22116        {
22117            emit_idx += 1;
22118        }
22119        #[cfg(feature = "extra-children")]
22120        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22121            extra_iter
22122                .next()
22123                .unwrap()
22124                .node
22125                .write_to(writer)
22126                .map_err(SerializeError::from)?;
22127        }
22128        #[cfg(feature = "dml-charts")]
22129        if let Some(ref val) = self.value {
22130            val.write_element("a:val", writer)?;
22131        }
22132        #[cfg(feature = "extra-children")]
22133        {
22134            emit_idx += 1;
22135        }
22136        #[cfg(feature = "extra-children")]
22137        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22138            extra_iter
22139                .next()
22140                .unwrap()
22141                .node
22142                .write_to(writer)
22143                .map_err(SerializeError::from)?;
22144        }
22145        #[cfg(feature = "dml-charts")]
22146        if let Some(ref val) = self.ext_lst {
22147            val.write_element("a:extLst", writer)?;
22148        }
22149        #[cfg(feature = "extra-children")]
22150        {
22151            emit_idx += 1;
22152        }
22153        #[cfg(feature = "extra-children")]
22154        for extra in extra_iter {
22155            extra.node.write_to(writer).map_err(SerializeError::from)?;
22156        }
22157        Ok(())
22158    }
22159
22160    fn is_empty_element(&self) -> bool {
22161        #[cfg(feature = "dml-charts")]
22162        return false;
22163        #[cfg(feature = "dml-charts")]
22164        return false;
22165        #[cfg(feature = "dml-charts")]
22166        if self.tx.is_some() {
22167            return false;
22168        }
22169        #[cfg(feature = "dml-charts")]
22170        if self.sp_pr.is_some() {
22171            return false;
22172        }
22173        #[cfg(feature = "dml-charts")]
22174        if self.explosion.is_some() {
22175            return false;
22176        }
22177        #[cfg(feature = "dml-charts")]
22178        if !self.d_pt.is_empty() {
22179            return false;
22180        }
22181        #[cfg(feature = "dml-charts")]
22182        if self.d_lbls.is_some() {
22183            return false;
22184        }
22185        #[cfg(feature = "dml-charts")]
22186        if self.cat.is_some() {
22187            return false;
22188        }
22189        #[cfg(feature = "dml-charts")]
22190        if self.value.is_some() {
22191            return false;
22192        }
22193        #[cfg(feature = "dml-charts")]
22194        if self.ext_lst.is_some() {
22195            return false;
22196        }
22197        #[cfg(feature = "extra-children")]
22198        if !self.extra_children.is_empty() {
22199            return false;
22200        }
22201        true
22202    }
22203}
22204
22205impl ToXml for BubbleSeries {
22206    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
22207        #[cfg(feature = "extra-children")]
22208        let mut extra_iter = self.extra_children.iter().peekable();
22209        #[cfg(feature = "extra-children")]
22210        let mut emit_idx: usize = 0;
22211        #[cfg(feature = "extra-children")]
22212        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22213            extra_iter
22214                .next()
22215                .unwrap()
22216                .node
22217                .write_to(writer)
22218                .map_err(SerializeError::from)?;
22219        }
22220        #[cfg(feature = "dml-charts")]
22221        {
22222            let val = &self.idx;
22223            val.write_element("a:idx", writer)?;
22224        }
22225        #[cfg(feature = "extra-children")]
22226        {
22227            emit_idx += 1;
22228        }
22229        #[cfg(feature = "extra-children")]
22230        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22231            extra_iter
22232                .next()
22233                .unwrap()
22234                .node
22235                .write_to(writer)
22236                .map_err(SerializeError::from)?;
22237        }
22238        #[cfg(feature = "dml-charts")]
22239        {
22240            let val = &self.order;
22241            val.write_element("a:order", writer)?;
22242        }
22243        #[cfg(feature = "extra-children")]
22244        {
22245            emit_idx += 1;
22246        }
22247        #[cfg(feature = "extra-children")]
22248        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22249            extra_iter
22250                .next()
22251                .unwrap()
22252                .node
22253                .write_to(writer)
22254                .map_err(SerializeError::from)?;
22255        }
22256        #[cfg(feature = "dml-charts")]
22257        if let Some(ref val) = self.tx {
22258            val.write_element("a:tx", writer)?;
22259        }
22260        #[cfg(feature = "extra-children")]
22261        {
22262            emit_idx += 1;
22263        }
22264        #[cfg(feature = "extra-children")]
22265        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22266            extra_iter
22267                .next()
22268                .unwrap()
22269                .node
22270                .write_to(writer)
22271                .map_err(SerializeError::from)?;
22272        }
22273        #[cfg(feature = "dml-charts")]
22274        if let Some(ref val) = self.sp_pr {
22275            val.write_element("a:spPr", writer)?;
22276        }
22277        #[cfg(feature = "extra-children")]
22278        {
22279            emit_idx += 1;
22280        }
22281        #[cfg(feature = "extra-children")]
22282        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22283            extra_iter
22284                .next()
22285                .unwrap()
22286                .node
22287                .write_to(writer)
22288                .map_err(SerializeError::from)?;
22289        }
22290        #[cfg(feature = "dml-charts")]
22291        if let Some(ref val) = self.invert_if_negative {
22292            val.write_element("a:invertIfNegative", writer)?;
22293        }
22294        #[cfg(feature = "extra-children")]
22295        {
22296            emit_idx += 1;
22297        }
22298        #[cfg(feature = "dml-charts")]
22299        for item in &self.d_pt {
22300            #[cfg(feature = "extra-children")]
22301            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22302                extra_iter
22303                    .next()
22304                    .unwrap()
22305                    .node
22306                    .write_to(writer)
22307                    .map_err(SerializeError::from)?;
22308            }
22309            item.write_element("a:dPt", writer)?;
22310            #[cfg(feature = "extra-children")]
22311            {
22312                emit_idx += 1;
22313            }
22314        }
22315        #[cfg(feature = "extra-children")]
22316        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22317            extra_iter
22318                .next()
22319                .unwrap()
22320                .node
22321                .write_to(writer)
22322                .map_err(SerializeError::from)?;
22323        }
22324        #[cfg(feature = "dml-charts")]
22325        if let Some(ref val) = self.d_lbls {
22326            val.write_element("a:dLbls", writer)?;
22327        }
22328        #[cfg(feature = "extra-children")]
22329        {
22330            emit_idx += 1;
22331        }
22332        #[cfg(feature = "dml-charts")]
22333        for item in &self.trendline {
22334            #[cfg(feature = "extra-children")]
22335            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22336                extra_iter
22337                    .next()
22338                    .unwrap()
22339                    .node
22340                    .write_to(writer)
22341                    .map_err(SerializeError::from)?;
22342            }
22343            item.write_element("a:trendline", writer)?;
22344            #[cfg(feature = "extra-children")]
22345            {
22346                emit_idx += 1;
22347            }
22348        }
22349        #[cfg(feature = "dml-charts")]
22350        for item in &self.err_bars {
22351            #[cfg(feature = "extra-children")]
22352            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22353                extra_iter
22354                    .next()
22355                    .unwrap()
22356                    .node
22357                    .write_to(writer)
22358                    .map_err(SerializeError::from)?;
22359            }
22360            item.write_element("a:errBars", writer)?;
22361            #[cfg(feature = "extra-children")]
22362            {
22363                emit_idx += 1;
22364            }
22365        }
22366        #[cfg(feature = "extra-children")]
22367        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22368            extra_iter
22369                .next()
22370                .unwrap()
22371                .node
22372                .write_to(writer)
22373                .map_err(SerializeError::from)?;
22374        }
22375        #[cfg(feature = "dml-charts")]
22376        if let Some(ref val) = self.x_val {
22377            val.write_element("a:xVal", writer)?;
22378        }
22379        #[cfg(feature = "extra-children")]
22380        {
22381            emit_idx += 1;
22382        }
22383        #[cfg(feature = "extra-children")]
22384        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22385            extra_iter
22386                .next()
22387                .unwrap()
22388                .node
22389                .write_to(writer)
22390                .map_err(SerializeError::from)?;
22391        }
22392        #[cfg(feature = "dml-charts")]
22393        if let Some(ref val) = self.y_val {
22394            val.write_element("a:yVal", writer)?;
22395        }
22396        #[cfg(feature = "extra-children")]
22397        {
22398            emit_idx += 1;
22399        }
22400        #[cfg(feature = "extra-children")]
22401        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22402            extra_iter
22403                .next()
22404                .unwrap()
22405                .node
22406                .write_to(writer)
22407                .map_err(SerializeError::from)?;
22408        }
22409        #[cfg(feature = "dml-charts")]
22410        if let Some(ref val) = self.bubble_size {
22411            val.write_element("a:bubbleSize", writer)?;
22412        }
22413        #[cfg(feature = "extra-children")]
22414        {
22415            emit_idx += 1;
22416        }
22417        #[cfg(feature = "extra-children")]
22418        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22419            extra_iter
22420                .next()
22421                .unwrap()
22422                .node
22423                .write_to(writer)
22424                .map_err(SerializeError::from)?;
22425        }
22426        #[cfg(feature = "dml-charts")]
22427        if let Some(ref val) = self.bubble3_d {
22428            val.write_element("a:bubble3D", writer)?;
22429        }
22430        #[cfg(feature = "extra-children")]
22431        {
22432            emit_idx += 1;
22433        }
22434        #[cfg(feature = "extra-children")]
22435        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22436            extra_iter
22437                .next()
22438                .unwrap()
22439                .node
22440                .write_to(writer)
22441                .map_err(SerializeError::from)?;
22442        }
22443        #[cfg(feature = "dml-charts")]
22444        if let Some(ref val) = self.ext_lst {
22445            val.write_element("a:extLst", writer)?;
22446        }
22447        #[cfg(feature = "extra-children")]
22448        {
22449            emit_idx += 1;
22450        }
22451        #[cfg(feature = "extra-children")]
22452        for extra in extra_iter {
22453            extra.node.write_to(writer).map_err(SerializeError::from)?;
22454        }
22455        Ok(())
22456    }
22457
22458    fn is_empty_element(&self) -> bool {
22459        #[cfg(feature = "dml-charts")]
22460        return false;
22461        #[cfg(feature = "dml-charts")]
22462        return false;
22463        #[cfg(feature = "dml-charts")]
22464        if self.tx.is_some() {
22465            return false;
22466        }
22467        #[cfg(feature = "dml-charts")]
22468        if self.sp_pr.is_some() {
22469            return false;
22470        }
22471        #[cfg(feature = "dml-charts")]
22472        if self.invert_if_negative.is_some() {
22473            return false;
22474        }
22475        #[cfg(feature = "dml-charts")]
22476        if !self.d_pt.is_empty() {
22477            return false;
22478        }
22479        #[cfg(feature = "dml-charts")]
22480        if self.d_lbls.is_some() {
22481            return false;
22482        }
22483        #[cfg(feature = "dml-charts")]
22484        if !self.trendline.is_empty() {
22485            return false;
22486        }
22487        #[cfg(feature = "dml-charts")]
22488        if !self.err_bars.is_empty() {
22489            return false;
22490        }
22491        #[cfg(feature = "dml-charts")]
22492        if self.x_val.is_some() {
22493            return false;
22494        }
22495        #[cfg(feature = "dml-charts")]
22496        if self.y_val.is_some() {
22497            return false;
22498        }
22499        #[cfg(feature = "dml-charts")]
22500        if self.bubble_size.is_some() {
22501            return false;
22502        }
22503        #[cfg(feature = "dml-charts")]
22504        if self.bubble3_d.is_some() {
22505            return false;
22506        }
22507        #[cfg(feature = "dml-charts")]
22508        if self.ext_lst.is_some() {
22509            return false;
22510        }
22511        #[cfg(feature = "extra-children")]
22512        if !self.extra_children.is_empty() {
22513            return false;
22514        }
22515        true
22516    }
22517}
22518
22519impl ToXml for SurfaceSeries {
22520    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
22521        #[cfg(feature = "extra-children")]
22522        let mut extra_iter = self.extra_children.iter().peekable();
22523        #[cfg(feature = "extra-children")]
22524        let mut emit_idx: usize = 0;
22525        #[cfg(feature = "extra-children")]
22526        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22527            extra_iter
22528                .next()
22529                .unwrap()
22530                .node
22531                .write_to(writer)
22532                .map_err(SerializeError::from)?;
22533        }
22534        #[cfg(feature = "dml-charts")]
22535        {
22536            let val = &self.idx;
22537            val.write_element("a:idx", writer)?;
22538        }
22539        #[cfg(feature = "extra-children")]
22540        {
22541            emit_idx += 1;
22542        }
22543        #[cfg(feature = "extra-children")]
22544        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22545            extra_iter
22546                .next()
22547                .unwrap()
22548                .node
22549                .write_to(writer)
22550                .map_err(SerializeError::from)?;
22551        }
22552        #[cfg(feature = "dml-charts")]
22553        {
22554            let val = &self.order;
22555            val.write_element("a:order", writer)?;
22556        }
22557        #[cfg(feature = "extra-children")]
22558        {
22559            emit_idx += 1;
22560        }
22561        #[cfg(feature = "extra-children")]
22562        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22563            extra_iter
22564                .next()
22565                .unwrap()
22566                .node
22567                .write_to(writer)
22568                .map_err(SerializeError::from)?;
22569        }
22570        #[cfg(feature = "dml-charts")]
22571        if let Some(ref val) = self.tx {
22572            val.write_element("a:tx", writer)?;
22573        }
22574        #[cfg(feature = "extra-children")]
22575        {
22576            emit_idx += 1;
22577        }
22578        #[cfg(feature = "extra-children")]
22579        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22580            extra_iter
22581                .next()
22582                .unwrap()
22583                .node
22584                .write_to(writer)
22585                .map_err(SerializeError::from)?;
22586        }
22587        #[cfg(feature = "dml-charts")]
22588        if let Some(ref val) = self.sp_pr {
22589            val.write_element("a:spPr", writer)?;
22590        }
22591        #[cfg(feature = "extra-children")]
22592        {
22593            emit_idx += 1;
22594        }
22595        #[cfg(feature = "extra-children")]
22596        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22597            extra_iter
22598                .next()
22599                .unwrap()
22600                .node
22601                .write_to(writer)
22602                .map_err(SerializeError::from)?;
22603        }
22604        #[cfg(feature = "dml-charts")]
22605        if let Some(ref val) = self.cat {
22606            val.write_element("a:cat", writer)?;
22607        }
22608        #[cfg(feature = "extra-children")]
22609        {
22610            emit_idx += 1;
22611        }
22612        #[cfg(feature = "extra-children")]
22613        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22614            extra_iter
22615                .next()
22616                .unwrap()
22617                .node
22618                .write_to(writer)
22619                .map_err(SerializeError::from)?;
22620        }
22621        #[cfg(feature = "dml-charts")]
22622        if let Some(ref val) = self.value {
22623            val.write_element("a:val", writer)?;
22624        }
22625        #[cfg(feature = "extra-children")]
22626        {
22627            emit_idx += 1;
22628        }
22629        #[cfg(feature = "extra-children")]
22630        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22631            extra_iter
22632                .next()
22633                .unwrap()
22634                .node
22635                .write_to(writer)
22636                .map_err(SerializeError::from)?;
22637        }
22638        #[cfg(feature = "dml-charts")]
22639        if let Some(ref val) = self.ext_lst {
22640            val.write_element("a:extLst", writer)?;
22641        }
22642        #[cfg(feature = "extra-children")]
22643        {
22644            emit_idx += 1;
22645        }
22646        #[cfg(feature = "extra-children")]
22647        for extra in extra_iter {
22648            extra.node.write_to(writer).map_err(SerializeError::from)?;
22649        }
22650        Ok(())
22651    }
22652
22653    fn is_empty_element(&self) -> bool {
22654        #[cfg(feature = "dml-charts")]
22655        return false;
22656        #[cfg(feature = "dml-charts")]
22657        return false;
22658        #[cfg(feature = "dml-charts")]
22659        if self.tx.is_some() {
22660            return false;
22661        }
22662        #[cfg(feature = "dml-charts")]
22663        if self.sp_pr.is_some() {
22664            return false;
22665        }
22666        #[cfg(feature = "dml-charts")]
22667        if self.cat.is_some() {
22668            return false;
22669        }
22670        #[cfg(feature = "dml-charts")]
22671        if self.value.is_some() {
22672            return false;
22673        }
22674        #[cfg(feature = "dml-charts")]
22675        if self.ext_lst.is_some() {
22676            return false;
22677        }
22678        #[cfg(feature = "extra-children")]
22679        if !self.extra_children.is_empty() {
22680            return false;
22681        }
22682        true
22683    }
22684}
22685
22686impl ToXml for ChartGrouping {
22687    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
22688        #[allow(unused_mut)]
22689        let mut start = start;
22690        #[cfg(feature = "dml-charts")]
22691        if let Some(ref val) = self.value {
22692            {
22693                let s = val.to_string();
22694                start.push_attribute(("val", s.as_str()));
22695            }
22696        }
22697        #[cfg(feature = "extra-attrs")]
22698        for (key, value) in &self.extra_attrs {
22699            start.push_attribute((key.as_str(), value.as_str()));
22700        }
22701        start
22702    }
22703
22704    fn is_empty_element(&self) -> bool {
22705        true
22706    }
22707}
22708
22709impl ToXml for ChartLines {
22710    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
22711        #[cfg(feature = "extra-children")]
22712        let mut extra_iter = self.extra_children.iter().peekable();
22713        #[cfg(feature = "extra-children")]
22714        let mut emit_idx: usize = 0;
22715        #[cfg(feature = "extra-children")]
22716        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22717            extra_iter
22718                .next()
22719                .unwrap()
22720                .node
22721                .write_to(writer)
22722                .map_err(SerializeError::from)?;
22723        }
22724        #[cfg(feature = "dml-charts")]
22725        if let Some(ref val) = self.sp_pr {
22726            val.write_element("a:spPr", writer)?;
22727        }
22728        #[cfg(feature = "extra-children")]
22729        {
22730            emit_idx += 1;
22731        }
22732        #[cfg(feature = "extra-children")]
22733        for extra in extra_iter {
22734            extra.node.write_to(writer).map_err(SerializeError::from)?;
22735        }
22736        Ok(())
22737    }
22738
22739    fn is_empty_element(&self) -> bool {
22740        #[cfg(feature = "dml-charts")]
22741        if self.sp_pr.is_some() {
22742            return false;
22743        }
22744        #[cfg(feature = "extra-children")]
22745        if !self.extra_children.is_empty() {
22746            return false;
22747        }
22748        true
22749    }
22750}
22751
22752impl ToXml for EGLineChartShared {
22753    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
22754        #[cfg(feature = "extra-children")]
22755        let mut extra_iter = self.extra_children.iter().peekable();
22756        #[cfg(feature = "extra-children")]
22757        let mut emit_idx: usize = 0;
22758        #[cfg(feature = "extra-children")]
22759        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22760            extra_iter
22761                .next()
22762                .unwrap()
22763                .node
22764                .write_to(writer)
22765                .map_err(SerializeError::from)?;
22766        }
22767        {
22768            let val = &self.grouping;
22769            val.write_element("a:grouping", writer)?;
22770        }
22771        #[cfg(feature = "extra-children")]
22772        {
22773            emit_idx += 1;
22774        }
22775        #[cfg(feature = "extra-children")]
22776        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22777            extra_iter
22778                .next()
22779                .unwrap()
22780                .node
22781                .write_to(writer)
22782                .map_err(SerializeError::from)?;
22783        }
22784        if let Some(ref val) = self.vary_colors {
22785            val.write_element("a:varyColors", writer)?;
22786        }
22787        #[cfg(feature = "extra-children")]
22788        {
22789            emit_idx += 1;
22790        }
22791        for item in &self.ser {
22792            #[cfg(feature = "extra-children")]
22793            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22794                extra_iter
22795                    .next()
22796                    .unwrap()
22797                    .node
22798                    .write_to(writer)
22799                    .map_err(SerializeError::from)?;
22800            }
22801            item.write_element("a:ser", writer)?;
22802            #[cfg(feature = "extra-children")]
22803            {
22804                emit_idx += 1;
22805            }
22806        }
22807        #[cfg(feature = "extra-children")]
22808        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22809            extra_iter
22810                .next()
22811                .unwrap()
22812                .node
22813                .write_to(writer)
22814                .map_err(SerializeError::from)?;
22815        }
22816        if let Some(ref val) = self.d_lbls {
22817            val.write_element("a:dLbls", writer)?;
22818        }
22819        #[cfg(feature = "extra-children")]
22820        {
22821            emit_idx += 1;
22822        }
22823        #[cfg(feature = "extra-children")]
22824        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22825            extra_iter
22826                .next()
22827                .unwrap()
22828                .node
22829                .write_to(writer)
22830                .map_err(SerializeError::from)?;
22831        }
22832        if let Some(ref val) = self.drop_lines {
22833            val.write_element("a:dropLines", writer)?;
22834        }
22835        #[cfg(feature = "extra-children")]
22836        {
22837            emit_idx += 1;
22838        }
22839        #[cfg(feature = "extra-children")]
22840        for extra in extra_iter {
22841            extra.node.write_to(writer).map_err(SerializeError::from)?;
22842        }
22843        Ok(())
22844    }
22845
22846    fn is_empty_element(&self) -> bool {
22847        false
22848    }
22849}
22850
22851impl ToXml for LineChart {
22852    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
22853        #[cfg(feature = "extra-children")]
22854        let mut extra_iter = self.extra_children.iter().peekable();
22855        #[cfg(feature = "extra-children")]
22856        let mut emit_idx: usize = 0;
22857        #[cfg(feature = "extra-children")]
22858        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22859            extra_iter
22860                .next()
22861                .unwrap()
22862                .node
22863                .write_to(writer)
22864                .map_err(SerializeError::from)?;
22865        }
22866        #[cfg(feature = "dml-charts")]
22867        {
22868            let val = &self.grouping;
22869            val.write_element("a:grouping", writer)?;
22870        }
22871        #[cfg(feature = "extra-children")]
22872        {
22873            emit_idx += 1;
22874        }
22875        #[cfg(feature = "extra-children")]
22876        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22877            extra_iter
22878                .next()
22879                .unwrap()
22880                .node
22881                .write_to(writer)
22882                .map_err(SerializeError::from)?;
22883        }
22884        #[cfg(feature = "dml-charts")]
22885        if let Some(ref val) = self.vary_colors {
22886            val.write_element("a:varyColors", writer)?;
22887        }
22888        #[cfg(feature = "extra-children")]
22889        {
22890            emit_idx += 1;
22891        }
22892        #[cfg(feature = "dml-charts")]
22893        for item in &self.ser {
22894            #[cfg(feature = "extra-children")]
22895            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22896                extra_iter
22897                    .next()
22898                    .unwrap()
22899                    .node
22900                    .write_to(writer)
22901                    .map_err(SerializeError::from)?;
22902            }
22903            item.write_element("a:ser", writer)?;
22904            #[cfg(feature = "extra-children")]
22905            {
22906                emit_idx += 1;
22907            }
22908        }
22909        #[cfg(feature = "extra-children")]
22910        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22911            extra_iter
22912                .next()
22913                .unwrap()
22914                .node
22915                .write_to(writer)
22916                .map_err(SerializeError::from)?;
22917        }
22918        #[cfg(feature = "dml-charts")]
22919        if let Some(ref val) = self.d_lbls {
22920            val.write_element("a:dLbls", writer)?;
22921        }
22922        #[cfg(feature = "extra-children")]
22923        {
22924            emit_idx += 1;
22925        }
22926        #[cfg(feature = "extra-children")]
22927        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22928            extra_iter
22929                .next()
22930                .unwrap()
22931                .node
22932                .write_to(writer)
22933                .map_err(SerializeError::from)?;
22934        }
22935        #[cfg(feature = "dml-charts")]
22936        if let Some(ref val) = self.drop_lines {
22937            val.write_element("a:dropLines", writer)?;
22938        }
22939        #[cfg(feature = "extra-children")]
22940        {
22941            emit_idx += 1;
22942        }
22943        #[cfg(feature = "extra-children")]
22944        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22945            extra_iter
22946                .next()
22947                .unwrap()
22948                .node
22949                .write_to(writer)
22950                .map_err(SerializeError::from)?;
22951        }
22952        #[cfg(feature = "dml-charts")]
22953        if let Some(ref val) = self.hi_low_lines {
22954            val.write_element("a:hiLowLines", writer)?;
22955        }
22956        #[cfg(feature = "extra-children")]
22957        {
22958            emit_idx += 1;
22959        }
22960        #[cfg(feature = "extra-children")]
22961        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22962            extra_iter
22963                .next()
22964                .unwrap()
22965                .node
22966                .write_to(writer)
22967                .map_err(SerializeError::from)?;
22968        }
22969        #[cfg(feature = "dml-charts")]
22970        if let Some(ref val) = self.up_down_bars {
22971            val.write_element("a:upDownBars", writer)?;
22972        }
22973        #[cfg(feature = "extra-children")]
22974        {
22975            emit_idx += 1;
22976        }
22977        #[cfg(feature = "extra-children")]
22978        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22979            extra_iter
22980                .next()
22981                .unwrap()
22982                .node
22983                .write_to(writer)
22984                .map_err(SerializeError::from)?;
22985        }
22986        #[cfg(feature = "dml-charts")]
22987        if let Some(ref val) = self.marker {
22988            val.write_element("a:marker", writer)?;
22989        }
22990        #[cfg(feature = "extra-children")]
22991        {
22992            emit_idx += 1;
22993        }
22994        #[cfg(feature = "extra-children")]
22995        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
22996            extra_iter
22997                .next()
22998                .unwrap()
22999                .node
23000                .write_to(writer)
23001                .map_err(SerializeError::from)?;
23002        }
23003        #[cfg(feature = "dml-charts")]
23004        if let Some(ref val) = self.smooth {
23005            val.write_element("a:smooth", writer)?;
23006        }
23007        #[cfg(feature = "extra-children")]
23008        {
23009            emit_idx += 1;
23010        }
23011        #[cfg(feature = "dml-charts")]
23012        for item in &self.ax_id {
23013            #[cfg(feature = "extra-children")]
23014            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23015                extra_iter
23016                    .next()
23017                    .unwrap()
23018                    .node
23019                    .write_to(writer)
23020                    .map_err(SerializeError::from)?;
23021            }
23022            item.write_element("a:axId", writer)?;
23023            #[cfg(feature = "extra-children")]
23024            {
23025                emit_idx += 1;
23026            }
23027        }
23028        #[cfg(feature = "extra-children")]
23029        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23030            extra_iter
23031                .next()
23032                .unwrap()
23033                .node
23034                .write_to(writer)
23035                .map_err(SerializeError::from)?;
23036        }
23037        #[cfg(feature = "dml-charts")]
23038        if let Some(ref val) = self.ext_lst {
23039            val.write_element("a:extLst", writer)?;
23040        }
23041        #[cfg(feature = "extra-children")]
23042        {
23043            emit_idx += 1;
23044        }
23045        #[cfg(feature = "extra-children")]
23046        for extra in extra_iter {
23047            extra.node.write_to(writer).map_err(SerializeError::from)?;
23048        }
23049        Ok(())
23050    }
23051
23052    fn is_empty_element(&self) -> bool {
23053        #[cfg(feature = "dml-charts")]
23054        return false;
23055        #[cfg(feature = "dml-charts")]
23056        if self.vary_colors.is_some() {
23057            return false;
23058        }
23059        #[cfg(feature = "dml-charts")]
23060        if !self.ser.is_empty() {
23061            return false;
23062        }
23063        #[cfg(feature = "dml-charts")]
23064        if self.d_lbls.is_some() {
23065            return false;
23066        }
23067        #[cfg(feature = "dml-charts")]
23068        if self.drop_lines.is_some() {
23069            return false;
23070        }
23071        #[cfg(feature = "dml-charts")]
23072        if self.hi_low_lines.is_some() {
23073            return false;
23074        }
23075        #[cfg(feature = "dml-charts")]
23076        if self.up_down_bars.is_some() {
23077            return false;
23078        }
23079        #[cfg(feature = "dml-charts")]
23080        if self.marker.is_some() {
23081            return false;
23082        }
23083        #[cfg(feature = "dml-charts")]
23084        if self.smooth.is_some() {
23085            return false;
23086        }
23087        #[cfg(feature = "dml-charts")]
23088        if !self.ax_id.is_empty() {
23089            return false;
23090        }
23091        #[cfg(feature = "dml-charts")]
23092        if self.ext_lst.is_some() {
23093            return false;
23094        }
23095        #[cfg(feature = "extra-children")]
23096        if !self.extra_children.is_empty() {
23097            return false;
23098        }
23099        true
23100    }
23101}
23102
23103impl ToXml for Line3DChart {
23104    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
23105        #[cfg(feature = "extra-children")]
23106        let mut extra_iter = self.extra_children.iter().peekable();
23107        #[cfg(feature = "extra-children")]
23108        let mut emit_idx: usize = 0;
23109        #[cfg(feature = "extra-children")]
23110        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23111            extra_iter
23112                .next()
23113                .unwrap()
23114                .node
23115                .write_to(writer)
23116                .map_err(SerializeError::from)?;
23117        }
23118        #[cfg(feature = "dml-charts")]
23119        {
23120            let val = &self.grouping;
23121            val.write_element("a:grouping", writer)?;
23122        }
23123        #[cfg(feature = "extra-children")]
23124        {
23125            emit_idx += 1;
23126        }
23127        #[cfg(feature = "extra-children")]
23128        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23129            extra_iter
23130                .next()
23131                .unwrap()
23132                .node
23133                .write_to(writer)
23134                .map_err(SerializeError::from)?;
23135        }
23136        #[cfg(feature = "dml-charts")]
23137        if let Some(ref val) = self.vary_colors {
23138            val.write_element("a:varyColors", writer)?;
23139        }
23140        #[cfg(feature = "extra-children")]
23141        {
23142            emit_idx += 1;
23143        }
23144        #[cfg(feature = "dml-charts")]
23145        for item in &self.ser {
23146            #[cfg(feature = "extra-children")]
23147            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23148                extra_iter
23149                    .next()
23150                    .unwrap()
23151                    .node
23152                    .write_to(writer)
23153                    .map_err(SerializeError::from)?;
23154            }
23155            item.write_element("a:ser", writer)?;
23156            #[cfg(feature = "extra-children")]
23157            {
23158                emit_idx += 1;
23159            }
23160        }
23161        #[cfg(feature = "extra-children")]
23162        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23163            extra_iter
23164                .next()
23165                .unwrap()
23166                .node
23167                .write_to(writer)
23168                .map_err(SerializeError::from)?;
23169        }
23170        #[cfg(feature = "dml-charts")]
23171        if let Some(ref val) = self.d_lbls {
23172            val.write_element("a:dLbls", writer)?;
23173        }
23174        #[cfg(feature = "extra-children")]
23175        {
23176            emit_idx += 1;
23177        }
23178        #[cfg(feature = "extra-children")]
23179        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23180            extra_iter
23181                .next()
23182                .unwrap()
23183                .node
23184                .write_to(writer)
23185                .map_err(SerializeError::from)?;
23186        }
23187        #[cfg(feature = "dml-charts")]
23188        if let Some(ref val) = self.drop_lines {
23189            val.write_element("a:dropLines", writer)?;
23190        }
23191        #[cfg(feature = "extra-children")]
23192        {
23193            emit_idx += 1;
23194        }
23195        #[cfg(feature = "extra-children")]
23196        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23197            extra_iter
23198                .next()
23199                .unwrap()
23200                .node
23201                .write_to(writer)
23202                .map_err(SerializeError::from)?;
23203        }
23204        #[cfg(feature = "dml-charts")]
23205        if let Some(ref val) = self.gap_depth {
23206            val.write_element("a:gapDepth", writer)?;
23207        }
23208        #[cfg(feature = "extra-children")]
23209        {
23210            emit_idx += 1;
23211        }
23212        #[cfg(feature = "dml-charts")]
23213        for item in &self.ax_id {
23214            #[cfg(feature = "extra-children")]
23215            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23216                extra_iter
23217                    .next()
23218                    .unwrap()
23219                    .node
23220                    .write_to(writer)
23221                    .map_err(SerializeError::from)?;
23222            }
23223            item.write_element("a:axId", writer)?;
23224            #[cfg(feature = "extra-children")]
23225            {
23226                emit_idx += 1;
23227            }
23228        }
23229        #[cfg(feature = "extra-children")]
23230        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23231            extra_iter
23232                .next()
23233                .unwrap()
23234                .node
23235                .write_to(writer)
23236                .map_err(SerializeError::from)?;
23237        }
23238        #[cfg(feature = "dml-charts")]
23239        if let Some(ref val) = self.ext_lst {
23240            val.write_element("a:extLst", writer)?;
23241        }
23242        #[cfg(feature = "extra-children")]
23243        {
23244            emit_idx += 1;
23245        }
23246        #[cfg(feature = "extra-children")]
23247        for extra in extra_iter {
23248            extra.node.write_to(writer).map_err(SerializeError::from)?;
23249        }
23250        Ok(())
23251    }
23252
23253    fn is_empty_element(&self) -> bool {
23254        #[cfg(feature = "dml-charts")]
23255        return false;
23256        #[cfg(feature = "dml-charts")]
23257        if self.vary_colors.is_some() {
23258            return false;
23259        }
23260        #[cfg(feature = "dml-charts")]
23261        if !self.ser.is_empty() {
23262            return false;
23263        }
23264        #[cfg(feature = "dml-charts")]
23265        if self.d_lbls.is_some() {
23266            return false;
23267        }
23268        #[cfg(feature = "dml-charts")]
23269        if self.drop_lines.is_some() {
23270            return false;
23271        }
23272        #[cfg(feature = "dml-charts")]
23273        if self.gap_depth.is_some() {
23274            return false;
23275        }
23276        #[cfg(feature = "dml-charts")]
23277        if !self.ax_id.is_empty() {
23278            return false;
23279        }
23280        #[cfg(feature = "dml-charts")]
23281        if self.ext_lst.is_some() {
23282            return false;
23283        }
23284        #[cfg(feature = "extra-children")]
23285        if !self.extra_children.is_empty() {
23286            return false;
23287        }
23288        true
23289    }
23290}
23291
23292impl ToXml for StockChart {
23293    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
23294        #[cfg(feature = "extra-children")]
23295        let mut extra_iter = self.extra_children.iter().peekable();
23296        #[cfg(feature = "extra-children")]
23297        let mut emit_idx: usize = 0;
23298        #[cfg(feature = "dml-charts")]
23299        for item in &self.ser {
23300            #[cfg(feature = "extra-children")]
23301            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23302                extra_iter
23303                    .next()
23304                    .unwrap()
23305                    .node
23306                    .write_to(writer)
23307                    .map_err(SerializeError::from)?;
23308            }
23309            item.write_element("a:ser", writer)?;
23310            #[cfg(feature = "extra-children")]
23311            {
23312                emit_idx += 1;
23313            }
23314        }
23315        #[cfg(feature = "extra-children")]
23316        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23317            extra_iter
23318                .next()
23319                .unwrap()
23320                .node
23321                .write_to(writer)
23322                .map_err(SerializeError::from)?;
23323        }
23324        #[cfg(feature = "dml-charts")]
23325        if let Some(ref val) = self.d_lbls {
23326            val.write_element("a:dLbls", writer)?;
23327        }
23328        #[cfg(feature = "extra-children")]
23329        {
23330            emit_idx += 1;
23331        }
23332        #[cfg(feature = "extra-children")]
23333        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23334            extra_iter
23335                .next()
23336                .unwrap()
23337                .node
23338                .write_to(writer)
23339                .map_err(SerializeError::from)?;
23340        }
23341        #[cfg(feature = "dml-charts")]
23342        if let Some(ref val) = self.drop_lines {
23343            val.write_element("a:dropLines", writer)?;
23344        }
23345        #[cfg(feature = "extra-children")]
23346        {
23347            emit_idx += 1;
23348        }
23349        #[cfg(feature = "extra-children")]
23350        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23351            extra_iter
23352                .next()
23353                .unwrap()
23354                .node
23355                .write_to(writer)
23356                .map_err(SerializeError::from)?;
23357        }
23358        #[cfg(feature = "dml-charts")]
23359        if let Some(ref val) = self.hi_low_lines {
23360            val.write_element("a:hiLowLines", writer)?;
23361        }
23362        #[cfg(feature = "extra-children")]
23363        {
23364            emit_idx += 1;
23365        }
23366        #[cfg(feature = "extra-children")]
23367        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23368            extra_iter
23369                .next()
23370                .unwrap()
23371                .node
23372                .write_to(writer)
23373                .map_err(SerializeError::from)?;
23374        }
23375        #[cfg(feature = "dml-charts")]
23376        if let Some(ref val) = self.up_down_bars {
23377            val.write_element("a:upDownBars", writer)?;
23378        }
23379        #[cfg(feature = "extra-children")]
23380        {
23381            emit_idx += 1;
23382        }
23383        #[cfg(feature = "dml-charts")]
23384        for item in &self.ax_id {
23385            #[cfg(feature = "extra-children")]
23386            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23387                extra_iter
23388                    .next()
23389                    .unwrap()
23390                    .node
23391                    .write_to(writer)
23392                    .map_err(SerializeError::from)?;
23393            }
23394            item.write_element("a:axId", writer)?;
23395            #[cfg(feature = "extra-children")]
23396            {
23397                emit_idx += 1;
23398            }
23399        }
23400        #[cfg(feature = "extra-children")]
23401        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23402            extra_iter
23403                .next()
23404                .unwrap()
23405                .node
23406                .write_to(writer)
23407                .map_err(SerializeError::from)?;
23408        }
23409        #[cfg(feature = "dml-charts")]
23410        if let Some(ref val) = self.ext_lst {
23411            val.write_element("a:extLst", writer)?;
23412        }
23413        #[cfg(feature = "extra-children")]
23414        {
23415            emit_idx += 1;
23416        }
23417        #[cfg(feature = "extra-children")]
23418        for extra in extra_iter {
23419            extra.node.write_to(writer).map_err(SerializeError::from)?;
23420        }
23421        Ok(())
23422    }
23423
23424    fn is_empty_element(&self) -> bool {
23425        #[cfg(feature = "dml-charts")]
23426        if !self.ser.is_empty() {
23427            return false;
23428        }
23429        #[cfg(feature = "dml-charts")]
23430        if self.d_lbls.is_some() {
23431            return false;
23432        }
23433        #[cfg(feature = "dml-charts")]
23434        if self.drop_lines.is_some() {
23435            return false;
23436        }
23437        #[cfg(feature = "dml-charts")]
23438        if self.hi_low_lines.is_some() {
23439            return false;
23440        }
23441        #[cfg(feature = "dml-charts")]
23442        if self.up_down_bars.is_some() {
23443            return false;
23444        }
23445        #[cfg(feature = "dml-charts")]
23446        if !self.ax_id.is_empty() {
23447            return false;
23448        }
23449        #[cfg(feature = "dml-charts")]
23450        if self.ext_lst.is_some() {
23451            return false;
23452        }
23453        #[cfg(feature = "extra-children")]
23454        if !self.extra_children.is_empty() {
23455            return false;
23456        }
23457        true
23458    }
23459}
23460
23461impl ToXml for ScatterStyle {
23462    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
23463        #[allow(unused_mut)]
23464        let mut start = start;
23465        #[cfg(feature = "dml-charts")]
23466        if let Some(ref val) = self.value {
23467            {
23468                let s = val.to_string();
23469                start.push_attribute(("val", s.as_str()));
23470            }
23471        }
23472        #[cfg(feature = "extra-attrs")]
23473        for (key, value) in &self.extra_attrs {
23474            start.push_attribute((key.as_str(), value.as_str()));
23475        }
23476        start
23477    }
23478
23479    fn is_empty_element(&self) -> bool {
23480        true
23481    }
23482}
23483
23484impl ToXml for ScatterChart {
23485    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
23486        #[cfg(feature = "extra-children")]
23487        let mut extra_iter = self.extra_children.iter().peekable();
23488        #[cfg(feature = "extra-children")]
23489        let mut emit_idx: usize = 0;
23490        #[cfg(feature = "extra-children")]
23491        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23492            extra_iter
23493                .next()
23494                .unwrap()
23495                .node
23496                .write_to(writer)
23497                .map_err(SerializeError::from)?;
23498        }
23499        #[cfg(feature = "dml-charts")]
23500        {
23501            let val = &self.scatter_style;
23502            val.write_element("a:scatterStyle", writer)?;
23503        }
23504        #[cfg(feature = "extra-children")]
23505        {
23506            emit_idx += 1;
23507        }
23508        #[cfg(feature = "extra-children")]
23509        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23510            extra_iter
23511                .next()
23512                .unwrap()
23513                .node
23514                .write_to(writer)
23515                .map_err(SerializeError::from)?;
23516        }
23517        #[cfg(feature = "dml-charts")]
23518        if let Some(ref val) = self.vary_colors {
23519            val.write_element("a:varyColors", writer)?;
23520        }
23521        #[cfg(feature = "extra-children")]
23522        {
23523            emit_idx += 1;
23524        }
23525        #[cfg(feature = "dml-charts")]
23526        for item in &self.ser {
23527            #[cfg(feature = "extra-children")]
23528            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23529                extra_iter
23530                    .next()
23531                    .unwrap()
23532                    .node
23533                    .write_to(writer)
23534                    .map_err(SerializeError::from)?;
23535            }
23536            item.write_element("a:ser", writer)?;
23537            #[cfg(feature = "extra-children")]
23538            {
23539                emit_idx += 1;
23540            }
23541        }
23542        #[cfg(feature = "extra-children")]
23543        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23544            extra_iter
23545                .next()
23546                .unwrap()
23547                .node
23548                .write_to(writer)
23549                .map_err(SerializeError::from)?;
23550        }
23551        #[cfg(feature = "dml-charts")]
23552        if let Some(ref val) = self.d_lbls {
23553            val.write_element("a:dLbls", writer)?;
23554        }
23555        #[cfg(feature = "extra-children")]
23556        {
23557            emit_idx += 1;
23558        }
23559        #[cfg(feature = "dml-charts")]
23560        for item in &self.ax_id {
23561            #[cfg(feature = "extra-children")]
23562            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23563                extra_iter
23564                    .next()
23565                    .unwrap()
23566                    .node
23567                    .write_to(writer)
23568                    .map_err(SerializeError::from)?;
23569            }
23570            item.write_element("a:axId", writer)?;
23571            #[cfg(feature = "extra-children")]
23572            {
23573                emit_idx += 1;
23574            }
23575        }
23576        #[cfg(feature = "extra-children")]
23577        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23578            extra_iter
23579                .next()
23580                .unwrap()
23581                .node
23582                .write_to(writer)
23583                .map_err(SerializeError::from)?;
23584        }
23585        #[cfg(feature = "dml-charts")]
23586        if let Some(ref val) = self.ext_lst {
23587            val.write_element("a:extLst", writer)?;
23588        }
23589        #[cfg(feature = "extra-children")]
23590        {
23591            emit_idx += 1;
23592        }
23593        #[cfg(feature = "extra-children")]
23594        for extra in extra_iter {
23595            extra.node.write_to(writer).map_err(SerializeError::from)?;
23596        }
23597        Ok(())
23598    }
23599
23600    fn is_empty_element(&self) -> bool {
23601        #[cfg(feature = "dml-charts")]
23602        return false;
23603        #[cfg(feature = "dml-charts")]
23604        if self.vary_colors.is_some() {
23605            return false;
23606        }
23607        #[cfg(feature = "dml-charts")]
23608        if !self.ser.is_empty() {
23609            return false;
23610        }
23611        #[cfg(feature = "dml-charts")]
23612        if self.d_lbls.is_some() {
23613            return false;
23614        }
23615        #[cfg(feature = "dml-charts")]
23616        if !self.ax_id.is_empty() {
23617            return false;
23618        }
23619        #[cfg(feature = "dml-charts")]
23620        if self.ext_lst.is_some() {
23621            return false;
23622        }
23623        #[cfg(feature = "extra-children")]
23624        if !self.extra_children.is_empty() {
23625            return false;
23626        }
23627        true
23628    }
23629}
23630
23631impl ToXml for RadarStyle {
23632    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
23633        #[allow(unused_mut)]
23634        let mut start = start;
23635        #[cfg(feature = "dml-charts")]
23636        if let Some(ref val) = self.value {
23637            {
23638                let s = val.to_string();
23639                start.push_attribute(("val", s.as_str()));
23640            }
23641        }
23642        #[cfg(feature = "extra-attrs")]
23643        for (key, value) in &self.extra_attrs {
23644            start.push_attribute((key.as_str(), value.as_str()));
23645        }
23646        start
23647    }
23648
23649    fn is_empty_element(&self) -> bool {
23650        true
23651    }
23652}
23653
23654impl ToXml for RadarChart {
23655    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
23656        #[cfg(feature = "extra-children")]
23657        let mut extra_iter = self.extra_children.iter().peekable();
23658        #[cfg(feature = "extra-children")]
23659        let mut emit_idx: usize = 0;
23660        #[cfg(feature = "extra-children")]
23661        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23662            extra_iter
23663                .next()
23664                .unwrap()
23665                .node
23666                .write_to(writer)
23667                .map_err(SerializeError::from)?;
23668        }
23669        #[cfg(feature = "dml-charts")]
23670        {
23671            let val = &self.radar_style;
23672            val.write_element("a:radarStyle", writer)?;
23673        }
23674        #[cfg(feature = "extra-children")]
23675        {
23676            emit_idx += 1;
23677        }
23678        #[cfg(feature = "extra-children")]
23679        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23680            extra_iter
23681                .next()
23682                .unwrap()
23683                .node
23684                .write_to(writer)
23685                .map_err(SerializeError::from)?;
23686        }
23687        #[cfg(feature = "dml-charts")]
23688        if let Some(ref val) = self.vary_colors {
23689            val.write_element("a:varyColors", writer)?;
23690        }
23691        #[cfg(feature = "extra-children")]
23692        {
23693            emit_idx += 1;
23694        }
23695        #[cfg(feature = "dml-charts")]
23696        for item in &self.ser {
23697            #[cfg(feature = "extra-children")]
23698            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23699                extra_iter
23700                    .next()
23701                    .unwrap()
23702                    .node
23703                    .write_to(writer)
23704                    .map_err(SerializeError::from)?;
23705            }
23706            item.write_element("a:ser", writer)?;
23707            #[cfg(feature = "extra-children")]
23708            {
23709                emit_idx += 1;
23710            }
23711        }
23712        #[cfg(feature = "extra-children")]
23713        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23714            extra_iter
23715                .next()
23716                .unwrap()
23717                .node
23718                .write_to(writer)
23719                .map_err(SerializeError::from)?;
23720        }
23721        #[cfg(feature = "dml-charts")]
23722        if let Some(ref val) = self.d_lbls {
23723            val.write_element("a:dLbls", writer)?;
23724        }
23725        #[cfg(feature = "extra-children")]
23726        {
23727            emit_idx += 1;
23728        }
23729        #[cfg(feature = "dml-charts")]
23730        for item in &self.ax_id {
23731            #[cfg(feature = "extra-children")]
23732            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23733                extra_iter
23734                    .next()
23735                    .unwrap()
23736                    .node
23737                    .write_to(writer)
23738                    .map_err(SerializeError::from)?;
23739            }
23740            item.write_element("a:axId", writer)?;
23741            #[cfg(feature = "extra-children")]
23742            {
23743                emit_idx += 1;
23744            }
23745        }
23746        #[cfg(feature = "extra-children")]
23747        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23748            extra_iter
23749                .next()
23750                .unwrap()
23751                .node
23752                .write_to(writer)
23753                .map_err(SerializeError::from)?;
23754        }
23755        #[cfg(feature = "dml-charts")]
23756        if let Some(ref val) = self.ext_lst {
23757            val.write_element("a:extLst", writer)?;
23758        }
23759        #[cfg(feature = "extra-children")]
23760        {
23761            emit_idx += 1;
23762        }
23763        #[cfg(feature = "extra-children")]
23764        for extra in extra_iter {
23765            extra.node.write_to(writer).map_err(SerializeError::from)?;
23766        }
23767        Ok(())
23768    }
23769
23770    fn is_empty_element(&self) -> bool {
23771        #[cfg(feature = "dml-charts")]
23772        return false;
23773        #[cfg(feature = "dml-charts")]
23774        if self.vary_colors.is_some() {
23775            return false;
23776        }
23777        #[cfg(feature = "dml-charts")]
23778        if !self.ser.is_empty() {
23779            return false;
23780        }
23781        #[cfg(feature = "dml-charts")]
23782        if self.d_lbls.is_some() {
23783            return false;
23784        }
23785        #[cfg(feature = "dml-charts")]
23786        if !self.ax_id.is_empty() {
23787            return false;
23788        }
23789        #[cfg(feature = "dml-charts")]
23790        if self.ext_lst.is_some() {
23791            return false;
23792        }
23793        #[cfg(feature = "extra-children")]
23794        if !self.extra_children.is_empty() {
23795            return false;
23796        }
23797        true
23798    }
23799}
23800
23801impl ToXml for BarGrouping {
23802    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
23803        #[allow(unused_mut)]
23804        let mut start = start;
23805        #[cfg(feature = "dml-charts")]
23806        if let Some(ref val) = self.value {
23807            {
23808                let s = val.to_string();
23809                start.push_attribute(("val", s.as_str()));
23810            }
23811        }
23812        #[cfg(feature = "extra-attrs")]
23813        for (key, value) in &self.extra_attrs {
23814            start.push_attribute((key.as_str(), value.as_str()));
23815        }
23816        start
23817    }
23818
23819    fn is_empty_element(&self) -> bool {
23820        true
23821    }
23822}
23823
23824impl ToXml for BarDirection {
23825    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
23826        #[allow(unused_mut)]
23827        let mut start = start;
23828        #[cfg(feature = "dml-charts")]
23829        if let Some(ref val) = self.value {
23830            {
23831                let s = val.to_string();
23832                start.push_attribute(("val", s.as_str()));
23833            }
23834        }
23835        #[cfg(feature = "extra-attrs")]
23836        for (key, value) in &self.extra_attrs {
23837            start.push_attribute((key.as_str(), value.as_str()));
23838        }
23839        start
23840    }
23841
23842    fn is_empty_element(&self) -> bool {
23843        true
23844    }
23845}
23846
23847impl ToXml for DiagramShape {
23848    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
23849        #[allow(unused_mut)]
23850        let mut start = start;
23851        #[cfg(feature = "dml-diagrams")]
23852        if let Some(ref val) = self.value {
23853            {
23854                let s = val.to_string();
23855                start.push_attribute(("val", s.as_str()));
23856            }
23857        }
23858        #[cfg(feature = "extra-attrs")]
23859        for (key, value) in &self.extra_attrs {
23860            start.push_attribute((key.as_str(), value.as_str()));
23861        }
23862        start
23863    }
23864
23865    fn is_empty_element(&self) -> bool {
23866        true
23867    }
23868}
23869
23870impl ToXml for EGBarChartShared {
23871    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
23872        #[cfg(feature = "extra-children")]
23873        let mut extra_iter = self.extra_children.iter().peekable();
23874        #[cfg(feature = "extra-children")]
23875        let mut emit_idx: usize = 0;
23876        #[cfg(feature = "extra-children")]
23877        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23878            extra_iter
23879                .next()
23880                .unwrap()
23881                .node
23882                .write_to(writer)
23883                .map_err(SerializeError::from)?;
23884        }
23885        {
23886            let val = &self.bar_dir;
23887            val.write_element("a:barDir", writer)?;
23888        }
23889        #[cfg(feature = "extra-children")]
23890        {
23891            emit_idx += 1;
23892        }
23893        #[cfg(feature = "extra-children")]
23894        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23895            extra_iter
23896                .next()
23897                .unwrap()
23898                .node
23899                .write_to(writer)
23900                .map_err(SerializeError::from)?;
23901        }
23902        if let Some(ref val) = self.grouping {
23903            val.write_element("a:grouping", writer)?;
23904        }
23905        #[cfg(feature = "extra-children")]
23906        {
23907            emit_idx += 1;
23908        }
23909        #[cfg(feature = "extra-children")]
23910        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23911            extra_iter
23912                .next()
23913                .unwrap()
23914                .node
23915                .write_to(writer)
23916                .map_err(SerializeError::from)?;
23917        }
23918        if let Some(ref val) = self.vary_colors {
23919            val.write_element("a:varyColors", writer)?;
23920        }
23921        #[cfg(feature = "extra-children")]
23922        {
23923            emit_idx += 1;
23924        }
23925        for item in &self.ser {
23926            #[cfg(feature = "extra-children")]
23927            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23928                extra_iter
23929                    .next()
23930                    .unwrap()
23931                    .node
23932                    .write_to(writer)
23933                    .map_err(SerializeError::from)?;
23934            }
23935            item.write_element("a:ser", writer)?;
23936            #[cfg(feature = "extra-children")]
23937            {
23938                emit_idx += 1;
23939            }
23940        }
23941        #[cfg(feature = "extra-children")]
23942        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23943            extra_iter
23944                .next()
23945                .unwrap()
23946                .node
23947                .write_to(writer)
23948                .map_err(SerializeError::from)?;
23949        }
23950        if let Some(ref val) = self.d_lbls {
23951            val.write_element("a:dLbls", writer)?;
23952        }
23953        #[cfg(feature = "extra-children")]
23954        {
23955            emit_idx += 1;
23956        }
23957        #[cfg(feature = "extra-children")]
23958        for extra in extra_iter {
23959            extra.node.write_to(writer).map_err(SerializeError::from)?;
23960        }
23961        Ok(())
23962    }
23963
23964    fn is_empty_element(&self) -> bool {
23965        false
23966    }
23967}
23968
23969impl ToXml for BarChart {
23970    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
23971        #[cfg(feature = "extra-children")]
23972        let mut extra_iter = self.extra_children.iter().peekable();
23973        #[cfg(feature = "extra-children")]
23974        let mut emit_idx: usize = 0;
23975        #[cfg(feature = "extra-children")]
23976        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23977            extra_iter
23978                .next()
23979                .unwrap()
23980                .node
23981                .write_to(writer)
23982                .map_err(SerializeError::from)?;
23983        }
23984        #[cfg(feature = "dml-charts")]
23985        {
23986            let val = &self.bar_dir;
23987            val.write_element("a:barDir", writer)?;
23988        }
23989        #[cfg(feature = "extra-children")]
23990        {
23991            emit_idx += 1;
23992        }
23993        #[cfg(feature = "extra-children")]
23994        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
23995            extra_iter
23996                .next()
23997                .unwrap()
23998                .node
23999                .write_to(writer)
24000                .map_err(SerializeError::from)?;
24001        }
24002        #[cfg(feature = "dml-charts")]
24003        if let Some(ref val) = self.grouping {
24004            val.write_element("a:grouping", writer)?;
24005        }
24006        #[cfg(feature = "extra-children")]
24007        {
24008            emit_idx += 1;
24009        }
24010        #[cfg(feature = "extra-children")]
24011        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24012            extra_iter
24013                .next()
24014                .unwrap()
24015                .node
24016                .write_to(writer)
24017                .map_err(SerializeError::from)?;
24018        }
24019        #[cfg(feature = "dml-charts")]
24020        if let Some(ref val) = self.vary_colors {
24021            val.write_element("a:varyColors", writer)?;
24022        }
24023        #[cfg(feature = "extra-children")]
24024        {
24025            emit_idx += 1;
24026        }
24027        #[cfg(feature = "dml-charts")]
24028        for item in &self.ser {
24029            #[cfg(feature = "extra-children")]
24030            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24031                extra_iter
24032                    .next()
24033                    .unwrap()
24034                    .node
24035                    .write_to(writer)
24036                    .map_err(SerializeError::from)?;
24037            }
24038            item.write_element("a:ser", writer)?;
24039            #[cfg(feature = "extra-children")]
24040            {
24041                emit_idx += 1;
24042            }
24043        }
24044        #[cfg(feature = "extra-children")]
24045        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24046            extra_iter
24047                .next()
24048                .unwrap()
24049                .node
24050                .write_to(writer)
24051                .map_err(SerializeError::from)?;
24052        }
24053        #[cfg(feature = "dml-charts")]
24054        if let Some(ref val) = self.d_lbls {
24055            val.write_element("a:dLbls", writer)?;
24056        }
24057        #[cfg(feature = "extra-children")]
24058        {
24059            emit_idx += 1;
24060        }
24061        #[cfg(feature = "extra-children")]
24062        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24063            extra_iter
24064                .next()
24065                .unwrap()
24066                .node
24067                .write_to(writer)
24068                .map_err(SerializeError::from)?;
24069        }
24070        #[cfg(feature = "dml-charts")]
24071        if let Some(ref val) = self.gap_width {
24072            val.write_element("a:gapWidth", writer)?;
24073        }
24074        #[cfg(feature = "extra-children")]
24075        {
24076            emit_idx += 1;
24077        }
24078        #[cfg(feature = "extra-children")]
24079        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24080            extra_iter
24081                .next()
24082                .unwrap()
24083                .node
24084                .write_to(writer)
24085                .map_err(SerializeError::from)?;
24086        }
24087        #[cfg(feature = "dml-charts")]
24088        if let Some(ref val) = self.overlap {
24089            val.write_element("a:overlap", writer)?;
24090        }
24091        #[cfg(feature = "extra-children")]
24092        {
24093            emit_idx += 1;
24094        }
24095        #[cfg(feature = "dml-charts")]
24096        for item in &self.ser_lines {
24097            #[cfg(feature = "extra-children")]
24098            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24099                extra_iter
24100                    .next()
24101                    .unwrap()
24102                    .node
24103                    .write_to(writer)
24104                    .map_err(SerializeError::from)?;
24105            }
24106            item.write_element("a:serLines", writer)?;
24107            #[cfg(feature = "extra-children")]
24108            {
24109                emit_idx += 1;
24110            }
24111        }
24112        #[cfg(feature = "dml-charts")]
24113        for item in &self.ax_id {
24114            #[cfg(feature = "extra-children")]
24115            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24116                extra_iter
24117                    .next()
24118                    .unwrap()
24119                    .node
24120                    .write_to(writer)
24121                    .map_err(SerializeError::from)?;
24122            }
24123            item.write_element("a:axId", writer)?;
24124            #[cfg(feature = "extra-children")]
24125            {
24126                emit_idx += 1;
24127            }
24128        }
24129        #[cfg(feature = "extra-children")]
24130        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24131            extra_iter
24132                .next()
24133                .unwrap()
24134                .node
24135                .write_to(writer)
24136                .map_err(SerializeError::from)?;
24137        }
24138        #[cfg(feature = "dml-charts")]
24139        if let Some(ref val) = self.ext_lst {
24140            val.write_element("a:extLst", writer)?;
24141        }
24142        #[cfg(feature = "extra-children")]
24143        {
24144            emit_idx += 1;
24145        }
24146        #[cfg(feature = "extra-children")]
24147        for extra in extra_iter {
24148            extra.node.write_to(writer).map_err(SerializeError::from)?;
24149        }
24150        Ok(())
24151    }
24152
24153    fn is_empty_element(&self) -> bool {
24154        #[cfg(feature = "dml-charts")]
24155        return false;
24156        #[cfg(feature = "dml-charts")]
24157        if self.grouping.is_some() {
24158            return false;
24159        }
24160        #[cfg(feature = "dml-charts")]
24161        if self.vary_colors.is_some() {
24162            return false;
24163        }
24164        #[cfg(feature = "dml-charts")]
24165        if !self.ser.is_empty() {
24166            return false;
24167        }
24168        #[cfg(feature = "dml-charts")]
24169        if self.d_lbls.is_some() {
24170            return false;
24171        }
24172        #[cfg(feature = "dml-charts")]
24173        if self.gap_width.is_some() {
24174            return false;
24175        }
24176        #[cfg(feature = "dml-charts")]
24177        if self.overlap.is_some() {
24178            return false;
24179        }
24180        #[cfg(feature = "dml-charts")]
24181        if !self.ser_lines.is_empty() {
24182            return false;
24183        }
24184        #[cfg(feature = "dml-charts")]
24185        if !self.ax_id.is_empty() {
24186            return false;
24187        }
24188        #[cfg(feature = "dml-charts")]
24189        if self.ext_lst.is_some() {
24190            return false;
24191        }
24192        #[cfg(feature = "extra-children")]
24193        if !self.extra_children.is_empty() {
24194            return false;
24195        }
24196        true
24197    }
24198}
24199
24200impl ToXml for Bar3DChart {
24201    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
24202        #[cfg(feature = "extra-children")]
24203        let mut extra_iter = self.extra_children.iter().peekable();
24204        #[cfg(feature = "extra-children")]
24205        let mut emit_idx: usize = 0;
24206        #[cfg(feature = "extra-children")]
24207        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24208            extra_iter
24209                .next()
24210                .unwrap()
24211                .node
24212                .write_to(writer)
24213                .map_err(SerializeError::from)?;
24214        }
24215        #[cfg(feature = "dml-charts")]
24216        {
24217            let val = &self.bar_dir;
24218            val.write_element("a:barDir", writer)?;
24219        }
24220        #[cfg(feature = "extra-children")]
24221        {
24222            emit_idx += 1;
24223        }
24224        #[cfg(feature = "extra-children")]
24225        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24226            extra_iter
24227                .next()
24228                .unwrap()
24229                .node
24230                .write_to(writer)
24231                .map_err(SerializeError::from)?;
24232        }
24233        #[cfg(feature = "dml-charts")]
24234        if let Some(ref val) = self.grouping {
24235            val.write_element("a:grouping", writer)?;
24236        }
24237        #[cfg(feature = "extra-children")]
24238        {
24239            emit_idx += 1;
24240        }
24241        #[cfg(feature = "extra-children")]
24242        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24243            extra_iter
24244                .next()
24245                .unwrap()
24246                .node
24247                .write_to(writer)
24248                .map_err(SerializeError::from)?;
24249        }
24250        #[cfg(feature = "dml-charts")]
24251        if let Some(ref val) = self.vary_colors {
24252            val.write_element("a:varyColors", writer)?;
24253        }
24254        #[cfg(feature = "extra-children")]
24255        {
24256            emit_idx += 1;
24257        }
24258        #[cfg(feature = "dml-charts")]
24259        for item in &self.ser {
24260            #[cfg(feature = "extra-children")]
24261            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24262                extra_iter
24263                    .next()
24264                    .unwrap()
24265                    .node
24266                    .write_to(writer)
24267                    .map_err(SerializeError::from)?;
24268            }
24269            item.write_element("a:ser", writer)?;
24270            #[cfg(feature = "extra-children")]
24271            {
24272                emit_idx += 1;
24273            }
24274        }
24275        #[cfg(feature = "extra-children")]
24276        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24277            extra_iter
24278                .next()
24279                .unwrap()
24280                .node
24281                .write_to(writer)
24282                .map_err(SerializeError::from)?;
24283        }
24284        #[cfg(feature = "dml-charts")]
24285        if let Some(ref val) = self.d_lbls {
24286            val.write_element("a:dLbls", writer)?;
24287        }
24288        #[cfg(feature = "extra-children")]
24289        {
24290            emit_idx += 1;
24291        }
24292        #[cfg(feature = "extra-children")]
24293        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24294            extra_iter
24295                .next()
24296                .unwrap()
24297                .node
24298                .write_to(writer)
24299                .map_err(SerializeError::from)?;
24300        }
24301        #[cfg(feature = "dml-charts")]
24302        if let Some(ref val) = self.gap_width {
24303            val.write_element("a:gapWidth", writer)?;
24304        }
24305        #[cfg(feature = "extra-children")]
24306        {
24307            emit_idx += 1;
24308        }
24309        #[cfg(feature = "extra-children")]
24310        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24311            extra_iter
24312                .next()
24313                .unwrap()
24314                .node
24315                .write_to(writer)
24316                .map_err(SerializeError::from)?;
24317        }
24318        #[cfg(feature = "dml-charts")]
24319        if let Some(ref val) = self.gap_depth {
24320            val.write_element("a:gapDepth", writer)?;
24321        }
24322        #[cfg(feature = "extra-children")]
24323        {
24324            emit_idx += 1;
24325        }
24326        #[cfg(feature = "extra-children")]
24327        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24328            extra_iter
24329                .next()
24330                .unwrap()
24331                .node
24332                .write_to(writer)
24333                .map_err(SerializeError::from)?;
24334        }
24335        #[cfg(feature = "dml-charts")]
24336        if let Some(ref val) = self.shape {
24337            val.write_element("a:shape", writer)?;
24338        }
24339        #[cfg(feature = "extra-children")]
24340        {
24341            emit_idx += 1;
24342        }
24343        #[cfg(feature = "dml-charts")]
24344        for item in &self.ax_id {
24345            #[cfg(feature = "extra-children")]
24346            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24347                extra_iter
24348                    .next()
24349                    .unwrap()
24350                    .node
24351                    .write_to(writer)
24352                    .map_err(SerializeError::from)?;
24353            }
24354            item.write_element("a:axId", writer)?;
24355            #[cfg(feature = "extra-children")]
24356            {
24357                emit_idx += 1;
24358            }
24359        }
24360        #[cfg(feature = "extra-children")]
24361        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24362            extra_iter
24363                .next()
24364                .unwrap()
24365                .node
24366                .write_to(writer)
24367                .map_err(SerializeError::from)?;
24368        }
24369        #[cfg(feature = "dml-charts")]
24370        if let Some(ref val) = self.ext_lst {
24371            val.write_element("a:extLst", writer)?;
24372        }
24373        #[cfg(feature = "extra-children")]
24374        {
24375            emit_idx += 1;
24376        }
24377        #[cfg(feature = "extra-children")]
24378        for extra in extra_iter {
24379            extra.node.write_to(writer).map_err(SerializeError::from)?;
24380        }
24381        Ok(())
24382    }
24383
24384    fn is_empty_element(&self) -> bool {
24385        #[cfg(feature = "dml-charts")]
24386        return false;
24387        #[cfg(feature = "dml-charts")]
24388        if self.grouping.is_some() {
24389            return false;
24390        }
24391        #[cfg(feature = "dml-charts")]
24392        if self.vary_colors.is_some() {
24393            return false;
24394        }
24395        #[cfg(feature = "dml-charts")]
24396        if !self.ser.is_empty() {
24397            return false;
24398        }
24399        #[cfg(feature = "dml-charts")]
24400        if self.d_lbls.is_some() {
24401            return false;
24402        }
24403        #[cfg(feature = "dml-charts")]
24404        if self.gap_width.is_some() {
24405            return false;
24406        }
24407        #[cfg(feature = "dml-charts")]
24408        if self.gap_depth.is_some() {
24409            return false;
24410        }
24411        #[cfg(feature = "dml-charts")]
24412        if self.shape.is_some() {
24413            return false;
24414        }
24415        #[cfg(feature = "dml-charts")]
24416        if !self.ax_id.is_empty() {
24417            return false;
24418        }
24419        #[cfg(feature = "dml-charts")]
24420        if self.ext_lst.is_some() {
24421            return false;
24422        }
24423        #[cfg(feature = "extra-children")]
24424        if !self.extra_children.is_empty() {
24425            return false;
24426        }
24427        true
24428    }
24429}
24430
24431impl ToXml for EGAreaChartShared {
24432    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
24433        #[cfg(feature = "extra-children")]
24434        let mut extra_iter = self.extra_children.iter().peekable();
24435        #[cfg(feature = "extra-children")]
24436        let mut emit_idx: usize = 0;
24437        #[cfg(feature = "extra-children")]
24438        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24439            extra_iter
24440                .next()
24441                .unwrap()
24442                .node
24443                .write_to(writer)
24444                .map_err(SerializeError::from)?;
24445        }
24446        if let Some(ref val) = self.grouping {
24447            val.write_element("a:grouping", writer)?;
24448        }
24449        #[cfg(feature = "extra-children")]
24450        {
24451            emit_idx += 1;
24452        }
24453        #[cfg(feature = "extra-children")]
24454        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24455            extra_iter
24456                .next()
24457                .unwrap()
24458                .node
24459                .write_to(writer)
24460                .map_err(SerializeError::from)?;
24461        }
24462        if let Some(ref val) = self.vary_colors {
24463            val.write_element("a:varyColors", writer)?;
24464        }
24465        #[cfg(feature = "extra-children")]
24466        {
24467            emit_idx += 1;
24468        }
24469        for item in &self.ser {
24470            #[cfg(feature = "extra-children")]
24471            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24472                extra_iter
24473                    .next()
24474                    .unwrap()
24475                    .node
24476                    .write_to(writer)
24477                    .map_err(SerializeError::from)?;
24478            }
24479            item.write_element("a:ser", writer)?;
24480            #[cfg(feature = "extra-children")]
24481            {
24482                emit_idx += 1;
24483            }
24484        }
24485        #[cfg(feature = "extra-children")]
24486        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24487            extra_iter
24488                .next()
24489                .unwrap()
24490                .node
24491                .write_to(writer)
24492                .map_err(SerializeError::from)?;
24493        }
24494        if let Some(ref val) = self.d_lbls {
24495            val.write_element("a:dLbls", writer)?;
24496        }
24497        #[cfg(feature = "extra-children")]
24498        {
24499            emit_idx += 1;
24500        }
24501        #[cfg(feature = "extra-children")]
24502        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24503            extra_iter
24504                .next()
24505                .unwrap()
24506                .node
24507                .write_to(writer)
24508                .map_err(SerializeError::from)?;
24509        }
24510        if let Some(ref val) = self.drop_lines {
24511            val.write_element("a:dropLines", writer)?;
24512        }
24513        #[cfg(feature = "extra-children")]
24514        {
24515            emit_idx += 1;
24516        }
24517        #[cfg(feature = "extra-children")]
24518        for extra in extra_iter {
24519            extra.node.write_to(writer).map_err(SerializeError::from)?;
24520        }
24521        Ok(())
24522    }
24523
24524    fn is_empty_element(&self) -> bool {
24525        if self.grouping.is_some() {
24526            return false;
24527        }
24528        if self.vary_colors.is_some() {
24529            return false;
24530        }
24531        if !self.ser.is_empty() {
24532            return false;
24533        }
24534        if self.d_lbls.is_some() {
24535            return false;
24536        }
24537        if self.drop_lines.is_some() {
24538            return false;
24539        }
24540        #[cfg(feature = "extra-children")]
24541        if !self.extra_children.is_empty() {
24542            return false;
24543        }
24544        true
24545    }
24546}
24547
24548impl ToXml for AreaChart {
24549    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
24550        #[cfg(feature = "extra-children")]
24551        let mut extra_iter = self.extra_children.iter().peekable();
24552        #[cfg(feature = "extra-children")]
24553        let mut emit_idx: usize = 0;
24554        #[cfg(feature = "extra-children")]
24555        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24556            extra_iter
24557                .next()
24558                .unwrap()
24559                .node
24560                .write_to(writer)
24561                .map_err(SerializeError::from)?;
24562        }
24563        #[cfg(feature = "dml-charts")]
24564        if let Some(ref val) = self.grouping {
24565            val.write_element("a:grouping", writer)?;
24566        }
24567        #[cfg(feature = "extra-children")]
24568        {
24569            emit_idx += 1;
24570        }
24571        #[cfg(feature = "extra-children")]
24572        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24573            extra_iter
24574                .next()
24575                .unwrap()
24576                .node
24577                .write_to(writer)
24578                .map_err(SerializeError::from)?;
24579        }
24580        #[cfg(feature = "dml-charts")]
24581        if let Some(ref val) = self.vary_colors {
24582            val.write_element("a:varyColors", writer)?;
24583        }
24584        #[cfg(feature = "extra-children")]
24585        {
24586            emit_idx += 1;
24587        }
24588        #[cfg(feature = "dml-charts")]
24589        for item in &self.ser {
24590            #[cfg(feature = "extra-children")]
24591            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24592                extra_iter
24593                    .next()
24594                    .unwrap()
24595                    .node
24596                    .write_to(writer)
24597                    .map_err(SerializeError::from)?;
24598            }
24599            item.write_element("a:ser", writer)?;
24600            #[cfg(feature = "extra-children")]
24601            {
24602                emit_idx += 1;
24603            }
24604        }
24605        #[cfg(feature = "extra-children")]
24606        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24607            extra_iter
24608                .next()
24609                .unwrap()
24610                .node
24611                .write_to(writer)
24612                .map_err(SerializeError::from)?;
24613        }
24614        #[cfg(feature = "dml-charts")]
24615        if let Some(ref val) = self.d_lbls {
24616            val.write_element("a:dLbls", writer)?;
24617        }
24618        #[cfg(feature = "extra-children")]
24619        {
24620            emit_idx += 1;
24621        }
24622        #[cfg(feature = "extra-children")]
24623        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24624            extra_iter
24625                .next()
24626                .unwrap()
24627                .node
24628                .write_to(writer)
24629                .map_err(SerializeError::from)?;
24630        }
24631        #[cfg(feature = "dml-charts")]
24632        if let Some(ref val) = self.drop_lines {
24633            val.write_element("a:dropLines", writer)?;
24634        }
24635        #[cfg(feature = "extra-children")]
24636        {
24637            emit_idx += 1;
24638        }
24639        #[cfg(feature = "dml-charts")]
24640        for item in &self.ax_id {
24641            #[cfg(feature = "extra-children")]
24642            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24643                extra_iter
24644                    .next()
24645                    .unwrap()
24646                    .node
24647                    .write_to(writer)
24648                    .map_err(SerializeError::from)?;
24649            }
24650            item.write_element("a:axId", writer)?;
24651            #[cfg(feature = "extra-children")]
24652            {
24653                emit_idx += 1;
24654            }
24655        }
24656        #[cfg(feature = "extra-children")]
24657        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24658            extra_iter
24659                .next()
24660                .unwrap()
24661                .node
24662                .write_to(writer)
24663                .map_err(SerializeError::from)?;
24664        }
24665        #[cfg(feature = "dml-charts")]
24666        if let Some(ref val) = self.ext_lst {
24667            val.write_element("a:extLst", writer)?;
24668        }
24669        #[cfg(feature = "extra-children")]
24670        {
24671            emit_idx += 1;
24672        }
24673        #[cfg(feature = "extra-children")]
24674        for extra in extra_iter {
24675            extra.node.write_to(writer).map_err(SerializeError::from)?;
24676        }
24677        Ok(())
24678    }
24679
24680    fn is_empty_element(&self) -> bool {
24681        #[cfg(feature = "dml-charts")]
24682        if self.grouping.is_some() {
24683            return false;
24684        }
24685        #[cfg(feature = "dml-charts")]
24686        if self.vary_colors.is_some() {
24687            return false;
24688        }
24689        #[cfg(feature = "dml-charts")]
24690        if !self.ser.is_empty() {
24691            return false;
24692        }
24693        #[cfg(feature = "dml-charts")]
24694        if self.d_lbls.is_some() {
24695            return false;
24696        }
24697        #[cfg(feature = "dml-charts")]
24698        if self.drop_lines.is_some() {
24699            return false;
24700        }
24701        #[cfg(feature = "dml-charts")]
24702        if !self.ax_id.is_empty() {
24703            return false;
24704        }
24705        #[cfg(feature = "dml-charts")]
24706        if self.ext_lst.is_some() {
24707            return false;
24708        }
24709        #[cfg(feature = "extra-children")]
24710        if !self.extra_children.is_empty() {
24711            return false;
24712        }
24713        true
24714    }
24715}
24716
24717impl ToXml for Area3DChart {
24718    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
24719        #[cfg(feature = "extra-children")]
24720        let mut extra_iter = self.extra_children.iter().peekable();
24721        #[cfg(feature = "extra-children")]
24722        let mut emit_idx: usize = 0;
24723        #[cfg(feature = "extra-children")]
24724        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24725            extra_iter
24726                .next()
24727                .unwrap()
24728                .node
24729                .write_to(writer)
24730                .map_err(SerializeError::from)?;
24731        }
24732        #[cfg(feature = "dml-charts")]
24733        if let Some(ref val) = self.grouping {
24734            val.write_element("a:grouping", writer)?;
24735        }
24736        #[cfg(feature = "extra-children")]
24737        {
24738            emit_idx += 1;
24739        }
24740        #[cfg(feature = "extra-children")]
24741        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24742            extra_iter
24743                .next()
24744                .unwrap()
24745                .node
24746                .write_to(writer)
24747                .map_err(SerializeError::from)?;
24748        }
24749        #[cfg(feature = "dml-charts")]
24750        if let Some(ref val) = self.vary_colors {
24751            val.write_element("a:varyColors", writer)?;
24752        }
24753        #[cfg(feature = "extra-children")]
24754        {
24755            emit_idx += 1;
24756        }
24757        #[cfg(feature = "dml-charts")]
24758        for item in &self.ser {
24759            #[cfg(feature = "extra-children")]
24760            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24761                extra_iter
24762                    .next()
24763                    .unwrap()
24764                    .node
24765                    .write_to(writer)
24766                    .map_err(SerializeError::from)?;
24767            }
24768            item.write_element("a:ser", writer)?;
24769            #[cfg(feature = "extra-children")]
24770            {
24771                emit_idx += 1;
24772            }
24773        }
24774        #[cfg(feature = "extra-children")]
24775        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24776            extra_iter
24777                .next()
24778                .unwrap()
24779                .node
24780                .write_to(writer)
24781                .map_err(SerializeError::from)?;
24782        }
24783        #[cfg(feature = "dml-charts")]
24784        if let Some(ref val) = self.d_lbls {
24785            val.write_element("a:dLbls", writer)?;
24786        }
24787        #[cfg(feature = "extra-children")]
24788        {
24789            emit_idx += 1;
24790        }
24791        #[cfg(feature = "extra-children")]
24792        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24793            extra_iter
24794                .next()
24795                .unwrap()
24796                .node
24797                .write_to(writer)
24798                .map_err(SerializeError::from)?;
24799        }
24800        #[cfg(feature = "dml-charts")]
24801        if let Some(ref val) = self.drop_lines {
24802            val.write_element("a:dropLines", writer)?;
24803        }
24804        #[cfg(feature = "extra-children")]
24805        {
24806            emit_idx += 1;
24807        }
24808        #[cfg(feature = "extra-children")]
24809        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24810            extra_iter
24811                .next()
24812                .unwrap()
24813                .node
24814                .write_to(writer)
24815                .map_err(SerializeError::from)?;
24816        }
24817        #[cfg(feature = "dml-charts")]
24818        if let Some(ref val) = self.gap_depth {
24819            val.write_element("a:gapDepth", writer)?;
24820        }
24821        #[cfg(feature = "extra-children")]
24822        {
24823            emit_idx += 1;
24824        }
24825        #[cfg(feature = "dml-charts")]
24826        for item in &self.ax_id {
24827            #[cfg(feature = "extra-children")]
24828            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24829                extra_iter
24830                    .next()
24831                    .unwrap()
24832                    .node
24833                    .write_to(writer)
24834                    .map_err(SerializeError::from)?;
24835            }
24836            item.write_element("a:axId", writer)?;
24837            #[cfg(feature = "extra-children")]
24838            {
24839                emit_idx += 1;
24840            }
24841        }
24842        #[cfg(feature = "extra-children")]
24843        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24844            extra_iter
24845                .next()
24846                .unwrap()
24847                .node
24848                .write_to(writer)
24849                .map_err(SerializeError::from)?;
24850        }
24851        #[cfg(feature = "dml-charts")]
24852        if let Some(ref val) = self.ext_lst {
24853            val.write_element("a:extLst", writer)?;
24854        }
24855        #[cfg(feature = "extra-children")]
24856        {
24857            emit_idx += 1;
24858        }
24859        #[cfg(feature = "extra-children")]
24860        for extra in extra_iter {
24861            extra.node.write_to(writer).map_err(SerializeError::from)?;
24862        }
24863        Ok(())
24864    }
24865
24866    fn is_empty_element(&self) -> bool {
24867        #[cfg(feature = "dml-charts")]
24868        if self.grouping.is_some() {
24869            return false;
24870        }
24871        #[cfg(feature = "dml-charts")]
24872        if self.vary_colors.is_some() {
24873            return false;
24874        }
24875        #[cfg(feature = "dml-charts")]
24876        if !self.ser.is_empty() {
24877            return false;
24878        }
24879        #[cfg(feature = "dml-charts")]
24880        if self.d_lbls.is_some() {
24881            return false;
24882        }
24883        #[cfg(feature = "dml-charts")]
24884        if self.drop_lines.is_some() {
24885            return false;
24886        }
24887        #[cfg(feature = "dml-charts")]
24888        if self.gap_depth.is_some() {
24889            return false;
24890        }
24891        #[cfg(feature = "dml-charts")]
24892        if !self.ax_id.is_empty() {
24893            return false;
24894        }
24895        #[cfg(feature = "dml-charts")]
24896        if self.ext_lst.is_some() {
24897            return false;
24898        }
24899        #[cfg(feature = "extra-children")]
24900        if !self.extra_children.is_empty() {
24901            return false;
24902        }
24903        true
24904    }
24905}
24906
24907impl ToXml for EGPieChartShared {
24908    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
24909        #[cfg(feature = "extra-children")]
24910        let mut extra_iter = self.extra_children.iter().peekable();
24911        #[cfg(feature = "extra-children")]
24912        let mut emit_idx: usize = 0;
24913        #[cfg(feature = "extra-children")]
24914        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24915            extra_iter
24916                .next()
24917                .unwrap()
24918                .node
24919                .write_to(writer)
24920                .map_err(SerializeError::from)?;
24921        }
24922        if let Some(ref val) = self.vary_colors {
24923            val.write_element("a:varyColors", writer)?;
24924        }
24925        #[cfg(feature = "extra-children")]
24926        {
24927            emit_idx += 1;
24928        }
24929        for item in &self.ser {
24930            #[cfg(feature = "extra-children")]
24931            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24932                extra_iter
24933                    .next()
24934                    .unwrap()
24935                    .node
24936                    .write_to(writer)
24937                    .map_err(SerializeError::from)?;
24938            }
24939            item.write_element("a:ser", writer)?;
24940            #[cfg(feature = "extra-children")]
24941            {
24942                emit_idx += 1;
24943            }
24944        }
24945        #[cfg(feature = "extra-children")]
24946        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24947            extra_iter
24948                .next()
24949                .unwrap()
24950                .node
24951                .write_to(writer)
24952                .map_err(SerializeError::from)?;
24953        }
24954        if let Some(ref val) = self.d_lbls {
24955            val.write_element("a:dLbls", writer)?;
24956        }
24957        #[cfg(feature = "extra-children")]
24958        {
24959            emit_idx += 1;
24960        }
24961        #[cfg(feature = "extra-children")]
24962        for extra in extra_iter {
24963            extra.node.write_to(writer).map_err(SerializeError::from)?;
24964        }
24965        Ok(())
24966    }
24967
24968    fn is_empty_element(&self) -> bool {
24969        if self.vary_colors.is_some() {
24970            return false;
24971        }
24972        if !self.ser.is_empty() {
24973            return false;
24974        }
24975        if self.d_lbls.is_some() {
24976            return false;
24977        }
24978        #[cfg(feature = "extra-children")]
24979        if !self.extra_children.is_empty() {
24980            return false;
24981        }
24982        true
24983    }
24984}
24985
24986impl ToXml for PieChart {
24987    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
24988        #[cfg(feature = "extra-children")]
24989        let mut extra_iter = self.extra_children.iter().peekable();
24990        #[cfg(feature = "extra-children")]
24991        let mut emit_idx: usize = 0;
24992        #[cfg(feature = "extra-children")]
24993        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
24994            extra_iter
24995                .next()
24996                .unwrap()
24997                .node
24998                .write_to(writer)
24999                .map_err(SerializeError::from)?;
25000        }
25001        #[cfg(feature = "dml-charts")]
25002        if let Some(ref val) = self.vary_colors {
25003            val.write_element("a:varyColors", writer)?;
25004        }
25005        #[cfg(feature = "extra-children")]
25006        {
25007            emit_idx += 1;
25008        }
25009        #[cfg(feature = "dml-charts")]
25010        for item in &self.ser {
25011            #[cfg(feature = "extra-children")]
25012            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25013                extra_iter
25014                    .next()
25015                    .unwrap()
25016                    .node
25017                    .write_to(writer)
25018                    .map_err(SerializeError::from)?;
25019            }
25020            item.write_element("a:ser", writer)?;
25021            #[cfg(feature = "extra-children")]
25022            {
25023                emit_idx += 1;
25024            }
25025        }
25026        #[cfg(feature = "extra-children")]
25027        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25028            extra_iter
25029                .next()
25030                .unwrap()
25031                .node
25032                .write_to(writer)
25033                .map_err(SerializeError::from)?;
25034        }
25035        #[cfg(feature = "dml-charts")]
25036        if let Some(ref val) = self.d_lbls {
25037            val.write_element("a:dLbls", writer)?;
25038        }
25039        #[cfg(feature = "extra-children")]
25040        {
25041            emit_idx += 1;
25042        }
25043        #[cfg(feature = "extra-children")]
25044        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25045            extra_iter
25046                .next()
25047                .unwrap()
25048                .node
25049                .write_to(writer)
25050                .map_err(SerializeError::from)?;
25051        }
25052        #[cfg(feature = "dml-charts")]
25053        if let Some(ref val) = self.first_slice_ang {
25054            val.write_element("a:firstSliceAng", writer)?;
25055        }
25056        #[cfg(feature = "extra-children")]
25057        {
25058            emit_idx += 1;
25059        }
25060        #[cfg(feature = "extra-children")]
25061        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25062            extra_iter
25063                .next()
25064                .unwrap()
25065                .node
25066                .write_to(writer)
25067                .map_err(SerializeError::from)?;
25068        }
25069        #[cfg(feature = "dml-charts")]
25070        if let Some(ref val) = self.ext_lst {
25071            val.write_element("a:extLst", writer)?;
25072        }
25073        #[cfg(feature = "extra-children")]
25074        {
25075            emit_idx += 1;
25076        }
25077        #[cfg(feature = "extra-children")]
25078        for extra in extra_iter {
25079            extra.node.write_to(writer).map_err(SerializeError::from)?;
25080        }
25081        Ok(())
25082    }
25083
25084    fn is_empty_element(&self) -> bool {
25085        #[cfg(feature = "dml-charts")]
25086        if self.vary_colors.is_some() {
25087            return false;
25088        }
25089        #[cfg(feature = "dml-charts")]
25090        if !self.ser.is_empty() {
25091            return false;
25092        }
25093        #[cfg(feature = "dml-charts")]
25094        if self.d_lbls.is_some() {
25095            return false;
25096        }
25097        #[cfg(feature = "dml-charts")]
25098        if self.first_slice_ang.is_some() {
25099            return false;
25100        }
25101        #[cfg(feature = "dml-charts")]
25102        if self.ext_lst.is_some() {
25103            return false;
25104        }
25105        #[cfg(feature = "extra-children")]
25106        if !self.extra_children.is_empty() {
25107            return false;
25108        }
25109        true
25110    }
25111}
25112
25113impl ToXml for Pie3DChart {
25114    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
25115        #[cfg(feature = "extra-children")]
25116        let mut extra_iter = self.extra_children.iter().peekable();
25117        #[cfg(feature = "extra-children")]
25118        let mut emit_idx: usize = 0;
25119        #[cfg(feature = "extra-children")]
25120        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25121            extra_iter
25122                .next()
25123                .unwrap()
25124                .node
25125                .write_to(writer)
25126                .map_err(SerializeError::from)?;
25127        }
25128        #[cfg(feature = "dml-charts")]
25129        if let Some(ref val) = self.vary_colors {
25130            val.write_element("a:varyColors", writer)?;
25131        }
25132        #[cfg(feature = "extra-children")]
25133        {
25134            emit_idx += 1;
25135        }
25136        #[cfg(feature = "dml-charts")]
25137        for item in &self.ser {
25138            #[cfg(feature = "extra-children")]
25139            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25140                extra_iter
25141                    .next()
25142                    .unwrap()
25143                    .node
25144                    .write_to(writer)
25145                    .map_err(SerializeError::from)?;
25146            }
25147            item.write_element("a:ser", writer)?;
25148            #[cfg(feature = "extra-children")]
25149            {
25150                emit_idx += 1;
25151            }
25152        }
25153        #[cfg(feature = "extra-children")]
25154        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25155            extra_iter
25156                .next()
25157                .unwrap()
25158                .node
25159                .write_to(writer)
25160                .map_err(SerializeError::from)?;
25161        }
25162        #[cfg(feature = "dml-charts")]
25163        if let Some(ref val) = self.d_lbls {
25164            val.write_element("a:dLbls", writer)?;
25165        }
25166        #[cfg(feature = "extra-children")]
25167        {
25168            emit_idx += 1;
25169        }
25170        #[cfg(feature = "extra-children")]
25171        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25172            extra_iter
25173                .next()
25174                .unwrap()
25175                .node
25176                .write_to(writer)
25177                .map_err(SerializeError::from)?;
25178        }
25179        #[cfg(feature = "dml-charts")]
25180        if let Some(ref val) = self.ext_lst {
25181            val.write_element("a:extLst", writer)?;
25182        }
25183        #[cfg(feature = "extra-children")]
25184        {
25185            emit_idx += 1;
25186        }
25187        #[cfg(feature = "extra-children")]
25188        for extra in extra_iter {
25189            extra.node.write_to(writer).map_err(SerializeError::from)?;
25190        }
25191        Ok(())
25192    }
25193
25194    fn is_empty_element(&self) -> bool {
25195        #[cfg(feature = "dml-charts")]
25196        if self.vary_colors.is_some() {
25197            return false;
25198        }
25199        #[cfg(feature = "dml-charts")]
25200        if !self.ser.is_empty() {
25201            return false;
25202        }
25203        #[cfg(feature = "dml-charts")]
25204        if self.d_lbls.is_some() {
25205            return false;
25206        }
25207        #[cfg(feature = "dml-charts")]
25208        if self.ext_lst.is_some() {
25209            return false;
25210        }
25211        #[cfg(feature = "extra-children")]
25212        if !self.extra_children.is_empty() {
25213            return false;
25214        }
25215        true
25216    }
25217}
25218
25219impl ToXml for DoughnutChart {
25220    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
25221        #[cfg(feature = "extra-children")]
25222        let mut extra_iter = self.extra_children.iter().peekable();
25223        #[cfg(feature = "extra-children")]
25224        let mut emit_idx: usize = 0;
25225        #[cfg(feature = "extra-children")]
25226        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25227            extra_iter
25228                .next()
25229                .unwrap()
25230                .node
25231                .write_to(writer)
25232                .map_err(SerializeError::from)?;
25233        }
25234        #[cfg(feature = "dml-charts")]
25235        if let Some(ref val) = self.vary_colors {
25236            val.write_element("a:varyColors", writer)?;
25237        }
25238        #[cfg(feature = "extra-children")]
25239        {
25240            emit_idx += 1;
25241        }
25242        #[cfg(feature = "dml-charts")]
25243        for item in &self.ser {
25244            #[cfg(feature = "extra-children")]
25245            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25246                extra_iter
25247                    .next()
25248                    .unwrap()
25249                    .node
25250                    .write_to(writer)
25251                    .map_err(SerializeError::from)?;
25252            }
25253            item.write_element("a:ser", writer)?;
25254            #[cfg(feature = "extra-children")]
25255            {
25256                emit_idx += 1;
25257            }
25258        }
25259        #[cfg(feature = "extra-children")]
25260        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25261            extra_iter
25262                .next()
25263                .unwrap()
25264                .node
25265                .write_to(writer)
25266                .map_err(SerializeError::from)?;
25267        }
25268        #[cfg(feature = "dml-charts")]
25269        if let Some(ref val) = self.d_lbls {
25270            val.write_element("a:dLbls", writer)?;
25271        }
25272        #[cfg(feature = "extra-children")]
25273        {
25274            emit_idx += 1;
25275        }
25276        #[cfg(feature = "extra-children")]
25277        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25278            extra_iter
25279                .next()
25280                .unwrap()
25281                .node
25282                .write_to(writer)
25283                .map_err(SerializeError::from)?;
25284        }
25285        #[cfg(feature = "dml-charts")]
25286        if let Some(ref val) = self.first_slice_ang {
25287            val.write_element("a:firstSliceAng", writer)?;
25288        }
25289        #[cfg(feature = "extra-children")]
25290        {
25291            emit_idx += 1;
25292        }
25293        #[cfg(feature = "extra-children")]
25294        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25295            extra_iter
25296                .next()
25297                .unwrap()
25298                .node
25299                .write_to(writer)
25300                .map_err(SerializeError::from)?;
25301        }
25302        #[cfg(feature = "dml-charts")]
25303        if let Some(ref val) = self.hole_size {
25304            val.write_element("a:holeSize", writer)?;
25305        }
25306        #[cfg(feature = "extra-children")]
25307        {
25308            emit_idx += 1;
25309        }
25310        #[cfg(feature = "extra-children")]
25311        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25312            extra_iter
25313                .next()
25314                .unwrap()
25315                .node
25316                .write_to(writer)
25317                .map_err(SerializeError::from)?;
25318        }
25319        #[cfg(feature = "dml-charts")]
25320        if let Some(ref val) = self.ext_lst {
25321            val.write_element("a:extLst", writer)?;
25322        }
25323        #[cfg(feature = "extra-children")]
25324        {
25325            emit_idx += 1;
25326        }
25327        #[cfg(feature = "extra-children")]
25328        for extra in extra_iter {
25329            extra.node.write_to(writer).map_err(SerializeError::from)?;
25330        }
25331        Ok(())
25332    }
25333
25334    fn is_empty_element(&self) -> bool {
25335        #[cfg(feature = "dml-charts")]
25336        if self.vary_colors.is_some() {
25337            return false;
25338        }
25339        #[cfg(feature = "dml-charts")]
25340        if !self.ser.is_empty() {
25341            return false;
25342        }
25343        #[cfg(feature = "dml-charts")]
25344        if self.d_lbls.is_some() {
25345            return false;
25346        }
25347        #[cfg(feature = "dml-charts")]
25348        if self.first_slice_ang.is_some() {
25349            return false;
25350        }
25351        #[cfg(feature = "dml-charts")]
25352        if self.hole_size.is_some() {
25353            return false;
25354        }
25355        #[cfg(feature = "dml-charts")]
25356        if self.ext_lst.is_some() {
25357            return false;
25358        }
25359        #[cfg(feature = "extra-children")]
25360        if !self.extra_children.is_empty() {
25361            return false;
25362        }
25363        true
25364    }
25365}
25366
25367impl ToXml for OfPieType {
25368    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
25369        #[allow(unused_mut)]
25370        let mut start = start;
25371        #[cfg(feature = "dml-charts")]
25372        if let Some(ref val) = self.value {
25373            {
25374                let s = val.to_string();
25375                start.push_attribute(("val", s.as_str()));
25376            }
25377        }
25378        #[cfg(feature = "extra-attrs")]
25379        for (key, value) in &self.extra_attrs {
25380            start.push_attribute((key.as_str(), value.as_str()));
25381        }
25382        start
25383    }
25384
25385    fn is_empty_element(&self) -> bool {
25386        true
25387    }
25388}
25389
25390impl ToXml for OfPieChart {
25391    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
25392        #[cfg(feature = "extra-children")]
25393        let mut extra_iter = self.extra_children.iter().peekable();
25394        #[cfg(feature = "extra-children")]
25395        let mut emit_idx: usize = 0;
25396        #[cfg(feature = "extra-children")]
25397        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25398            extra_iter
25399                .next()
25400                .unwrap()
25401                .node
25402                .write_to(writer)
25403                .map_err(SerializeError::from)?;
25404        }
25405        #[cfg(feature = "dml-charts")]
25406        {
25407            let val = &self.of_pie_type;
25408            val.write_element("a:ofPieType", writer)?;
25409        }
25410        #[cfg(feature = "extra-children")]
25411        {
25412            emit_idx += 1;
25413        }
25414        #[cfg(feature = "extra-children")]
25415        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25416            extra_iter
25417                .next()
25418                .unwrap()
25419                .node
25420                .write_to(writer)
25421                .map_err(SerializeError::from)?;
25422        }
25423        #[cfg(feature = "dml-charts")]
25424        if let Some(ref val) = self.vary_colors {
25425            val.write_element("a:varyColors", writer)?;
25426        }
25427        #[cfg(feature = "extra-children")]
25428        {
25429            emit_idx += 1;
25430        }
25431        #[cfg(feature = "dml-charts")]
25432        for item in &self.ser {
25433            #[cfg(feature = "extra-children")]
25434            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25435                extra_iter
25436                    .next()
25437                    .unwrap()
25438                    .node
25439                    .write_to(writer)
25440                    .map_err(SerializeError::from)?;
25441            }
25442            item.write_element("a:ser", writer)?;
25443            #[cfg(feature = "extra-children")]
25444            {
25445                emit_idx += 1;
25446            }
25447        }
25448        #[cfg(feature = "extra-children")]
25449        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25450            extra_iter
25451                .next()
25452                .unwrap()
25453                .node
25454                .write_to(writer)
25455                .map_err(SerializeError::from)?;
25456        }
25457        #[cfg(feature = "dml-charts")]
25458        if let Some(ref val) = self.d_lbls {
25459            val.write_element("a:dLbls", writer)?;
25460        }
25461        #[cfg(feature = "extra-children")]
25462        {
25463            emit_idx += 1;
25464        }
25465        #[cfg(feature = "extra-children")]
25466        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25467            extra_iter
25468                .next()
25469                .unwrap()
25470                .node
25471                .write_to(writer)
25472                .map_err(SerializeError::from)?;
25473        }
25474        #[cfg(feature = "dml-charts")]
25475        if let Some(ref val) = self.gap_width {
25476            val.write_element("a:gapWidth", writer)?;
25477        }
25478        #[cfg(feature = "extra-children")]
25479        {
25480            emit_idx += 1;
25481        }
25482        #[cfg(feature = "extra-children")]
25483        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25484            extra_iter
25485                .next()
25486                .unwrap()
25487                .node
25488                .write_to(writer)
25489                .map_err(SerializeError::from)?;
25490        }
25491        #[cfg(feature = "dml-charts")]
25492        if let Some(ref val) = self.split_type {
25493            val.write_element("a:splitType", writer)?;
25494        }
25495        #[cfg(feature = "extra-children")]
25496        {
25497            emit_idx += 1;
25498        }
25499        #[cfg(feature = "extra-children")]
25500        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25501            extra_iter
25502                .next()
25503                .unwrap()
25504                .node
25505                .write_to(writer)
25506                .map_err(SerializeError::from)?;
25507        }
25508        #[cfg(feature = "dml-charts")]
25509        if let Some(ref val) = self.split_pos {
25510            val.write_element("a:splitPos", writer)?;
25511        }
25512        #[cfg(feature = "extra-children")]
25513        {
25514            emit_idx += 1;
25515        }
25516        #[cfg(feature = "extra-children")]
25517        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25518            extra_iter
25519                .next()
25520                .unwrap()
25521                .node
25522                .write_to(writer)
25523                .map_err(SerializeError::from)?;
25524        }
25525        #[cfg(feature = "dml-charts")]
25526        if let Some(ref val) = self.cust_split {
25527            val.write_element("a:custSplit", writer)?;
25528        }
25529        #[cfg(feature = "extra-children")]
25530        {
25531            emit_idx += 1;
25532        }
25533        #[cfg(feature = "extra-children")]
25534        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25535            extra_iter
25536                .next()
25537                .unwrap()
25538                .node
25539                .write_to(writer)
25540                .map_err(SerializeError::from)?;
25541        }
25542        #[cfg(feature = "dml-charts")]
25543        if let Some(ref val) = self.second_pie_size {
25544            val.write_element("a:secondPieSize", writer)?;
25545        }
25546        #[cfg(feature = "extra-children")]
25547        {
25548            emit_idx += 1;
25549        }
25550        #[cfg(feature = "dml-charts")]
25551        for item in &self.ser_lines {
25552            #[cfg(feature = "extra-children")]
25553            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25554                extra_iter
25555                    .next()
25556                    .unwrap()
25557                    .node
25558                    .write_to(writer)
25559                    .map_err(SerializeError::from)?;
25560            }
25561            item.write_element("a:serLines", writer)?;
25562            #[cfg(feature = "extra-children")]
25563            {
25564                emit_idx += 1;
25565            }
25566        }
25567        #[cfg(feature = "extra-children")]
25568        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25569            extra_iter
25570                .next()
25571                .unwrap()
25572                .node
25573                .write_to(writer)
25574                .map_err(SerializeError::from)?;
25575        }
25576        #[cfg(feature = "dml-charts")]
25577        if let Some(ref val) = self.ext_lst {
25578            val.write_element("a:extLst", writer)?;
25579        }
25580        #[cfg(feature = "extra-children")]
25581        {
25582            emit_idx += 1;
25583        }
25584        #[cfg(feature = "extra-children")]
25585        for extra in extra_iter {
25586            extra.node.write_to(writer).map_err(SerializeError::from)?;
25587        }
25588        Ok(())
25589    }
25590
25591    fn is_empty_element(&self) -> bool {
25592        #[cfg(feature = "dml-charts")]
25593        return false;
25594        #[cfg(feature = "dml-charts")]
25595        if self.vary_colors.is_some() {
25596            return false;
25597        }
25598        #[cfg(feature = "dml-charts")]
25599        if !self.ser.is_empty() {
25600            return false;
25601        }
25602        #[cfg(feature = "dml-charts")]
25603        if self.d_lbls.is_some() {
25604            return false;
25605        }
25606        #[cfg(feature = "dml-charts")]
25607        if self.gap_width.is_some() {
25608            return false;
25609        }
25610        #[cfg(feature = "dml-charts")]
25611        if self.split_type.is_some() {
25612            return false;
25613        }
25614        #[cfg(feature = "dml-charts")]
25615        if self.split_pos.is_some() {
25616            return false;
25617        }
25618        #[cfg(feature = "dml-charts")]
25619        if self.cust_split.is_some() {
25620            return false;
25621        }
25622        #[cfg(feature = "dml-charts")]
25623        if self.second_pie_size.is_some() {
25624            return false;
25625        }
25626        #[cfg(feature = "dml-charts")]
25627        if !self.ser_lines.is_empty() {
25628            return false;
25629        }
25630        #[cfg(feature = "dml-charts")]
25631        if self.ext_lst.is_some() {
25632            return false;
25633        }
25634        #[cfg(feature = "extra-children")]
25635        if !self.extra_children.is_empty() {
25636            return false;
25637        }
25638        true
25639    }
25640}
25641
25642impl ToXml for BubbleChart {
25643    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
25644        #[cfg(feature = "extra-children")]
25645        let mut extra_iter = self.extra_children.iter().peekable();
25646        #[cfg(feature = "extra-children")]
25647        let mut emit_idx: usize = 0;
25648        #[cfg(feature = "extra-children")]
25649        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25650            extra_iter
25651                .next()
25652                .unwrap()
25653                .node
25654                .write_to(writer)
25655                .map_err(SerializeError::from)?;
25656        }
25657        #[cfg(feature = "dml-charts")]
25658        if let Some(ref val) = self.vary_colors {
25659            val.write_element("a:varyColors", writer)?;
25660        }
25661        #[cfg(feature = "extra-children")]
25662        {
25663            emit_idx += 1;
25664        }
25665        #[cfg(feature = "dml-charts")]
25666        for item in &self.ser {
25667            #[cfg(feature = "extra-children")]
25668            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25669                extra_iter
25670                    .next()
25671                    .unwrap()
25672                    .node
25673                    .write_to(writer)
25674                    .map_err(SerializeError::from)?;
25675            }
25676            item.write_element("a:ser", writer)?;
25677            #[cfg(feature = "extra-children")]
25678            {
25679                emit_idx += 1;
25680            }
25681        }
25682        #[cfg(feature = "extra-children")]
25683        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25684            extra_iter
25685                .next()
25686                .unwrap()
25687                .node
25688                .write_to(writer)
25689                .map_err(SerializeError::from)?;
25690        }
25691        #[cfg(feature = "dml-charts")]
25692        if let Some(ref val) = self.d_lbls {
25693            val.write_element("a:dLbls", writer)?;
25694        }
25695        #[cfg(feature = "extra-children")]
25696        {
25697            emit_idx += 1;
25698        }
25699        #[cfg(feature = "extra-children")]
25700        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25701            extra_iter
25702                .next()
25703                .unwrap()
25704                .node
25705                .write_to(writer)
25706                .map_err(SerializeError::from)?;
25707        }
25708        #[cfg(feature = "dml-charts")]
25709        if let Some(ref val) = self.bubble3_d {
25710            val.write_element("a:bubble3D", writer)?;
25711        }
25712        #[cfg(feature = "extra-children")]
25713        {
25714            emit_idx += 1;
25715        }
25716        #[cfg(feature = "extra-children")]
25717        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25718            extra_iter
25719                .next()
25720                .unwrap()
25721                .node
25722                .write_to(writer)
25723                .map_err(SerializeError::from)?;
25724        }
25725        #[cfg(feature = "dml-charts")]
25726        if let Some(ref val) = self.bubble_scale {
25727            val.write_element("a:bubbleScale", writer)?;
25728        }
25729        #[cfg(feature = "extra-children")]
25730        {
25731            emit_idx += 1;
25732        }
25733        #[cfg(feature = "extra-children")]
25734        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25735            extra_iter
25736                .next()
25737                .unwrap()
25738                .node
25739                .write_to(writer)
25740                .map_err(SerializeError::from)?;
25741        }
25742        #[cfg(feature = "dml-charts")]
25743        if let Some(ref val) = self.show_neg_bubbles {
25744            val.write_element("a:showNegBubbles", writer)?;
25745        }
25746        #[cfg(feature = "extra-children")]
25747        {
25748            emit_idx += 1;
25749        }
25750        #[cfg(feature = "extra-children")]
25751        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25752            extra_iter
25753                .next()
25754                .unwrap()
25755                .node
25756                .write_to(writer)
25757                .map_err(SerializeError::from)?;
25758        }
25759        #[cfg(feature = "dml-charts")]
25760        if let Some(ref val) = self.size_represents {
25761            val.write_element("a:sizeRepresents", writer)?;
25762        }
25763        #[cfg(feature = "extra-children")]
25764        {
25765            emit_idx += 1;
25766        }
25767        #[cfg(feature = "dml-charts")]
25768        for item in &self.ax_id {
25769            #[cfg(feature = "extra-children")]
25770            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25771                extra_iter
25772                    .next()
25773                    .unwrap()
25774                    .node
25775                    .write_to(writer)
25776                    .map_err(SerializeError::from)?;
25777            }
25778            item.write_element("a:axId", writer)?;
25779            #[cfg(feature = "extra-children")]
25780            {
25781                emit_idx += 1;
25782            }
25783        }
25784        #[cfg(feature = "extra-children")]
25785        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25786            extra_iter
25787                .next()
25788                .unwrap()
25789                .node
25790                .write_to(writer)
25791                .map_err(SerializeError::from)?;
25792        }
25793        #[cfg(feature = "dml-charts")]
25794        if let Some(ref val) = self.ext_lst {
25795            val.write_element("a:extLst", writer)?;
25796        }
25797        #[cfg(feature = "extra-children")]
25798        {
25799            emit_idx += 1;
25800        }
25801        #[cfg(feature = "extra-children")]
25802        for extra in extra_iter {
25803            extra.node.write_to(writer).map_err(SerializeError::from)?;
25804        }
25805        Ok(())
25806    }
25807
25808    fn is_empty_element(&self) -> bool {
25809        #[cfg(feature = "dml-charts")]
25810        if self.vary_colors.is_some() {
25811            return false;
25812        }
25813        #[cfg(feature = "dml-charts")]
25814        if !self.ser.is_empty() {
25815            return false;
25816        }
25817        #[cfg(feature = "dml-charts")]
25818        if self.d_lbls.is_some() {
25819            return false;
25820        }
25821        #[cfg(feature = "dml-charts")]
25822        if self.bubble3_d.is_some() {
25823            return false;
25824        }
25825        #[cfg(feature = "dml-charts")]
25826        if self.bubble_scale.is_some() {
25827            return false;
25828        }
25829        #[cfg(feature = "dml-charts")]
25830        if self.show_neg_bubbles.is_some() {
25831            return false;
25832        }
25833        #[cfg(feature = "dml-charts")]
25834        if self.size_represents.is_some() {
25835            return false;
25836        }
25837        #[cfg(feature = "dml-charts")]
25838        if !self.ax_id.is_empty() {
25839            return false;
25840        }
25841        #[cfg(feature = "dml-charts")]
25842        if self.ext_lst.is_some() {
25843            return false;
25844        }
25845        #[cfg(feature = "extra-children")]
25846        if !self.extra_children.is_empty() {
25847            return false;
25848        }
25849        true
25850    }
25851}
25852
25853impl ToXml for BandFormat {
25854    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
25855        #[cfg(feature = "extra-children")]
25856        let mut extra_iter = self.extra_children.iter().peekable();
25857        #[cfg(feature = "extra-children")]
25858        let mut emit_idx: usize = 0;
25859        #[cfg(feature = "extra-children")]
25860        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25861            extra_iter
25862                .next()
25863                .unwrap()
25864                .node
25865                .write_to(writer)
25866                .map_err(SerializeError::from)?;
25867        }
25868        #[cfg(feature = "dml-charts")]
25869        {
25870            let val = &self.idx;
25871            val.write_element("a:idx", writer)?;
25872        }
25873        #[cfg(feature = "extra-children")]
25874        {
25875            emit_idx += 1;
25876        }
25877        #[cfg(feature = "extra-children")]
25878        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25879            extra_iter
25880                .next()
25881                .unwrap()
25882                .node
25883                .write_to(writer)
25884                .map_err(SerializeError::from)?;
25885        }
25886        #[cfg(feature = "dml-charts")]
25887        if let Some(ref val) = self.sp_pr {
25888            val.write_element("a:spPr", writer)?;
25889        }
25890        #[cfg(feature = "extra-children")]
25891        {
25892            emit_idx += 1;
25893        }
25894        #[cfg(feature = "extra-children")]
25895        for extra in extra_iter {
25896            extra.node.write_to(writer).map_err(SerializeError::from)?;
25897        }
25898        Ok(())
25899    }
25900
25901    fn is_empty_element(&self) -> bool {
25902        #[cfg(feature = "dml-charts")]
25903        return false;
25904        #[cfg(feature = "dml-charts")]
25905        if self.sp_pr.is_some() {
25906            return false;
25907        }
25908        #[cfg(feature = "extra-children")]
25909        if !self.extra_children.is_empty() {
25910            return false;
25911        }
25912        true
25913    }
25914}
25915
25916impl ToXml for BandFormats {
25917    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
25918        #[cfg(feature = "extra-children")]
25919        let mut extra_iter = self.extra_children.iter().peekable();
25920        #[cfg(feature = "extra-children")]
25921        let mut emit_idx: usize = 0;
25922        #[cfg(feature = "dml-charts")]
25923        for item in &self.band_fmt {
25924            #[cfg(feature = "extra-children")]
25925            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25926                extra_iter
25927                    .next()
25928                    .unwrap()
25929                    .node
25930                    .write_to(writer)
25931                    .map_err(SerializeError::from)?;
25932            }
25933            item.write_element("a:bandFmt", writer)?;
25934            #[cfg(feature = "extra-children")]
25935            {
25936                emit_idx += 1;
25937            }
25938        }
25939        #[cfg(feature = "extra-children")]
25940        for extra in extra_iter {
25941            extra.node.write_to(writer).map_err(SerializeError::from)?;
25942        }
25943        Ok(())
25944    }
25945
25946    fn is_empty_element(&self) -> bool {
25947        #[cfg(feature = "dml-charts")]
25948        if !self.band_fmt.is_empty() {
25949            return false;
25950        }
25951        #[cfg(feature = "extra-children")]
25952        if !self.extra_children.is_empty() {
25953            return false;
25954        }
25955        true
25956    }
25957}
25958
25959impl ToXml for EGSurfaceChartShared {
25960    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
25961        #[cfg(feature = "extra-children")]
25962        let mut extra_iter = self.extra_children.iter().peekable();
25963        #[cfg(feature = "extra-children")]
25964        let mut emit_idx: usize = 0;
25965        #[cfg(feature = "extra-children")]
25966        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25967            extra_iter
25968                .next()
25969                .unwrap()
25970                .node
25971                .write_to(writer)
25972                .map_err(SerializeError::from)?;
25973        }
25974        if let Some(ref val) = self.wireframe {
25975            val.write_element("a:wireframe", writer)?;
25976        }
25977        #[cfg(feature = "extra-children")]
25978        {
25979            emit_idx += 1;
25980        }
25981        for item in &self.ser {
25982            #[cfg(feature = "extra-children")]
25983            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25984                extra_iter
25985                    .next()
25986                    .unwrap()
25987                    .node
25988                    .write_to(writer)
25989                    .map_err(SerializeError::from)?;
25990            }
25991            item.write_element("a:ser", writer)?;
25992            #[cfg(feature = "extra-children")]
25993            {
25994                emit_idx += 1;
25995            }
25996        }
25997        #[cfg(feature = "extra-children")]
25998        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
25999            extra_iter
26000                .next()
26001                .unwrap()
26002                .node
26003                .write_to(writer)
26004                .map_err(SerializeError::from)?;
26005        }
26006        if let Some(ref val) = self.band_fmts {
26007            val.write_element("a:bandFmts", writer)?;
26008        }
26009        #[cfg(feature = "extra-children")]
26010        {
26011            emit_idx += 1;
26012        }
26013        #[cfg(feature = "extra-children")]
26014        for extra in extra_iter {
26015            extra.node.write_to(writer).map_err(SerializeError::from)?;
26016        }
26017        Ok(())
26018    }
26019
26020    fn is_empty_element(&self) -> bool {
26021        if self.wireframe.is_some() {
26022            return false;
26023        }
26024        if !self.ser.is_empty() {
26025            return false;
26026        }
26027        if self.band_fmts.is_some() {
26028            return false;
26029        }
26030        #[cfg(feature = "extra-children")]
26031        if !self.extra_children.is_empty() {
26032            return false;
26033        }
26034        true
26035    }
26036}
26037
26038impl ToXml for SurfaceChart {
26039    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
26040        #[cfg(feature = "extra-children")]
26041        let mut extra_iter = self.extra_children.iter().peekable();
26042        #[cfg(feature = "extra-children")]
26043        let mut emit_idx: usize = 0;
26044        #[cfg(feature = "extra-children")]
26045        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26046            extra_iter
26047                .next()
26048                .unwrap()
26049                .node
26050                .write_to(writer)
26051                .map_err(SerializeError::from)?;
26052        }
26053        #[cfg(feature = "dml-charts")]
26054        if let Some(ref val) = self.wireframe {
26055            val.write_element("a:wireframe", writer)?;
26056        }
26057        #[cfg(feature = "extra-children")]
26058        {
26059            emit_idx += 1;
26060        }
26061        #[cfg(feature = "dml-charts")]
26062        for item in &self.ser {
26063            #[cfg(feature = "extra-children")]
26064            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26065                extra_iter
26066                    .next()
26067                    .unwrap()
26068                    .node
26069                    .write_to(writer)
26070                    .map_err(SerializeError::from)?;
26071            }
26072            item.write_element("a:ser", writer)?;
26073            #[cfg(feature = "extra-children")]
26074            {
26075                emit_idx += 1;
26076            }
26077        }
26078        #[cfg(feature = "extra-children")]
26079        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26080            extra_iter
26081                .next()
26082                .unwrap()
26083                .node
26084                .write_to(writer)
26085                .map_err(SerializeError::from)?;
26086        }
26087        #[cfg(feature = "dml-charts")]
26088        if let Some(ref val) = self.band_fmts {
26089            val.write_element("a:bandFmts", writer)?;
26090        }
26091        #[cfg(feature = "extra-children")]
26092        {
26093            emit_idx += 1;
26094        }
26095        #[cfg(feature = "dml-charts")]
26096        for item in &self.ax_id {
26097            #[cfg(feature = "extra-children")]
26098            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26099                extra_iter
26100                    .next()
26101                    .unwrap()
26102                    .node
26103                    .write_to(writer)
26104                    .map_err(SerializeError::from)?;
26105            }
26106            item.write_element("a:axId", writer)?;
26107            #[cfg(feature = "extra-children")]
26108            {
26109                emit_idx += 1;
26110            }
26111        }
26112        #[cfg(feature = "extra-children")]
26113        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26114            extra_iter
26115                .next()
26116                .unwrap()
26117                .node
26118                .write_to(writer)
26119                .map_err(SerializeError::from)?;
26120        }
26121        #[cfg(feature = "dml-charts")]
26122        if let Some(ref val) = self.ext_lst {
26123            val.write_element("a:extLst", writer)?;
26124        }
26125        #[cfg(feature = "extra-children")]
26126        {
26127            emit_idx += 1;
26128        }
26129        #[cfg(feature = "extra-children")]
26130        for extra in extra_iter {
26131            extra.node.write_to(writer).map_err(SerializeError::from)?;
26132        }
26133        Ok(())
26134    }
26135
26136    fn is_empty_element(&self) -> bool {
26137        #[cfg(feature = "dml-charts")]
26138        if self.wireframe.is_some() {
26139            return false;
26140        }
26141        #[cfg(feature = "dml-charts")]
26142        if !self.ser.is_empty() {
26143            return false;
26144        }
26145        #[cfg(feature = "dml-charts")]
26146        if self.band_fmts.is_some() {
26147            return false;
26148        }
26149        #[cfg(feature = "dml-charts")]
26150        if !self.ax_id.is_empty() {
26151            return false;
26152        }
26153        #[cfg(feature = "dml-charts")]
26154        if self.ext_lst.is_some() {
26155            return false;
26156        }
26157        #[cfg(feature = "extra-children")]
26158        if !self.extra_children.is_empty() {
26159            return false;
26160        }
26161        true
26162    }
26163}
26164
26165impl ToXml for Surface3DChart {
26166    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
26167        #[cfg(feature = "extra-children")]
26168        let mut extra_iter = self.extra_children.iter().peekable();
26169        #[cfg(feature = "extra-children")]
26170        let mut emit_idx: usize = 0;
26171        #[cfg(feature = "extra-children")]
26172        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26173            extra_iter
26174                .next()
26175                .unwrap()
26176                .node
26177                .write_to(writer)
26178                .map_err(SerializeError::from)?;
26179        }
26180        #[cfg(feature = "dml-charts")]
26181        if let Some(ref val) = self.wireframe {
26182            val.write_element("a:wireframe", writer)?;
26183        }
26184        #[cfg(feature = "extra-children")]
26185        {
26186            emit_idx += 1;
26187        }
26188        #[cfg(feature = "dml-charts")]
26189        for item in &self.ser {
26190            #[cfg(feature = "extra-children")]
26191            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26192                extra_iter
26193                    .next()
26194                    .unwrap()
26195                    .node
26196                    .write_to(writer)
26197                    .map_err(SerializeError::from)?;
26198            }
26199            item.write_element("a:ser", writer)?;
26200            #[cfg(feature = "extra-children")]
26201            {
26202                emit_idx += 1;
26203            }
26204        }
26205        #[cfg(feature = "extra-children")]
26206        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26207            extra_iter
26208                .next()
26209                .unwrap()
26210                .node
26211                .write_to(writer)
26212                .map_err(SerializeError::from)?;
26213        }
26214        #[cfg(feature = "dml-charts")]
26215        if let Some(ref val) = self.band_fmts {
26216            val.write_element("a:bandFmts", writer)?;
26217        }
26218        #[cfg(feature = "extra-children")]
26219        {
26220            emit_idx += 1;
26221        }
26222        #[cfg(feature = "dml-charts")]
26223        for item in &self.ax_id {
26224            #[cfg(feature = "extra-children")]
26225            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26226                extra_iter
26227                    .next()
26228                    .unwrap()
26229                    .node
26230                    .write_to(writer)
26231                    .map_err(SerializeError::from)?;
26232            }
26233            item.write_element("a:axId", writer)?;
26234            #[cfg(feature = "extra-children")]
26235            {
26236                emit_idx += 1;
26237            }
26238        }
26239        #[cfg(feature = "extra-children")]
26240        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26241            extra_iter
26242                .next()
26243                .unwrap()
26244                .node
26245                .write_to(writer)
26246                .map_err(SerializeError::from)?;
26247        }
26248        #[cfg(feature = "dml-charts")]
26249        if let Some(ref val) = self.ext_lst {
26250            val.write_element("a:extLst", writer)?;
26251        }
26252        #[cfg(feature = "extra-children")]
26253        {
26254            emit_idx += 1;
26255        }
26256        #[cfg(feature = "extra-children")]
26257        for extra in extra_iter {
26258            extra.node.write_to(writer).map_err(SerializeError::from)?;
26259        }
26260        Ok(())
26261    }
26262
26263    fn is_empty_element(&self) -> bool {
26264        #[cfg(feature = "dml-charts")]
26265        if self.wireframe.is_some() {
26266            return false;
26267        }
26268        #[cfg(feature = "dml-charts")]
26269        if !self.ser.is_empty() {
26270            return false;
26271        }
26272        #[cfg(feature = "dml-charts")]
26273        if self.band_fmts.is_some() {
26274            return false;
26275        }
26276        #[cfg(feature = "dml-charts")]
26277        if !self.ax_id.is_empty() {
26278            return false;
26279        }
26280        #[cfg(feature = "dml-charts")]
26281        if self.ext_lst.is_some() {
26282            return false;
26283        }
26284        #[cfg(feature = "extra-children")]
26285        if !self.extra_children.is_empty() {
26286            return false;
26287        }
26288        true
26289    }
26290}
26291
26292impl ToXml for AxisPosition {
26293    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
26294        #[allow(unused_mut)]
26295        let mut start = start;
26296        #[cfg(feature = "dml-charts")]
26297        {
26298            let val = &self.value;
26299            {
26300                let s = val.to_string();
26301                start.push_attribute(("val", s.as_str()));
26302            }
26303        }
26304        #[cfg(feature = "extra-attrs")]
26305        for (key, value) in &self.extra_attrs {
26306            start.push_attribute((key.as_str(), value.as_str()));
26307        }
26308        start
26309    }
26310
26311    fn is_empty_element(&self) -> bool {
26312        true
26313    }
26314}
26315
26316impl ToXml for AxisCrosses {
26317    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
26318        #[allow(unused_mut)]
26319        let mut start = start;
26320        #[cfg(feature = "dml-charts")]
26321        {
26322            let val = &self.value;
26323            {
26324                let s = val.to_string();
26325                start.push_attribute(("val", s.as_str()));
26326            }
26327        }
26328        #[cfg(feature = "extra-attrs")]
26329        for (key, value) in &self.extra_attrs {
26330            start.push_attribute((key.as_str(), value.as_str()));
26331        }
26332        start
26333    }
26334
26335    fn is_empty_element(&self) -> bool {
26336        true
26337    }
26338}
26339
26340impl ToXml for CrossBetween {
26341    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
26342        #[allow(unused_mut)]
26343        let mut start = start;
26344        #[cfg(feature = "dml-charts")]
26345        {
26346            let val = &self.value;
26347            {
26348                let s = val.to_string();
26349                start.push_attribute(("val", s.as_str()));
26350            }
26351        }
26352        #[cfg(feature = "extra-attrs")]
26353        for (key, value) in &self.extra_attrs {
26354            start.push_attribute((key.as_str(), value.as_str()));
26355        }
26356        start
26357    }
26358
26359    fn is_empty_element(&self) -> bool {
26360        true
26361    }
26362}
26363
26364impl ToXml for TickMark {
26365    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
26366        #[allow(unused_mut)]
26367        let mut start = start;
26368        #[cfg(feature = "dml-charts")]
26369        if let Some(ref val) = self.value {
26370            {
26371                let s = val.to_string();
26372                start.push_attribute(("val", s.as_str()));
26373            }
26374        }
26375        #[cfg(feature = "extra-attrs")]
26376        for (key, value) in &self.extra_attrs {
26377            start.push_attribute((key.as_str(), value.as_str()));
26378        }
26379        start
26380    }
26381
26382    fn is_empty_element(&self) -> bool {
26383        true
26384    }
26385}
26386
26387impl ToXml for TickLabelPosition {
26388    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
26389        #[allow(unused_mut)]
26390        let mut start = start;
26391        #[cfg(feature = "dml-charts")]
26392        if let Some(ref val) = self.value {
26393            {
26394                let s = val.to_string();
26395                start.push_attribute(("val", s.as_str()));
26396            }
26397        }
26398        #[cfg(feature = "extra-attrs")]
26399        for (key, value) in &self.extra_attrs {
26400            start.push_attribute((key.as_str(), value.as_str()));
26401        }
26402        start
26403    }
26404
26405    fn is_empty_element(&self) -> bool {
26406        true
26407    }
26408}
26409
26410impl ToXml for AxisSkip {
26411    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
26412        #[allow(unused_mut)]
26413        let mut start = start;
26414        #[cfg(feature = "dml-charts")]
26415        {
26416            let val = &self.value;
26417            {
26418                let s = val.to_string();
26419                start.push_attribute(("val", s.as_str()));
26420            }
26421        }
26422        #[cfg(feature = "extra-attrs")]
26423        for (key, value) in &self.extra_attrs {
26424            start.push_attribute((key.as_str(), value.as_str()));
26425        }
26426        start
26427    }
26428
26429    fn is_empty_element(&self) -> bool {
26430        true
26431    }
26432}
26433
26434impl ToXml for TimeUnit {
26435    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
26436        #[allow(unused_mut)]
26437        let mut start = start;
26438        #[cfg(feature = "dml-charts")]
26439        if let Some(ref val) = self.value {
26440            {
26441                let s = val.to_string();
26442                start.push_attribute(("val", s.as_str()));
26443            }
26444        }
26445        #[cfg(feature = "extra-attrs")]
26446        for (key, value) in &self.extra_attrs {
26447            start.push_attribute((key.as_str(), value.as_str()));
26448        }
26449        start
26450    }
26451
26452    fn is_empty_element(&self) -> bool {
26453        true
26454    }
26455}
26456
26457impl ToXml for AxisUnit {
26458    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
26459        #[allow(unused_mut)]
26460        let mut start = start;
26461        #[cfg(feature = "dml-charts")]
26462        {
26463            let val = &self.value;
26464            {
26465                let s = val.to_string();
26466                start.push_attribute(("val", s.as_str()));
26467            }
26468        }
26469        #[cfg(feature = "extra-attrs")]
26470        for (key, value) in &self.extra_attrs {
26471            start.push_attribute((key.as_str(), value.as_str()));
26472        }
26473        start
26474    }
26475
26476    fn is_empty_element(&self) -> bool {
26477        true
26478    }
26479}
26480
26481impl ToXml for BuiltInUnit {
26482    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
26483        #[allow(unused_mut)]
26484        let mut start = start;
26485        #[cfg(feature = "dml-charts")]
26486        if let Some(ref val) = self.value {
26487            {
26488                let s = val.to_string();
26489                start.push_attribute(("val", s.as_str()));
26490            }
26491        }
26492        #[cfg(feature = "extra-attrs")]
26493        for (key, value) in &self.extra_attrs {
26494            start.push_attribute((key.as_str(), value.as_str()));
26495        }
26496        start
26497    }
26498
26499    fn is_empty_element(&self) -> bool {
26500        true
26501    }
26502}
26503
26504impl ToXml for ChartPictureFormat {
26505    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
26506        #[allow(unused_mut)]
26507        let mut start = start;
26508        #[cfg(feature = "dml-charts")]
26509        {
26510            let val = &self.value;
26511            {
26512                let s = val.to_string();
26513                start.push_attribute(("val", s.as_str()));
26514            }
26515        }
26516        #[cfg(feature = "extra-attrs")]
26517        for (key, value) in &self.extra_attrs {
26518            start.push_attribute((key.as_str(), value.as_str()));
26519        }
26520        start
26521    }
26522
26523    fn is_empty_element(&self) -> bool {
26524        true
26525    }
26526}
26527
26528impl ToXml for PictureStackUnit {
26529    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
26530        #[allow(unused_mut)]
26531        let mut start = start;
26532        #[cfg(feature = "dml-charts")]
26533        {
26534            let val = &self.value;
26535            {
26536                let s = val.to_string();
26537                start.push_attribute(("val", s.as_str()));
26538            }
26539        }
26540        #[cfg(feature = "extra-attrs")]
26541        for (key, value) in &self.extra_attrs {
26542            start.push_attribute((key.as_str(), value.as_str()));
26543        }
26544        start
26545    }
26546
26547    fn is_empty_element(&self) -> bool {
26548        true
26549    }
26550}
26551
26552impl ToXml for PictureOptions {
26553    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
26554        #[cfg(feature = "extra-children")]
26555        let mut extra_iter = self.extra_children.iter().peekable();
26556        #[cfg(feature = "extra-children")]
26557        let mut emit_idx: usize = 0;
26558        #[cfg(feature = "extra-children")]
26559        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26560            extra_iter
26561                .next()
26562                .unwrap()
26563                .node
26564                .write_to(writer)
26565                .map_err(SerializeError::from)?;
26566        }
26567        #[cfg(feature = "dml-charts")]
26568        if let Some(ref val) = self.apply_to_front {
26569            val.write_element("a:applyToFront", writer)?;
26570        }
26571        #[cfg(feature = "extra-children")]
26572        {
26573            emit_idx += 1;
26574        }
26575        #[cfg(feature = "extra-children")]
26576        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26577            extra_iter
26578                .next()
26579                .unwrap()
26580                .node
26581                .write_to(writer)
26582                .map_err(SerializeError::from)?;
26583        }
26584        #[cfg(feature = "dml-charts")]
26585        if let Some(ref val) = self.apply_to_sides {
26586            val.write_element("a:applyToSides", writer)?;
26587        }
26588        #[cfg(feature = "extra-children")]
26589        {
26590            emit_idx += 1;
26591        }
26592        #[cfg(feature = "extra-children")]
26593        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26594            extra_iter
26595                .next()
26596                .unwrap()
26597                .node
26598                .write_to(writer)
26599                .map_err(SerializeError::from)?;
26600        }
26601        #[cfg(feature = "dml-charts")]
26602        if let Some(ref val) = self.apply_to_end {
26603            val.write_element("a:applyToEnd", writer)?;
26604        }
26605        #[cfg(feature = "extra-children")]
26606        {
26607            emit_idx += 1;
26608        }
26609        #[cfg(feature = "extra-children")]
26610        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26611            extra_iter
26612                .next()
26613                .unwrap()
26614                .node
26615                .write_to(writer)
26616                .map_err(SerializeError::from)?;
26617        }
26618        #[cfg(feature = "dml-charts")]
26619        if let Some(ref val) = self.picture_format {
26620            val.write_element("a:pictureFormat", writer)?;
26621        }
26622        #[cfg(feature = "extra-children")]
26623        {
26624            emit_idx += 1;
26625        }
26626        #[cfg(feature = "extra-children")]
26627        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26628            extra_iter
26629                .next()
26630                .unwrap()
26631                .node
26632                .write_to(writer)
26633                .map_err(SerializeError::from)?;
26634        }
26635        #[cfg(feature = "dml-charts")]
26636        if let Some(ref val) = self.picture_stack_unit {
26637            val.write_element("a:pictureStackUnit", writer)?;
26638        }
26639        #[cfg(feature = "extra-children")]
26640        {
26641            emit_idx += 1;
26642        }
26643        #[cfg(feature = "extra-children")]
26644        for extra in extra_iter {
26645            extra.node.write_to(writer).map_err(SerializeError::from)?;
26646        }
26647        Ok(())
26648    }
26649
26650    fn is_empty_element(&self) -> bool {
26651        #[cfg(feature = "dml-charts")]
26652        if self.apply_to_front.is_some() {
26653            return false;
26654        }
26655        #[cfg(feature = "dml-charts")]
26656        if self.apply_to_sides.is_some() {
26657            return false;
26658        }
26659        #[cfg(feature = "dml-charts")]
26660        if self.apply_to_end.is_some() {
26661            return false;
26662        }
26663        #[cfg(feature = "dml-charts")]
26664        if self.picture_format.is_some() {
26665            return false;
26666        }
26667        #[cfg(feature = "dml-charts")]
26668        if self.picture_stack_unit.is_some() {
26669            return false;
26670        }
26671        #[cfg(feature = "extra-children")]
26672        if !self.extra_children.is_empty() {
26673            return false;
26674        }
26675        true
26676    }
26677}
26678
26679impl ToXml for DisplayUnitsLabel {
26680    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
26681        #[cfg(feature = "extra-children")]
26682        let mut extra_iter = self.extra_children.iter().peekable();
26683        #[cfg(feature = "extra-children")]
26684        let mut emit_idx: usize = 0;
26685        #[cfg(feature = "extra-children")]
26686        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26687            extra_iter
26688                .next()
26689                .unwrap()
26690                .node
26691                .write_to(writer)
26692                .map_err(SerializeError::from)?;
26693        }
26694        #[cfg(feature = "dml-charts")]
26695        if let Some(ref val) = self.layout {
26696            val.write_element("a:layout", writer)?;
26697        }
26698        #[cfg(feature = "extra-children")]
26699        {
26700            emit_idx += 1;
26701        }
26702        #[cfg(feature = "extra-children")]
26703        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26704            extra_iter
26705                .next()
26706                .unwrap()
26707                .node
26708                .write_to(writer)
26709                .map_err(SerializeError::from)?;
26710        }
26711        #[cfg(feature = "dml-charts")]
26712        if let Some(ref val) = self.tx {
26713            val.write_element("a:tx", writer)?;
26714        }
26715        #[cfg(feature = "extra-children")]
26716        {
26717            emit_idx += 1;
26718        }
26719        #[cfg(feature = "extra-children")]
26720        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26721            extra_iter
26722                .next()
26723                .unwrap()
26724                .node
26725                .write_to(writer)
26726                .map_err(SerializeError::from)?;
26727        }
26728        #[cfg(feature = "dml-charts")]
26729        if let Some(ref val) = self.sp_pr {
26730            val.write_element("a:spPr", writer)?;
26731        }
26732        #[cfg(feature = "extra-children")]
26733        {
26734            emit_idx += 1;
26735        }
26736        #[cfg(feature = "extra-children")]
26737        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26738            extra_iter
26739                .next()
26740                .unwrap()
26741                .node
26742                .write_to(writer)
26743                .map_err(SerializeError::from)?;
26744        }
26745        #[cfg(feature = "dml-charts")]
26746        if let Some(ref val) = self.tx_pr {
26747            val.write_element("a:txPr", writer)?;
26748        }
26749        #[cfg(feature = "extra-children")]
26750        {
26751            emit_idx += 1;
26752        }
26753        #[cfg(feature = "extra-children")]
26754        for extra in extra_iter {
26755            extra.node.write_to(writer).map_err(SerializeError::from)?;
26756        }
26757        Ok(())
26758    }
26759
26760    fn is_empty_element(&self) -> bool {
26761        #[cfg(feature = "dml-charts")]
26762        if self.layout.is_some() {
26763            return false;
26764        }
26765        #[cfg(feature = "dml-charts")]
26766        if self.tx.is_some() {
26767            return false;
26768        }
26769        #[cfg(feature = "dml-charts")]
26770        if self.sp_pr.is_some() {
26771            return false;
26772        }
26773        #[cfg(feature = "dml-charts")]
26774        if self.tx_pr.is_some() {
26775            return false;
26776        }
26777        #[cfg(feature = "extra-children")]
26778        if !self.extra_children.is_empty() {
26779            return false;
26780        }
26781        true
26782    }
26783}
26784
26785impl ToXml for DisplayUnits {
26786    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
26787        #[cfg(feature = "extra-children")]
26788        let mut extra_iter = self.extra_children.iter().peekable();
26789        #[cfg(feature = "extra-children")]
26790        let mut emit_idx: usize = 0;
26791        #[cfg(feature = "extra-children")]
26792        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26793            extra_iter
26794                .next()
26795                .unwrap()
26796                .node
26797                .write_to(writer)
26798                .map_err(SerializeError::from)?;
26799        }
26800        #[cfg(feature = "dml-charts")]
26801        if let Some(ref val) = self.cust_unit {
26802            val.write_element("a:custUnit", writer)?;
26803        }
26804        #[cfg(feature = "extra-children")]
26805        {
26806            emit_idx += 1;
26807        }
26808        #[cfg(feature = "extra-children")]
26809        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26810            extra_iter
26811                .next()
26812                .unwrap()
26813                .node
26814                .write_to(writer)
26815                .map_err(SerializeError::from)?;
26816        }
26817        #[cfg(feature = "dml-charts")]
26818        if let Some(ref val) = self.built_in_unit {
26819            val.write_element("a:builtInUnit", writer)?;
26820        }
26821        #[cfg(feature = "extra-children")]
26822        {
26823            emit_idx += 1;
26824        }
26825        #[cfg(feature = "extra-children")]
26826        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26827            extra_iter
26828                .next()
26829                .unwrap()
26830                .node
26831                .write_to(writer)
26832                .map_err(SerializeError::from)?;
26833        }
26834        #[cfg(feature = "dml-charts")]
26835        if let Some(ref val) = self.disp_units_lbl {
26836            val.write_element("a:dispUnitsLbl", writer)?;
26837        }
26838        #[cfg(feature = "extra-children")]
26839        {
26840            emit_idx += 1;
26841        }
26842        #[cfg(feature = "extra-children")]
26843        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26844            extra_iter
26845                .next()
26846                .unwrap()
26847                .node
26848                .write_to(writer)
26849                .map_err(SerializeError::from)?;
26850        }
26851        #[cfg(feature = "dml-charts")]
26852        if let Some(ref val) = self.ext_lst {
26853            val.write_element("a:extLst", writer)?;
26854        }
26855        #[cfg(feature = "extra-children")]
26856        {
26857            emit_idx += 1;
26858        }
26859        #[cfg(feature = "extra-children")]
26860        for extra in extra_iter {
26861            extra.node.write_to(writer).map_err(SerializeError::from)?;
26862        }
26863        Ok(())
26864    }
26865
26866    fn is_empty_element(&self) -> bool {
26867        #[cfg(feature = "dml-charts")]
26868        if self.cust_unit.is_some() {
26869            return false;
26870        }
26871        #[cfg(feature = "dml-charts")]
26872        if self.built_in_unit.is_some() {
26873            return false;
26874        }
26875        #[cfg(feature = "dml-charts")]
26876        if self.disp_units_lbl.is_some() {
26877            return false;
26878        }
26879        #[cfg(feature = "dml-charts")]
26880        if self.ext_lst.is_some() {
26881            return false;
26882        }
26883        #[cfg(feature = "extra-children")]
26884        if !self.extra_children.is_empty() {
26885            return false;
26886        }
26887        true
26888    }
26889}
26890
26891impl ToXml for AxisOrientation {
26892    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
26893        #[allow(unused_mut)]
26894        let mut start = start;
26895        #[cfg(feature = "dml-charts")]
26896        if let Some(ref val) = self.value {
26897            {
26898                let s = val.to_string();
26899                start.push_attribute(("val", s.as_str()));
26900            }
26901        }
26902        #[cfg(feature = "extra-attrs")]
26903        for (key, value) in &self.extra_attrs {
26904            start.push_attribute((key.as_str(), value.as_str()));
26905        }
26906        start
26907    }
26908
26909    fn is_empty_element(&self) -> bool {
26910        true
26911    }
26912}
26913
26914impl ToXml for LogBase {
26915    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
26916        #[allow(unused_mut)]
26917        let mut start = start;
26918        #[cfg(feature = "dml-charts")]
26919        {
26920            let val = &self.value;
26921            {
26922                let s = val.to_string();
26923                start.push_attribute(("val", s.as_str()));
26924            }
26925        }
26926        #[cfg(feature = "extra-attrs")]
26927        for (key, value) in &self.extra_attrs {
26928            start.push_attribute((key.as_str(), value.as_str()));
26929        }
26930        start
26931    }
26932
26933    fn is_empty_element(&self) -> bool {
26934        true
26935    }
26936}
26937
26938impl ToXml for AxisScaling {
26939    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
26940        #[cfg(feature = "extra-children")]
26941        let mut extra_iter = self.extra_children.iter().peekable();
26942        #[cfg(feature = "extra-children")]
26943        let mut emit_idx: usize = 0;
26944        #[cfg(feature = "extra-children")]
26945        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26946            extra_iter
26947                .next()
26948                .unwrap()
26949                .node
26950                .write_to(writer)
26951                .map_err(SerializeError::from)?;
26952        }
26953        #[cfg(feature = "dml-charts")]
26954        if let Some(ref val) = self.log_base {
26955            val.write_element("a:logBase", writer)?;
26956        }
26957        #[cfg(feature = "extra-children")]
26958        {
26959            emit_idx += 1;
26960        }
26961        #[cfg(feature = "extra-children")]
26962        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26963            extra_iter
26964                .next()
26965                .unwrap()
26966                .node
26967                .write_to(writer)
26968                .map_err(SerializeError::from)?;
26969        }
26970        #[cfg(feature = "dml-charts")]
26971        if let Some(ref val) = self.orientation {
26972            val.write_element("a:orientation", writer)?;
26973        }
26974        #[cfg(feature = "extra-children")]
26975        {
26976            emit_idx += 1;
26977        }
26978        #[cfg(feature = "extra-children")]
26979        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26980            extra_iter
26981                .next()
26982                .unwrap()
26983                .node
26984                .write_to(writer)
26985                .map_err(SerializeError::from)?;
26986        }
26987        #[cfg(feature = "dml-charts")]
26988        if let Some(ref val) = self.max {
26989            val.write_element("a:max", writer)?;
26990        }
26991        #[cfg(feature = "extra-children")]
26992        {
26993            emit_idx += 1;
26994        }
26995        #[cfg(feature = "extra-children")]
26996        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
26997            extra_iter
26998                .next()
26999                .unwrap()
27000                .node
27001                .write_to(writer)
27002                .map_err(SerializeError::from)?;
27003        }
27004        #[cfg(feature = "dml-charts")]
27005        if let Some(ref val) = self.min {
27006            val.write_element("a:min", writer)?;
27007        }
27008        #[cfg(feature = "extra-children")]
27009        {
27010            emit_idx += 1;
27011        }
27012        #[cfg(feature = "extra-children")]
27013        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27014            extra_iter
27015                .next()
27016                .unwrap()
27017                .node
27018                .write_to(writer)
27019                .map_err(SerializeError::from)?;
27020        }
27021        #[cfg(feature = "dml-charts")]
27022        if let Some(ref val) = self.ext_lst {
27023            val.write_element("a:extLst", writer)?;
27024        }
27025        #[cfg(feature = "extra-children")]
27026        {
27027            emit_idx += 1;
27028        }
27029        #[cfg(feature = "extra-children")]
27030        for extra in extra_iter {
27031            extra.node.write_to(writer).map_err(SerializeError::from)?;
27032        }
27033        Ok(())
27034    }
27035
27036    fn is_empty_element(&self) -> bool {
27037        #[cfg(feature = "dml-charts")]
27038        if self.log_base.is_some() {
27039            return false;
27040        }
27041        #[cfg(feature = "dml-charts")]
27042        if self.orientation.is_some() {
27043            return false;
27044        }
27045        #[cfg(feature = "dml-charts")]
27046        if self.max.is_some() {
27047            return false;
27048        }
27049        #[cfg(feature = "dml-charts")]
27050        if self.min.is_some() {
27051            return false;
27052        }
27053        #[cfg(feature = "dml-charts")]
27054        if self.ext_lst.is_some() {
27055            return false;
27056        }
27057        #[cfg(feature = "extra-children")]
27058        if !self.extra_children.is_empty() {
27059            return false;
27060        }
27061        true
27062    }
27063}
27064
27065impl ToXml for LabelOffset {
27066    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
27067        #[allow(unused_mut)]
27068        let mut start = start;
27069        #[cfg(feature = "dml-charts")]
27070        if let Some(ref val) = self.value {
27071            {
27072                let s = val.to_string();
27073                start.push_attribute(("val", s.as_str()));
27074            }
27075        }
27076        #[cfg(feature = "extra-attrs")]
27077        for (key, value) in &self.extra_attrs {
27078            start.push_attribute((key.as_str(), value.as_str()));
27079        }
27080        start
27081    }
27082
27083    fn is_empty_element(&self) -> bool {
27084        true
27085    }
27086}
27087
27088impl ToXml for EGAxShared {
27089    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
27090        #[cfg(feature = "extra-children")]
27091        let mut extra_iter = self.extra_children.iter().peekable();
27092        #[cfg(feature = "extra-children")]
27093        let mut emit_idx: usize = 0;
27094        #[cfg(feature = "extra-children")]
27095        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27096            extra_iter
27097                .next()
27098                .unwrap()
27099                .node
27100                .write_to(writer)
27101                .map_err(SerializeError::from)?;
27102        }
27103        {
27104            let val = &self.ax_id;
27105            val.write_element("a:axId", writer)?;
27106        }
27107        #[cfg(feature = "extra-children")]
27108        {
27109            emit_idx += 1;
27110        }
27111        #[cfg(feature = "extra-children")]
27112        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27113            extra_iter
27114                .next()
27115                .unwrap()
27116                .node
27117                .write_to(writer)
27118                .map_err(SerializeError::from)?;
27119        }
27120        {
27121            let val = &self.scaling;
27122            val.write_element("a:scaling", writer)?;
27123        }
27124        #[cfg(feature = "extra-children")]
27125        {
27126            emit_idx += 1;
27127        }
27128        #[cfg(feature = "extra-children")]
27129        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27130            extra_iter
27131                .next()
27132                .unwrap()
27133                .node
27134                .write_to(writer)
27135                .map_err(SerializeError::from)?;
27136        }
27137        if let Some(ref val) = self.delete {
27138            val.write_element("a:delete", writer)?;
27139        }
27140        #[cfg(feature = "extra-children")]
27141        {
27142            emit_idx += 1;
27143        }
27144        #[cfg(feature = "extra-children")]
27145        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27146            extra_iter
27147                .next()
27148                .unwrap()
27149                .node
27150                .write_to(writer)
27151                .map_err(SerializeError::from)?;
27152        }
27153        {
27154            let val = &self.ax_pos;
27155            val.write_element("a:axPos", writer)?;
27156        }
27157        #[cfg(feature = "extra-children")]
27158        {
27159            emit_idx += 1;
27160        }
27161        #[cfg(feature = "extra-children")]
27162        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27163            extra_iter
27164                .next()
27165                .unwrap()
27166                .node
27167                .write_to(writer)
27168                .map_err(SerializeError::from)?;
27169        }
27170        if let Some(ref val) = self.major_gridlines {
27171            val.write_element("a:majorGridlines", writer)?;
27172        }
27173        #[cfg(feature = "extra-children")]
27174        {
27175            emit_idx += 1;
27176        }
27177        #[cfg(feature = "extra-children")]
27178        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27179            extra_iter
27180                .next()
27181                .unwrap()
27182                .node
27183                .write_to(writer)
27184                .map_err(SerializeError::from)?;
27185        }
27186        if let Some(ref val) = self.minor_gridlines {
27187            val.write_element("a:minorGridlines", writer)?;
27188        }
27189        #[cfg(feature = "extra-children")]
27190        {
27191            emit_idx += 1;
27192        }
27193        #[cfg(feature = "extra-children")]
27194        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27195            extra_iter
27196                .next()
27197                .unwrap()
27198                .node
27199                .write_to(writer)
27200                .map_err(SerializeError::from)?;
27201        }
27202        if let Some(ref val) = self.title {
27203            val.write_element("a:title", writer)?;
27204        }
27205        #[cfg(feature = "extra-children")]
27206        {
27207            emit_idx += 1;
27208        }
27209        #[cfg(feature = "extra-children")]
27210        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27211            extra_iter
27212                .next()
27213                .unwrap()
27214                .node
27215                .write_to(writer)
27216                .map_err(SerializeError::from)?;
27217        }
27218        if let Some(ref val) = self.num_fmt {
27219            val.write_element("a:numFmt", writer)?;
27220        }
27221        #[cfg(feature = "extra-children")]
27222        {
27223            emit_idx += 1;
27224        }
27225        #[cfg(feature = "extra-children")]
27226        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27227            extra_iter
27228                .next()
27229                .unwrap()
27230                .node
27231                .write_to(writer)
27232                .map_err(SerializeError::from)?;
27233        }
27234        if let Some(ref val) = self.major_tick_mark {
27235            val.write_element("a:majorTickMark", writer)?;
27236        }
27237        #[cfg(feature = "extra-children")]
27238        {
27239            emit_idx += 1;
27240        }
27241        #[cfg(feature = "extra-children")]
27242        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27243            extra_iter
27244                .next()
27245                .unwrap()
27246                .node
27247                .write_to(writer)
27248                .map_err(SerializeError::from)?;
27249        }
27250        if let Some(ref val) = self.minor_tick_mark {
27251            val.write_element("a:minorTickMark", writer)?;
27252        }
27253        #[cfg(feature = "extra-children")]
27254        {
27255            emit_idx += 1;
27256        }
27257        #[cfg(feature = "extra-children")]
27258        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27259            extra_iter
27260                .next()
27261                .unwrap()
27262                .node
27263                .write_to(writer)
27264                .map_err(SerializeError::from)?;
27265        }
27266        if let Some(ref val) = self.tick_lbl_pos {
27267            val.write_element("a:tickLblPos", writer)?;
27268        }
27269        #[cfg(feature = "extra-children")]
27270        {
27271            emit_idx += 1;
27272        }
27273        #[cfg(feature = "extra-children")]
27274        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27275            extra_iter
27276                .next()
27277                .unwrap()
27278                .node
27279                .write_to(writer)
27280                .map_err(SerializeError::from)?;
27281        }
27282        if let Some(ref val) = self.sp_pr {
27283            val.write_element("a:spPr", writer)?;
27284        }
27285        #[cfg(feature = "extra-children")]
27286        {
27287            emit_idx += 1;
27288        }
27289        #[cfg(feature = "extra-children")]
27290        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27291            extra_iter
27292                .next()
27293                .unwrap()
27294                .node
27295                .write_to(writer)
27296                .map_err(SerializeError::from)?;
27297        }
27298        if let Some(ref val) = self.tx_pr {
27299            val.write_element("a:txPr", writer)?;
27300        }
27301        #[cfg(feature = "extra-children")]
27302        {
27303            emit_idx += 1;
27304        }
27305        #[cfg(feature = "extra-children")]
27306        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27307            extra_iter
27308                .next()
27309                .unwrap()
27310                .node
27311                .write_to(writer)
27312                .map_err(SerializeError::from)?;
27313        }
27314        {
27315            let val = &self.cross_ax;
27316            val.write_element("a:crossAx", writer)?;
27317        }
27318        #[cfg(feature = "extra-children")]
27319        {
27320            emit_idx += 1;
27321        }
27322        #[cfg(feature = "extra-children")]
27323        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27324            extra_iter
27325                .next()
27326                .unwrap()
27327                .node
27328                .write_to(writer)
27329                .map_err(SerializeError::from)?;
27330        }
27331        if let Some(ref val) = self.crosses {
27332            val.write_element("a:crosses", writer)?;
27333        }
27334        #[cfg(feature = "extra-children")]
27335        {
27336            emit_idx += 1;
27337        }
27338        #[cfg(feature = "extra-children")]
27339        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27340            extra_iter
27341                .next()
27342                .unwrap()
27343                .node
27344                .write_to(writer)
27345                .map_err(SerializeError::from)?;
27346        }
27347        if let Some(ref val) = self.crosses_at {
27348            val.write_element("a:crossesAt", writer)?;
27349        }
27350        #[cfg(feature = "extra-children")]
27351        {
27352            emit_idx += 1;
27353        }
27354        #[cfg(feature = "extra-children")]
27355        for extra in extra_iter {
27356            extra.node.write_to(writer).map_err(SerializeError::from)?;
27357        }
27358        Ok(())
27359    }
27360
27361    fn is_empty_element(&self) -> bool {
27362        false
27363    }
27364}
27365
27366impl ToXml for CategoryAxis {
27367    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
27368        #[cfg(feature = "extra-children")]
27369        let mut extra_iter = self.extra_children.iter().peekable();
27370        #[cfg(feature = "extra-children")]
27371        let mut emit_idx: usize = 0;
27372        #[cfg(feature = "extra-children")]
27373        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27374            extra_iter
27375                .next()
27376                .unwrap()
27377                .node
27378                .write_to(writer)
27379                .map_err(SerializeError::from)?;
27380        }
27381        #[cfg(feature = "dml-charts")]
27382        {
27383            let val = &self.ax_id;
27384            val.write_element("a:axId", writer)?;
27385        }
27386        #[cfg(feature = "extra-children")]
27387        {
27388            emit_idx += 1;
27389        }
27390        #[cfg(feature = "extra-children")]
27391        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27392            extra_iter
27393                .next()
27394                .unwrap()
27395                .node
27396                .write_to(writer)
27397                .map_err(SerializeError::from)?;
27398        }
27399        #[cfg(feature = "dml-charts")]
27400        {
27401            let val = &self.scaling;
27402            val.write_element("a:scaling", writer)?;
27403        }
27404        #[cfg(feature = "extra-children")]
27405        {
27406            emit_idx += 1;
27407        }
27408        #[cfg(feature = "extra-children")]
27409        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27410            extra_iter
27411                .next()
27412                .unwrap()
27413                .node
27414                .write_to(writer)
27415                .map_err(SerializeError::from)?;
27416        }
27417        #[cfg(feature = "dml-charts")]
27418        if let Some(ref val) = self.delete {
27419            val.write_element("a:delete", writer)?;
27420        }
27421        #[cfg(feature = "extra-children")]
27422        {
27423            emit_idx += 1;
27424        }
27425        #[cfg(feature = "extra-children")]
27426        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27427            extra_iter
27428                .next()
27429                .unwrap()
27430                .node
27431                .write_to(writer)
27432                .map_err(SerializeError::from)?;
27433        }
27434        #[cfg(feature = "dml-charts")]
27435        {
27436            let val = &self.ax_pos;
27437            val.write_element("a:axPos", writer)?;
27438        }
27439        #[cfg(feature = "extra-children")]
27440        {
27441            emit_idx += 1;
27442        }
27443        #[cfg(feature = "extra-children")]
27444        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27445            extra_iter
27446                .next()
27447                .unwrap()
27448                .node
27449                .write_to(writer)
27450                .map_err(SerializeError::from)?;
27451        }
27452        #[cfg(feature = "dml-charts")]
27453        if let Some(ref val) = self.major_gridlines {
27454            val.write_element("a:majorGridlines", writer)?;
27455        }
27456        #[cfg(feature = "extra-children")]
27457        {
27458            emit_idx += 1;
27459        }
27460        #[cfg(feature = "extra-children")]
27461        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27462            extra_iter
27463                .next()
27464                .unwrap()
27465                .node
27466                .write_to(writer)
27467                .map_err(SerializeError::from)?;
27468        }
27469        #[cfg(feature = "dml-charts")]
27470        if let Some(ref val) = self.minor_gridlines {
27471            val.write_element("a:minorGridlines", writer)?;
27472        }
27473        #[cfg(feature = "extra-children")]
27474        {
27475            emit_idx += 1;
27476        }
27477        #[cfg(feature = "extra-children")]
27478        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27479            extra_iter
27480                .next()
27481                .unwrap()
27482                .node
27483                .write_to(writer)
27484                .map_err(SerializeError::from)?;
27485        }
27486        #[cfg(feature = "dml-charts")]
27487        if let Some(ref val) = self.title {
27488            val.write_element("a:title", writer)?;
27489        }
27490        #[cfg(feature = "extra-children")]
27491        {
27492            emit_idx += 1;
27493        }
27494        #[cfg(feature = "extra-children")]
27495        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27496            extra_iter
27497                .next()
27498                .unwrap()
27499                .node
27500                .write_to(writer)
27501                .map_err(SerializeError::from)?;
27502        }
27503        #[cfg(feature = "dml-charts")]
27504        if let Some(ref val) = self.num_fmt {
27505            val.write_element("a:numFmt", writer)?;
27506        }
27507        #[cfg(feature = "extra-children")]
27508        {
27509            emit_idx += 1;
27510        }
27511        #[cfg(feature = "extra-children")]
27512        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27513            extra_iter
27514                .next()
27515                .unwrap()
27516                .node
27517                .write_to(writer)
27518                .map_err(SerializeError::from)?;
27519        }
27520        #[cfg(feature = "dml-charts")]
27521        if let Some(ref val) = self.major_tick_mark {
27522            val.write_element("a:majorTickMark", writer)?;
27523        }
27524        #[cfg(feature = "extra-children")]
27525        {
27526            emit_idx += 1;
27527        }
27528        #[cfg(feature = "extra-children")]
27529        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27530            extra_iter
27531                .next()
27532                .unwrap()
27533                .node
27534                .write_to(writer)
27535                .map_err(SerializeError::from)?;
27536        }
27537        #[cfg(feature = "dml-charts")]
27538        if let Some(ref val) = self.minor_tick_mark {
27539            val.write_element("a:minorTickMark", writer)?;
27540        }
27541        #[cfg(feature = "extra-children")]
27542        {
27543            emit_idx += 1;
27544        }
27545        #[cfg(feature = "extra-children")]
27546        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27547            extra_iter
27548                .next()
27549                .unwrap()
27550                .node
27551                .write_to(writer)
27552                .map_err(SerializeError::from)?;
27553        }
27554        #[cfg(feature = "dml-charts")]
27555        if let Some(ref val) = self.tick_lbl_pos {
27556            val.write_element("a:tickLblPos", writer)?;
27557        }
27558        #[cfg(feature = "extra-children")]
27559        {
27560            emit_idx += 1;
27561        }
27562        #[cfg(feature = "extra-children")]
27563        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27564            extra_iter
27565                .next()
27566                .unwrap()
27567                .node
27568                .write_to(writer)
27569                .map_err(SerializeError::from)?;
27570        }
27571        #[cfg(feature = "dml-charts")]
27572        if let Some(ref val) = self.sp_pr {
27573            val.write_element("a:spPr", writer)?;
27574        }
27575        #[cfg(feature = "extra-children")]
27576        {
27577            emit_idx += 1;
27578        }
27579        #[cfg(feature = "extra-children")]
27580        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27581            extra_iter
27582                .next()
27583                .unwrap()
27584                .node
27585                .write_to(writer)
27586                .map_err(SerializeError::from)?;
27587        }
27588        #[cfg(feature = "dml-charts")]
27589        if let Some(ref val) = self.tx_pr {
27590            val.write_element("a:txPr", writer)?;
27591        }
27592        #[cfg(feature = "extra-children")]
27593        {
27594            emit_idx += 1;
27595        }
27596        #[cfg(feature = "extra-children")]
27597        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27598            extra_iter
27599                .next()
27600                .unwrap()
27601                .node
27602                .write_to(writer)
27603                .map_err(SerializeError::from)?;
27604        }
27605        #[cfg(feature = "dml-charts")]
27606        {
27607            let val = &self.cross_ax;
27608            val.write_element("a:crossAx", writer)?;
27609        }
27610        #[cfg(feature = "extra-children")]
27611        {
27612            emit_idx += 1;
27613        }
27614        #[cfg(feature = "extra-children")]
27615        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27616            extra_iter
27617                .next()
27618                .unwrap()
27619                .node
27620                .write_to(writer)
27621                .map_err(SerializeError::from)?;
27622        }
27623        #[cfg(feature = "dml-charts")]
27624        if let Some(ref val) = self.crosses {
27625            val.write_element("a:crosses", writer)?;
27626        }
27627        #[cfg(feature = "extra-children")]
27628        {
27629            emit_idx += 1;
27630        }
27631        #[cfg(feature = "extra-children")]
27632        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27633            extra_iter
27634                .next()
27635                .unwrap()
27636                .node
27637                .write_to(writer)
27638                .map_err(SerializeError::from)?;
27639        }
27640        #[cfg(feature = "dml-charts")]
27641        if let Some(ref val) = self.crosses_at {
27642            val.write_element("a:crossesAt", writer)?;
27643        }
27644        #[cfg(feature = "extra-children")]
27645        {
27646            emit_idx += 1;
27647        }
27648        #[cfg(feature = "extra-children")]
27649        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27650            extra_iter
27651                .next()
27652                .unwrap()
27653                .node
27654                .write_to(writer)
27655                .map_err(SerializeError::from)?;
27656        }
27657        #[cfg(feature = "dml-charts")]
27658        if let Some(ref val) = self.auto {
27659            val.write_element("a:auto", writer)?;
27660        }
27661        #[cfg(feature = "extra-children")]
27662        {
27663            emit_idx += 1;
27664        }
27665        #[cfg(feature = "extra-children")]
27666        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27667            extra_iter
27668                .next()
27669                .unwrap()
27670                .node
27671                .write_to(writer)
27672                .map_err(SerializeError::from)?;
27673        }
27674        #[cfg(feature = "dml-charts")]
27675        if let Some(ref val) = self.lbl_algn {
27676            val.write_element("a:lblAlgn", writer)?;
27677        }
27678        #[cfg(feature = "extra-children")]
27679        {
27680            emit_idx += 1;
27681        }
27682        #[cfg(feature = "extra-children")]
27683        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27684            extra_iter
27685                .next()
27686                .unwrap()
27687                .node
27688                .write_to(writer)
27689                .map_err(SerializeError::from)?;
27690        }
27691        #[cfg(feature = "dml-charts")]
27692        if let Some(ref val) = self.lbl_offset {
27693            val.write_element("a:lblOffset", writer)?;
27694        }
27695        #[cfg(feature = "extra-children")]
27696        {
27697            emit_idx += 1;
27698        }
27699        #[cfg(feature = "extra-children")]
27700        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27701            extra_iter
27702                .next()
27703                .unwrap()
27704                .node
27705                .write_to(writer)
27706                .map_err(SerializeError::from)?;
27707        }
27708        #[cfg(feature = "dml-charts")]
27709        if let Some(ref val) = self.tick_lbl_skip {
27710            val.write_element("a:tickLblSkip", writer)?;
27711        }
27712        #[cfg(feature = "extra-children")]
27713        {
27714            emit_idx += 1;
27715        }
27716        #[cfg(feature = "extra-children")]
27717        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27718            extra_iter
27719                .next()
27720                .unwrap()
27721                .node
27722                .write_to(writer)
27723                .map_err(SerializeError::from)?;
27724        }
27725        #[cfg(feature = "dml-charts")]
27726        if let Some(ref val) = self.tick_mark_skip {
27727            val.write_element("a:tickMarkSkip", writer)?;
27728        }
27729        #[cfg(feature = "extra-children")]
27730        {
27731            emit_idx += 1;
27732        }
27733        #[cfg(feature = "extra-children")]
27734        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27735            extra_iter
27736                .next()
27737                .unwrap()
27738                .node
27739                .write_to(writer)
27740                .map_err(SerializeError::from)?;
27741        }
27742        #[cfg(feature = "dml-charts")]
27743        if let Some(ref val) = self.no_multi_lvl_lbl {
27744            val.write_element("a:noMultiLvlLbl", writer)?;
27745        }
27746        #[cfg(feature = "extra-children")]
27747        {
27748            emit_idx += 1;
27749        }
27750        #[cfg(feature = "extra-children")]
27751        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27752            extra_iter
27753                .next()
27754                .unwrap()
27755                .node
27756                .write_to(writer)
27757                .map_err(SerializeError::from)?;
27758        }
27759        #[cfg(feature = "dml-charts")]
27760        if let Some(ref val) = self.ext_lst {
27761            val.write_element("a:extLst", writer)?;
27762        }
27763        #[cfg(feature = "extra-children")]
27764        {
27765            emit_idx += 1;
27766        }
27767        #[cfg(feature = "extra-children")]
27768        for extra in extra_iter {
27769            extra.node.write_to(writer).map_err(SerializeError::from)?;
27770        }
27771        Ok(())
27772    }
27773
27774    fn is_empty_element(&self) -> bool {
27775        #[cfg(feature = "dml-charts")]
27776        return false;
27777        #[cfg(feature = "dml-charts")]
27778        return false;
27779        #[cfg(feature = "dml-charts")]
27780        if self.delete.is_some() {
27781            return false;
27782        }
27783        #[cfg(feature = "dml-charts")]
27784        return false;
27785        #[cfg(feature = "dml-charts")]
27786        if self.major_gridlines.is_some() {
27787            return false;
27788        }
27789        #[cfg(feature = "dml-charts")]
27790        if self.minor_gridlines.is_some() {
27791            return false;
27792        }
27793        #[cfg(feature = "dml-charts")]
27794        if self.title.is_some() {
27795            return false;
27796        }
27797        #[cfg(feature = "dml-charts")]
27798        if self.num_fmt.is_some() {
27799            return false;
27800        }
27801        #[cfg(feature = "dml-charts")]
27802        if self.major_tick_mark.is_some() {
27803            return false;
27804        }
27805        #[cfg(feature = "dml-charts")]
27806        if self.minor_tick_mark.is_some() {
27807            return false;
27808        }
27809        #[cfg(feature = "dml-charts")]
27810        if self.tick_lbl_pos.is_some() {
27811            return false;
27812        }
27813        #[cfg(feature = "dml-charts")]
27814        if self.sp_pr.is_some() {
27815            return false;
27816        }
27817        #[cfg(feature = "dml-charts")]
27818        if self.tx_pr.is_some() {
27819            return false;
27820        }
27821        #[cfg(feature = "dml-charts")]
27822        return false;
27823        #[cfg(feature = "dml-charts")]
27824        if self.crosses.is_some() {
27825            return false;
27826        }
27827        #[cfg(feature = "dml-charts")]
27828        if self.crosses_at.is_some() {
27829            return false;
27830        }
27831        #[cfg(feature = "dml-charts")]
27832        if self.auto.is_some() {
27833            return false;
27834        }
27835        #[cfg(feature = "dml-charts")]
27836        if self.lbl_algn.is_some() {
27837            return false;
27838        }
27839        #[cfg(feature = "dml-charts")]
27840        if self.lbl_offset.is_some() {
27841            return false;
27842        }
27843        #[cfg(feature = "dml-charts")]
27844        if self.tick_lbl_skip.is_some() {
27845            return false;
27846        }
27847        #[cfg(feature = "dml-charts")]
27848        if self.tick_mark_skip.is_some() {
27849            return false;
27850        }
27851        #[cfg(feature = "dml-charts")]
27852        if self.no_multi_lvl_lbl.is_some() {
27853            return false;
27854        }
27855        #[cfg(feature = "dml-charts")]
27856        if self.ext_lst.is_some() {
27857            return false;
27858        }
27859        #[cfg(feature = "extra-children")]
27860        if !self.extra_children.is_empty() {
27861            return false;
27862        }
27863        true
27864    }
27865}
27866
27867impl ToXml for DateAxis {
27868    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
27869        #[cfg(feature = "extra-children")]
27870        let mut extra_iter = self.extra_children.iter().peekable();
27871        #[cfg(feature = "extra-children")]
27872        let mut emit_idx: usize = 0;
27873        #[cfg(feature = "extra-children")]
27874        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27875            extra_iter
27876                .next()
27877                .unwrap()
27878                .node
27879                .write_to(writer)
27880                .map_err(SerializeError::from)?;
27881        }
27882        #[cfg(feature = "dml-charts")]
27883        {
27884            let val = &self.ax_id;
27885            val.write_element("a:axId", writer)?;
27886        }
27887        #[cfg(feature = "extra-children")]
27888        {
27889            emit_idx += 1;
27890        }
27891        #[cfg(feature = "extra-children")]
27892        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27893            extra_iter
27894                .next()
27895                .unwrap()
27896                .node
27897                .write_to(writer)
27898                .map_err(SerializeError::from)?;
27899        }
27900        #[cfg(feature = "dml-charts")]
27901        {
27902            let val = &self.scaling;
27903            val.write_element("a:scaling", writer)?;
27904        }
27905        #[cfg(feature = "extra-children")]
27906        {
27907            emit_idx += 1;
27908        }
27909        #[cfg(feature = "extra-children")]
27910        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27911            extra_iter
27912                .next()
27913                .unwrap()
27914                .node
27915                .write_to(writer)
27916                .map_err(SerializeError::from)?;
27917        }
27918        #[cfg(feature = "dml-charts")]
27919        if let Some(ref val) = self.delete {
27920            val.write_element("a:delete", writer)?;
27921        }
27922        #[cfg(feature = "extra-children")]
27923        {
27924            emit_idx += 1;
27925        }
27926        #[cfg(feature = "extra-children")]
27927        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27928            extra_iter
27929                .next()
27930                .unwrap()
27931                .node
27932                .write_to(writer)
27933                .map_err(SerializeError::from)?;
27934        }
27935        #[cfg(feature = "dml-charts")]
27936        {
27937            let val = &self.ax_pos;
27938            val.write_element("a:axPos", writer)?;
27939        }
27940        #[cfg(feature = "extra-children")]
27941        {
27942            emit_idx += 1;
27943        }
27944        #[cfg(feature = "extra-children")]
27945        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27946            extra_iter
27947                .next()
27948                .unwrap()
27949                .node
27950                .write_to(writer)
27951                .map_err(SerializeError::from)?;
27952        }
27953        #[cfg(feature = "dml-charts")]
27954        if let Some(ref val) = self.major_gridlines {
27955            val.write_element("a:majorGridlines", writer)?;
27956        }
27957        #[cfg(feature = "extra-children")]
27958        {
27959            emit_idx += 1;
27960        }
27961        #[cfg(feature = "extra-children")]
27962        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27963            extra_iter
27964                .next()
27965                .unwrap()
27966                .node
27967                .write_to(writer)
27968                .map_err(SerializeError::from)?;
27969        }
27970        #[cfg(feature = "dml-charts")]
27971        if let Some(ref val) = self.minor_gridlines {
27972            val.write_element("a:minorGridlines", writer)?;
27973        }
27974        #[cfg(feature = "extra-children")]
27975        {
27976            emit_idx += 1;
27977        }
27978        #[cfg(feature = "extra-children")]
27979        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27980            extra_iter
27981                .next()
27982                .unwrap()
27983                .node
27984                .write_to(writer)
27985                .map_err(SerializeError::from)?;
27986        }
27987        #[cfg(feature = "dml-charts")]
27988        if let Some(ref val) = self.title {
27989            val.write_element("a:title", writer)?;
27990        }
27991        #[cfg(feature = "extra-children")]
27992        {
27993            emit_idx += 1;
27994        }
27995        #[cfg(feature = "extra-children")]
27996        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
27997            extra_iter
27998                .next()
27999                .unwrap()
28000                .node
28001                .write_to(writer)
28002                .map_err(SerializeError::from)?;
28003        }
28004        #[cfg(feature = "dml-charts")]
28005        if let Some(ref val) = self.num_fmt {
28006            val.write_element("a:numFmt", writer)?;
28007        }
28008        #[cfg(feature = "extra-children")]
28009        {
28010            emit_idx += 1;
28011        }
28012        #[cfg(feature = "extra-children")]
28013        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28014            extra_iter
28015                .next()
28016                .unwrap()
28017                .node
28018                .write_to(writer)
28019                .map_err(SerializeError::from)?;
28020        }
28021        #[cfg(feature = "dml-charts")]
28022        if let Some(ref val) = self.major_tick_mark {
28023            val.write_element("a:majorTickMark", writer)?;
28024        }
28025        #[cfg(feature = "extra-children")]
28026        {
28027            emit_idx += 1;
28028        }
28029        #[cfg(feature = "extra-children")]
28030        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28031            extra_iter
28032                .next()
28033                .unwrap()
28034                .node
28035                .write_to(writer)
28036                .map_err(SerializeError::from)?;
28037        }
28038        #[cfg(feature = "dml-charts")]
28039        if let Some(ref val) = self.minor_tick_mark {
28040            val.write_element("a:minorTickMark", writer)?;
28041        }
28042        #[cfg(feature = "extra-children")]
28043        {
28044            emit_idx += 1;
28045        }
28046        #[cfg(feature = "extra-children")]
28047        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28048            extra_iter
28049                .next()
28050                .unwrap()
28051                .node
28052                .write_to(writer)
28053                .map_err(SerializeError::from)?;
28054        }
28055        #[cfg(feature = "dml-charts")]
28056        if let Some(ref val) = self.tick_lbl_pos {
28057            val.write_element("a:tickLblPos", writer)?;
28058        }
28059        #[cfg(feature = "extra-children")]
28060        {
28061            emit_idx += 1;
28062        }
28063        #[cfg(feature = "extra-children")]
28064        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28065            extra_iter
28066                .next()
28067                .unwrap()
28068                .node
28069                .write_to(writer)
28070                .map_err(SerializeError::from)?;
28071        }
28072        #[cfg(feature = "dml-charts")]
28073        if let Some(ref val) = self.sp_pr {
28074            val.write_element("a:spPr", writer)?;
28075        }
28076        #[cfg(feature = "extra-children")]
28077        {
28078            emit_idx += 1;
28079        }
28080        #[cfg(feature = "extra-children")]
28081        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28082            extra_iter
28083                .next()
28084                .unwrap()
28085                .node
28086                .write_to(writer)
28087                .map_err(SerializeError::from)?;
28088        }
28089        #[cfg(feature = "dml-charts")]
28090        if let Some(ref val) = self.tx_pr {
28091            val.write_element("a:txPr", writer)?;
28092        }
28093        #[cfg(feature = "extra-children")]
28094        {
28095            emit_idx += 1;
28096        }
28097        #[cfg(feature = "extra-children")]
28098        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28099            extra_iter
28100                .next()
28101                .unwrap()
28102                .node
28103                .write_to(writer)
28104                .map_err(SerializeError::from)?;
28105        }
28106        #[cfg(feature = "dml-charts")]
28107        {
28108            let val = &self.cross_ax;
28109            val.write_element("a:crossAx", writer)?;
28110        }
28111        #[cfg(feature = "extra-children")]
28112        {
28113            emit_idx += 1;
28114        }
28115        #[cfg(feature = "extra-children")]
28116        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28117            extra_iter
28118                .next()
28119                .unwrap()
28120                .node
28121                .write_to(writer)
28122                .map_err(SerializeError::from)?;
28123        }
28124        #[cfg(feature = "dml-charts")]
28125        if let Some(ref val) = self.crosses {
28126            val.write_element("a:crosses", writer)?;
28127        }
28128        #[cfg(feature = "extra-children")]
28129        {
28130            emit_idx += 1;
28131        }
28132        #[cfg(feature = "extra-children")]
28133        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28134            extra_iter
28135                .next()
28136                .unwrap()
28137                .node
28138                .write_to(writer)
28139                .map_err(SerializeError::from)?;
28140        }
28141        #[cfg(feature = "dml-charts")]
28142        if let Some(ref val) = self.crosses_at {
28143            val.write_element("a:crossesAt", writer)?;
28144        }
28145        #[cfg(feature = "extra-children")]
28146        {
28147            emit_idx += 1;
28148        }
28149        #[cfg(feature = "extra-children")]
28150        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28151            extra_iter
28152                .next()
28153                .unwrap()
28154                .node
28155                .write_to(writer)
28156                .map_err(SerializeError::from)?;
28157        }
28158        #[cfg(feature = "dml-charts")]
28159        if let Some(ref val) = self.auto {
28160            val.write_element("a:auto", writer)?;
28161        }
28162        #[cfg(feature = "extra-children")]
28163        {
28164            emit_idx += 1;
28165        }
28166        #[cfg(feature = "extra-children")]
28167        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28168            extra_iter
28169                .next()
28170                .unwrap()
28171                .node
28172                .write_to(writer)
28173                .map_err(SerializeError::from)?;
28174        }
28175        #[cfg(feature = "dml-charts")]
28176        if let Some(ref val) = self.lbl_offset {
28177            val.write_element("a:lblOffset", writer)?;
28178        }
28179        #[cfg(feature = "extra-children")]
28180        {
28181            emit_idx += 1;
28182        }
28183        #[cfg(feature = "extra-children")]
28184        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28185            extra_iter
28186                .next()
28187                .unwrap()
28188                .node
28189                .write_to(writer)
28190                .map_err(SerializeError::from)?;
28191        }
28192        #[cfg(feature = "dml-charts")]
28193        if let Some(ref val) = self.base_time_unit {
28194            val.write_element("a:baseTimeUnit", writer)?;
28195        }
28196        #[cfg(feature = "extra-children")]
28197        {
28198            emit_idx += 1;
28199        }
28200        #[cfg(feature = "extra-children")]
28201        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28202            extra_iter
28203                .next()
28204                .unwrap()
28205                .node
28206                .write_to(writer)
28207                .map_err(SerializeError::from)?;
28208        }
28209        #[cfg(feature = "dml-charts")]
28210        if let Some(ref val) = self.major_unit {
28211            val.write_element("a:majorUnit", writer)?;
28212        }
28213        #[cfg(feature = "extra-children")]
28214        {
28215            emit_idx += 1;
28216        }
28217        #[cfg(feature = "extra-children")]
28218        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28219            extra_iter
28220                .next()
28221                .unwrap()
28222                .node
28223                .write_to(writer)
28224                .map_err(SerializeError::from)?;
28225        }
28226        #[cfg(feature = "dml-charts")]
28227        if let Some(ref val) = self.major_time_unit {
28228            val.write_element("a:majorTimeUnit", writer)?;
28229        }
28230        #[cfg(feature = "extra-children")]
28231        {
28232            emit_idx += 1;
28233        }
28234        #[cfg(feature = "extra-children")]
28235        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28236            extra_iter
28237                .next()
28238                .unwrap()
28239                .node
28240                .write_to(writer)
28241                .map_err(SerializeError::from)?;
28242        }
28243        #[cfg(feature = "dml-charts")]
28244        if let Some(ref val) = self.minor_unit {
28245            val.write_element("a:minorUnit", writer)?;
28246        }
28247        #[cfg(feature = "extra-children")]
28248        {
28249            emit_idx += 1;
28250        }
28251        #[cfg(feature = "extra-children")]
28252        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28253            extra_iter
28254                .next()
28255                .unwrap()
28256                .node
28257                .write_to(writer)
28258                .map_err(SerializeError::from)?;
28259        }
28260        #[cfg(feature = "dml-charts")]
28261        if let Some(ref val) = self.minor_time_unit {
28262            val.write_element("a:minorTimeUnit", writer)?;
28263        }
28264        #[cfg(feature = "extra-children")]
28265        {
28266            emit_idx += 1;
28267        }
28268        #[cfg(feature = "extra-children")]
28269        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28270            extra_iter
28271                .next()
28272                .unwrap()
28273                .node
28274                .write_to(writer)
28275                .map_err(SerializeError::from)?;
28276        }
28277        #[cfg(feature = "dml-charts")]
28278        if let Some(ref val) = self.ext_lst {
28279            val.write_element("a:extLst", writer)?;
28280        }
28281        #[cfg(feature = "extra-children")]
28282        {
28283            emit_idx += 1;
28284        }
28285        #[cfg(feature = "extra-children")]
28286        for extra in extra_iter {
28287            extra.node.write_to(writer).map_err(SerializeError::from)?;
28288        }
28289        Ok(())
28290    }
28291
28292    fn is_empty_element(&self) -> bool {
28293        #[cfg(feature = "dml-charts")]
28294        return false;
28295        #[cfg(feature = "dml-charts")]
28296        return false;
28297        #[cfg(feature = "dml-charts")]
28298        if self.delete.is_some() {
28299            return false;
28300        }
28301        #[cfg(feature = "dml-charts")]
28302        return false;
28303        #[cfg(feature = "dml-charts")]
28304        if self.major_gridlines.is_some() {
28305            return false;
28306        }
28307        #[cfg(feature = "dml-charts")]
28308        if self.minor_gridlines.is_some() {
28309            return false;
28310        }
28311        #[cfg(feature = "dml-charts")]
28312        if self.title.is_some() {
28313            return false;
28314        }
28315        #[cfg(feature = "dml-charts")]
28316        if self.num_fmt.is_some() {
28317            return false;
28318        }
28319        #[cfg(feature = "dml-charts")]
28320        if self.major_tick_mark.is_some() {
28321            return false;
28322        }
28323        #[cfg(feature = "dml-charts")]
28324        if self.minor_tick_mark.is_some() {
28325            return false;
28326        }
28327        #[cfg(feature = "dml-charts")]
28328        if self.tick_lbl_pos.is_some() {
28329            return false;
28330        }
28331        #[cfg(feature = "dml-charts")]
28332        if self.sp_pr.is_some() {
28333            return false;
28334        }
28335        #[cfg(feature = "dml-charts")]
28336        if self.tx_pr.is_some() {
28337            return false;
28338        }
28339        #[cfg(feature = "dml-charts")]
28340        return false;
28341        #[cfg(feature = "dml-charts")]
28342        if self.crosses.is_some() {
28343            return false;
28344        }
28345        #[cfg(feature = "dml-charts")]
28346        if self.crosses_at.is_some() {
28347            return false;
28348        }
28349        #[cfg(feature = "dml-charts")]
28350        if self.auto.is_some() {
28351            return false;
28352        }
28353        #[cfg(feature = "dml-charts")]
28354        if self.lbl_offset.is_some() {
28355            return false;
28356        }
28357        #[cfg(feature = "dml-charts")]
28358        if self.base_time_unit.is_some() {
28359            return false;
28360        }
28361        #[cfg(feature = "dml-charts")]
28362        if self.major_unit.is_some() {
28363            return false;
28364        }
28365        #[cfg(feature = "dml-charts")]
28366        if self.major_time_unit.is_some() {
28367            return false;
28368        }
28369        #[cfg(feature = "dml-charts")]
28370        if self.minor_unit.is_some() {
28371            return false;
28372        }
28373        #[cfg(feature = "dml-charts")]
28374        if self.minor_time_unit.is_some() {
28375            return false;
28376        }
28377        #[cfg(feature = "dml-charts")]
28378        if self.ext_lst.is_some() {
28379            return false;
28380        }
28381        #[cfg(feature = "extra-children")]
28382        if !self.extra_children.is_empty() {
28383            return false;
28384        }
28385        true
28386    }
28387}
28388
28389impl ToXml for SeriesAxis {
28390    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
28391        #[cfg(feature = "extra-children")]
28392        let mut extra_iter = self.extra_children.iter().peekable();
28393        #[cfg(feature = "extra-children")]
28394        let mut emit_idx: usize = 0;
28395        #[cfg(feature = "extra-children")]
28396        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28397            extra_iter
28398                .next()
28399                .unwrap()
28400                .node
28401                .write_to(writer)
28402                .map_err(SerializeError::from)?;
28403        }
28404        #[cfg(feature = "dml-charts")]
28405        {
28406            let val = &self.ax_id;
28407            val.write_element("a:axId", writer)?;
28408        }
28409        #[cfg(feature = "extra-children")]
28410        {
28411            emit_idx += 1;
28412        }
28413        #[cfg(feature = "extra-children")]
28414        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28415            extra_iter
28416                .next()
28417                .unwrap()
28418                .node
28419                .write_to(writer)
28420                .map_err(SerializeError::from)?;
28421        }
28422        #[cfg(feature = "dml-charts")]
28423        {
28424            let val = &self.scaling;
28425            val.write_element("a:scaling", writer)?;
28426        }
28427        #[cfg(feature = "extra-children")]
28428        {
28429            emit_idx += 1;
28430        }
28431        #[cfg(feature = "extra-children")]
28432        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28433            extra_iter
28434                .next()
28435                .unwrap()
28436                .node
28437                .write_to(writer)
28438                .map_err(SerializeError::from)?;
28439        }
28440        #[cfg(feature = "dml-charts")]
28441        if let Some(ref val) = self.delete {
28442            val.write_element("a:delete", writer)?;
28443        }
28444        #[cfg(feature = "extra-children")]
28445        {
28446            emit_idx += 1;
28447        }
28448        #[cfg(feature = "extra-children")]
28449        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28450            extra_iter
28451                .next()
28452                .unwrap()
28453                .node
28454                .write_to(writer)
28455                .map_err(SerializeError::from)?;
28456        }
28457        #[cfg(feature = "dml-charts")]
28458        {
28459            let val = &self.ax_pos;
28460            val.write_element("a:axPos", writer)?;
28461        }
28462        #[cfg(feature = "extra-children")]
28463        {
28464            emit_idx += 1;
28465        }
28466        #[cfg(feature = "extra-children")]
28467        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28468            extra_iter
28469                .next()
28470                .unwrap()
28471                .node
28472                .write_to(writer)
28473                .map_err(SerializeError::from)?;
28474        }
28475        #[cfg(feature = "dml-charts")]
28476        if let Some(ref val) = self.major_gridlines {
28477            val.write_element("a:majorGridlines", writer)?;
28478        }
28479        #[cfg(feature = "extra-children")]
28480        {
28481            emit_idx += 1;
28482        }
28483        #[cfg(feature = "extra-children")]
28484        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28485            extra_iter
28486                .next()
28487                .unwrap()
28488                .node
28489                .write_to(writer)
28490                .map_err(SerializeError::from)?;
28491        }
28492        #[cfg(feature = "dml-charts")]
28493        if let Some(ref val) = self.minor_gridlines {
28494            val.write_element("a:minorGridlines", writer)?;
28495        }
28496        #[cfg(feature = "extra-children")]
28497        {
28498            emit_idx += 1;
28499        }
28500        #[cfg(feature = "extra-children")]
28501        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28502            extra_iter
28503                .next()
28504                .unwrap()
28505                .node
28506                .write_to(writer)
28507                .map_err(SerializeError::from)?;
28508        }
28509        #[cfg(feature = "dml-charts")]
28510        if let Some(ref val) = self.title {
28511            val.write_element("a:title", writer)?;
28512        }
28513        #[cfg(feature = "extra-children")]
28514        {
28515            emit_idx += 1;
28516        }
28517        #[cfg(feature = "extra-children")]
28518        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28519            extra_iter
28520                .next()
28521                .unwrap()
28522                .node
28523                .write_to(writer)
28524                .map_err(SerializeError::from)?;
28525        }
28526        #[cfg(feature = "dml-charts")]
28527        if let Some(ref val) = self.num_fmt {
28528            val.write_element("a:numFmt", writer)?;
28529        }
28530        #[cfg(feature = "extra-children")]
28531        {
28532            emit_idx += 1;
28533        }
28534        #[cfg(feature = "extra-children")]
28535        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28536            extra_iter
28537                .next()
28538                .unwrap()
28539                .node
28540                .write_to(writer)
28541                .map_err(SerializeError::from)?;
28542        }
28543        #[cfg(feature = "dml-charts")]
28544        if let Some(ref val) = self.major_tick_mark {
28545            val.write_element("a:majorTickMark", writer)?;
28546        }
28547        #[cfg(feature = "extra-children")]
28548        {
28549            emit_idx += 1;
28550        }
28551        #[cfg(feature = "extra-children")]
28552        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28553            extra_iter
28554                .next()
28555                .unwrap()
28556                .node
28557                .write_to(writer)
28558                .map_err(SerializeError::from)?;
28559        }
28560        #[cfg(feature = "dml-charts")]
28561        if let Some(ref val) = self.minor_tick_mark {
28562            val.write_element("a:minorTickMark", writer)?;
28563        }
28564        #[cfg(feature = "extra-children")]
28565        {
28566            emit_idx += 1;
28567        }
28568        #[cfg(feature = "extra-children")]
28569        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28570            extra_iter
28571                .next()
28572                .unwrap()
28573                .node
28574                .write_to(writer)
28575                .map_err(SerializeError::from)?;
28576        }
28577        #[cfg(feature = "dml-charts")]
28578        if let Some(ref val) = self.tick_lbl_pos {
28579            val.write_element("a:tickLblPos", writer)?;
28580        }
28581        #[cfg(feature = "extra-children")]
28582        {
28583            emit_idx += 1;
28584        }
28585        #[cfg(feature = "extra-children")]
28586        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28587            extra_iter
28588                .next()
28589                .unwrap()
28590                .node
28591                .write_to(writer)
28592                .map_err(SerializeError::from)?;
28593        }
28594        #[cfg(feature = "dml-charts")]
28595        if let Some(ref val) = self.sp_pr {
28596            val.write_element("a:spPr", writer)?;
28597        }
28598        #[cfg(feature = "extra-children")]
28599        {
28600            emit_idx += 1;
28601        }
28602        #[cfg(feature = "extra-children")]
28603        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28604            extra_iter
28605                .next()
28606                .unwrap()
28607                .node
28608                .write_to(writer)
28609                .map_err(SerializeError::from)?;
28610        }
28611        #[cfg(feature = "dml-charts")]
28612        if let Some(ref val) = self.tx_pr {
28613            val.write_element("a:txPr", writer)?;
28614        }
28615        #[cfg(feature = "extra-children")]
28616        {
28617            emit_idx += 1;
28618        }
28619        #[cfg(feature = "extra-children")]
28620        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28621            extra_iter
28622                .next()
28623                .unwrap()
28624                .node
28625                .write_to(writer)
28626                .map_err(SerializeError::from)?;
28627        }
28628        #[cfg(feature = "dml-charts")]
28629        {
28630            let val = &self.cross_ax;
28631            val.write_element("a:crossAx", writer)?;
28632        }
28633        #[cfg(feature = "extra-children")]
28634        {
28635            emit_idx += 1;
28636        }
28637        #[cfg(feature = "extra-children")]
28638        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28639            extra_iter
28640                .next()
28641                .unwrap()
28642                .node
28643                .write_to(writer)
28644                .map_err(SerializeError::from)?;
28645        }
28646        #[cfg(feature = "dml-charts")]
28647        if let Some(ref val) = self.crosses {
28648            val.write_element("a:crosses", writer)?;
28649        }
28650        #[cfg(feature = "extra-children")]
28651        {
28652            emit_idx += 1;
28653        }
28654        #[cfg(feature = "extra-children")]
28655        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28656            extra_iter
28657                .next()
28658                .unwrap()
28659                .node
28660                .write_to(writer)
28661                .map_err(SerializeError::from)?;
28662        }
28663        #[cfg(feature = "dml-charts")]
28664        if let Some(ref val) = self.crosses_at {
28665            val.write_element("a:crossesAt", writer)?;
28666        }
28667        #[cfg(feature = "extra-children")]
28668        {
28669            emit_idx += 1;
28670        }
28671        #[cfg(feature = "extra-children")]
28672        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28673            extra_iter
28674                .next()
28675                .unwrap()
28676                .node
28677                .write_to(writer)
28678                .map_err(SerializeError::from)?;
28679        }
28680        #[cfg(feature = "dml-charts")]
28681        if let Some(ref val) = self.tick_lbl_skip {
28682            val.write_element("a:tickLblSkip", writer)?;
28683        }
28684        #[cfg(feature = "extra-children")]
28685        {
28686            emit_idx += 1;
28687        }
28688        #[cfg(feature = "extra-children")]
28689        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28690            extra_iter
28691                .next()
28692                .unwrap()
28693                .node
28694                .write_to(writer)
28695                .map_err(SerializeError::from)?;
28696        }
28697        #[cfg(feature = "dml-charts")]
28698        if let Some(ref val) = self.tick_mark_skip {
28699            val.write_element("a:tickMarkSkip", writer)?;
28700        }
28701        #[cfg(feature = "extra-children")]
28702        {
28703            emit_idx += 1;
28704        }
28705        #[cfg(feature = "extra-children")]
28706        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28707            extra_iter
28708                .next()
28709                .unwrap()
28710                .node
28711                .write_to(writer)
28712                .map_err(SerializeError::from)?;
28713        }
28714        #[cfg(feature = "dml-charts")]
28715        if let Some(ref val) = self.ext_lst {
28716            val.write_element("a:extLst", writer)?;
28717        }
28718        #[cfg(feature = "extra-children")]
28719        {
28720            emit_idx += 1;
28721        }
28722        #[cfg(feature = "extra-children")]
28723        for extra in extra_iter {
28724            extra.node.write_to(writer).map_err(SerializeError::from)?;
28725        }
28726        Ok(())
28727    }
28728
28729    fn is_empty_element(&self) -> bool {
28730        #[cfg(feature = "dml-charts")]
28731        return false;
28732        #[cfg(feature = "dml-charts")]
28733        return false;
28734        #[cfg(feature = "dml-charts")]
28735        if self.delete.is_some() {
28736            return false;
28737        }
28738        #[cfg(feature = "dml-charts")]
28739        return false;
28740        #[cfg(feature = "dml-charts")]
28741        if self.major_gridlines.is_some() {
28742            return false;
28743        }
28744        #[cfg(feature = "dml-charts")]
28745        if self.minor_gridlines.is_some() {
28746            return false;
28747        }
28748        #[cfg(feature = "dml-charts")]
28749        if self.title.is_some() {
28750            return false;
28751        }
28752        #[cfg(feature = "dml-charts")]
28753        if self.num_fmt.is_some() {
28754            return false;
28755        }
28756        #[cfg(feature = "dml-charts")]
28757        if self.major_tick_mark.is_some() {
28758            return false;
28759        }
28760        #[cfg(feature = "dml-charts")]
28761        if self.minor_tick_mark.is_some() {
28762            return false;
28763        }
28764        #[cfg(feature = "dml-charts")]
28765        if self.tick_lbl_pos.is_some() {
28766            return false;
28767        }
28768        #[cfg(feature = "dml-charts")]
28769        if self.sp_pr.is_some() {
28770            return false;
28771        }
28772        #[cfg(feature = "dml-charts")]
28773        if self.tx_pr.is_some() {
28774            return false;
28775        }
28776        #[cfg(feature = "dml-charts")]
28777        return false;
28778        #[cfg(feature = "dml-charts")]
28779        if self.crosses.is_some() {
28780            return false;
28781        }
28782        #[cfg(feature = "dml-charts")]
28783        if self.crosses_at.is_some() {
28784            return false;
28785        }
28786        #[cfg(feature = "dml-charts")]
28787        if self.tick_lbl_skip.is_some() {
28788            return false;
28789        }
28790        #[cfg(feature = "dml-charts")]
28791        if self.tick_mark_skip.is_some() {
28792            return false;
28793        }
28794        #[cfg(feature = "dml-charts")]
28795        if self.ext_lst.is_some() {
28796            return false;
28797        }
28798        #[cfg(feature = "extra-children")]
28799        if !self.extra_children.is_empty() {
28800            return false;
28801        }
28802        true
28803    }
28804}
28805
28806impl ToXml for ValueAxis {
28807    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
28808        #[cfg(feature = "extra-children")]
28809        let mut extra_iter = self.extra_children.iter().peekable();
28810        #[cfg(feature = "extra-children")]
28811        let mut emit_idx: usize = 0;
28812        #[cfg(feature = "extra-children")]
28813        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28814            extra_iter
28815                .next()
28816                .unwrap()
28817                .node
28818                .write_to(writer)
28819                .map_err(SerializeError::from)?;
28820        }
28821        #[cfg(feature = "dml-charts")]
28822        {
28823            let val = &self.ax_id;
28824            val.write_element("a:axId", writer)?;
28825        }
28826        #[cfg(feature = "extra-children")]
28827        {
28828            emit_idx += 1;
28829        }
28830        #[cfg(feature = "extra-children")]
28831        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28832            extra_iter
28833                .next()
28834                .unwrap()
28835                .node
28836                .write_to(writer)
28837                .map_err(SerializeError::from)?;
28838        }
28839        #[cfg(feature = "dml-charts")]
28840        {
28841            let val = &self.scaling;
28842            val.write_element("a:scaling", writer)?;
28843        }
28844        #[cfg(feature = "extra-children")]
28845        {
28846            emit_idx += 1;
28847        }
28848        #[cfg(feature = "extra-children")]
28849        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28850            extra_iter
28851                .next()
28852                .unwrap()
28853                .node
28854                .write_to(writer)
28855                .map_err(SerializeError::from)?;
28856        }
28857        #[cfg(feature = "dml-charts")]
28858        if let Some(ref val) = self.delete {
28859            val.write_element("a:delete", writer)?;
28860        }
28861        #[cfg(feature = "extra-children")]
28862        {
28863            emit_idx += 1;
28864        }
28865        #[cfg(feature = "extra-children")]
28866        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28867            extra_iter
28868                .next()
28869                .unwrap()
28870                .node
28871                .write_to(writer)
28872                .map_err(SerializeError::from)?;
28873        }
28874        #[cfg(feature = "dml-charts")]
28875        {
28876            let val = &self.ax_pos;
28877            val.write_element("a:axPos", writer)?;
28878        }
28879        #[cfg(feature = "extra-children")]
28880        {
28881            emit_idx += 1;
28882        }
28883        #[cfg(feature = "extra-children")]
28884        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28885            extra_iter
28886                .next()
28887                .unwrap()
28888                .node
28889                .write_to(writer)
28890                .map_err(SerializeError::from)?;
28891        }
28892        #[cfg(feature = "dml-charts")]
28893        if let Some(ref val) = self.major_gridlines {
28894            val.write_element("a:majorGridlines", writer)?;
28895        }
28896        #[cfg(feature = "extra-children")]
28897        {
28898            emit_idx += 1;
28899        }
28900        #[cfg(feature = "extra-children")]
28901        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28902            extra_iter
28903                .next()
28904                .unwrap()
28905                .node
28906                .write_to(writer)
28907                .map_err(SerializeError::from)?;
28908        }
28909        #[cfg(feature = "dml-charts")]
28910        if let Some(ref val) = self.minor_gridlines {
28911            val.write_element("a:minorGridlines", writer)?;
28912        }
28913        #[cfg(feature = "extra-children")]
28914        {
28915            emit_idx += 1;
28916        }
28917        #[cfg(feature = "extra-children")]
28918        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28919            extra_iter
28920                .next()
28921                .unwrap()
28922                .node
28923                .write_to(writer)
28924                .map_err(SerializeError::from)?;
28925        }
28926        #[cfg(feature = "dml-charts")]
28927        if let Some(ref val) = self.title {
28928            val.write_element("a:title", writer)?;
28929        }
28930        #[cfg(feature = "extra-children")]
28931        {
28932            emit_idx += 1;
28933        }
28934        #[cfg(feature = "extra-children")]
28935        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28936            extra_iter
28937                .next()
28938                .unwrap()
28939                .node
28940                .write_to(writer)
28941                .map_err(SerializeError::from)?;
28942        }
28943        #[cfg(feature = "dml-charts")]
28944        if let Some(ref val) = self.num_fmt {
28945            val.write_element("a:numFmt", writer)?;
28946        }
28947        #[cfg(feature = "extra-children")]
28948        {
28949            emit_idx += 1;
28950        }
28951        #[cfg(feature = "extra-children")]
28952        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28953            extra_iter
28954                .next()
28955                .unwrap()
28956                .node
28957                .write_to(writer)
28958                .map_err(SerializeError::from)?;
28959        }
28960        #[cfg(feature = "dml-charts")]
28961        if let Some(ref val) = self.major_tick_mark {
28962            val.write_element("a:majorTickMark", writer)?;
28963        }
28964        #[cfg(feature = "extra-children")]
28965        {
28966            emit_idx += 1;
28967        }
28968        #[cfg(feature = "extra-children")]
28969        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28970            extra_iter
28971                .next()
28972                .unwrap()
28973                .node
28974                .write_to(writer)
28975                .map_err(SerializeError::from)?;
28976        }
28977        #[cfg(feature = "dml-charts")]
28978        if let Some(ref val) = self.minor_tick_mark {
28979            val.write_element("a:minorTickMark", writer)?;
28980        }
28981        #[cfg(feature = "extra-children")]
28982        {
28983            emit_idx += 1;
28984        }
28985        #[cfg(feature = "extra-children")]
28986        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
28987            extra_iter
28988                .next()
28989                .unwrap()
28990                .node
28991                .write_to(writer)
28992                .map_err(SerializeError::from)?;
28993        }
28994        #[cfg(feature = "dml-charts")]
28995        if let Some(ref val) = self.tick_lbl_pos {
28996            val.write_element("a:tickLblPos", writer)?;
28997        }
28998        #[cfg(feature = "extra-children")]
28999        {
29000            emit_idx += 1;
29001        }
29002        #[cfg(feature = "extra-children")]
29003        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29004            extra_iter
29005                .next()
29006                .unwrap()
29007                .node
29008                .write_to(writer)
29009                .map_err(SerializeError::from)?;
29010        }
29011        #[cfg(feature = "dml-charts")]
29012        if let Some(ref val) = self.sp_pr {
29013            val.write_element("a:spPr", writer)?;
29014        }
29015        #[cfg(feature = "extra-children")]
29016        {
29017            emit_idx += 1;
29018        }
29019        #[cfg(feature = "extra-children")]
29020        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29021            extra_iter
29022                .next()
29023                .unwrap()
29024                .node
29025                .write_to(writer)
29026                .map_err(SerializeError::from)?;
29027        }
29028        #[cfg(feature = "dml-charts")]
29029        if let Some(ref val) = self.tx_pr {
29030            val.write_element("a:txPr", writer)?;
29031        }
29032        #[cfg(feature = "extra-children")]
29033        {
29034            emit_idx += 1;
29035        }
29036        #[cfg(feature = "extra-children")]
29037        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29038            extra_iter
29039                .next()
29040                .unwrap()
29041                .node
29042                .write_to(writer)
29043                .map_err(SerializeError::from)?;
29044        }
29045        #[cfg(feature = "dml-charts")]
29046        {
29047            let val = &self.cross_ax;
29048            val.write_element("a:crossAx", writer)?;
29049        }
29050        #[cfg(feature = "extra-children")]
29051        {
29052            emit_idx += 1;
29053        }
29054        #[cfg(feature = "extra-children")]
29055        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29056            extra_iter
29057                .next()
29058                .unwrap()
29059                .node
29060                .write_to(writer)
29061                .map_err(SerializeError::from)?;
29062        }
29063        #[cfg(feature = "dml-charts")]
29064        if let Some(ref val) = self.crosses {
29065            val.write_element("a:crosses", writer)?;
29066        }
29067        #[cfg(feature = "extra-children")]
29068        {
29069            emit_idx += 1;
29070        }
29071        #[cfg(feature = "extra-children")]
29072        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29073            extra_iter
29074                .next()
29075                .unwrap()
29076                .node
29077                .write_to(writer)
29078                .map_err(SerializeError::from)?;
29079        }
29080        #[cfg(feature = "dml-charts")]
29081        if let Some(ref val) = self.crosses_at {
29082            val.write_element("a:crossesAt", writer)?;
29083        }
29084        #[cfg(feature = "extra-children")]
29085        {
29086            emit_idx += 1;
29087        }
29088        #[cfg(feature = "extra-children")]
29089        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29090            extra_iter
29091                .next()
29092                .unwrap()
29093                .node
29094                .write_to(writer)
29095                .map_err(SerializeError::from)?;
29096        }
29097        #[cfg(feature = "dml-charts")]
29098        if let Some(ref val) = self.cross_between {
29099            val.write_element("a:crossBetween", writer)?;
29100        }
29101        #[cfg(feature = "extra-children")]
29102        {
29103            emit_idx += 1;
29104        }
29105        #[cfg(feature = "extra-children")]
29106        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29107            extra_iter
29108                .next()
29109                .unwrap()
29110                .node
29111                .write_to(writer)
29112                .map_err(SerializeError::from)?;
29113        }
29114        #[cfg(feature = "dml-charts")]
29115        if let Some(ref val) = self.major_unit {
29116            val.write_element("a:majorUnit", writer)?;
29117        }
29118        #[cfg(feature = "extra-children")]
29119        {
29120            emit_idx += 1;
29121        }
29122        #[cfg(feature = "extra-children")]
29123        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29124            extra_iter
29125                .next()
29126                .unwrap()
29127                .node
29128                .write_to(writer)
29129                .map_err(SerializeError::from)?;
29130        }
29131        #[cfg(feature = "dml-charts")]
29132        if let Some(ref val) = self.minor_unit {
29133            val.write_element("a:minorUnit", writer)?;
29134        }
29135        #[cfg(feature = "extra-children")]
29136        {
29137            emit_idx += 1;
29138        }
29139        #[cfg(feature = "extra-children")]
29140        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29141            extra_iter
29142                .next()
29143                .unwrap()
29144                .node
29145                .write_to(writer)
29146                .map_err(SerializeError::from)?;
29147        }
29148        #[cfg(feature = "dml-charts")]
29149        if let Some(ref val) = self.disp_units {
29150            val.write_element("a:dispUnits", writer)?;
29151        }
29152        #[cfg(feature = "extra-children")]
29153        {
29154            emit_idx += 1;
29155        }
29156        #[cfg(feature = "extra-children")]
29157        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29158            extra_iter
29159                .next()
29160                .unwrap()
29161                .node
29162                .write_to(writer)
29163                .map_err(SerializeError::from)?;
29164        }
29165        #[cfg(feature = "dml-charts")]
29166        if let Some(ref val) = self.ext_lst {
29167            val.write_element("a:extLst", writer)?;
29168        }
29169        #[cfg(feature = "extra-children")]
29170        {
29171            emit_idx += 1;
29172        }
29173        #[cfg(feature = "extra-children")]
29174        for extra in extra_iter {
29175            extra.node.write_to(writer).map_err(SerializeError::from)?;
29176        }
29177        Ok(())
29178    }
29179
29180    fn is_empty_element(&self) -> bool {
29181        #[cfg(feature = "dml-charts")]
29182        return false;
29183        #[cfg(feature = "dml-charts")]
29184        return false;
29185        #[cfg(feature = "dml-charts")]
29186        if self.delete.is_some() {
29187            return false;
29188        }
29189        #[cfg(feature = "dml-charts")]
29190        return false;
29191        #[cfg(feature = "dml-charts")]
29192        if self.major_gridlines.is_some() {
29193            return false;
29194        }
29195        #[cfg(feature = "dml-charts")]
29196        if self.minor_gridlines.is_some() {
29197            return false;
29198        }
29199        #[cfg(feature = "dml-charts")]
29200        if self.title.is_some() {
29201            return false;
29202        }
29203        #[cfg(feature = "dml-charts")]
29204        if self.num_fmt.is_some() {
29205            return false;
29206        }
29207        #[cfg(feature = "dml-charts")]
29208        if self.major_tick_mark.is_some() {
29209            return false;
29210        }
29211        #[cfg(feature = "dml-charts")]
29212        if self.minor_tick_mark.is_some() {
29213            return false;
29214        }
29215        #[cfg(feature = "dml-charts")]
29216        if self.tick_lbl_pos.is_some() {
29217            return false;
29218        }
29219        #[cfg(feature = "dml-charts")]
29220        if self.sp_pr.is_some() {
29221            return false;
29222        }
29223        #[cfg(feature = "dml-charts")]
29224        if self.tx_pr.is_some() {
29225            return false;
29226        }
29227        #[cfg(feature = "dml-charts")]
29228        return false;
29229        #[cfg(feature = "dml-charts")]
29230        if self.crosses.is_some() {
29231            return false;
29232        }
29233        #[cfg(feature = "dml-charts")]
29234        if self.crosses_at.is_some() {
29235            return false;
29236        }
29237        #[cfg(feature = "dml-charts")]
29238        if self.cross_between.is_some() {
29239            return false;
29240        }
29241        #[cfg(feature = "dml-charts")]
29242        if self.major_unit.is_some() {
29243            return false;
29244        }
29245        #[cfg(feature = "dml-charts")]
29246        if self.minor_unit.is_some() {
29247            return false;
29248        }
29249        #[cfg(feature = "dml-charts")]
29250        if self.disp_units.is_some() {
29251            return false;
29252        }
29253        #[cfg(feature = "dml-charts")]
29254        if self.ext_lst.is_some() {
29255            return false;
29256        }
29257        #[cfg(feature = "extra-children")]
29258        if !self.extra_children.is_empty() {
29259            return false;
29260        }
29261        true
29262    }
29263}
29264
29265impl ToXml for PlotArea {
29266    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
29267        #[cfg(feature = "extra-children")]
29268        let mut extra_iter = self.extra_children.iter().peekable();
29269        #[cfg(feature = "extra-children")]
29270        let mut emit_idx: usize = 0;
29271        #[cfg(feature = "extra-children")]
29272        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29273            extra_iter
29274                .next()
29275                .unwrap()
29276                .node
29277                .write_to(writer)
29278                .map_err(SerializeError::from)?;
29279        }
29280        #[cfg(feature = "dml-charts")]
29281        if let Some(ref val) = self.layout {
29282            val.write_element("a:layout", writer)?;
29283        }
29284        #[cfg(feature = "extra-children")]
29285        {
29286            emit_idx += 1;
29287        }
29288        #[cfg(feature = "dml-charts")]
29289        for item in &self.area_chart {
29290            #[cfg(feature = "extra-children")]
29291            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29292                extra_iter
29293                    .next()
29294                    .unwrap()
29295                    .node
29296                    .write_to(writer)
29297                    .map_err(SerializeError::from)?;
29298            }
29299            item.write_element("a:areaChart", writer)?;
29300            #[cfg(feature = "extra-children")]
29301            {
29302                emit_idx += 1;
29303            }
29304        }
29305        #[cfg(feature = "dml-charts")]
29306        for item in &self.area3_d_chart {
29307            #[cfg(feature = "extra-children")]
29308            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29309                extra_iter
29310                    .next()
29311                    .unwrap()
29312                    .node
29313                    .write_to(writer)
29314                    .map_err(SerializeError::from)?;
29315            }
29316            item.write_element("a:area3DChart", writer)?;
29317            #[cfg(feature = "extra-children")]
29318            {
29319                emit_idx += 1;
29320            }
29321        }
29322        #[cfg(feature = "dml-charts")]
29323        for item in &self.line_chart {
29324            #[cfg(feature = "extra-children")]
29325            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29326                extra_iter
29327                    .next()
29328                    .unwrap()
29329                    .node
29330                    .write_to(writer)
29331                    .map_err(SerializeError::from)?;
29332            }
29333            item.write_element("a:lineChart", writer)?;
29334            #[cfg(feature = "extra-children")]
29335            {
29336                emit_idx += 1;
29337            }
29338        }
29339        #[cfg(feature = "dml-charts")]
29340        for item in &self.line3_d_chart {
29341            #[cfg(feature = "extra-children")]
29342            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29343                extra_iter
29344                    .next()
29345                    .unwrap()
29346                    .node
29347                    .write_to(writer)
29348                    .map_err(SerializeError::from)?;
29349            }
29350            item.write_element("a:line3DChart", writer)?;
29351            #[cfg(feature = "extra-children")]
29352            {
29353                emit_idx += 1;
29354            }
29355        }
29356        #[cfg(feature = "dml-charts")]
29357        for item in &self.stock_chart {
29358            #[cfg(feature = "extra-children")]
29359            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29360                extra_iter
29361                    .next()
29362                    .unwrap()
29363                    .node
29364                    .write_to(writer)
29365                    .map_err(SerializeError::from)?;
29366            }
29367            item.write_element("a:stockChart", writer)?;
29368            #[cfg(feature = "extra-children")]
29369            {
29370                emit_idx += 1;
29371            }
29372        }
29373        #[cfg(feature = "dml-charts")]
29374        for item in &self.radar_chart {
29375            #[cfg(feature = "extra-children")]
29376            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29377                extra_iter
29378                    .next()
29379                    .unwrap()
29380                    .node
29381                    .write_to(writer)
29382                    .map_err(SerializeError::from)?;
29383            }
29384            item.write_element("a:radarChart", writer)?;
29385            #[cfg(feature = "extra-children")]
29386            {
29387                emit_idx += 1;
29388            }
29389        }
29390        #[cfg(feature = "dml-charts")]
29391        for item in &self.scatter_chart {
29392            #[cfg(feature = "extra-children")]
29393            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29394                extra_iter
29395                    .next()
29396                    .unwrap()
29397                    .node
29398                    .write_to(writer)
29399                    .map_err(SerializeError::from)?;
29400            }
29401            item.write_element("a:scatterChart", writer)?;
29402            #[cfg(feature = "extra-children")]
29403            {
29404                emit_idx += 1;
29405            }
29406        }
29407        #[cfg(feature = "dml-charts")]
29408        for item in &self.pie_chart {
29409            #[cfg(feature = "extra-children")]
29410            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29411                extra_iter
29412                    .next()
29413                    .unwrap()
29414                    .node
29415                    .write_to(writer)
29416                    .map_err(SerializeError::from)?;
29417            }
29418            item.write_element("a:pieChart", writer)?;
29419            #[cfg(feature = "extra-children")]
29420            {
29421                emit_idx += 1;
29422            }
29423        }
29424        #[cfg(feature = "dml-charts")]
29425        for item in &self.pie3_d_chart {
29426            #[cfg(feature = "extra-children")]
29427            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29428                extra_iter
29429                    .next()
29430                    .unwrap()
29431                    .node
29432                    .write_to(writer)
29433                    .map_err(SerializeError::from)?;
29434            }
29435            item.write_element("a:pie3DChart", writer)?;
29436            #[cfg(feature = "extra-children")]
29437            {
29438                emit_idx += 1;
29439            }
29440        }
29441        #[cfg(feature = "dml-charts")]
29442        for item in &self.doughnut_chart {
29443            #[cfg(feature = "extra-children")]
29444            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29445                extra_iter
29446                    .next()
29447                    .unwrap()
29448                    .node
29449                    .write_to(writer)
29450                    .map_err(SerializeError::from)?;
29451            }
29452            item.write_element("a:doughnutChart", writer)?;
29453            #[cfg(feature = "extra-children")]
29454            {
29455                emit_idx += 1;
29456            }
29457        }
29458        #[cfg(feature = "dml-charts")]
29459        for item in &self.bar_chart {
29460            #[cfg(feature = "extra-children")]
29461            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29462                extra_iter
29463                    .next()
29464                    .unwrap()
29465                    .node
29466                    .write_to(writer)
29467                    .map_err(SerializeError::from)?;
29468            }
29469            item.write_element("a:barChart", writer)?;
29470            #[cfg(feature = "extra-children")]
29471            {
29472                emit_idx += 1;
29473            }
29474        }
29475        #[cfg(feature = "dml-charts")]
29476        for item in &self.bar3_d_chart {
29477            #[cfg(feature = "extra-children")]
29478            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29479                extra_iter
29480                    .next()
29481                    .unwrap()
29482                    .node
29483                    .write_to(writer)
29484                    .map_err(SerializeError::from)?;
29485            }
29486            item.write_element("a:bar3DChart", writer)?;
29487            #[cfg(feature = "extra-children")]
29488            {
29489                emit_idx += 1;
29490            }
29491        }
29492        #[cfg(feature = "dml-charts")]
29493        for item in &self.of_pie_chart {
29494            #[cfg(feature = "extra-children")]
29495            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29496                extra_iter
29497                    .next()
29498                    .unwrap()
29499                    .node
29500                    .write_to(writer)
29501                    .map_err(SerializeError::from)?;
29502            }
29503            item.write_element("a:ofPieChart", writer)?;
29504            #[cfg(feature = "extra-children")]
29505            {
29506                emit_idx += 1;
29507            }
29508        }
29509        #[cfg(feature = "dml-charts")]
29510        for item in &self.surface_chart {
29511            #[cfg(feature = "extra-children")]
29512            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29513                extra_iter
29514                    .next()
29515                    .unwrap()
29516                    .node
29517                    .write_to(writer)
29518                    .map_err(SerializeError::from)?;
29519            }
29520            item.write_element("a:surfaceChart", writer)?;
29521            #[cfg(feature = "extra-children")]
29522            {
29523                emit_idx += 1;
29524            }
29525        }
29526        #[cfg(feature = "dml-charts")]
29527        for item in &self.surface3_d_chart {
29528            #[cfg(feature = "extra-children")]
29529            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29530                extra_iter
29531                    .next()
29532                    .unwrap()
29533                    .node
29534                    .write_to(writer)
29535                    .map_err(SerializeError::from)?;
29536            }
29537            item.write_element("a:surface3DChart", writer)?;
29538            #[cfg(feature = "extra-children")]
29539            {
29540                emit_idx += 1;
29541            }
29542        }
29543        #[cfg(feature = "dml-charts")]
29544        for item in &self.bubble_chart {
29545            #[cfg(feature = "extra-children")]
29546            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29547                extra_iter
29548                    .next()
29549                    .unwrap()
29550                    .node
29551                    .write_to(writer)
29552                    .map_err(SerializeError::from)?;
29553            }
29554            item.write_element("a:bubbleChart", writer)?;
29555            #[cfg(feature = "extra-children")]
29556            {
29557                emit_idx += 1;
29558            }
29559        }
29560        #[cfg(feature = "dml-charts")]
29561        for item in &self.val_ax {
29562            #[cfg(feature = "extra-children")]
29563            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29564                extra_iter
29565                    .next()
29566                    .unwrap()
29567                    .node
29568                    .write_to(writer)
29569                    .map_err(SerializeError::from)?;
29570            }
29571            item.write_element("a:valAx", writer)?;
29572            #[cfg(feature = "extra-children")]
29573            {
29574                emit_idx += 1;
29575            }
29576        }
29577        #[cfg(feature = "dml-charts")]
29578        for item in &self.cat_ax {
29579            #[cfg(feature = "extra-children")]
29580            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29581                extra_iter
29582                    .next()
29583                    .unwrap()
29584                    .node
29585                    .write_to(writer)
29586                    .map_err(SerializeError::from)?;
29587            }
29588            item.write_element("a:catAx", writer)?;
29589            #[cfg(feature = "extra-children")]
29590            {
29591                emit_idx += 1;
29592            }
29593        }
29594        #[cfg(feature = "dml-charts")]
29595        for item in &self.date_ax {
29596            #[cfg(feature = "extra-children")]
29597            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29598                extra_iter
29599                    .next()
29600                    .unwrap()
29601                    .node
29602                    .write_to(writer)
29603                    .map_err(SerializeError::from)?;
29604            }
29605            item.write_element("a:dateAx", writer)?;
29606            #[cfg(feature = "extra-children")]
29607            {
29608                emit_idx += 1;
29609            }
29610        }
29611        #[cfg(feature = "dml-charts")]
29612        for item in &self.ser_ax {
29613            #[cfg(feature = "extra-children")]
29614            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29615                extra_iter
29616                    .next()
29617                    .unwrap()
29618                    .node
29619                    .write_to(writer)
29620                    .map_err(SerializeError::from)?;
29621            }
29622            item.write_element("a:serAx", writer)?;
29623            #[cfg(feature = "extra-children")]
29624            {
29625                emit_idx += 1;
29626            }
29627        }
29628        #[cfg(feature = "extra-children")]
29629        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29630            extra_iter
29631                .next()
29632                .unwrap()
29633                .node
29634                .write_to(writer)
29635                .map_err(SerializeError::from)?;
29636        }
29637        #[cfg(feature = "dml-charts")]
29638        if let Some(ref val) = self.d_table {
29639            val.write_element("a:dTable", writer)?;
29640        }
29641        #[cfg(feature = "extra-children")]
29642        {
29643            emit_idx += 1;
29644        }
29645        #[cfg(feature = "extra-children")]
29646        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29647            extra_iter
29648                .next()
29649                .unwrap()
29650                .node
29651                .write_to(writer)
29652                .map_err(SerializeError::from)?;
29653        }
29654        #[cfg(feature = "dml-charts")]
29655        if let Some(ref val) = self.sp_pr {
29656            val.write_element("a:spPr", writer)?;
29657        }
29658        #[cfg(feature = "extra-children")]
29659        {
29660            emit_idx += 1;
29661        }
29662        #[cfg(feature = "extra-children")]
29663        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29664            extra_iter
29665                .next()
29666                .unwrap()
29667                .node
29668                .write_to(writer)
29669                .map_err(SerializeError::from)?;
29670        }
29671        #[cfg(feature = "dml-charts")]
29672        if let Some(ref val) = self.ext_lst {
29673            val.write_element("a:extLst", writer)?;
29674        }
29675        #[cfg(feature = "extra-children")]
29676        {
29677            emit_idx += 1;
29678        }
29679        #[cfg(feature = "extra-children")]
29680        for extra in extra_iter {
29681            extra.node.write_to(writer).map_err(SerializeError::from)?;
29682        }
29683        Ok(())
29684    }
29685
29686    fn is_empty_element(&self) -> bool {
29687        #[cfg(feature = "dml-charts")]
29688        if self.layout.is_some() {
29689            return false;
29690        }
29691        #[cfg(feature = "dml-charts")]
29692        if !self.area_chart.is_empty() {
29693            return false;
29694        }
29695        #[cfg(feature = "dml-charts")]
29696        if !self.area3_d_chart.is_empty() {
29697            return false;
29698        }
29699        #[cfg(feature = "dml-charts")]
29700        if !self.line_chart.is_empty() {
29701            return false;
29702        }
29703        #[cfg(feature = "dml-charts")]
29704        if !self.line3_d_chart.is_empty() {
29705            return false;
29706        }
29707        #[cfg(feature = "dml-charts")]
29708        if !self.stock_chart.is_empty() {
29709            return false;
29710        }
29711        #[cfg(feature = "dml-charts")]
29712        if !self.radar_chart.is_empty() {
29713            return false;
29714        }
29715        #[cfg(feature = "dml-charts")]
29716        if !self.scatter_chart.is_empty() {
29717            return false;
29718        }
29719        #[cfg(feature = "dml-charts")]
29720        if !self.pie_chart.is_empty() {
29721            return false;
29722        }
29723        #[cfg(feature = "dml-charts")]
29724        if !self.pie3_d_chart.is_empty() {
29725            return false;
29726        }
29727        #[cfg(feature = "dml-charts")]
29728        if !self.doughnut_chart.is_empty() {
29729            return false;
29730        }
29731        #[cfg(feature = "dml-charts")]
29732        if !self.bar_chart.is_empty() {
29733            return false;
29734        }
29735        #[cfg(feature = "dml-charts")]
29736        if !self.bar3_d_chart.is_empty() {
29737            return false;
29738        }
29739        #[cfg(feature = "dml-charts")]
29740        if !self.of_pie_chart.is_empty() {
29741            return false;
29742        }
29743        #[cfg(feature = "dml-charts")]
29744        if !self.surface_chart.is_empty() {
29745            return false;
29746        }
29747        #[cfg(feature = "dml-charts")]
29748        if !self.surface3_d_chart.is_empty() {
29749            return false;
29750        }
29751        #[cfg(feature = "dml-charts")]
29752        if !self.bubble_chart.is_empty() {
29753            return false;
29754        }
29755        #[cfg(feature = "dml-charts")]
29756        if !self.val_ax.is_empty() {
29757            return false;
29758        }
29759        #[cfg(feature = "dml-charts")]
29760        if !self.cat_ax.is_empty() {
29761            return false;
29762        }
29763        #[cfg(feature = "dml-charts")]
29764        if !self.date_ax.is_empty() {
29765            return false;
29766        }
29767        #[cfg(feature = "dml-charts")]
29768        if !self.ser_ax.is_empty() {
29769            return false;
29770        }
29771        #[cfg(feature = "dml-charts")]
29772        if self.d_table.is_some() {
29773            return false;
29774        }
29775        #[cfg(feature = "dml-charts")]
29776        if self.sp_pr.is_some() {
29777            return false;
29778        }
29779        #[cfg(feature = "dml-charts")]
29780        if self.ext_lst.is_some() {
29781            return false;
29782        }
29783        #[cfg(feature = "extra-children")]
29784        if !self.extra_children.is_empty() {
29785            return false;
29786        }
29787        true
29788    }
29789}
29790
29791impl ToXml for PivotFormat {
29792    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
29793        #[cfg(feature = "extra-children")]
29794        let mut extra_iter = self.extra_children.iter().peekable();
29795        #[cfg(feature = "extra-children")]
29796        let mut emit_idx: usize = 0;
29797        #[cfg(feature = "extra-children")]
29798        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29799            extra_iter
29800                .next()
29801                .unwrap()
29802                .node
29803                .write_to(writer)
29804                .map_err(SerializeError::from)?;
29805        }
29806        #[cfg(feature = "dml-charts")]
29807        {
29808            let val = &self.idx;
29809            val.write_element("a:idx", writer)?;
29810        }
29811        #[cfg(feature = "extra-children")]
29812        {
29813            emit_idx += 1;
29814        }
29815        #[cfg(feature = "extra-children")]
29816        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29817            extra_iter
29818                .next()
29819                .unwrap()
29820                .node
29821                .write_to(writer)
29822                .map_err(SerializeError::from)?;
29823        }
29824        #[cfg(feature = "dml-charts")]
29825        if let Some(ref val) = self.sp_pr {
29826            val.write_element("a:spPr", writer)?;
29827        }
29828        #[cfg(feature = "extra-children")]
29829        {
29830            emit_idx += 1;
29831        }
29832        #[cfg(feature = "extra-children")]
29833        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29834            extra_iter
29835                .next()
29836                .unwrap()
29837                .node
29838                .write_to(writer)
29839                .map_err(SerializeError::from)?;
29840        }
29841        #[cfg(feature = "dml-charts")]
29842        if let Some(ref val) = self.tx_pr {
29843            val.write_element("a:txPr", writer)?;
29844        }
29845        #[cfg(feature = "extra-children")]
29846        {
29847            emit_idx += 1;
29848        }
29849        #[cfg(feature = "extra-children")]
29850        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29851            extra_iter
29852                .next()
29853                .unwrap()
29854                .node
29855                .write_to(writer)
29856                .map_err(SerializeError::from)?;
29857        }
29858        #[cfg(feature = "dml-charts")]
29859        if let Some(ref val) = self.marker {
29860            val.write_element("a:marker", writer)?;
29861        }
29862        #[cfg(feature = "extra-children")]
29863        {
29864            emit_idx += 1;
29865        }
29866        #[cfg(feature = "extra-children")]
29867        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29868            extra_iter
29869                .next()
29870                .unwrap()
29871                .node
29872                .write_to(writer)
29873                .map_err(SerializeError::from)?;
29874        }
29875        #[cfg(feature = "dml-charts")]
29876        if let Some(ref val) = self.d_lbl {
29877            val.write_element("a:dLbl", writer)?;
29878        }
29879        #[cfg(feature = "extra-children")]
29880        {
29881            emit_idx += 1;
29882        }
29883        #[cfg(feature = "extra-children")]
29884        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29885            extra_iter
29886                .next()
29887                .unwrap()
29888                .node
29889                .write_to(writer)
29890                .map_err(SerializeError::from)?;
29891        }
29892        #[cfg(feature = "dml-charts")]
29893        if let Some(ref val) = self.ext_lst {
29894            val.write_element("a:extLst", writer)?;
29895        }
29896        #[cfg(feature = "extra-children")]
29897        {
29898            emit_idx += 1;
29899        }
29900        #[cfg(feature = "extra-children")]
29901        for extra in extra_iter {
29902            extra.node.write_to(writer).map_err(SerializeError::from)?;
29903        }
29904        Ok(())
29905    }
29906
29907    fn is_empty_element(&self) -> bool {
29908        #[cfg(feature = "dml-charts")]
29909        return false;
29910        #[cfg(feature = "dml-charts")]
29911        if self.sp_pr.is_some() {
29912            return false;
29913        }
29914        #[cfg(feature = "dml-charts")]
29915        if self.tx_pr.is_some() {
29916            return false;
29917        }
29918        #[cfg(feature = "dml-charts")]
29919        if self.marker.is_some() {
29920            return false;
29921        }
29922        #[cfg(feature = "dml-charts")]
29923        if self.d_lbl.is_some() {
29924            return false;
29925        }
29926        #[cfg(feature = "dml-charts")]
29927        if self.ext_lst.is_some() {
29928            return false;
29929        }
29930        #[cfg(feature = "extra-children")]
29931        if !self.extra_children.is_empty() {
29932            return false;
29933        }
29934        true
29935    }
29936}
29937
29938impl ToXml for PivotFormats {
29939    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
29940        #[cfg(feature = "extra-children")]
29941        let mut extra_iter = self.extra_children.iter().peekable();
29942        #[cfg(feature = "extra-children")]
29943        let mut emit_idx: usize = 0;
29944        #[cfg(feature = "dml-charts")]
29945        for item in &self.pivot_fmt {
29946            #[cfg(feature = "extra-children")]
29947            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
29948                extra_iter
29949                    .next()
29950                    .unwrap()
29951                    .node
29952                    .write_to(writer)
29953                    .map_err(SerializeError::from)?;
29954            }
29955            item.write_element("a:pivotFmt", writer)?;
29956            #[cfg(feature = "extra-children")]
29957            {
29958                emit_idx += 1;
29959            }
29960        }
29961        #[cfg(feature = "extra-children")]
29962        for extra in extra_iter {
29963            extra.node.write_to(writer).map_err(SerializeError::from)?;
29964        }
29965        Ok(())
29966    }
29967
29968    fn is_empty_element(&self) -> bool {
29969        #[cfg(feature = "dml-charts")]
29970        if !self.pivot_fmt.is_empty() {
29971            return false;
29972        }
29973        #[cfg(feature = "extra-children")]
29974        if !self.extra_children.is_empty() {
29975            return false;
29976        }
29977        true
29978    }
29979}
29980
29981impl ToXml for LegendPosition {
29982    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
29983        #[allow(unused_mut)]
29984        let mut start = start;
29985        #[cfg(feature = "dml-charts")]
29986        if let Some(ref val) = self.value {
29987            {
29988                let s = val.to_string();
29989                start.push_attribute(("val", s.as_str()));
29990            }
29991        }
29992        #[cfg(feature = "extra-attrs")]
29993        for (key, value) in &self.extra_attrs {
29994            start.push_attribute((key.as_str(), value.as_str()));
29995        }
29996        start
29997    }
29998
29999    fn is_empty_element(&self) -> bool {
30000        true
30001    }
30002}
30003
30004impl ToXml for EGLegendEntryData {
30005    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
30006        #[cfg(feature = "extra-children")]
30007        let mut extra_iter = self.extra_children.iter().peekable();
30008        #[cfg(feature = "extra-children")]
30009        let mut emit_idx: usize = 0;
30010        #[cfg(feature = "extra-children")]
30011        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30012            extra_iter
30013                .next()
30014                .unwrap()
30015                .node
30016                .write_to(writer)
30017                .map_err(SerializeError::from)?;
30018        }
30019        if let Some(ref val) = self.tx_pr {
30020            val.write_element("a:txPr", writer)?;
30021        }
30022        #[cfg(feature = "extra-children")]
30023        {
30024            emit_idx += 1;
30025        }
30026        #[cfg(feature = "extra-children")]
30027        for extra in extra_iter {
30028            extra.node.write_to(writer).map_err(SerializeError::from)?;
30029        }
30030        Ok(())
30031    }
30032
30033    fn is_empty_element(&self) -> bool {
30034        if self.tx_pr.is_some() {
30035            return false;
30036        }
30037        #[cfg(feature = "extra-children")]
30038        if !self.extra_children.is_empty() {
30039            return false;
30040        }
30041        true
30042    }
30043}
30044
30045impl ToXml for LegendEntry {
30046    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
30047        #[cfg(feature = "extra-children")]
30048        let mut extra_iter = self.extra_children.iter().peekable();
30049        #[cfg(feature = "extra-children")]
30050        let mut emit_idx: usize = 0;
30051        #[cfg(feature = "extra-children")]
30052        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30053            extra_iter
30054                .next()
30055                .unwrap()
30056                .node
30057                .write_to(writer)
30058                .map_err(SerializeError::from)?;
30059        }
30060        #[cfg(feature = "dml-charts")]
30061        {
30062            let val = &self.idx;
30063            val.write_element("a:idx", writer)?;
30064        }
30065        #[cfg(feature = "extra-children")]
30066        {
30067            emit_idx += 1;
30068        }
30069        #[cfg(feature = "extra-children")]
30070        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30071            extra_iter
30072                .next()
30073                .unwrap()
30074                .node
30075                .write_to(writer)
30076                .map_err(SerializeError::from)?;
30077        }
30078        #[cfg(feature = "dml-charts")]
30079        if let Some(ref val) = self.delete {
30080            val.write_element("a:delete", writer)?;
30081        }
30082        #[cfg(feature = "extra-children")]
30083        {
30084            emit_idx += 1;
30085        }
30086        #[cfg(feature = "extra-children")]
30087        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30088            extra_iter
30089                .next()
30090                .unwrap()
30091                .node
30092                .write_to(writer)
30093                .map_err(SerializeError::from)?;
30094        }
30095        #[cfg(feature = "dml-charts")]
30096        if let Some(ref val) = self.tx_pr {
30097            val.write_element("a:txPr", writer)?;
30098        }
30099        #[cfg(feature = "extra-children")]
30100        {
30101            emit_idx += 1;
30102        }
30103        #[cfg(feature = "extra-children")]
30104        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30105            extra_iter
30106                .next()
30107                .unwrap()
30108                .node
30109                .write_to(writer)
30110                .map_err(SerializeError::from)?;
30111        }
30112        #[cfg(feature = "dml-charts")]
30113        if let Some(ref val) = self.ext_lst {
30114            val.write_element("a:extLst", writer)?;
30115        }
30116        #[cfg(feature = "extra-children")]
30117        {
30118            emit_idx += 1;
30119        }
30120        #[cfg(feature = "extra-children")]
30121        for extra in extra_iter {
30122            extra.node.write_to(writer).map_err(SerializeError::from)?;
30123        }
30124        Ok(())
30125    }
30126
30127    fn is_empty_element(&self) -> bool {
30128        #[cfg(feature = "dml-charts")]
30129        return false;
30130        #[cfg(feature = "dml-charts")]
30131        if self.delete.is_some() {
30132            return false;
30133        }
30134        #[cfg(feature = "dml-charts")]
30135        if self.tx_pr.is_some() {
30136            return false;
30137        }
30138        #[cfg(feature = "dml-charts")]
30139        if self.ext_lst.is_some() {
30140            return false;
30141        }
30142        #[cfg(feature = "extra-children")]
30143        if !self.extra_children.is_empty() {
30144            return false;
30145        }
30146        true
30147    }
30148}
30149
30150impl ToXml for Legend {
30151    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
30152        #[cfg(feature = "extra-children")]
30153        let mut extra_iter = self.extra_children.iter().peekable();
30154        #[cfg(feature = "extra-children")]
30155        let mut emit_idx: usize = 0;
30156        #[cfg(feature = "extra-children")]
30157        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30158            extra_iter
30159                .next()
30160                .unwrap()
30161                .node
30162                .write_to(writer)
30163                .map_err(SerializeError::from)?;
30164        }
30165        #[cfg(feature = "dml-charts")]
30166        if let Some(ref val) = self.legend_pos {
30167            val.write_element("a:legendPos", writer)?;
30168        }
30169        #[cfg(feature = "extra-children")]
30170        {
30171            emit_idx += 1;
30172        }
30173        #[cfg(feature = "dml-charts")]
30174        for item in &self.legend_entry {
30175            #[cfg(feature = "extra-children")]
30176            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30177                extra_iter
30178                    .next()
30179                    .unwrap()
30180                    .node
30181                    .write_to(writer)
30182                    .map_err(SerializeError::from)?;
30183            }
30184            item.write_element("a:legendEntry", writer)?;
30185            #[cfg(feature = "extra-children")]
30186            {
30187                emit_idx += 1;
30188            }
30189        }
30190        #[cfg(feature = "extra-children")]
30191        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30192            extra_iter
30193                .next()
30194                .unwrap()
30195                .node
30196                .write_to(writer)
30197                .map_err(SerializeError::from)?;
30198        }
30199        #[cfg(feature = "dml-charts")]
30200        if let Some(ref val) = self.layout {
30201            val.write_element("a:layout", writer)?;
30202        }
30203        #[cfg(feature = "extra-children")]
30204        {
30205            emit_idx += 1;
30206        }
30207        #[cfg(feature = "extra-children")]
30208        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30209            extra_iter
30210                .next()
30211                .unwrap()
30212                .node
30213                .write_to(writer)
30214                .map_err(SerializeError::from)?;
30215        }
30216        #[cfg(feature = "dml-charts")]
30217        if let Some(ref val) = self.overlay {
30218            val.write_element("a:overlay", writer)?;
30219        }
30220        #[cfg(feature = "extra-children")]
30221        {
30222            emit_idx += 1;
30223        }
30224        #[cfg(feature = "extra-children")]
30225        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30226            extra_iter
30227                .next()
30228                .unwrap()
30229                .node
30230                .write_to(writer)
30231                .map_err(SerializeError::from)?;
30232        }
30233        #[cfg(feature = "dml-charts")]
30234        if let Some(ref val) = self.sp_pr {
30235            val.write_element("a:spPr", writer)?;
30236        }
30237        #[cfg(feature = "extra-children")]
30238        {
30239            emit_idx += 1;
30240        }
30241        #[cfg(feature = "extra-children")]
30242        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30243            extra_iter
30244                .next()
30245                .unwrap()
30246                .node
30247                .write_to(writer)
30248                .map_err(SerializeError::from)?;
30249        }
30250        #[cfg(feature = "dml-charts")]
30251        if let Some(ref val) = self.tx_pr {
30252            val.write_element("a:txPr", writer)?;
30253        }
30254        #[cfg(feature = "extra-children")]
30255        {
30256            emit_idx += 1;
30257        }
30258        #[cfg(feature = "extra-children")]
30259        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30260            extra_iter
30261                .next()
30262                .unwrap()
30263                .node
30264                .write_to(writer)
30265                .map_err(SerializeError::from)?;
30266        }
30267        #[cfg(feature = "dml-charts")]
30268        if let Some(ref val) = self.ext_lst {
30269            val.write_element("a:extLst", writer)?;
30270        }
30271        #[cfg(feature = "extra-children")]
30272        {
30273            emit_idx += 1;
30274        }
30275        #[cfg(feature = "extra-children")]
30276        for extra in extra_iter {
30277            extra.node.write_to(writer).map_err(SerializeError::from)?;
30278        }
30279        Ok(())
30280    }
30281
30282    fn is_empty_element(&self) -> bool {
30283        #[cfg(feature = "dml-charts")]
30284        if self.legend_pos.is_some() {
30285            return false;
30286        }
30287        #[cfg(feature = "dml-charts")]
30288        if !self.legend_entry.is_empty() {
30289            return false;
30290        }
30291        #[cfg(feature = "dml-charts")]
30292        if self.layout.is_some() {
30293            return false;
30294        }
30295        #[cfg(feature = "dml-charts")]
30296        if self.overlay.is_some() {
30297            return false;
30298        }
30299        #[cfg(feature = "dml-charts")]
30300        if self.sp_pr.is_some() {
30301            return false;
30302        }
30303        #[cfg(feature = "dml-charts")]
30304        if self.tx_pr.is_some() {
30305            return false;
30306        }
30307        #[cfg(feature = "dml-charts")]
30308        if self.ext_lst.is_some() {
30309            return false;
30310        }
30311        #[cfg(feature = "extra-children")]
30312        if !self.extra_children.is_empty() {
30313            return false;
30314        }
30315        true
30316    }
30317}
30318
30319impl ToXml for DisplayBlanksAs {
30320    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
30321        #[allow(unused_mut)]
30322        let mut start = start;
30323        #[cfg(feature = "dml-charts")]
30324        if let Some(ref val) = self.value {
30325            {
30326                let s = val.to_string();
30327                start.push_attribute(("val", s.as_str()));
30328            }
30329        }
30330        #[cfg(feature = "extra-attrs")]
30331        for (key, value) in &self.extra_attrs {
30332            start.push_attribute((key.as_str(), value.as_str()));
30333        }
30334        start
30335    }
30336
30337    fn is_empty_element(&self) -> bool {
30338        true
30339    }
30340}
30341
30342impl ToXml for Chart {
30343    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
30344        #[cfg(feature = "extra-children")]
30345        let mut extra_iter = self.extra_children.iter().peekable();
30346        #[cfg(feature = "extra-children")]
30347        let mut emit_idx: usize = 0;
30348        #[cfg(feature = "extra-children")]
30349        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30350            extra_iter
30351                .next()
30352                .unwrap()
30353                .node
30354                .write_to(writer)
30355                .map_err(SerializeError::from)?;
30356        }
30357        #[cfg(feature = "dml-charts")]
30358        if let Some(ref val) = self.title {
30359            val.write_element("a:title", writer)?;
30360        }
30361        #[cfg(feature = "extra-children")]
30362        {
30363            emit_idx += 1;
30364        }
30365        #[cfg(feature = "extra-children")]
30366        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30367            extra_iter
30368                .next()
30369                .unwrap()
30370                .node
30371                .write_to(writer)
30372                .map_err(SerializeError::from)?;
30373        }
30374        #[cfg(feature = "dml-charts")]
30375        if let Some(ref val) = self.auto_title_deleted {
30376            val.write_element("a:autoTitleDeleted", writer)?;
30377        }
30378        #[cfg(feature = "extra-children")]
30379        {
30380            emit_idx += 1;
30381        }
30382        #[cfg(feature = "extra-children")]
30383        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30384            extra_iter
30385                .next()
30386                .unwrap()
30387                .node
30388                .write_to(writer)
30389                .map_err(SerializeError::from)?;
30390        }
30391        #[cfg(feature = "dml-charts")]
30392        if let Some(ref val) = self.pivot_fmts {
30393            val.write_element("a:pivotFmts", writer)?;
30394        }
30395        #[cfg(feature = "extra-children")]
30396        {
30397            emit_idx += 1;
30398        }
30399        #[cfg(feature = "extra-children")]
30400        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30401            extra_iter
30402                .next()
30403                .unwrap()
30404                .node
30405                .write_to(writer)
30406                .map_err(SerializeError::from)?;
30407        }
30408        #[cfg(feature = "dml-charts")]
30409        if let Some(ref val) = self.view3_d {
30410            val.write_element("a:view3D", writer)?;
30411        }
30412        #[cfg(feature = "extra-children")]
30413        {
30414            emit_idx += 1;
30415        }
30416        #[cfg(feature = "extra-children")]
30417        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30418            extra_iter
30419                .next()
30420                .unwrap()
30421                .node
30422                .write_to(writer)
30423                .map_err(SerializeError::from)?;
30424        }
30425        #[cfg(feature = "dml-charts")]
30426        if let Some(ref val) = self.floor {
30427            val.write_element("a:floor", writer)?;
30428        }
30429        #[cfg(feature = "extra-children")]
30430        {
30431            emit_idx += 1;
30432        }
30433        #[cfg(feature = "extra-children")]
30434        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30435            extra_iter
30436                .next()
30437                .unwrap()
30438                .node
30439                .write_to(writer)
30440                .map_err(SerializeError::from)?;
30441        }
30442        #[cfg(feature = "dml-charts")]
30443        if let Some(ref val) = self.side_wall {
30444            val.write_element("a:sideWall", writer)?;
30445        }
30446        #[cfg(feature = "extra-children")]
30447        {
30448            emit_idx += 1;
30449        }
30450        #[cfg(feature = "extra-children")]
30451        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30452            extra_iter
30453                .next()
30454                .unwrap()
30455                .node
30456                .write_to(writer)
30457                .map_err(SerializeError::from)?;
30458        }
30459        #[cfg(feature = "dml-charts")]
30460        if let Some(ref val) = self.back_wall {
30461            val.write_element("a:backWall", writer)?;
30462        }
30463        #[cfg(feature = "extra-children")]
30464        {
30465            emit_idx += 1;
30466        }
30467        #[cfg(feature = "extra-children")]
30468        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30469            extra_iter
30470                .next()
30471                .unwrap()
30472                .node
30473                .write_to(writer)
30474                .map_err(SerializeError::from)?;
30475        }
30476        #[cfg(feature = "dml-charts")]
30477        {
30478            let val = &self.plot_area;
30479            val.write_element("a:plotArea", writer)?;
30480        }
30481        #[cfg(feature = "extra-children")]
30482        {
30483            emit_idx += 1;
30484        }
30485        #[cfg(feature = "extra-children")]
30486        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30487            extra_iter
30488                .next()
30489                .unwrap()
30490                .node
30491                .write_to(writer)
30492                .map_err(SerializeError::from)?;
30493        }
30494        #[cfg(feature = "dml-charts")]
30495        if let Some(ref val) = self.legend {
30496            val.write_element("a:legend", writer)?;
30497        }
30498        #[cfg(feature = "extra-children")]
30499        {
30500            emit_idx += 1;
30501        }
30502        #[cfg(feature = "extra-children")]
30503        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30504            extra_iter
30505                .next()
30506                .unwrap()
30507                .node
30508                .write_to(writer)
30509                .map_err(SerializeError::from)?;
30510        }
30511        #[cfg(feature = "dml-charts")]
30512        if let Some(ref val) = self.plot_vis_only {
30513            val.write_element("a:plotVisOnly", writer)?;
30514        }
30515        #[cfg(feature = "extra-children")]
30516        {
30517            emit_idx += 1;
30518        }
30519        #[cfg(feature = "extra-children")]
30520        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30521            extra_iter
30522                .next()
30523                .unwrap()
30524                .node
30525                .write_to(writer)
30526                .map_err(SerializeError::from)?;
30527        }
30528        #[cfg(feature = "dml-charts")]
30529        if let Some(ref val) = self.disp_blanks_as {
30530            val.write_element("a:dispBlanksAs", writer)?;
30531        }
30532        #[cfg(feature = "extra-children")]
30533        {
30534            emit_idx += 1;
30535        }
30536        #[cfg(feature = "extra-children")]
30537        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30538            extra_iter
30539                .next()
30540                .unwrap()
30541                .node
30542                .write_to(writer)
30543                .map_err(SerializeError::from)?;
30544        }
30545        #[cfg(feature = "dml-charts")]
30546        if let Some(ref val) = self.show_d_lbls_over_max {
30547            val.write_element("a:showDLblsOverMax", writer)?;
30548        }
30549        #[cfg(feature = "extra-children")]
30550        {
30551            emit_idx += 1;
30552        }
30553        #[cfg(feature = "extra-children")]
30554        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30555            extra_iter
30556                .next()
30557                .unwrap()
30558                .node
30559                .write_to(writer)
30560                .map_err(SerializeError::from)?;
30561        }
30562        #[cfg(feature = "dml-charts")]
30563        if let Some(ref val) = self.ext_lst {
30564            val.write_element("a:extLst", writer)?;
30565        }
30566        #[cfg(feature = "extra-children")]
30567        {
30568            emit_idx += 1;
30569        }
30570        #[cfg(feature = "extra-children")]
30571        for extra in extra_iter {
30572            extra.node.write_to(writer).map_err(SerializeError::from)?;
30573        }
30574        Ok(())
30575    }
30576
30577    fn is_empty_element(&self) -> bool {
30578        #[cfg(feature = "dml-charts")]
30579        if self.title.is_some() {
30580            return false;
30581        }
30582        #[cfg(feature = "dml-charts")]
30583        if self.auto_title_deleted.is_some() {
30584            return false;
30585        }
30586        #[cfg(feature = "dml-charts")]
30587        if self.pivot_fmts.is_some() {
30588            return false;
30589        }
30590        #[cfg(feature = "dml-charts")]
30591        if self.view3_d.is_some() {
30592            return false;
30593        }
30594        #[cfg(feature = "dml-charts")]
30595        if self.floor.is_some() {
30596            return false;
30597        }
30598        #[cfg(feature = "dml-charts")]
30599        if self.side_wall.is_some() {
30600            return false;
30601        }
30602        #[cfg(feature = "dml-charts")]
30603        if self.back_wall.is_some() {
30604            return false;
30605        }
30606        #[cfg(feature = "dml-charts")]
30607        return false;
30608        #[cfg(feature = "dml-charts")]
30609        if self.legend.is_some() {
30610            return false;
30611        }
30612        #[cfg(feature = "dml-charts")]
30613        if self.plot_vis_only.is_some() {
30614            return false;
30615        }
30616        #[cfg(feature = "dml-charts")]
30617        if self.disp_blanks_as.is_some() {
30618            return false;
30619        }
30620        #[cfg(feature = "dml-charts")]
30621        if self.show_d_lbls_over_max.is_some() {
30622            return false;
30623        }
30624        #[cfg(feature = "dml-charts")]
30625        if self.ext_lst.is_some() {
30626            return false;
30627        }
30628        #[cfg(feature = "extra-children")]
30629        if !self.extra_children.is_empty() {
30630            return false;
30631        }
30632        true
30633    }
30634}
30635
30636impl ToXml for ChartStyle {
30637    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
30638        #[allow(unused_mut)]
30639        let mut start = start;
30640        #[cfg(feature = "dml-charts")]
30641        {
30642            let val = &self.value;
30643            {
30644                let s = val.to_string();
30645                start.push_attribute(("val", s.as_str()));
30646            }
30647        }
30648        #[cfg(feature = "extra-attrs")]
30649        for (key, value) in &self.extra_attrs {
30650            start.push_attribute((key.as_str(), value.as_str()));
30651        }
30652        start
30653    }
30654
30655    fn is_empty_element(&self) -> bool {
30656        true
30657    }
30658}
30659
30660impl ToXml for PivotSource {
30661    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
30662        #[cfg(feature = "extra-children")]
30663        let mut extra_iter = self.extra_children.iter().peekable();
30664        #[cfg(feature = "extra-children")]
30665        let mut emit_idx: usize = 0;
30666        #[cfg(feature = "extra-children")]
30667        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30668            extra_iter
30669                .next()
30670                .unwrap()
30671                .node
30672                .write_to(writer)
30673                .map_err(SerializeError::from)?;
30674        }
30675        #[cfg(feature = "dml-charts")]
30676        {
30677            let val = &self.name;
30678            {
30679                let start = BytesStart::new("a:name");
30680                writer.write_event(Event::Start(start))?;
30681                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
30682                writer.write_event(Event::End(BytesEnd::new("a:name")))?;
30683            }
30684        }
30685        #[cfg(feature = "extra-children")]
30686        {
30687            emit_idx += 1;
30688        }
30689        #[cfg(feature = "extra-children")]
30690        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30691            extra_iter
30692                .next()
30693                .unwrap()
30694                .node
30695                .write_to(writer)
30696                .map_err(SerializeError::from)?;
30697        }
30698        #[cfg(feature = "dml-charts")]
30699        {
30700            let val = &self.fmt_id;
30701            val.write_element("a:fmtId", writer)?;
30702        }
30703        #[cfg(feature = "extra-children")]
30704        {
30705            emit_idx += 1;
30706        }
30707        #[cfg(feature = "dml-charts")]
30708        for item in &self.ext_lst {
30709            #[cfg(feature = "extra-children")]
30710            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30711                extra_iter
30712                    .next()
30713                    .unwrap()
30714                    .node
30715                    .write_to(writer)
30716                    .map_err(SerializeError::from)?;
30717            }
30718            item.write_element("a:extLst", writer)?;
30719            #[cfg(feature = "extra-children")]
30720            {
30721                emit_idx += 1;
30722            }
30723        }
30724        #[cfg(feature = "extra-children")]
30725        for extra in extra_iter {
30726            extra.node.write_to(writer).map_err(SerializeError::from)?;
30727        }
30728        Ok(())
30729    }
30730
30731    fn is_empty_element(&self) -> bool {
30732        #[cfg(feature = "dml-charts")]
30733        return false;
30734        #[cfg(feature = "dml-charts")]
30735        return false;
30736        #[cfg(feature = "dml-charts")]
30737        if !self.ext_lst.is_empty() {
30738            return false;
30739        }
30740        #[cfg(feature = "extra-children")]
30741        if !self.extra_children.is_empty() {
30742            return false;
30743        }
30744        true
30745    }
30746}
30747
30748impl ToXml for ChartProtection {
30749    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
30750        #[cfg(feature = "extra-children")]
30751        let mut extra_iter = self.extra_children.iter().peekable();
30752        #[cfg(feature = "extra-children")]
30753        let mut emit_idx: usize = 0;
30754        #[cfg(feature = "extra-children")]
30755        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30756            extra_iter
30757                .next()
30758                .unwrap()
30759                .node
30760                .write_to(writer)
30761                .map_err(SerializeError::from)?;
30762        }
30763        #[cfg(feature = "dml-charts")]
30764        if let Some(ref val) = self.chart_object {
30765            val.write_element("a:chartObject", writer)?;
30766        }
30767        #[cfg(feature = "extra-children")]
30768        {
30769            emit_idx += 1;
30770        }
30771        #[cfg(feature = "extra-children")]
30772        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30773            extra_iter
30774                .next()
30775                .unwrap()
30776                .node
30777                .write_to(writer)
30778                .map_err(SerializeError::from)?;
30779        }
30780        #[cfg(feature = "dml-charts")]
30781        if let Some(ref val) = self.data {
30782            val.write_element("a:data", writer)?;
30783        }
30784        #[cfg(feature = "extra-children")]
30785        {
30786            emit_idx += 1;
30787        }
30788        #[cfg(feature = "extra-children")]
30789        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30790            extra_iter
30791                .next()
30792                .unwrap()
30793                .node
30794                .write_to(writer)
30795                .map_err(SerializeError::from)?;
30796        }
30797        #[cfg(feature = "dml-charts")]
30798        if let Some(ref val) = self.formatting {
30799            val.write_element("a:formatting", writer)?;
30800        }
30801        #[cfg(feature = "extra-children")]
30802        {
30803            emit_idx += 1;
30804        }
30805        #[cfg(feature = "extra-children")]
30806        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30807            extra_iter
30808                .next()
30809                .unwrap()
30810                .node
30811                .write_to(writer)
30812                .map_err(SerializeError::from)?;
30813        }
30814        #[cfg(feature = "dml-charts")]
30815        if let Some(ref val) = self.selection {
30816            val.write_element("a:selection", writer)?;
30817        }
30818        #[cfg(feature = "extra-children")]
30819        {
30820            emit_idx += 1;
30821        }
30822        #[cfg(feature = "extra-children")]
30823        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30824            extra_iter
30825                .next()
30826                .unwrap()
30827                .node
30828                .write_to(writer)
30829                .map_err(SerializeError::from)?;
30830        }
30831        #[cfg(feature = "dml-charts")]
30832        if let Some(ref val) = self.user_interface {
30833            val.write_element("a:userInterface", writer)?;
30834        }
30835        #[cfg(feature = "extra-children")]
30836        {
30837            emit_idx += 1;
30838        }
30839        #[cfg(feature = "extra-children")]
30840        for extra in extra_iter {
30841            extra.node.write_to(writer).map_err(SerializeError::from)?;
30842        }
30843        Ok(())
30844    }
30845
30846    fn is_empty_element(&self) -> bool {
30847        #[cfg(feature = "dml-charts")]
30848        if self.chart_object.is_some() {
30849            return false;
30850        }
30851        #[cfg(feature = "dml-charts")]
30852        if self.data.is_some() {
30853            return false;
30854        }
30855        #[cfg(feature = "dml-charts")]
30856        if self.formatting.is_some() {
30857            return false;
30858        }
30859        #[cfg(feature = "dml-charts")]
30860        if self.selection.is_some() {
30861            return false;
30862        }
30863        #[cfg(feature = "dml-charts")]
30864        if self.user_interface.is_some() {
30865            return false;
30866        }
30867        #[cfg(feature = "extra-children")]
30868        if !self.extra_children.is_empty() {
30869            return false;
30870        }
30871        true
30872    }
30873}
30874
30875impl ToXml for ChartHeaderFooter {
30876    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
30877        #[allow(unused_mut)]
30878        let mut start = start;
30879        #[cfg(feature = "dml-charts")]
30880        if let Some(ref val) = self.align_with_margins {
30881            start.push_attribute(("alignWithMargins", if *val { "1" } else { "0" }));
30882        }
30883        #[cfg(feature = "dml-charts")]
30884        if let Some(ref val) = self.different_odd_even {
30885            start.push_attribute(("differentOddEven", if *val { "1" } else { "0" }));
30886        }
30887        #[cfg(feature = "dml-charts")]
30888        if let Some(ref val) = self.different_first {
30889            start.push_attribute(("differentFirst", if *val { "1" } else { "0" }));
30890        }
30891        #[cfg(feature = "extra-attrs")]
30892        for (key, value) in &self.extra_attrs {
30893            start.push_attribute((key.as_str(), value.as_str()));
30894        }
30895        start
30896    }
30897
30898    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
30899        #[cfg(feature = "extra-children")]
30900        let mut extra_iter = self.extra_children.iter().peekable();
30901        #[cfg(feature = "extra-children")]
30902        let mut emit_idx: usize = 0;
30903        #[cfg(feature = "extra-children")]
30904        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30905            extra_iter
30906                .next()
30907                .unwrap()
30908                .node
30909                .write_to(writer)
30910                .map_err(SerializeError::from)?;
30911        }
30912        #[cfg(feature = "dml-charts")]
30913        if let Some(ref val) = self.odd_header {
30914            {
30915                let start = BytesStart::new("a:oddHeader");
30916                writer.write_event(Event::Start(start))?;
30917                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
30918                writer.write_event(Event::End(BytesEnd::new("a:oddHeader")))?;
30919            }
30920        }
30921        #[cfg(feature = "extra-children")]
30922        {
30923            emit_idx += 1;
30924        }
30925        #[cfg(feature = "extra-children")]
30926        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30927            extra_iter
30928                .next()
30929                .unwrap()
30930                .node
30931                .write_to(writer)
30932                .map_err(SerializeError::from)?;
30933        }
30934        #[cfg(feature = "dml-charts")]
30935        if let Some(ref val) = self.odd_footer {
30936            {
30937                let start = BytesStart::new("a:oddFooter");
30938                writer.write_event(Event::Start(start))?;
30939                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
30940                writer.write_event(Event::End(BytesEnd::new("a:oddFooter")))?;
30941            }
30942        }
30943        #[cfg(feature = "extra-children")]
30944        {
30945            emit_idx += 1;
30946        }
30947        #[cfg(feature = "extra-children")]
30948        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30949            extra_iter
30950                .next()
30951                .unwrap()
30952                .node
30953                .write_to(writer)
30954                .map_err(SerializeError::from)?;
30955        }
30956        #[cfg(feature = "dml-charts")]
30957        if let Some(ref val) = self.even_header {
30958            {
30959                let start = BytesStart::new("a:evenHeader");
30960                writer.write_event(Event::Start(start))?;
30961                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
30962                writer.write_event(Event::End(BytesEnd::new("a:evenHeader")))?;
30963            }
30964        }
30965        #[cfg(feature = "extra-children")]
30966        {
30967            emit_idx += 1;
30968        }
30969        #[cfg(feature = "extra-children")]
30970        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30971            extra_iter
30972                .next()
30973                .unwrap()
30974                .node
30975                .write_to(writer)
30976                .map_err(SerializeError::from)?;
30977        }
30978        #[cfg(feature = "dml-charts")]
30979        if let Some(ref val) = self.even_footer {
30980            {
30981                let start = BytesStart::new("a:evenFooter");
30982                writer.write_event(Event::Start(start))?;
30983                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
30984                writer.write_event(Event::End(BytesEnd::new("a:evenFooter")))?;
30985            }
30986        }
30987        #[cfg(feature = "extra-children")]
30988        {
30989            emit_idx += 1;
30990        }
30991        #[cfg(feature = "extra-children")]
30992        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
30993            extra_iter
30994                .next()
30995                .unwrap()
30996                .node
30997                .write_to(writer)
30998                .map_err(SerializeError::from)?;
30999        }
31000        #[cfg(feature = "dml-charts")]
31001        if let Some(ref val) = self.first_header {
31002            {
31003                let start = BytesStart::new("a:firstHeader");
31004                writer.write_event(Event::Start(start))?;
31005                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
31006                writer.write_event(Event::End(BytesEnd::new("a:firstHeader")))?;
31007            }
31008        }
31009        #[cfg(feature = "extra-children")]
31010        {
31011            emit_idx += 1;
31012        }
31013        #[cfg(feature = "extra-children")]
31014        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31015            extra_iter
31016                .next()
31017                .unwrap()
31018                .node
31019                .write_to(writer)
31020                .map_err(SerializeError::from)?;
31021        }
31022        #[cfg(feature = "dml-charts")]
31023        if let Some(ref val) = self.first_footer {
31024            {
31025                let start = BytesStart::new("a:firstFooter");
31026                writer.write_event(Event::Start(start))?;
31027                writer.write_event(Event::Text(BytesText::new(val.as_str())))?;
31028                writer.write_event(Event::End(BytesEnd::new("a:firstFooter")))?;
31029            }
31030        }
31031        #[cfg(feature = "extra-children")]
31032        {
31033            emit_idx += 1;
31034        }
31035        #[cfg(feature = "extra-children")]
31036        for extra in extra_iter {
31037            extra.node.write_to(writer).map_err(SerializeError::from)?;
31038        }
31039        Ok(())
31040    }
31041
31042    fn is_empty_element(&self) -> bool {
31043        #[cfg(feature = "dml-charts")]
31044        if self.odd_header.is_some() {
31045            return false;
31046        }
31047        #[cfg(feature = "dml-charts")]
31048        if self.odd_footer.is_some() {
31049            return false;
31050        }
31051        #[cfg(feature = "dml-charts")]
31052        if self.even_header.is_some() {
31053            return false;
31054        }
31055        #[cfg(feature = "dml-charts")]
31056        if self.even_footer.is_some() {
31057            return false;
31058        }
31059        #[cfg(feature = "dml-charts")]
31060        if self.first_header.is_some() {
31061            return false;
31062        }
31063        #[cfg(feature = "dml-charts")]
31064        if self.first_footer.is_some() {
31065            return false;
31066        }
31067        #[cfg(feature = "extra-children")]
31068        if !self.extra_children.is_empty() {
31069            return false;
31070        }
31071        true
31072    }
31073}
31074
31075impl ToXml for ChartPageMargins {
31076    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
31077        #[allow(unused_mut)]
31078        let mut start = start;
31079        #[cfg(feature = "dml-charts")]
31080        {
31081            let val = &self.l;
31082            {
31083                let s = val.to_string();
31084                start.push_attribute(("l", s.as_str()));
31085            }
31086        }
31087        #[cfg(feature = "dml-charts")]
31088        {
31089            let val = &self.relationship_id;
31090            {
31091                let s = val.to_string();
31092                start.push_attribute(("r", s.as_str()));
31093            }
31094        }
31095        #[cfg(feature = "dml-charts")]
31096        {
31097            let val = &self.t;
31098            {
31099                let s = val.to_string();
31100                start.push_attribute(("t", s.as_str()));
31101            }
31102        }
31103        #[cfg(feature = "dml-charts")]
31104        {
31105            let val = &self.b;
31106            {
31107                let s = val.to_string();
31108                start.push_attribute(("b", s.as_str()));
31109            }
31110        }
31111        #[cfg(feature = "dml-charts")]
31112        {
31113            let val = &self.header;
31114            {
31115                let s = val.to_string();
31116                start.push_attribute(("header", s.as_str()));
31117            }
31118        }
31119        #[cfg(feature = "dml-charts")]
31120        {
31121            let val = &self.footer;
31122            {
31123                let s = val.to_string();
31124                start.push_attribute(("footer", s.as_str()));
31125            }
31126        }
31127        #[cfg(feature = "extra-attrs")]
31128        for (key, value) in &self.extra_attrs {
31129            start.push_attribute((key.as_str(), value.as_str()));
31130        }
31131        start
31132    }
31133
31134    fn is_empty_element(&self) -> bool {
31135        true
31136    }
31137}
31138
31139impl ToXml for ExternalData {
31140    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
31141        #[allow(unused_mut)]
31142        let mut start = start;
31143        #[cfg(feature = "dml-charts")]
31144        {
31145            let val = &self.id;
31146            start.push_attribute(("r:id", val.as_str()));
31147        }
31148        #[cfg(feature = "extra-attrs")]
31149        for (key, value) in &self.extra_attrs {
31150            start.push_attribute((key.as_str(), value.as_str()));
31151        }
31152        start
31153    }
31154
31155    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31156        #[cfg(feature = "extra-children")]
31157        let mut extra_iter = self.extra_children.iter().peekable();
31158        #[cfg(feature = "extra-children")]
31159        let mut emit_idx: usize = 0;
31160        #[cfg(feature = "extra-children")]
31161        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31162            extra_iter
31163                .next()
31164                .unwrap()
31165                .node
31166                .write_to(writer)
31167                .map_err(SerializeError::from)?;
31168        }
31169        #[cfg(feature = "dml-charts")]
31170        if let Some(ref val) = self.auto_update {
31171            val.write_element("a:autoUpdate", writer)?;
31172        }
31173        #[cfg(feature = "extra-children")]
31174        {
31175            emit_idx += 1;
31176        }
31177        #[cfg(feature = "extra-children")]
31178        for extra in extra_iter {
31179            extra.node.write_to(writer).map_err(SerializeError::from)?;
31180        }
31181        Ok(())
31182    }
31183
31184    fn is_empty_element(&self) -> bool {
31185        #[cfg(feature = "dml-charts")]
31186        if self.auto_update.is_some() {
31187            return false;
31188        }
31189        #[cfg(feature = "extra-children")]
31190        if !self.extra_children.is_empty() {
31191            return false;
31192        }
31193        true
31194    }
31195}
31196
31197impl ToXml for ChartPageSetup {
31198    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
31199        #[allow(unused_mut)]
31200        let mut start = start;
31201        #[cfg(feature = "dml-charts")]
31202        if let Some(ref val) = self.paper_size {
31203            {
31204                let s = val.to_string();
31205                start.push_attribute(("paperSize", s.as_str()));
31206            }
31207        }
31208        #[cfg(feature = "dml-charts")]
31209        if let Some(ref val) = self.paper_height {
31210            start.push_attribute(("paperHeight", val.as_str()));
31211        }
31212        #[cfg(feature = "dml-charts")]
31213        if let Some(ref val) = self.paper_width {
31214            start.push_attribute(("paperWidth", val.as_str()));
31215        }
31216        #[cfg(feature = "dml-charts")]
31217        if let Some(ref val) = self.first_page_number {
31218            {
31219                let s = val.to_string();
31220                start.push_attribute(("firstPageNumber", s.as_str()));
31221            }
31222        }
31223        #[cfg(feature = "dml-charts")]
31224        if let Some(ref val) = self.orientation {
31225            {
31226                let s = val.to_string();
31227                start.push_attribute(("orientation", s.as_str()));
31228            }
31229        }
31230        #[cfg(feature = "dml-charts")]
31231        if let Some(ref val) = self.black_and_white {
31232            start.push_attribute(("blackAndWhite", if *val { "1" } else { "0" }));
31233        }
31234        #[cfg(feature = "dml-charts")]
31235        if let Some(ref val) = self.draft {
31236            start.push_attribute(("draft", if *val { "1" } else { "0" }));
31237        }
31238        #[cfg(feature = "dml-charts")]
31239        if let Some(ref val) = self.use_first_page_number {
31240            start.push_attribute(("useFirstPageNumber", if *val { "1" } else { "0" }));
31241        }
31242        #[cfg(feature = "dml-charts")]
31243        if let Some(ref val) = self.horizontal_dpi {
31244            {
31245                let s = val.to_string();
31246                start.push_attribute(("horizontalDpi", s.as_str()));
31247            }
31248        }
31249        #[cfg(feature = "dml-charts")]
31250        if let Some(ref val) = self.vertical_dpi {
31251            {
31252                let s = val.to_string();
31253                start.push_attribute(("verticalDpi", s.as_str()));
31254            }
31255        }
31256        #[cfg(feature = "dml-charts")]
31257        if let Some(ref val) = self.copies {
31258            {
31259                let s = val.to_string();
31260                start.push_attribute(("copies", s.as_str()));
31261            }
31262        }
31263        #[cfg(feature = "extra-attrs")]
31264        for (key, value) in &self.extra_attrs {
31265            start.push_attribute((key.as_str(), value.as_str()));
31266        }
31267        start
31268    }
31269
31270    fn is_empty_element(&self) -> bool {
31271        true
31272    }
31273}
31274
31275impl ToXml for PrintSettings {
31276    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31277        #[cfg(feature = "extra-children")]
31278        let mut extra_iter = self.extra_children.iter().peekable();
31279        #[cfg(feature = "extra-children")]
31280        let mut emit_idx: usize = 0;
31281        #[cfg(feature = "extra-children")]
31282        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31283            extra_iter
31284                .next()
31285                .unwrap()
31286                .node
31287                .write_to(writer)
31288                .map_err(SerializeError::from)?;
31289        }
31290        #[cfg(feature = "dml-charts")]
31291        if let Some(ref val) = self.header_footer {
31292            val.write_element("a:headerFooter", writer)?;
31293        }
31294        #[cfg(feature = "extra-children")]
31295        {
31296            emit_idx += 1;
31297        }
31298        #[cfg(feature = "extra-children")]
31299        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31300            extra_iter
31301                .next()
31302                .unwrap()
31303                .node
31304                .write_to(writer)
31305                .map_err(SerializeError::from)?;
31306        }
31307        #[cfg(feature = "dml-charts")]
31308        if let Some(ref val) = self.page_margins {
31309            val.write_element("a:pageMargins", writer)?;
31310        }
31311        #[cfg(feature = "extra-children")]
31312        {
31313            emit_idx += 1;
31314        }
31315        #[cfg(feature = "extra-children")]
31316        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31317            extra_iter
31318                .next()
31319                .unwrap()
31320                .node
31321                .write_to(writer)
31322                .map_err(SerializeError::from)?;
31323        }
31324        #[cfg(feature = "dml-charts")]
31325        if let Some(ref val) = self.page_setup {
31326            val.write_element("a:pageSetup", writer)?;
31327        }
31328        #[cfg(feature = "extra-children")]
31329        {
31330            emit_idx += 1;
31331        }
31332        #[cfg(feature = "extra-children")]
31333        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31334            extra_iter
31335                .next()
31336                .unwrap()
31337                .node
31338                .write_to(writer)
31339                .map_err(SerializeError::from)?;
31340        }
31341        #[cfg(feature = "dml-charts")]
31342        if let Some(ref val) = self.legacy_drawing_h_f {
31343            val.write_element("a:legacyDrawingHF", writer)?;
31344        }
31345        #[cfg(feature = "extra-children")]
31346        {
31347            emit_idx += 1;
31348        }
31349        #[cfg(feature = "extra-children")]
31350        for extra in extra_iter {
31351            extra.node.write_to(writer).map_err(SerializeError::from)?;
31352        }
31353        Ok(())
31354    }
31355
31356    fn is_empty_element(&self) -> bool {
31357        #[cfg(feature = "dml-charts")]
31358        if self.header_footer.is_some() {
31359            return false;
31360        }
31361        #[cfg(feature = "dml-charts")]
31362        if self.page_margins.is_some() {
31363            return false;
31364        }
31365        #[cfg(feature = "dml-charts")]
31366        if self.page_setup.is_some() {
31367            return false;
31368        }
31369        #[cfg(feature = "dml-charts")]
31370        if self.legacy_drawing_h_f.is_some() {
31371            return false;
31372        }
31373        #[cfg(feature = "extra-children")]
31374        if !self.extra_children.is_empty() {
31375            return false;
31376        }
31377        true
31378    }
31379}
31380
31381impl ToXml for ChartSpace {
31382    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31383        #[cfg(feature = "extra-children")]
31384        let mut extra_iter = self.extra_children.iter().peekable();
31385        #[cfg(feature = "extra-children")]
31386        let mut emit_idx: usize = 0;
31387        #[cfg(feature = "extra-children")]
31388        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31389            extra_iter
31390                .next()
31391                .unwrap()
31392                .node
31393                .write_to(writer)
31394                .map_err(SerializeError::from)?;
31395        }
31396        #[cfg(feature = "dml-charts")]
31397        if let Some(ref val) = self.date1904 {
31398            val.write_element("a:date1904", writer)?;
31399        }
31400        #[cfg(feature = "extra-children")]
31401        {
31402            emit_idx += 1;
31403        }
31404        #[cfg(feature = "extra-children")]
31405        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31406            extra_iter
31407                .next()
31408                .unwrap()
31409                .node
31410                .write_to(writer)
31411                .map_err(SerializeError::from)?;
31412        }
31413        #[cfg(feature = "dml-charts")]
31414        if let Some(ref val) = self.lang {
31415            val.write_element("a:lang", writer)?;
31416        }
31417        #[cfg(feature = "extra-children")]
31418        {
31419            emit_idx += 1;
31420        }
31421        #[cfg(feature = "extra-children")]
31422        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31423            extra_iter
31424                .next()
31425                .unwrap()
31426                .node
31427                .write_to(writer)
31428                .map_err(SerializeError::from)?;
31429        }
31430        #[cfg(feature = "dml-charts")]
31431        if let Some(ref val) = self.rounded_corners {
31432            val.write_element("a:roundedCorners", writer)?;
31433        }
31434        #[cfg(feature = "extra-children")]
31435        {
31436            emit_idx += 1;
31437        }
31438        #[cfg(feature = "extra-children")]
31439        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31440            extra_iter
31441                .next()
31442                .unwrap()
31443                .node
31444                .write_to(writer)
31445                .map_err(SerializeError::from)?;
31446        }
31447        #[cfg(feature = "dml-charts")]
31448        if let Some(ref val) = self.style {
31449            val.write_element("a:style", writer)?;
31450        }
31451        #[cfg(feature = "extra-children")]
31452        {
31453            emit_idx += 1;
31454        }
31455        #[cfg(feature = "extra-children")]
31456        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31457            extra_iter
31458                .next()
31459                .unwrap()
31460                .node
31461                .write_to(writer)
31462                .map_err(SerializeError::from)?;
31463        }
31464        #[cfg(feature = "dml-charts")]
31465        if let Some(ref val) = self.clr_map_ovr {
31466            val.write_element("a:clrMapOvr", writer)?;
31467        }
31468        #[cfg(feature = "extra-children")]
31469        {
31470            emit_idx += 1;
31471        }
31472        #[cfg(feature = "extra-children")]
31473        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31474            extra_iter
31475                .next()
31476                .unwrap()
31477                .node
31478                .write_to(writer)
31479                .map_err(SerializeError::from)?;
31480        }
31481        #[cfg(feature = "dml-charts")]
31482        if let Some(ref val) = self.pivot_source {
31483            val.write_element("a:pivotSource", writer)?;
31484        }
31485        #[cfg(feature = "extra-children")]
31486        {
31487            emit_idx += 1;
31488        }
31489        #[cfg(feature = "extra-children")]
31490        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31491            extra_iter
31492                .next()
31493                .unwrap()
31494                .node
31495                .write_to(writer)
31496                .map_err(SerializeError::from)?;
31497        }
31498        #[cfg(feature = "dml-charts")]
31499        if let Some(ref val) = self.protection {
31500            val.write_element("a:protection", writer)?;
31501        }
31502        #[cfg(feature = "extra-children")]
31503        {
31504            emit_idx += 1;
31505        }
31506        #[cfg(feature = "extra-children")]
31507        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31508            extra_iter
31509                .next()
31510                .unwrap()
31511                .node
31512                .write_to(writer)
31513                .map_err(SerializeError::from)?;
31514        }
31515        #[cfg(feature = "dml-charts")]
31516        {
31517            let val = &self.chart;
31518            val.write_element("a:chart", writer)?;
31519        }
31520        #[cfg(feature = "extra-children")]
31521        {
31522            emit_idx += 1;
31523        }
31524        #[cfg(feature = "extra-children")]
31525        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31526            extra_iter
31527                .next()
31528                .unwrap()
31529                .node
31530                .write_to(writer)
31531                .map_err(SerializeError::from)?;
31532        }
31533        #[cfg(feature = "dml-charts")]
31534        if let Some(ref val) = self.sp_pr {
31535            val.write_element("a:spPr", writer)?;
31536        }
31537        #[cfg(feature = "extra-children")]
31538        {
31539            emit_idx += 1;
31540        }
31541        #[cfg(feature = "extra-children")]
31542        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31543            extra_iter
31544                .next()
31545                .unwrap()
31546                .node
31547                .write_to(writer)
31548                .map_err(SerializeError::from)?;
31549        }
31550        #[cfg(feature = "dml-charts")]
31551        if let Some(ref val) = self.tx_pr {
31552            val.write_element("a:txPr", writer)?;
31553        }
31554        #[cfg(feature = "extra-children")]
31555        {
31556            emit_idx += 1;
31557        }
31558        #[cfg(feature = "extra-children")]
31559        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31560            extra_iter
31561                .next()
31562                .unwrap()
31563                .node
31564                .write_to(writer)
31565                .map_err(SerializeError::from)?;
31566        }
31567        #[cfg(feature = "dml-charts")]
31568        if let Some(ref val) = self.external_data {
31569            val.write_element("a:externalData", writer)?;
31570        }
31571        #[cfg(feature = "extra-children")]
31572        {
31573            emit_idx += 1;
31574        }
31575        #[cfg(feature = "extra-children")]
31576        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31577            extra_iter
31578                .next()
31579                .unwrap()
31580                .node
31581                .write_to(writer)
31582                .map_err(SerializeError::from)?;
31583        }
31584        #[cfg(feature = "dml-charts")]
31585        if let Some(ref val) = self.print_settings {
31586            val.write_element("a:printSettings", writer)?;
31587        }
31588        #[cfg(feature = "extra-children")]
31589        {
31590            emit_idx += 1;
31591        }
31592        #[cfg(feature = "extra-children")]
31593        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31594            extra_iter
31595                .next()
31596                .unwrap()
31597                .node
31598                .write_to(writer)
31599                .map_err(SerializeError::from)?;
31600        }
31601        #[cfg(feature = "dml-charts")]
31602        if let Some(ref val) = self.user_shapes {
31603            val.write_element("a:userShapes", writer)?;
31604        }
31605        #[cfg(feature = "extra-children")]
31606        {
31607            emit_idx += 1;
31608        }
31609        #[cfg(feature = "extra-children")]
31610        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31611            extra_iter
31612                .next()
31613                .unwrap()
31614                .node
31615                .write_to(writer)
31616                .map_err(SerializeError::from)?;
31617        }
31618        #[cfg(feature = "dml-charts")]
31619        if let Some(ref val) = self.ext_lst {
31620            val.write_element("a:extLst", writer)?;
31621        }
31622        #[cfg(feature = "extra-children")]
31623        {
31624            emit_idx += 1;
31625        }
31626        #[cfg(feature = "extra-children")]
31627        for extra in extra_iter {
31628            extra.node.write_to(writer).map_err(SerializeError::from)?;
31629        }
31630        Ok(())
31631    }
31632
31633    fn is_empty_element(&self) -> bool {
31634        #[cfg(feature = "dml-charts")]
31635        if self.date1904.is_some() {
31636            return false;
31637        }
31638        #[cfg(feature = "dml-charts")]
31639        if self.lang.is_some() {
31640            return false;
31641        }
31642        #[cfg(feature = "dml-charts")]
31643        if self.rounded_corners.is_some() {
31644            return false;
31645        }
31646        #[cfg(feature = "dml-charts")]
31647        if self.style.is_some() {
31648            return false;
31649        }
31650        #[cfg(feature = "dml-charts")]
31651        if self.clr_map_ovr.is_some() {
31652            return false;
31653        }
31654        #[cfg(feature = "dml-charts")]
31655        if self.pivot_source.is_some() {
31656            return false;
31657        }
31658        #[cfg(feature = "dml-charts")]
31659        if self.protection.is_some() {
31660            return false;
31661        }
31662        #[cfg(feature = "dml-charts")]
31663        return false;
31664        #[cfg(feature = "dml-charts")]
31665        if self.sp_pr.is_some() {
31666            return false;
31667        }
31668        #[cfg(feature = "dml-charts")]
31669        if self.tx_pr.is_some() {
31670            return false;
31671        }
31672        #[cfg(feature = "dml-charts")]
31673        if self.external_data.is_some() {
31674            return false;
31675        }
31676        #[cfg(feature = "dml-charts")]
31677        if self.print_settings.is_some() {
31678            return false;
31679        }
31680        #[cfg(feature = "dml-charts")]
31681        if self.user_shapes.is_some() {
31682            return false;
31683        }
31684        #[cfg(feature = "dml-charts")]
31685        if self.ext_lst.is_some() {
31686            return false;
31687        }
31688        #[cfg(feature = "extra-children")]
31689        if !self.extra_children.is_empty() {
31690            return false;
31691        }
31692        true
31693    }
31694}
31695
31696impl ToXml for ColorTransformName {
31697    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
31698        #[allow(unused_mut)]
31699        let mut start = start;
31700        #[cfg(feature = "dml-diagrams")]
31701        if let Some(ref val) = self.lang {
31702            start.push_attribute(("lang", val.as_str()));
31703        }
31704        #[cfg(feature = "dml-diagrams")]
31705        {
31706            let val = &self.value;
31707            start.push_attribute(("val", val.as_str()));
31708        }
31709        #[cfg(feature = "extra-attrs")]
31710        for (key, value) in &self.extra_attrs {
31711            start.push_attribute((key.as_str(), value.as_str()));
31712        }
31713        start
31714    }
31715
31716    fn is_empty_element(&self) -> bool {
31717        true
31718    }
31719}
31720
31721impl ToXml for ColorTransformDescription {
31722    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
31723        #[allow(unused_mut)]
31724        let mut start = start;
31725        #[cfg(feature = "dml-diagrams")]
31726        if let Some(ref val) = self.lang {
31727            start.push_attribute(("lang", val.as_str()));
31728        }
31729        #[cfg(feature = "dml-diagrams")]
31730        {
31731            let val = &self.value;
31732            start.push_attribute(("val", val.as_str()));
31733        }
31734        #[cfg(feature = "extra-attrs")]
31735        for (key, value) in &self.extra_attrs {
31736            start.push_attribute((key.as_str(), value.as_str()));
31737        }
31738        start
31739    }
31740
31741    fn is_empty_element(&self) -> bool {
31742        true
31743    }
31744}
31745
31746impl ToXml for DiagramColorCategory {
31747    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
31748        #[allow(unused_mut)]
31749        let mut start = start;
31750        #[cfg(feature = "dml-diagrams")]
31751        {
31752            let val = &self.r#type;
31753            start.push_attribute(("type", val.as_str()));
31754        }
31755        #[cfg(feature = "dml-diagrams")]
31756        {
31757            let val = &self.pri;
31758            {
31759                let s = val.to_string();
31760                start.push_attribute(("pri", s.as_str()));
31761            }
31762        }
31763        #[cfg(feature = "extra-attrs")]
31764        for (key, value) in &self.extra_attrs {
31765            start.push_attribute((key.as_str(), value.as_str()));
31766        }
31767        start
31768    }
31769
31770    fn is_empty_element(&self) -> bool {
31771        true
31772    }
31773}
31774
31775impl ToXml for DiagramColorCategories {
31776    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31777        #[cfg(feature = "extra-children")]
31778        let mut extra_iter = self.extra_children.iter().peekable();
31779        #[cfg(feature = "extra-children")]
31780        let mut emit_idx: usize = 0;
31781        #[cfg(feature = "dml-diagrams")]
31782        for item in &self.cat {
31783            #[cfg(feature = "extra-children")]
31784            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31785                extra_iter
31786                    .next()
31787                    .unwrap()
31788                    .node
31789                    .write_to(writer)
31790                    .map_err(SerializeError::from)?;
31791            }
31792            item.write_element("a:cat", writer)?;
31793            #[cfg(feature = "extra-children")]
31794            {
31795                emit_idx += 1;
31796            }
31797        }
31798        #[cfg(feature = "extra-children")]
31799        for extra in extra_iter {
31800            extra.node.write_to(writer).map_err(SerializeError::from)?;
31801        }
31802        Ok(())
31803    }
31804
31805    fn is_empty_element(&self) -> bool {
31806        #[cfg(feature = "dml-diagrams")]
31807        if !self.cat.is_empty() {
31808            return false;
31809        }
31810        #[cfg(feature = "extra-children")]
31811        if !self.extra_children.is_empty() {
31812            return false;
31813        }
31814        true
31815    }
31816}
31817
31818impl ToXml for DiagramColors {
31819    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
31820        #[allow(unused_mut)]
31821        let mut start = start;
31822        #[cfg(feature = "dml-diagrams")]
31823        if let Some(ref val) = self.meth {
31824            {
31825                let s = val.to_string();
31826                start.push_attribute(("meth", s.as_str()));
31827            }
31828        }
31829        #[cfg(feature = "dml-diagrams")]
31830        if let Some(ref val) = self.hue_dir {
31831            {
31832                let s = val.to_string();
31833                start.push_attribute(("hueDir", s.as_str()));
31834            }
31835        }
31836        #[cfg(feature = "extra-attrs")]
31837        for (key, value) in &self.extra_attrs {
31838            start.push_attribute((key.as_str(), value.as_str()));
31839        }
31840        start
31841    }
31842
31843    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31844        #[cfg(feature = "extra-children")]
31845        let mut extra_iter = self.extra_children.iter().peekable();
31846        #[cfg(feature = "extra-children")]
31847        let mut emit_idx: usize = 0;
31848        #[cfg(feature = "dml-diagrams")]
31849        for item in &self.color_choice {
31850            #[cfg(feature = "extra-children")]
31851            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31852                extra_iter
31853                    .next()
31854                    .unwrap()
31855                    .node
31856                    .write_to(writer)
31857                    .map_err(SerializeError::from)?;
31858            }
31859            item.write_element("", writer)?;
31860            #[cfg(feature = "extra-children")]
31861            {
31862                emit_idx += 1;
31863            }
31864        }
31865        #[cfg(feature = "extra-children")]
31866        for extra in extra_iter {
31867            extra.node.write_to(writer).map_err(SerializeError::from)?;
31868        }
31869        Ok(())
31870    }
31871
31872    fn is_empty_element(&self) -> bool {
31873        #[cfg(feature = "dml-diagrams")]
31874        if !self.color_choice.is_empty() {
31875            return false;
31876        }
31877        #[cfg(feature = "extra-children")]
31878        if !self.extra_children.is_empty() {
31879            return false;
31880        }
31881        true
31882    }
31883}
31884
31885impl ToXml for DiagramColorStyleLabel {
31886    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
31887        #[allow(unused_mut)]
31888        let mut start = start;
31889        #[cfg(feature = "dml-diagrams")]
31890        {
31891            let val = &self.name;
31892            start.push_attribute(("name", val.as_str()));
31893        }
31894        #[cfg(feature = "extra-attrs")]
31895        for (key, value) in &self.extra_attrs {
31896            start.push_attribute((key.as_str(), value.as_str()));
31897        }
31898        start
31899    }
31900
31901    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
31902        #[cfg(feature = "extra-children")]
31903        let mut extra_iter = self.extra_children.iter().peekable();
31904        #[cfg(feature = "extra-children")]
31905        let mut emit_idx: usize = 0;
31906        #[cfg(feature = "extra-children")]
31907        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31908            extra_iter
31909                .next()
31910                .unwrap()
31911                .node
31912                .write_to(writer)
31913                .map_err(SerializeError::from)?;
31914        }
31915        #[cfg(feature = "dml-diagrams")]
31916        if let Some(ref val) = self.fill_clr_lst {
31917            val.write_element("a:fillClrLst", writer)?;
31918        }
31919        #[cfg(feature = "extra-children")]
31920        {
31921            emit_idx += 1;
31922        }
31923        #[cfg(feature = "extra-children")]
31924        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31925            extra_iter
31926                .next()
31927                .unwrap()
31928                .node
31929                .write_to(writer)
31930                .map_err(SerializeError::from)?;
31931        }
31932        #[cfg(feature = "dml-diagrams")]
31933        if let Some(ref val) = self.lin_clr_lst {
31934            val.write_element("a:linClrLst", writer)?;
31935        }
31936        #[cfg(feature = "extra-children")]
31937        {
31938            emit_idx += 1;
31939        }
31940        #[cfg(feature = "extra-children")]
31941        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31942            extra_iter
31943                .next()
31944                .unwrap()
31945                .node
31946                .write_to(writer)
31947                .map_err(SerializeError::from)?;
31948        }
31949        #[cfg(feature = "dml-diagrams")]
31950        if let Some(ref val) = self.effect_clr_lst {
31951            val.write_element("a:effectClrLst", writer)?;
31952        }
31953        #[cfg(feature = "extra-children")]
31954        {
31955            emit_idx += 1;
31956        }
31957        #[cfg(feature = "extra-children")]
31958        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31959            extra_iter
31960                .next()
31961                .unwrap()
31962                .node
31963                .write_to(writer)
31964                .map_err(SerializeError::from)?;
31965        }
31966        #[cfg(feature = "dml-diagrams")]
31967        if let Some(ref val) = self.tx_lin_clr_lst {
31968            val.write_element("a:txLinClrLst", writer)?;
31969        }
31970        #[cfg(feature = "extra-children")]
31971        {
31972            emit_idx += 1;
31973        }
31974        #[cfg(feature = "extra-children")]
31975        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31976            extra_iter
31977                .next()
31978                .unwrap()
31979                .node
31980                .write_to(writer)
31981                .map_err(SerializeError::from)?;
31982        }
31983        #[cfg(feature = "dml-diagrams")]
31984        if let Some(ref val) = self.tx_fill_clr_lst {
31985            val.write_element("a:txFillClrLst", writer)?;
31986        }
31987        #[cfg(feature = "extra-children")]
31988        {
31989            emit_idx += 1;
31990        }
31991        #[cfg(feature = "extra-children")]
31992        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
31993            extra_iter
31994                .next()
31995                .unwrap()
31996                .node
31997                .write_to(writer)
31998                .map_err(SerializeError::from)?;
31999        }
32000        #[cfg(feature = "dml-diagrams")]
32001        if let Some(ref val) = self.tx_effect_clr_lst {
32002            val.write_element("a:txEffectClrLst", writer)?;
32003        }
32004        #[cfg(feature = "extra-children")]
32005        {
32006            emit_idx += 1;
32007        }
32008        #[cfg(feature = "extra-children")]
32009        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32010            extra_iter
32011                .next()
32012                .unwrap()
32013                .node
32014                .write_to(writer)
32015                .map_err(SerializeError::from)?;
32016        }
32017        #[cfg(feature = "dml-diagrams")]
32018        if let Some(ref val) = self.ext_lst {
32019            val.write_element("a:extLst", writer)?;
32020        }
32021        #[cfg(feature = "extra-children")]
32022        {
32023            emit_idx += 1;
32024        }
32025        #[cfg(feature = "extra-children")]
32026        for extra in extra_iter {
32027            extra.node.write_to(writer).map_err(SerializeError::from)?;
32028        }
32029        Ok(())
32030    }
32031
32032    fn is_empty_element(&self) -> bool {
32033        #[cfg(feature = "dml-diagrams")]
32034        if self.fill_clr_lst.is_some() {
32035            return false;
32036        }
32037        #[cfg(feature = "dml-diagrams")]
32038        if self.lin_clr_lst.is_some() {
32039            return false;
32040        }
32041        #[cfg(feature = "dml-diagrams")]
32042        if self.effect_clr_lst.is_some() {
32043            return false;
32044        }
32045        #[cfg(feature = "dml-diagrams")]
32046        if self.tx_lin_clr_lst.is_some() {
32047            return false;
32048        }
32049        #[cfg(feature = "dml-diagrams")]
32050        if self.tx_fill_clr_lst.is_some() {
32051            return false;
32052        }
32053        #[cfg(feature = "dml-diagrams")]
32054        if self.tx_effect_clr_lst.is_some() {
32055            return false;
32056        }
32057        #[cfg(feature = "dml-diagrams")]
32058        if self.ext_lst.is_some() {
32059            return false;
32060        }
32061        #[cfg(feature = "extra-children")]
32062        if !self.extra_children.is_empty() {
32063            return false;
32064        }
32065        true
32066    }
32067}
32068
32069impl ToXml for DiagramColorTransform {
32070    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
32071        #[allow(unused_mut)]
32072        let mut start = start;
32073        #[cfg(feature = "dml-diagrams")]
32074        if let Some(ref val) = self.unique_id {
32075            start.push_attribute(("uniqueId", val.as_str()));
32076        }
32077        #[cfg(feature = "dml-diagrams")]
32078        if let Some(ref val) = self.min_ver {
32079            start.push_attribute(("minVer", val.as_str()));
32080        }
32081        #[cfg(feature = "extra-attrs")]
32082        for (key, value) in &self.extra_attrs {
32083            start.push_attribute((key.as_str(), value.as_str()));
32084        }
32085        start
32086    }
32087
32088    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32089        #[cfg(feature = "extra-children")]
32090        let mut extra_iter = self.extra_children.iter().peekable();
32091        #[cfg(feature = "extra-children")]
32092        let mut emit_idx: usize = 0;
32093        #[cfg(feature = "dml-diagrams")]
32094        for item in &self.title {
32095            #[cfg(feature = "extra-children")]
32096            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32097                extra_iter
32098                    .next()
32099                    .unwrap()
32100                    .node
32101                    .write_to(writer)
32102                    .map_err(SerializeError::from)?;
32103            }
32104            item.write_element("a:title", writer)?;
32105            #[cfg(feature = "extra-children")]
32106            {
32107                emit_idx += 1;
32108            }
32109        }
32110        #[cfg(feature = "dml-diagrams")]
32111        for item in &self.desc {
32112            #[cfg(feature = "extra-children")]
32113            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32114                extra_iter
32115                    .next()
32116                    .unwrap()
32117                    .node
32118                    .write_to(writer)
32119                    .map_err(SerializeError::from)?;
32120            }
32121            item.write_element("a:desc", writer)?;
32122            #[cfg(feature = "extra-children")]
32123            {
32124                emit_idx += 1;
32125            }
32126        }
32127        #[cfg(feature = "extra-children")]
32128        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32129            extra_iter
32130                .next()
32131                .unwrap()
32132                .node
32133                .write_to(writer)
32134                .map_err(SerializeError::from)?;
32135        }
32136        #[cfg(feature = "dml-diagrams")]
32137        if let Some(ref val) = self.cat_lst {
32138            val.write_element("a:catLst", writer)?;
32139        }
32140        #[cfg(feature = "extra-children")]
32141        {
32142            emit_idx += 1;
32143        }
32144        #[cfg(feature = "dml-diagrams")]
32145        for item in &self.style_lbl {
32146            #[cfg(feature = "extra-children")]
32147            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32148                extra_iter
32149                    .next()
32150                    .unwrap()
32151                    .node
32152                    .write_to(writer)
32153                    .map_err(SerializeError::from)?;
32154            }
32155            item.write_element("a:styleLbl", writer)?;
32156            #[cfg(feature = "extra-children")]
32157            {
32158                emit_idx += 1;
32159            }
32160        }
32161        #[cfg(feature = "extra-children")]
32162        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32163            extra_iter
32164                .next()
32165                .unwrap()
32166                .node
32167                .write_to(writer)
32168                .map_err(SerializeError::from)?;
32169        }
32170        #[cfg(feature = "dml-diagrams")]
32171        if let Some(ref val) = self.ext_lst {
32172            val.write_element("a:extLst", writer)?;
32173        }
32174        #[cfg(feature = "extra-children")]
32175        {
32176            emit_idx += 1;
32177        }
32178        #[cfg(feature = "extra-children")]
32179        for extra in extra_iter {
32180            extra.node.write_to(writer).map_err(SerializeError::from)?;
32181        }
32182        Ok(())
32183    }
32184
32185    fn is_empty_element(&self) -> bool {
32186        #[cfg(feature = "dml-diagrams")]
32187        if !self.title.is_empty() {
32188            return false;
32189        }
32190        #[cfg(feature = "dml-diagrams")]
32191        if !self.desc.is_empty() {
32192            return false;
32193        }
32194        #[cfg(feature = "dml-diagrams")]
32195        if self.cat_lst.is_some() {
32196            return false;
32197        }
32198        #[cfg(feature = "dml-diagrams")]
32199        if !self.style_lbl.is_empty() {
32200            return false;
32201        }
32202        #[cfg(feature = "dml-diagrams")]
32203        if self.ext_lst.is_some() {
32204            return false;
32205        }
32206        #[cfg(feature = "extra-children")]
32207        if !self.extra_children.is_empty() {
32208            return false;
32209        }
32210        true
32211    }
32212}
32213
32214impl ToXml for DiagramColorTransformHeader {
32215    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
32216        #[allow(unused_mut)]
32217        let mut start = start;
32218        #[cfg(feature = "dml-diagrams")]
32219        {
32220            let val = &self.unique_id;
32221            start.push_attribute(("uniqueId", val.as_str()));
32222        }
32223        #[cfg(feature = "dml-diagrams")]
32224        if let Some(ref val) = self.min_ver {
32225            start.push_attribute(("minVer", val.as_str()));
32226        }
32227        #[cfg(feature = "dml-diagrams")]
32228        if let Some(ref val) = self.res_id {
32229            {
32230                let s = val.to_string();
32231                start.push_attribute(("resId", s.as_str()));
32232            }
32233        }
32234        #[cfg(feature = "extra-attrs")]
32235        for (key, value) in &self.extra_attrs {
32236            start.push_attribute((key.as_str(), value.as_str()));
32237        }
32238        start
32239    }
32240
32241    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32242        #[cfg(feature = "extra-children")]
32243        let mut extra_iter = self.extra_children.iter().peekable();
32244        #[cfg(feature = "extra-children")]
32245        let mut emit_idx: usize = 0;
32246        #[cfg(feature = "dml-diagrams")]
32247        for item in &self.title {
32248            #[cfg(feature = "extra-children")]
32249            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32250                extra_iter
32251                    .next()
32252                    .unwrap()
32253                    .node
32254                    .write_to(writer)
32255                    .map_err(SerializeError::from)?;
32256            }
32257            item.write_element("a:title", writer)?;
32258            #[cfg(feature = "extra-children")]
32259            {
32260                emit_idx += 1;
32261            }
32262        }
32263        #[cfg(feature = "dml-diagrams")]
32264        for item in &self.desc {
32265            #[cfg(feature = "extra-children")]
32266            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32267                extra_iter
32268                    .next()
32269                    .unwrap()
32270                    .node
32271                    .write_to(writer)
32272                    .map_err(SerializeError::from)?;
32273            }
32274            item.write_element("a:desc", writer)?;
32275            #[cfg(feature = "extra-children")]
32276            {
32277                emit_idx += 1;
32278            }
32279        }
32280        #[cfg(feature = "extra-children")]
32281        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32282            extra_iter
32283                .next()
32284                .unwrap()
32285                .node
32286                .write_to(writer)
32287                .map_err(SerializeError::from)?;
32288        }
32289        #[cfg(feature = "dml-diagrams")]
32290        if let Some(ref val) = self.cat_lst {
32291            val.write_element("a:catLst", writer)?;
32292        }
32293        #[cfg(feature = "extra-children")]
32294        {
32295            emit_idx += 1;
32296        }
32297        #[cfg(feature = "extra-children")]
32298        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32299            extra_iter
32300                .next()
32301                .unwrap()
32302                .node
32303                .write_to(writer)
32304                .map_err(SerializeError::from)?;
32305        }
32306        #[cfg(feature = "dml-diagrams")]
32307        if let Some(ref val) = self.ext_lst {
32308            val.write_element("a:extLst", writer)?;
32309        }
32310        #[cfg(feature = "extra-children")]
32311        {
32312            emit_idx += 1;
32313        }
32314        #[cfg(feature = "extra-children")]
32315        for extra in extra_iter {
32316            extra.node.write_to(writer).map_err(SerializeError::from)?;
32317        }
32318        Ok(())
32319    }
32320
32321    fn is_empty_element(&self) -> bool {
32322        #[cfg(feature = "dml-diagrams")]
32323        if !self.title.is_empty() {
32324            return false;
32325        }
32326        #[cfg(feature = "dml-diagrams")]
32327        if !self.desc.is_empty() {
32328            return false;
32329        }
32330        #[cfg(feature = "dml-diagrams")]
32331        if self.cat_lst.is_some() {
32332            return false;
32333        }
32334        #[cfg(feature = "dml-diagrams")]
32335        if self.ext_lst.is_some() {
32336            return false;
32337        }
32338        #[cfg(feature = "extra-children")]
32339        if !self.extra_children.is_empty() {
32340            return false;
32341        }
32342        true
32343    }
32344}
32345
32346impl ToXml for DiagramColorTransformHeaderList {
32347    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32348        #[cfg(feature = "extra-children")]
32349        let mut extra_iter = self.extra_children.iter().peekable();
32350        #[cfg(feature = "extra-children")]
32351        let mut emit_idx: usize = 0;
32352        #[cfg(feature = "dml-diagrams")]
32353        for item in &self.colors_def_hdr {
32354            #[cfg(feature = "extra-children")]
32355            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32356                extra_iter
32357                    .next()
32358                    .unwrap()
32359                    .node
32360                    .write_to(writer)
32361                    .map_err(SerializeError::from)?;
32362            }
32363            item.write_element("a:colorsDefHdr", writer)?;
32364            #[cfg(feature = "extra-children")]
32365            {
32366                emit_idx += 1;
32367            }
32368        }
32369        #[cfg(feature = "extra-children")]
32370        for extra in extra_iter {
32371            extra.node.write_to(writer).map_err(SerializeError::from)?;
32372        }
32373        Ok(())
32374    }
32375
32376    fn is_empty_element(&self) -> bool {
32377        #[cfg(feature = "dml-diagrams")]
32378        if !self.colors_def_hdr.is_empty() {
32379            return false;
32380        }
32381        #[cfg(feature = "extra-children")]
32382        if !self.extra_children.is_empty() {
32383            return false;
32384        }
32385        true
32386    }
32387}
32388
32389impl ToXml for DiagramPoint {
32390    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
32391        #[allow(unused_mut)]
32392        let mut start = start;
32393        #[cfg(feature = "dml-diagrams")]
32394        {
32395            let val = &self.model_id;
32396            {
32397                let s = val.to_string();
32398                start.push_attribute(("modelId", s.as_str()));
32399            }
32400        }
32401        #[cfg(feature = "dml-diagrams")]
32402        if let Some(ref val) = self.r#type {
32403            {
32404                let s = val.to_string();
32405                start.push_attribute(("type", s.as_str()));
32406            }
32407        }
32408        #[cfg(feature = "dml-diagrams")]
32409        if let Some(ref val) = self.cxn_id {
32410            {
32411                let s = val.to_string();
32412                start.push_attribute(("cxnId", s.as_str()));
32413            }
32414        }
32415        #[cfg(feature = "extra-attrs")]
32416        for (key, value) in &self.extra_attrs {
32417            start.push_attribute((key.as_str(), value.as_str()));
32418        }
32419        start
32420    }
32421
32422    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32423        #[cfg(feature = "extra-children")]
32424        let mut extra_iter = self.extra_children.iter().peekable();
32425        #[cfg(feature = "extra-children")]
32426        let mut emit_idx: usize = 0;
32427        #[cfg(feature = "extra-children")]
32428        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32429            extra_iter
32430                .next()
32431                .unwrap()
32432                .node
32433                .write_to(writer)
32434                .map_err(SerializeError::from)?;
32435        }
32436        #[cfg(feature = "dml-diagrams")]
32437        if let Some(ref val) = self.pr_set {
32438            val.write_element("a:prSet", writer)?;
32439        }
32440        #[cfg(feature = "extra-children")]
32441        {
32442            emit_idx += 1;
32443        }
32444        #[cfg(feature = "extra-children")]
32445        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32446            extra_iter
32447                .next()
32448                .unwrap()
32449                .node
32450                .write_to(writer)
32451                .map_err(SerializeError::from)?;
32452        }
32453        #[cfg(feature = "dml-diagrams")]
32454        if let Some(ref val) = self.sp_pr {
32455            val.write_element("a:spPr", writer)?;
32456        }
32457        #[cfg(feature = "extra-children")]
32458        {
32459            emit_idx += 1;
32460        }
32461        #[cfg(feature = "extra-children")]
32462        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32463            extra_iter
32464                .next()
32465                .unwrap()
32466                .node
32467                .write_to(writer)
32468                .map_err(SerializeError::from)?;
32469        }
32470        #[cfg(feature = "dml-diagrams")]
32471        if let Some(ref val) = self.t {
32472            val.write_element("a:t", writer)?;
32473        }
32474        #[cfg(feature = "extra-children")]
32475        {
32476            emit_idx += 1;
32477        }
32478        #[cfg(feature = "extra-children")]
32479        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32480            extra_iter
32481                .next()
32482                .unwrap()
32483                .node
32484                .write_to(writer)
32485                .map_err(SerializeError::from)?;
32486        }
32487        #[cfg(feature = "dml-diagrams")]
32488        if let Some(ref val) = self.ext_lst {
32489            val.write_element("a:extLst", writer)?;
32490        }
32491        #[cfg(feature = "extra-children")]
32492        {
32493            emit_idx += 1;
32494        }
32495        #[cfg(feature = "extra-children")]
32496        for extra in extra_iter {
32497            extra.node.write_to(writer).map_err(SerializeError::from)?;
32498        }
32499        Ok(())
32500    }
32501
32502    fn is_empty_element(&self) -> bool {
32503        #[cfg(feature = "dml-diagrams")]
32504        if self.pr_set.is_some() {
32505            return false;
32506        }
32507        #[cfg(feature = "dml-diagrams")]
32508        if self.sp_pr.is_some() {
32509            return false;
32510        }
32511        #[cfg(feature = "dml-diagrams")]
32512        if self.t.is_some() {
32513            return false;
32514        }
32515        #[cfg(feature = "dml-diagrams")]
32516        if self.ext_lst.is_some() {
32517            return false;
32518        }
32519        #[cfg(feature = "extra-children")]
32520        if !self.extra_children.is_empty() {
32521            return false;
32522        }
32523        true
32524    }
32525}
32526
32527impl ToXml for DiagramPointList {
32528    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32529        #[cfg(feature = "extra-children")]
32530        let mut extra_iter = self.extra_children.iter().peekable();
32531        #[cfg(feature = "extra-children")]
32532        let mut emit_idx: usize = 0;
32533        #[cfg(feature = "dml-diagrams")]
32534        for item in &self.pt {
32535            #[cfg(feature = "extra-children")]
32536            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32537                extra_iter
32538                    .next()
32539                    .unwrap()
32540                    .node
32541                    .write_to(writer)
32542                    .map_err(SerializeError::from)?;
32543            }
32544            item.write_element("a:pt", writer)?;
32545            #[cfg(feature = "extra-children")]
32546            {
32547                emit_idx += 1;
32548            }
32549        }
32550        #[cfg(feature = "extra-children")]
32551        for extra in extra_iter {
32552            extra.node.write_to(writer).map_err(SerializeError::from)?;
32553        }
32554        Ok(())
32555    }
32556
32557    fn is_empty_element(&self) -> bool {
32558        #[cfg(feature = "dml-diagrams")]
32559        if !self.pt.is_empty() {
32560            return false;
32561        }
32562        #[cfg(feature = "extra-children")]
32563        if !self.extra_children.is_empty() {
32564            return false;
32565        }
32566        true
32567    }
32568}
32569
32570impl ToXml for DiagramConnection {
32571    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
32572        #[allow(unused_mut)]
32573        let mut start = start;
32574        #[cfg(feature = "dml-diagrams")]
32575        {
32576            let val = &self.model_id;
32577            {
32578                let s = val.to_string();
32579                start.push_attribute(("modelId", s.as_str()));
32580            }
32581        }
32582        #[cfg(feature = "dml-diagrams")]
32583        if let Some(ref val) = self.r#type {
32584            {
32585                let s = val.to_string();
32586                start.push_attribute(("type", s.as_str()));
32587            }
32588        }
32589        #[cfg(feature = "dml-diagrams")]
32590        {
32591            let val = &self.src_id;
32592            {
32593                let s = val.to_string();
32594                start.push_attribute(("srcId", s.as_str()));
32595            }
32596        }
32597        #[cfg(feature = "dml-diagrams")]
32598        {
32599            let val = &self.dest_id;
32600            {
32601                let s = val.to_string();
32602                start.push_attribute(("destId", s.as_str()));
32603            }
32604        }
32605        #[cfg(feature = "dml-diagrams")]
32606        {
32607            let val = &self.src_ord;
32608            {
32609                let s = val.to_string();
32610                start.push_attribute(("srcOrd", s.as_str()));
32611            }
32612        }
32613        #[cfg(feature = "dml-diagrams")]
32614        {
32615            let val = &self.dest_ord;
32616            {
32617                let s = val.to_string();
32618                start.push_attribute(("destOrd", s.as_str()));
32619            }
32620        }
32621        #[cfg(feature = "dml-diagrams")]
32622        if let Some(ref val) = self.par_trans_id {
32623            {
32624                let s = val.to_string();
32625                start.push_attribute(("parTransId", s.as_str()));
32626            }
32627        }
32628        #[cfg(feature = "dml-diagrams")]
32629        if let Some(ref val) = self.sib_trans_id {
32630            {
32631                let s = val.to_string();
32632                start.push_attribute(("sibTransId", s.as_str()));
32633            }
32634        }
32635        #[cfg(feature = "dml-diagrams")]
32636        if let Some(ref val) = self.pres_id {
32637            start.push_attribute(("presId", val.as_str()));
32638        }
32639        #[cfg(feature = "extra-attrs")]
32640        for (key, value) in &self.extra_attrs {
32641            start.push_attribute((key.as_str(), value.as_str()));
32642        }
32643        start
32644    }
32645
32646    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32647        #[cfg(feature = "extra-children")]
32648        let mut extra_iter = self.extra_children.iter().peekable();
32649        #[cfg(feature = "extra-children")]
32650        let mut emit_idx: usize = 0;
32651        #[cfg(feature = "extra-children")]
32652        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32653            extra_iter
32654                .next()
32655                .unwrap()
32656                .node
32657                .write_to(writer)
32658                .map_err(SerializeError::from)?;
32659        }
32660        #[cfg(feature = "dml-diagrams")]
32661        if let Some(ref val) = self.ext_lst {
32662            val.write_element("a:extLst", writer)?;
32663        }
32664        #[cfg(feature = "extra-children")]
32665        {
32666            emit_idx += 1;
32667        }
32668        #[cfg(feature = "extra-children")]
32669        for extra in extra_iter {
32670            extra.node.write_to(writer).map_err(SerializeError::from)?;
32671        }
32672        Ok(())
32673    }
32674
32675    fn is_empty_element(&self) -> bool {
32676        #[cfg(feature = "dml-diagrams")]
32677        if self.ext_lst.is_some() {
32678            return false;
32679        }
32680        #[cfg(feature = "extra-children")]
32681        if !self.extra_children.is_empty() {
32682            return false;
32683        }
32684        true
32685    }
32686}
32687
32688impl ToXml for DiagramConnectionList {
32689    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32690        #[cfg(feature = "extra-children")]
32691        let mut extra_iter = self.extra_children.iter().peekable();
32692        #[cfg(feature = "extra-children")]
32693        let mut emit_idx: usize = 0;
32694        #[cfg(feature = "dml-diagrams")]
32695        for item in &self.cxn {
32696            #[cfg(feature = "extra-children")]
32697            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32698                extra_iter
32699                    .next()
32700                    .unwrap()
32701                    .node
32702                    .write_to(writer)
32703                    .map_err(SerializeError::from)?;
32704            }
32705            item.write_element("a:cxn", writer)?;
32706            #[cfg(feature = "extra-children")]
32707            {
32708                emit_idx += 1;
32709            }
32710        }
32711        #[cfg(feature = "extra-children")]
32712        for extra in extra_iter {
32713            extra.node.write_to(writer).map_err(SerializeError::from)?;
32714        }
32715        Ok(())
32716    }
32717
32718    fn is_empty_element(&self) -> bool {
32719        #[cfg(feature = "dml-diagrams")]
32720        if !self.cxn.is_empty() {
32721            return false;
32722        }
32723        #[cfg(feature = "extra-children")]
32724        if !self.extra_children.is_empty() {
32725            return false;
32726        }
32727        true
32728    }
32729}
32730
32731impl ToXml for DataModel {
32732    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
32733        #[cfg(feature = "extra-children")]
32734        let mut extra_iter = self.extra_children.iter().peekable();
32735        #[cfg(feature = "extra-children")]
32736        let mut emit_idx: usize = 0;
32737        #[cfg(feature = "extra-children")]
32738        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32739            extra_iter
32740                .next()
32741                .unwrap()
32742                .node
32743                .write_to(writer)
32744                .map_err(SerializeError::from)?;
32745        }
32746        #[cfg(feature = "dml-diagrams")]
32747        {
32748            let val = &self.pt_lst;
32749            val.write_element("a:ptLst", writer)?;
32750        }
32751        #[cfg(feature = "extra-children")]
32752        {
32753            emit_idx += 1;
32754        }
32755        #[cfg(feature = "extra-children")]
32756        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32757            extra_iter
32758                .next()
32759                .unwrap()
32760                .node
32761                .write_to(writer)
32762                .map_err(SerializeError::from)?;
32763        }
32764        #[cfg(feature = "dml-diagrams")]
32765        if let Some(ref val) = self.cxn_lst {
32766            val.write_element("a:cxnLst", writer)?;
32767        }
32768        #[cfg(feature = "extra-children")]
32769        {
32770            emit_idx += 1;
32771        }
32772        #[cfg(feature = "extra-children")]
32773        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32774            extra_iter
32775                .next()
32776                .unwrap()
32777                .node
32778                .write_to(writer)
32779                .map_err(SerializeError::from)?;
32780        }
32781        #[cfg(feature = "dml-diagrams")]
32782        if let Some(ref val) = self.bg {
32783            val.write_element("a:bg", writer)?;
32784        }
32785        #[cfg(feature = "extra-children")]
32786        {
32787            emit_idx += 1;
32788        }
32789        #[cfg(feature = "extra-children")]
32790        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32791            extra_iter
32792                .next()
32793                .unwrap()
32794                .node
32795                .write_to(writer)
32796                .map_err(SerializeError::from)?;
32797        }
32798        #[cfg(feature = "dml-diagrams")]
32799        if let Some(ref val) = self.whole {
32800            val.write_element("a:whole", writer)?;
32801        }
32802        #[cfg(feature = "extra-children")]
32803        {
32804            emit_idx += 1;
32805        }
32806        #[cfg(feature = "extra-children")]
32807        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
32808            extra_iter
32809                .next()
32810                .unwrap()
32811                .node
32812                .write_to(writer)
32813                .map_err(SerializeError::from)?;
32814        }
32815        #[cfg(feature = "dml-diagrams")]
32816        if let Some(ref val) = self.ext_lst {
32817            val.write_element("a:extLst", writer)?;
32818        }
32819        #[cfg(feature = "extra-children")]
32820        {
32821            emit_idx += 1;
32822        }
32823        #[cfg(feature = "extra-children")]
32824        for extra in extra_iter {
32825            extra.node.write_to(writer).map_err(SerializeError::from)?;
32826        }
32827        Ok(())
32828    }
32829
32830    fn is_empty_element(&self) -> bool {
32831        #[cfg(feature = "dml-diagrams")]
32832        return false;
32833        #[cfg(feature = "dml-diagrams")]
32834        if self.cxn_lst.is_some() {
32835            return false;
32836        }
32837        #[cfg(feature = "dml-diagrams")]
32838        if self.bg.is_some() {
32839            return false;
32840        }
32841        #[cfg(feature = "dml-diagrams")]
32842        if self.whole.is_some() {
32843            return false;
32844        }
32845        #[cfg(feature = "dml-diagrams")]
32846        if self.ext_lst.is_some() {
32847            return false;
32848        }
32849        #[cfg(feature = "extra-children")]
32850        if !self.extra_children.is_empty() {
32851            return false;
32852        }
32853        true
32854    }
32855}
32856
32857impl ToXml for DdgrmAGIteratorAttributes {
32858    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
32859        #[allow(unused_mut)]
32860        let mut start = start;
32861        if let Some(ref val) = self.axis {
32862            start.push_attribute(("axis", val.as_str()));
32863        }
32864        if let Some(ref val) = self.pt_type {
32865            start.push_attribute(("ptType", val.as_str()));
32866        }
32867        if let Some(ref val) = self.hide_last_trans {
32868            start.push_attribute(("hideLastTrans", val.as_str()));
32869        }
32870        if let Some(ref val) = self.st {
32871            start.push_attribute(("st", val.as_str()));
32872        }
32873        if let Some(ref val) = self.cnt {
32874            start.push_attribute(("cnt", val.as_str()));
32875        }
32876        if let Some(ref val) = self.step {
32877            start.push_attribute(("step", val.as_str()));
32878        }
32879        #[cfg(feature = "extra-attrs")]
32880        for (key, value) in &self.extra_attrs {
32881            start.push_attribute((key.as_str(), value.as_str()));
32882        }
32883        start
32884    }
32885
32886    fn is_empty_element(&self) -> bool {
32887        true
32888    }
32889}
32890
32891impl ToXml for DdgrmAGConstraintAttributes {
32892    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
32893        #[allow(unused_mut)]
32894        let mut start = start;
32895        {
32896            let val = &self.r#type;
32897            {
32898                let s = val.to_string();
32899                start.push_attribute(("type", s.as_str()));
32900            }
32901        }
32902        if let Some(ref val) = self.r#for {
32903            {
32904                let s = val.to_string();
32905                start.push_attribute(("for", s.as_str()));
32906            }
32907        }
32908        if let Some(ref val) = self.for_name {
32909            start.push_attribute(("forName", val.as_str()));
32910        }
32911        if let Some(ref val) = self.pt_type {
32912            {
32913                let s = val.to_string();
32914                start.push_attribute(("ptType", s.as_str()));
32915            }
32916        }
32917        #[cfg(feature = "extra-attrs")]
32918        for (key, value) in &self.extra_attrs {
32919            start.push_attribute((key.as_str(), value.as_str()));
32920        }
32921        start
32922    }
32923
32924    fn is_empty_element(&self) -> bool {
32925        true
32926    }
32927}
32928
32929impl ToXml for DdgrmAGConstraintRefAttributes {
32930    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
32931        #[allow(unused_mut)]
32932        let mut start = start;
32933        if let Some(ref val) = self.ref_type {
32934            {
32935                let s = val.to_string();
32936                start.push_attribute(("refType", s.as_str()));
32937            }
32938        }
32939        if let Some(ref val) = self.ref_for {
32940            {
32941                let s = val.to_string();
32942                start.push_attribute(("refFor", s.as_str()));
32943            }
32944        }
32945        if let Some(ref val) = self.ref_for_name {
32946            start.push_attribute(("refForName", val.as_str()));
32947        }
32948        if let Some(ref val) = self.ref_pt_type {
32949            {
32950                let s = val.to_string();
32951                start.push_attribute(("refPtType", s.as_str()));
32952            }
32953        }
32954        #[cfg(feature = "extra-attrs")]
32955        for (key, value) in &self.extra_attrs {
32956            start.push_attribute((key.as_str(), value.as_str()));
32957        }
32958        start
32959    }
32960
32961    fn is_empty_element(&self) -> bool {
32962        true
32963    }
32964}
32965
32966impl ToXml for LayoutConstraint {
32967    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
32968        #[allow(unused_mut)]
32969        let mut start = start;
32970        #[cfg(feature = "dml-diagrams")]
32971        {
32972            let val = &self.r#type;
32973            {
32974                let s = val.to_string();
32975                start.push_attribute(("type", s.as_str()));
32976            }
32977        }
32978        #[cfg(feature = "dml-diagrams")]
32979        if let Some(ref val) = self.r#for {
32980            {
32981                let s = val.to_string();
32982                start.push_attribute(("for", s.as_str()));
32983            }
32984        }
32985        #[cfg(feature = "dml-diagrams")]
32986        if let Some(ref val) = self.for_name {
32987            start.push_attribute(("forName", val.as_str()));
32988        }
32989        #[cfg(feature = "dml-diagrams")]
32990        if let Some(ref val) = self.pt_type {
32991            {
32992                let s = val.to_string();
32993                start.push_attribute(("ptType", s.as_str()));
32994            }
32995        }
32996        #[cfg(feature = "dml-diagrams")]
32997        if let Some(ref val) = self.ref_type {
32998            {
32999                let s = val.to_string();
33000                start.push_attribute(("refType", s.as_str()));
33001            }
33002        }
33003        #[cfg(feature = "dml-diagrams")]
33004        if let Some(ref val) = self.ref_for {
33005            {
33006                let s = val.to_string();
33007                start.push_attribute(("refFor", s.as_str()));
33008            }
33009        }
33010        #[cfg(feature = "dml-diagrams")]
33011        if let Some(ref val) = self.ref_for_name {
33012            start.push_attribute(("refForName", val.as_str()));
33013        }
33014        #[cfg(feature = "dml-diagrams")]
33015        if let Some(ref val) = self.ref_pt_type {
33016            {
33017                let s = val.to_string();
33018                start.push_attribute(("refPtType", s.as_str()));
33019            }
33020        }
33021        #[cfg(feature = "dml-diagrams")]
33022        if let Some(ref val) = self.op {
33023            {
33024                let s = val.to_string();
33025                start.push_attribute(("op", s.as_str()));
33026            }
33027        }
33028        #[cfg(feature = "dml-diagrams")]
33029        if let Some(ref val) = self.value {
33030            {
33031                let s = val.to_string();
33032                start.push_attribute(("val", s.as_str()));
33033            }
33034        }
33035        #[cfg(feature = "dml-diagrams")]
33036        if let Some(ref val) = self.fact {
33037            {
33038                let s = val.to_string();
33039                start.push_attribute(("fact", s.as_str()));
33040            }
33041        }
33042        #[cfg(feature = "extra-attrs")]
33043        for (key, value) in &self.extra_attrs {
33044            start.push_attribute((key.as_str(), value.as_str()));
33045        }
33046        start
33047    }
33048
33049    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
33050        #[cfg(feature = "extra-children")]
33051        let mut extra_iter = self.extra_children.iter().peekable();
33052        #[cfg(feature = "extra-children")]
33053        let mut emit_idx: usize = 0;
33054        #[cfg(feature = "extra-children")]
33055        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33056            extra_iter
33057                .next()
33058                .unwrap()
33059                .node
33060                .write_to(writer)
33061                .map_err(SerializeError::from)?;
33062        }
33063        #[cfg(feature = "dml-diagrams")]
33064        if let Some(ref val) = self.ext_lst {
33065            val.write_element("a:extLst", writer)?;
33066        }
33067        #[cfg(feature = "extra-children")]
33068        {
33069            emit_idx += 1;
33070        }
33071        #[cfg(feature = "extra-children")]
33072        for extra in extra_iter {
33073            extra.node.write_to(writer).map_err(SerializeError::from)?;
33074        }
33075        Ok(())
33076    }
33077
33078    fn is_empty_element(&self) -> bool {
33079        #[cfg(feature = "dml-diagrams")]
33080        if self.ext_lst.is_some() {
33081            return false;
33082        }
33083        #[cfg(feature = "extra-children")]
33084        if !self.extra_children.is_empty() {
33085            return false;
33086        }
33087        true
33088    }
33089}
33090
33091impl ToXml for LayoutConstraints {
33092    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
33093        #[cfg(feature = "extra-children")]
33094        let mut extra_iter = self.extra_children.iter().peekable();
33095        #[cfg(feature = "extra-children")]
33096        let mut emit_idx: usize = 0;
33097        #[cfg(feature = "dml-diagrams")]
33098        for item in &self.constr {
33099            #[cfg(feature = "extra-children")]
33100            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33101                extra_iter
33102                    .next()
33103                    .unwrap()
33104                    .node
33105                    .write_to(writer)
33106                    .map_err(SerializeError::from)?;
33107            }
33108            item.write_element("a:constr", writer)?;
33109            #[cfg(feature = "extra-children")]
33110            {
33111                emit_idx += 1;
33112            }
33113        }
33114        #[cfg(feature = "extra-children")]
33115        for extra in extra_iter {
33116            extra.node.write_to(writer).map_err(SerializeError::from)?;
33117        }
33118        Ok(())
33119    }
33120
33121    fn is_empty_element(&self) -> bool {
33122        #[cfg(feature = "dml-diagrams")]
33123        if !self.constr.is_empty() {
33124            return false;
33125        }
33126        #[cfg(feature = "extra-children")]
33127        if !self.extra_children.is_empty() {
33128            return false;
33129        }
33130        true
33131    }
33132}
33133
33134impl ToXml for NumericRule {
33135    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
33136        #[allow(unused_mut)]
33137        let mut start = start;
33138        #[cfg(feature = "dml-diagrams")]
33139        {
33140            let val = &self.r#type;
33141            {
33142                let s = val.to_string();
33143                start.push_attribute(("type", s.as_str()));
33144            }
33145        }
33146        #[cfg(feature = "dml-diagrams")]
33147        if let Some(ref val) = self.r#for {
33148            {
33149                let s = val.to_string();
33150                start.push_attribute(("for", s.as_str()));
33151            }
33152        }
33153        #[cfg(feature = "dml-diagrams")]
33154        if let Some(ref val) = self.for_name {
33155            start.push_attribute(("forName", val.as_str()));
33156        }
33157        #[cfg(feature = "dml-diagrams")]
33158        if let Some(ref val) = self.pt_type {
33159            {
33160                let s = val.to_string();
33161                start.push_attribute(("ptType", s.as_str()));
33162            }
33163        }
33164        #[cfg(feature = "dml-diagrams")]
33165        if let Some(ref val) = self.value {
33166            {
33167                let s = val.to_string();
33168                start.push_attribute(("val", s.as_str()));
33169            }
33170        }
33171        #[cfg(feature = "dml-diagrams")]
33172        if let Some(ref val) = self.fact {
33173            {
33174                let s = val.to_string();
33175                start.push_attribute(("fact", s.as_str()));
33176            }
33177        }
33178        #[cfg(feature = "dml-diagrams")]
33179        if let Some(ref val) = self.max {
33180            {
33181                let s = val.to_string();
33182                start.push_attribute(("max", s.as_str()));
33183            }
33184        }
33185        #[cfg(feature = "extra-attrs")]
33186        for (key, value) in &self.extra_attrs {
33187            start.push_attribute((key.as_str(), value.as_str()));
33188        }
33189        start
33190    }
33191
33192    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
33193        #[cfg(feature = "extra-children")]
33194        let mut extra_iter = self.extra_children.iter().peekable();
33195        #[cfg(feature = "extra-children")]
33196        let mut emit_idx: usize = 0;
33197        #[cfg(feature = "extra-children")]
33198        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33199            extra_iter
33200                .next()
33201                .unwrap()
33202                .node
33203                .write_to(writer)
33204                .map_err(SerializeError::from)?;
33205        }
33206        #[cfg(feature = "dml-diagrams")]
33207        if let Some(ref val) = self.ext_lst {
33208            val.write_element("a:extLst", writer)?;
33209        }
33210        #[cfg(feature = "extra-children")]
33211        {
33212            emit_idx += 1;
33213        }
33214        #[cfg(feature = "extra-children")]
33215        for extra in extra_iter {
33216            extra.node.write_to(writer).map_err(SerializeError::from)?;
33217        }
33218        Ok(())
33219    }
33220
33221    fn is_empty_element(&self) -> bool {
33222        #[cfg(feature = "dml-diagrams")]
33223        if self.ext_lst.is_some() {
33224            return false;
33225        }
33226        #[cfg(feature = "extra-children")]
33227        if !self.extra_children.is_empty() {
33228            return false;
33229        }
33230        true
33231    }
33232}
33233
33234impl ToXml for LayoutRules {
33235    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
33236        #[cfg(feature = "extra-children")]
33237        let mut extra_iter = self.extra_children.iter().peekable();
33238        #[cfg(feature = "extra-children")]
33239        let mut emit_idx: usize = 0;
33240        #[cfg(feature = "dml-diagrams")]
33241        for item in &self.rule {
33242            #[cfg(feature = "extra-children")]
33243            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33244                extra_iter
33245                    .next()
33246                    .unwrap()
33247                    .node
33248                    .write_to(writer)
33249                    .map_err(SerializeError::from)?;
33250            }
33251            item.write_element("a:rule", writer)?;
33252            #[cfg(feature = "extra-children")]
33253            {
33254                emit_idx += 1;
33255            }
33256        }
33257        #[cfg(feature = "extra-children")]
33258        for extra in extra_iter {
33259            extra.node.write_to(writer).map_err(SerializeError::from)?;
33260        }
33261        Ok(())
33262    }
33263
33264    fn is_empty_element(&self) -> bool {
33265        #[cfg(feature = "dml-diagrams")]
33266        if !self.rule.is_empty() {
33267            return false;
33268        }
33269        #[cfg(feature = "extra-children")]
33270        if !self.extra_children.is_empty() {
33271            return false;
33272        }
33273        true
33274    }
33275}
33276
33277impl ToXml for PresentationOf {
33278    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
33279        #[allow(unused_mut)]
33280        let mut start = start;
33281        #[cfg(feature = "dml-diagrams")]
33282        if let Some(ref val) = self.axis {
33283            start.push_attribute(("axis", val.as_str()));
33284        }
33285        #[cfg(feature = "dml-diagrams")]
33286        if let Some(ref val) = self.pt_type {
33287            start.push_attribute(("ptType", val.as_str()));
33288        }
33289        #[cfg(feature = "dml-diagrams")]
33290        if let Some(ref val) = self.hide_last_trans {
33291            start.push_attribute(("hideLastTrans", val.as_str()));
33292        }
33293        #[cfg(feature = "dml-diagrams")]
33294        if let Some(ref val) = self.st {
33295            start.push_attribute(("st", val.as_str()));
33296        }
33297        #[cfg(feature = "dml-diagrams")]
33298        if let Some(ref val) = self.cnt {
33299            start.push_attribute(("cnt", val.as_str()));
33300        }
33301        #[cfg(feature = "dml-diagrams")]
33302        if let Some(ref val) = self.step {
33303            start.push_attribute(("step", val.as_str()));
33304        }
33305        #[cfg(feature = "extra-attrs")]
33306        for (key, value) in &self.extra_attrs {
33307            start.push_attribute((key.as_str(), value.as_str()));
33308        }
33309        start
33310    }
33311
33312    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
33313        #[cfg(feature = "extra-children")]
33314        let mut extra_iter = self.extra_children.iter().peekable();
33315        #[cfg(feature = "extra-children")]
33316        let mut emit_idx: usize = 0;
33317        #[cfg(feature = "extra-children")]
33318        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33319            extra_iter
33320                .next()
33321                .unwrap()
33322                .node
33323                .write_to(writer)
33324                .map_err(SerializeError::from)?;
33325        }
33326        #[cfg(feature = "dml-diagrams")]
33327        if let Some(ref val) = self.ext_lst {
33328            val.write_element("a:extLst", writer)?;
33329        }
33330        #[cfg(feature = "extra-children")]
33331        {
33332            emit_idx += 1;
33333        }
33334        #[cfg(feature = "extra-children")]
33335        for extra in extra_iter {
33336            extra.node.write_to(writer).map_err(SerializeError::from)?;
33337        }
33338        Ok(())
33339    }
33340
33341    fn is_empty_element(&self) -> bool {
33342        #[cfg(feature = "dml-diagrams")]
33343        if self.ext_lst.is_some() {
33344            return false;
33345        }
33346        #[cfg(feature = "extra-children")]
33347        if !self.extra_children.is_empty() {
33348            return false;
33349        }
33350        true
33351    }
33352}
33353
33354impl ToXml for LayoutAdjustment {
33355    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
33356        #[allow(unused_mut)]
33357        let mut start = start;
33358        #[cfg(feature = "dml-diagrams")]
33359        {
33360            let val = &self.idx;
33361            {
33362                let s = val.to_string();
33363                start.push_attribute(("idx", s.as_str()));
33364            }
33365        }
33366        #[cfg(feature = "dml-diagrams")]
33367        {
33368            let val = &self.value;
33369            {
33370                let s = val.to_string();
33371                start.push_attribute(("val", s.as_str()));
33372            }
33373        }
33374        #[cfg(feature = "extra-attrs")]
33375        for (key, value) in &self.extra_attrs {
33376            start.push_attribute((key.as_str(), value.as_str()));
33377        }
33378        start
33379    }
33380
33381    fn is_empty_element(&self) -> bool {
33382        true
33383    }
33384}
33385
33386impl ToXml for LayoutAdjustmentList {
33387    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
33388        #[cfg(feature = "extra-children")]
33389        let mut extra_iter = self.extra_children.iter().peekable();
33390        #[cfg(feature = "extra-children")]
33391        let mut emit_idx: usize = 0;
33392        #[cfg(feature = "dml-diagrams")]
33393        for item in &self.adj {
33394            #[cfg(feature = "extra-children")]
33395            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33396                extra_iter
33397                    .next()
33398                    .unwrap()
33399                    .node
33400                    .write_to(writer)
33401                    .map_err(SerializeError::from)?;
33402            }
33403            item.write_element("a:adj", writer)?;
33404            #[cfg(feature = "extra-children")]
33405            {
33406                emit_idx += 1;
33407            }
33408        }
33409        #[cfg(feature = "extra-children")]
33410        for extra in extra_iter {
33411            extra.node.write_to(writer).map_err(SerializeError::from)?;
33412        }
33413        Ok(())
33414    }
33415
33416    fn is_empty_element(&self) -> bool {
33417        #[cfg(feature = "dml-diagrams")]
33418        if !self.adj.is_empty() {
33419            return false;
33420        }
33421        #[cfg(feature = "extra-children")]
33422        if !self.extra_children.is_empty() {
33423            return false;
33424        }
33425        true
33426    }
33427}
33428
33429impl ToXml for AlgorithmParameter {
33430    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
33431        #[allow(unused_mut)]
33432        let mut start = start;
33433        #[cfg(feature = "dml-diagrams")]
33434        {
33435            let val = &self.r#type;
33436            {
33437                let s = val.to_string();
33438                start.push_attribute(("type", s.as_str()));
33439            }
33440        }
33441        #[cfg(feature = "dml-diagrams")]
33442        {
33443            let val = &self.value;
33444            {
33445                let s = val.to_string();
33446                start.push_attribute(("val", s.as_str()));
33447            }
33448        }
33449        #[cfg(feature = "extra-attrs")]
33450        for (key, value) in &self.extra_attrs {
33451            start.push_attribute((key.as_str(), value.as_str()));
33452        }
33453        start
33454    }
33455
33456    fn is_empty_element(&self) -> bool {
33457        true
33458    }
33459}
33460
33461impl ToXml for LayoutAlgorithm {
33462    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
33463        #[allow(unused_mut)]
33464        let mut start = start;
33465        #[cfg(feature = "dml-diagrams")]
33466        {
33467            let val = &self.r#type;
33468            {
33469                let s = val.to_string();
33470                start.push_attribute(("type", s.as_str()));
33471            }
33472        }
33473        #[cfg(feature = "dml-diagrams")]
33474        if let Some(ref val) = self.rev {
33475            {
33476                let s = val.to_string();
33477                start.push_attribute(("rev", s.as_str()));
33478            }
33479        }
33480        #[cfg(feature = "extra-attrs")]
33481        for (key, value) in &self.extra_attrs {
33482            start.push_attribute((key.as_str(), value.as_str()));
33483        }
33484        start
33485    }
33486
33487    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
33488        #[cfg(feature = "extra-children")]
33489        let mut extra_iter = self.extra_children.iter().peekable();
33490        #[cfg(feature = "extra-children")]
33491        let mut emit_idx: usize = 0;
33492        #[cfg(feature = "dml-diagrams")]
33493        for item in &self.param {
33494            #[cfg(feature = "extra-children")]
33495            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33496                extra_iter
33497                    .next()
33498                    .unwrap()
33499                    .node
33500                    .write_to(writer)
33501                    .map_err(SerializeError::from)?;
33502            }
33503            item.write_element("a:param", writer)?;
33504            #[cfg(feature = "extra-children")]
33505            {
33506                emit_idx += 1;
33507            }
33508        }
33509        #[cfg(feature = "extra-children")]
33510        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33511            extra_iter
33512                .next()
33513                .unwrap()
33514                .node
33515                .write_to(writer)
33516                .map_err(SerializeError::from)?;
33517        }
33518        #[cfg(feature = "dml-diagrams")]
33519        if let Some(ref val) = self.ext_lst {
33520            val.write_element("a:extLst", writer)?;
33521        }
33522        #[cfg(feature = "extra-children")]
33523        {
33524            emit_idx += 1;
33525        }
33526        #[cfg(feature = "extra-children")]
33527        for extra in extra_iter {
33528            extra.node.write_to(writer).map_err(SerializeError::from)?;
33529        }
33530        Ok(())
33531    }
33532
33533    fn is_empty_element(&self) -> bool {
33534        #[cfg(feature = "dml-diagrams")]
33535        if !self.param.is_empty() {
33536            return false;
33537        }
33538        #[cfg(feature = "dml-diagrams")]
33539        if self.ext_lst.is_some() {
33540            return false;
33541        }
33542        #[cfg(feature = "extra-children")]
33543        if !self.extra_children.is_empty() {
33544            return false;
33545        }
33546        true
33547    }
33548}
33549
33550impl ToXml for LayoutNode {
33551    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
33552        #[allow(unused_mut)]
33553        let mut start = start;
33554        #[cfg(feature = "dml-diagrams")]
33555        if let Some(ref val) = self.name {
33556            start.push_attribute(("name", val.as_str()));
33557        }
33558        #[cfg(feature = "dml-diagrams")]
33559        if let Some(ref val) = self.style_lbl {
33560            start.push_attribute(("styleLbl", val.as_str()));
33561        }
33562        #[cfg(feature = "dml-diagrams")]
33563        if let Some(ref val) = self.ch_order {
33564            {
33565                let s = val.to_string();
33566                start.push_attribute(("chOrder", s.as_str()));
33567            }
33568        }
33569        #[cfg(feature = "dml-diagrams")]
33570        if let Some(ref val) = self.move_with {
33571            start.push_attribute(("moveWith", val.as_str()));
33572        }
33573        #[cfg(feature = "extra-attrs")]
33574        for (key, value) in &self.extra_attrs {
33575            start.push_attribute((key.as_str(), value.as_str()));
33576        }
33577        start
33578    }
33579
33580    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
33581        #[cfg(feature = "extra-children")]
33582        let mut extra_iter = self.extra_children.iter().peekable();
33583        #[cfg(feature = "extra-children")]
33584        let mut emit_idx: usize = 0;
33585        #[cfg(feature = "extra-children")]
33586        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33587            extra_iter
33588                .next()
33589                .unwrap()
33590                .node
33591                .write_to(writer)
33592                .map_err(SerializeError::from)?;
33593        }
33594        #[cfg(feature = "dml-diagrams")]
33595        if let Some(ref val) = self.alg {
33596            val.write_element("a:alg", writer)?;
33597        }
33598        #[cfg(feature = "extra-children")]
33599        {
33600            emit_idx += 1;
33601        }
33602        #[cfg(feature = "extra-children")]
33603        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33604            extra_iter
33605                .next()
33606                .unwrap()
33607                .node
33608                .write_to(writer)
33609                .map_err(SerializeError::from)?;
33610        }
33611        #[cfg(feature = "dml-diagrams")]
33612        if let Some(ref val) = self.shape {
33613            val.write_element("a:shape", writer)?;
33614        }
33615        #[cfg(feature = "extra-children")]
33616        {
33617            emit_idx += 1;
33618        }
33619        #[cfg(feature = "extra-children")]
33620        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33621            extra_iter
33622                .next()
33623                .unwrap()
33624                .node
33625                .write_to(writer)
33626                .map_err(SerializeError::from)?;
33627        }
33628        #[cfg(feature = "dml-diagrams")]
33629        if let Some(ref val) = self.pres_of {
33630            val.write_element("a:presOf", writer)?;
33631        }
33632        #[cfg(feature = "extra-children")]
33633        {
33634            emit_idx += 1;
33635        }
33636        #[cfg(feature = "extra-children")]
33637        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33638            extra_iter
33639                .next()
33640                .unwrap()
33641                .node
33642                .write_to(writer)
33643                .map_err(SerializeError::from)?;
33644        }
33645        #[cfg(feature = "dml-diagrams")]
33646        if let Some(ref val) = self.constr_lst {
33647            val.write_element("a:constrLst", writer)?;
33648        }
33649        #[cfg(feature = "extra-children")]
33650        {
33651            emit_idx += 1;
33652        }
33653        #[cfg(feature = "extra-children")]
33654        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33655            extra_iter
33656                .next()
33657                .unwrap()
33658                .node
33659                .write_to(writer)
33660                .map_err(SerializeError::from)?;
33661        }
33662        #[cfg(feature = "dml-diagrams")]
33663        if let Some(ref val) = self.rule_lst {
33664            val.write_element("a:ruleLst", writer)?;
33665        }
33666        #[cfg(feature = "extra-children")]
33667        {
33668            emit_idx += 1;
33669        }
33670        #[cfg(feature = "extra-children")]
33671        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33672            extra_iter
33673                .next()
33674                .unwrap()
33675                .node
33676                .write_to(writer)
33677                .map_err(SerializeError::from)?;
33678        }
33679        #[cfg(feature = "dml-diagrams")]
33680        if let Some(ref val) = self.var_lst {
33681            val.write_element("a:varLst", writer)?;
33682        }
33683        #[cfg(feature = "extra-children")]
33684        {
33685            emit_idx += 1;
33686        }
33687        #[cfg(feature = "dml-diagrams")]
33688        for item in &self.for_each {
33689            #[cfg(feature = "extra-children")]
33690            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33691                extra_iter
33692                    .next()
33693                    .unwrap()
33694                    .node
33695                    .write_to(writer)
33696                    .map_err(SerializeError::from)?;
33697            }
33698            item.write_element("a:forEach", writer)?;
33699            #[cfg(feature = "extra-children")]
33700            {
33701                emit_idx += 1;
33702            }
33703        }
33704        #[cfg(feature = "dml-diagrams")]
33705        for item in &self.layout_node {
33706            #[cfg(feature = "extra-children")]
33707            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33708                extra_iter
33709                    .next()
33710                    .unwrap()
33711                    .node
33712                    .write_to(writer)
33713                    .map_err(SerializeError::from)?;
33714            }
33715            item.write_element("a:layoutNode", writer)?;
33716            #[cfg(feature = "extra-children")]
33717            {
33718                emit_idx += 1;
33719            }
33720        }
33721        #[cfg(feature = "dml-diagrams")]
33722        for item in &self.choose {
33723            #[cfg(feature = "extra-children")]
33724            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33725                extra_iter
33726                    .next()
33727                    .unwrap()
33728                    .node
33729                    .write_to(writer)
33730                    .map_err(SerializeError::from)?;
33731            }
33732            item.write_element("a:choose", writer)?;
33733            #[cfg(feature = "extra-children")]
33734            {
33735                emit_idx += 1;
33736            }
33737        }
33738        #[cfg(feature = "extra-children")]
33739        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33740            extra_iter
33741                .next()
33742                .unwrap()
33743                .node
33744                .write_to(writer)
33745                .map_err(SerializeError::from)?;
33746        }
33747        #[cfg(feature = "dml-diagrams")]
33748        if let Some(ref val) = self.ext_lst {
33749            val.write_element("a:extLst", writer)?;
33750        }
33751        #[cfg(feature = "extra-children")]
33752        {
33753            emit_idx += 1;
33754        }
33755        #[cfg(feature = "extra-children")]
33756        for extra in extra_iter {
33757            extra.node.write_to(writer).map_err(SerializeError::from)?;
33758        }
33759        Ok(())
33760    }
33761
33762    fn is_empty_element(&self) -> bool {
33763        #[cfg(feature = "dml-diagrams")]
33764        if self.alg.is_some() {
33765            return false;
33766        }
33767        #[cfg(feature = "dml-diagrams")]
33768        if self.shape.is_some() {
33769            return false;
33770        }
33771        #[cfg(feature = "dml-diagrams")]
33772        if self.pres_of.is_some() {
33773            return false;
33774        }
33775        #[cfg(feature = "dml-diagrams")]
33776        if self.constr_lst.is_some() {
33777            return false;
33778        }
33779        #[cfg(feature = "dml-diagrams")]
33780        if self.rule_lst.is_some() {
33781            return false;
33782        }
33783        #[cfg(feature = "dml-diagrams")]
33784        if self.var_lst.is_some() {
33785            return false;
33786        }
33787        #[cfg(feature = "dml-diagrams")]
33788        if !self.for_each.is_empty() {
33789            return false;
33790        }
33791        #[cfg(feature = "dml-diagrams")]
33792        if !self.layout_node.is_empty() {
33793            return false;
33794        }
33795        #[cfg(feature = "dml-diagrams")]
33796        if !self.choose.is_empty() {
33797            return false;
33798        }
33799        #[cfg(feature = "dml-diagrams")]
33800        if self.ext_lst.is_some() {
33801            return false;
33802        }
33803        #[cfg(feature = "extra-children")]
33804        if !self.extra_children.is_empty() {
33805            return false;
33806        }
33807        true
33808    }
33809}
33810
33811impl ToXml for LayoutForEach {
33812    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
33813        #[allow(unused_mut)]
33814        let mut start = start;
33815        #[cfg(feature = "dml-diagrams")]
33816        if let Some(ref val) = self.name {
33817            start.push_attribute(("name", val.as_str()));
33818        }
33819        #[cfg(feature = "dml-diagrams")]
33820        if let Some(ref val) = self.r#ref {
33821            start.push_attribute(("ref", val.as_str()));
33822        }
33823        #[cfg(feature = "dml-diagrams")]
33824        if let Some(ref val) = self.axis {
33825            start.push_attribute(("axis", val.as_str()));
33826        }
33827        #[cfg(feature = "dml-diagrams")]
33828        if let Some(ref val) = self.pt_type {
33829            start.push_attribute(("ptType", val.as_str()));
33830        }
33831        #[cfg(feature = "dml-diagrams")]
33832        if let Some(ref val) = self.hide_last_trans {
33833            start.push_attribute(("hideLastTrans", val.as_str()));
33834        }
33835        #[cfg(feature = "dml-diagrams")]
33836        if let Some(ref val) = self.st {
33837            start.push_attribute(("st", val.as_str()));
33838        }
33839        #[cfg(feature = "dml-diagrams")]
33840        if let Some(ref val) = self.cnt {
33841            start.push_attribute(("cnt", val.as_str()));
33842        }
33843        #[cfg(feature = "dml-diagrams")]
33844        if let Some(ref val) = self.step {
33845            start.push_attribute(("step", val.as_str()));
33846        }
33847        #[cfg(feature = "extra-attrs")]
33848        for (key, value) in &self.extra_attrs {
33849            start.push_attribute((key.as_str(), value.as_str()));
33850        }
33851        start
33852    }
33853
33854    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
33855        #[cfg(feature = "extra-children")]
33856        let mut extra_iter = self.extra_children.iter().peekable();
33857        #[cfg(feature = "extra-children")]
33858        let mut emit_idx: usize = 0;
33859        #[cfg(feature = "extra-children")]
33860        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33861            extra_iter
33862                .next()
33863                .unwrap()
33864                .node
33865                .write_to(writer)
33866                .map_err(SerializeError::from)?;
33867        }
33868        #[cfg(feature = "dml-diagrams")]
33869        if let Some(ref val) = self.alg {
33870            val.write_element("a:alg", writer)?;
33871        }
33872        #[cfg(feature = "extra-children")]
33873        {
33874            emit_idx += 1;
33875        }
33876        #[cfg(feature = "extra-children")]
33877        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33878            extra_iter
33879                .next()
33880                .unwrap()
33881                .node
33882                .write_to(writer)
33883                .map_err(SerializeError::from)?;
33884        }
33885        #[cfg(feature = "dml-diagrams")]
33886        if let Some(ref val) = self.shape {
33887            val.write_element("a:shape", writer)?;
33888        }
33889        #[cfg(feature = "extra-children")]
33890        {
33891            emit_idx += 1;
33892        }
33893        #[cfg(feature = "extra-children")]
33894        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33895            extra_iter
33896                .next()
33897                .unwrap()
33898                .node
33899                .write_to(writer)
33900                .map_err(SerializeError::from)?;
33901        }
33902        #[cfg(feature = "dml-diagrams")]
33903        if let Some(ref val) = self.pres_of {
33904            val.write_element("a:presOf", writer)?;
33905        }
33906        #[cfg(feature = "extra-children")]
33907        {
33908            emit_idx += 1;
33909        }
33910        #[cfg(feature = "extra-children")]
33911        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33912            extra_iter
33913                .next()
33914                .unwrap()
33915                .node
33916                .write_to(writer)
33917                .map_err(SerializeError::from)?;
33918        }
33919        #[cfg(feature = "dml-diagrams")]
33920        if let Some(ref val) = self.constr_lst {
33921            val.write_element("a:constrLst", writer)?;
33922        }
33923        #[cfg(feature = "extra-children")]
33924        {
33925            emit_idx += 1;
33926        }
33927        #[cfg(feature = "extra-children")]
33928        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33929            extra_iter
33930                .next()
33931                .unwrap()
33932                .node
33933                .write_to(writer)
33934                .map_err(SerializeError::from)?;
33935        }
33936        #[cfg(feature = "dml-diagrams")]
33937        if let Some(ref val) = self.rule_lst {
33938            val.write_element("a:ruleLst", writer)?;
33939        }
33940        #[cfg(feature = "extra-children")]
33941        {
33942            emit_idx += 1;
33943        }
33944        #[cfg(feature = "dml-diagrams")]
33945        for item in &self.for_each {
33946            #[cfg(feature = "extra-children")]
33947            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33948                extra_iter
33949                    .next()
33950                    .unwrap()
33951                    .node
33952                    .write_to(writer)
33953                    .map_err(SerializeError::from)?;
33954            }
33955            item.write_element("a:forEach", writer)?;
33956            #[cfg(feature = "extra-children")]
33957            {
33958                emit_idx += 1;
33959            }
33960        }
33961        #[cfg(feature = "dml-diagrams")]
33962        for item in &self.layout_node {
33963            #[cfg(feature = "extra-children")]
33964            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33965                extra_iter
33966                    .next()
33967                    .unwrap()
33968                    .node
33969                    .write_to(writer)
33970                    .map_err(SerializeError::from)?;
33971            }
33972            item.write_element("a:layoutNode", writer)?;
33973            #[cfg(feature = "extra-children")]
33974            {
33975                emit_idx += 1;
33976            }
33977        }
33978        #[cfg(feature = "dml-diagrams")]
33979        for item in &self.choose {
33980            #[cfg(feature = "extra-children")]
33981            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33982                extra_iter
33983                    .next()
33984                    .unwrap()
33985                    .node
33986                    .write_to(writer)
33987                    .map_err(SerializeError::from)?;
33988            }
33989            item.write_element("a:choose", writer)?;
33990            #[cfg(feature = "extra-children")]
33991            {
33992                emit_idx += 1;
33993            }
33994        }
33995        #[cfg(feature = "extra-children")]
33996        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
33997            extra_iter
33998                .next()
33999                .unwrap()
34000                .node
34001                .write_to(writer)
34002                .map_err(SerializeError::from)?;
34003        }
34004        #[cfg(feature = "dml-diagrams")]
34005        if let Some(ref val) = self.ext_lst {
34006            val.write_element("a:extLst", writer)?;
34007        }
34008        #[cfg(feature = "extra-children")]
34009        {
34010            emit_idx += 1;
34011        }
34012        #[cfg(feature = "extra-children")]
34013        for extra in extra_iter {
34014            extra.node.write_to(writer).map_err(SerializeError::from)?;
34015        }
34016        Ok(())
34017    }
34018
34019    fn is_empty_element(&self) -> bool {
34020        #[cfg(feature = "dml-diagrams")]
34021        if self.alg.is_some() {
34022            return false;
34023        }
34024        #[cfg(feature = "dml-diagrams")]
34025        if self.shape.is_some() {
34026            return false;
34027        }
34028        #[cfg(feature = "dml-diagrams")]
34029        if self.pres_of.is_some() {
34030            return false;
34031        }
34032        #[cfg(feature = "dml-diagrams")]
34033        if self.constr_lst.is_some() {
34034            return false;
34035        }
34036        #[cfg(feature = "dml-diagrams")]
34037        if self.rule_lst.is_some() {
34038            return false;
34039        }
34040        #[cfg(feature = "dml-diagrams")]
34041        if !self.for_each.is_empty() {
34042            return false;
34043        }
34044        #[cfg(feature = "dml-diagrams")]
34045        if !self.layout_node.is_empty() {
34046            return false;
34047        }
34048        #[cfg(feature = "dml-diagrams")]
34049        if !self.choose.is_empty() {
34050            return false;
34051        }
34052        #[cfg(feature = "dml-diagrams")]
34053        if self.ext_lst.is_some() {
34054            return false;
34055        }
34056        #[cfg(feature = "extra-children")]
34057        if !self.extra_children.is_empty() {
34058            return false;
34059        }
34060        true
34061    }
34062}
34063
34064impl ToXml for LayoutWhen {
34065    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
34066        #[allow(unused_mut)]
34067        let mut start = start;
34068        #[cfg(feature = "dml-diagrams")]
34069        if let Some(ref val) = self.name {
34070            start.push_attribute(("name", val.as_str()));
34071        }
34072        #[cfg(feature = "dml-diagrams")]
34073        if let Some(ref val) = self.axis {
34074            start.push_attribute(("axis", val.as_str()));
34075        }
34076        #[cfg(feature = "dml-diagrams")]
34077        if let Some(ref val) = self.pt_type {
34078            start.push_attribute(("ptType", val.as_str()));
34079        }
34080        #[cfg(feature = "dml-diagrams")]
34081        if let Some(ref val) = self.hide_last_trans {
34082            start.push_attribute(("hideLastTrans", val.as_str()));
34083        }
34084        #[cfg(feature = "dml-diagrams")]
34085        if let Some(ref val) = self.st {
34086            start.push_attribute(("st", val.as_str()));
34087        }
34088        #[cfg(feature = "dml-diagrams")]
34089        if let Some(ref val) = self.cnt {
34090            start.push_attribute(("cnt", val.as_str()));
34091        }
34092        #[cfg(feature = "dml-diagrams")]
34093        if let Some(ref val) = self.step {
34094            start.push_attribute(("step", val.as_str()));
34095        }
34096        #[cfg(feature = "dml-diagrams")]
34097        {
34098            let val = &self.func;
34099            {
34100                let s = val.to_string();
34101                start.push_attribute(("func", s.as_str()));
34102            }
34103        }
34104        #[cfg(feature = "dml-diagrams")]
34105        if let Some(ref val) = self.arg {
34106            {
34107                let s = val.to_string();
34108                start.push_attribute(("arg", s.as_str()));
34109            }
34110        }
34111        #[cfg(feature = "dml-diagrams")]
34112        {
34113            let val = &self.op;
34114            {
34115                let s = val.to_string();
34116                start.push_attribute(("op", s.as_str()));
34117            }
34118        }
34119        #[cfg(feature = "dml-diagrams")]
34120        {
34121            let val = &self.value;
34122            {
34123                let s = val.to_string();
34124                start.push_attribute(("val", s.as_str()));
34125            }
34126        }
34127        #[cfg(feature = "extra-attrs")]
34128        for (key, value) in &self.extra_attrs {
34129            start.push_attribute((key.as_str(), value.as_str()));
34130        }
34131        start
34132    }
34133
34134    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
34135        #[cfg(feature = "extra-children")]
34136        let mut extra_iter = self.extra_children.iter().peekable();
34137        #[cfg(feature = "extra-children")]
34138        let mut emit_idx: usize = 0;
34139        #[cfg(feature = "extra-children")]
34140        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34141            extra_iter
34142                .next()
34143                .unwrap()
34144                .node
34145                .write_to(writer)
34146                .map_err(SerializeError::from)?;
34147        }
34148        #[cfg(feature = "dml-diagrams")]
34149        if let Some(ref val) = self.alg {
34150            val.write_element("a:alg", writer)?;
34151        }
34152        #[cfg(feature = "extra-children")]
34153        {
34154            emit_idx += 1;
34155        }
34156        #[cfg(feature = "extra-children")]
34157        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34158            extra_iter
34159                .next()
34160                .unwrap()
34161                .node
34162                .write_to(writer)
34163                .map_err(SerializeError::from)?;
34164        }
34165        #[cfg(feature = "dml-diagrams")]
34166        if let Some(ref val) = self.shape {
34167            val.write_element("a:shape", writer)?;
34168        }
34169        #[cfg(feature = "extra-children")]
34170        {
34171            emit_idx += 1;
34172        }
34173        #[cfg(feature = "extra-children")]
34174        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34175            extra_iter
34176                .next()
34177                .unwrap()
34178                .node
34179                .write_to(writer)
34180                .map_err(SerializeError::from)?;
34181        }
34182        #[cfg(feature = "dml-diagrams")]
34183        if let Some(ref val) = self.pres_of {
34184            val.write_element("a:presOf", writer)?;
34185        }
34186        #[cfg(feature = "extra-children")]
34187        {
34188            emit_idx += 1;
34189        }
34190        #[cfg(feature = "extra-children")]
34191        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34192            extra_iter
34193                .next()
34194                .unwrap()
34195                .node
34196                .write_to(writer)
34197                .map_err(SerializeError::from)?;
34198        }
34199        #[cfg(feature = "dml-diagrams")]
34200        if let Some(ref val) = self.constr_lst {
34201            val.write_element("a:constrLst", writer)?;
34202        }
34203        #[cfg(feature = "extra-children")]
34204        {
34205            emit_idx += 1;
34206        }
34207        #[cfg(feature = "extra-children")]
34208        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34209            extra_iter
34210                .next()
34211                .unwrap()
34212                .node
34213                .write_to(writer)
34214                .map_err(SerializeError::from)?;
34215        }
34216        #[cfg(feature = "dml-diagrams")]
34217        if let Some(ref val) = self.rule_lst {
34218            val.write_element("a:ruleLst", writer)?;
34219        }
34220        #[cfg(feature = "extra-children")]
34221        {
34222            emit_idx += 1;
34223        }
34224        #[cfg(feature = "dml-diagrams")]
34225        for item in &self.for_each {
34226            #[cfg(feature = "extra-children")]
34227            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34228                extra_iter
34229                    .next()
34230                    .unwrap()
34231                    .node
34232                    .write_to(writer)
34233                    .map_err(SerializeError::from)?;
34234            }
34235            item.write_element("a:forEach", writer)?;
34236            #[cfg(feature = "extra-children")]
34237            {
34238                emit_idx += 1;
34239            }
34240        }
34241        #[cfg(feature = "dml-diagrams")]
34242        for item in &self.layout_node {
34243            #[cfg(feature = "extra-children")]
34244            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34245                extra_iter
34246                    .next()
34247                    .unwrap()
34248                    .node
34249                    .write_to(writer)
34250                    .map_err(SerializeError::from)?;
34251            }
34252            item.write_element("a:layoutNode", writer)?;
34253            #[cfg(feature = "extra-children")]
34254            {
34255                emit_idx += 1;
34256            }
34257        }
34258        #[cfg(feature = "dml-diagrams")]
34259        for item in &self.choose {
34260            #[cfg(feature = "extra-children")]
34261            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34262                extra_iter
34263                    .next()
34264                    .unwrap()
34265                    .node
34266                    .write_to(writer)
34267                    .map_err(SerializeError::from)?;
34268            }
34269            item.write_element("a:choose", writer)?;
34270            #[cfg(feature = "extra-children")]
34271            {
34272                emit_idx += 1;
34273            }
34274        }
34275        #[cfg(feature = "extra-children")]
34276        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34277            extra_iter
34278                .next()
34279                .unwrap()
34280                .node
34281                .write_to(writer)
34282                .map_err(SerializeError::from)?;
34283        }
34284        #[cfg(feature = "dml-diagrams")]
34285        if let Some(ref val) = self.ext_lst {
34286            val.write_element("a:extLst", writer)?;
34287        }
34288        #[cfg(feature = "extra-children")]
34289        {
34290            emit_idx += 1;
34291        }
34292        #[cfg(feature = "extra-children")]
34293        for extra in extra_iter {
34294            extra.node.write_to(writer).map_err(SerializeError::from)?;
34295        }
34296        Ok(())
34297    }
34298
34299    fn is_empty_element(&self) -> bool {
34300        #[cfg(feature = "dml-diagrams")]
34301        if self.alg.is_some() {
34302            return false;
34303        }
34304        #[cfg(feature = "dml-diagrams")]
34305        if self.shape.is_some() {
34306            return false;
34307        }
34308        #[cfg(feature = "dml-diagrams")]
34309        if self.pres_of.is_some() {
34310            return false;
34311        }
34312        #[cfg(feature = "dml-diagrams")]
34313        if self.constr_lst.is_some() {
34314            return false;
34315        }
34316        #[cfg(feature = "dml-diagrams")]
34317        if self.rule_lst.is_some() {
34318            return false;
34319        }
34320        #[cfg(feature = "dml-diagrams")]
34321        if !self.for_each.is_empty() {
34322            return false;
34323        }
34324        #[cfg(feature = "dml-diagrams")]
34325        if !self.layout_node.is_empty() {
34326            return false;
34327        }
34328        #[cfg(feature = "dml-diagrams")]
34329        if !self.choose.is_empty() {
34330            return false;
34331        }
34332        #[cfg(feature = "dml-diagrams")]
34333        if self.ext_lst.is_some() {
34334            return false;
34335        }
34336        #[cfg(feature = "extra-children")]
34337        if !self.extra_children.is_empty() {
34338            return false;
34339        }
34340        true
34341    }
34342}
34343
34344impl ToXml for LayoutOtherwise {
34345    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
34346        #[allow(unused_mut)]
34347        let mut start = start;
34348        #[cfg(feature = "dml-diagrams")]
34349        if let Some(ref val) = self.name {
34350            start.push_attribute(("name", val.as_str()));
34351        }
34352        #[cfg(feature = "extra-attrs")]
34353        for (key, value) in &self.extra_attrs {
34354            start.push_attribute((key.as_str(), value.as_str()));
34355        }
34356        start
34357    }
34358
34359    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
34360        #[cfg(feature = "extra-children")]
34361        let mut extra_iter = self.extra_children.iter().peekable();
34362        #[cfg(feature = "extra-children")]
34363        let mut emit_idx: usize = 0;
34364        #[cfg(feature = "extra-children")]
34365        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34366            extra_iter
34367                .next()
34368                .unwrap()
34369                .node
34370                .write_to(writer)
34371                .map_err(SerializeError::from)?;
34372        }
34373        #[cfg(feature = "dml-diagrams")]
34374        if let Some(ref val) = self.alg {
34375            val.write_element("a:alg", writer)?;
34376        }
34377        #[cfg(feature = "extra-children")]
34378        {
34379            emit_idx += 1;
34380        }
34381        #[cfg(feature = "extra-children")]
34382        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34383            extra_iter
34384                .next()
34385                .unwrap()
34386                .node
34387                .write_to(writer)
34388                .map_err(SerializeError::from)?;
34389        }
34390        #[cfg(feature = "dml-diagrams")]
34391        if let Some(ref val) = self.shape {
34392            val.write_element("a:shape", writer)?;
34393        }
34394        #[cfg(feature = "extra-children")]
34395        {
34396            emit_idx += 1;
34397        }
34398        #[cfg(feature = "extra-children")]
34399        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34400            extra_iter
34401                .next()
34402                .unwrap()
34403                .node
34404                .write_to(writer)
34405                .map_err(SerializeError::from)?;
34406        }
34407        #[cfg(feature = "dml-diagrams")]
34408        if let Some(ref val) = self.pres_of {
34409            val.write_element("a:presOf", writer)?;
34410        }
34411        #[cfg(feature = "extra-children")]
34412        {
34413            emit_idx += 1;
34414        }
34415        #[cfg(feature = "extra-children")]
34416        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34417            extra_iter
34418                .next()
34419                .unwrap()
34420                .node
34421                .write_to(writer)
34422                .map_err(SerializeError::from)?;
34423        }
34424        #[cfg(feature = "dml-diagrams")]
34425        if let Some(ref val) = self.constr_lst {
34426            val.write_element("a:constrLst", writer)?;
34427        }
34428        #[cfg(feature = "extra-children")]
34429        {
34430            emit_idx += 1;
34431        }
34432        #[cfg(feature = "extra-children")]
34433        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34434            extra_iter
34435                .next()
34436                .unwrap()
34437                .node
34438                .write_to(writer)
34439                .map_err(SerializeError::from)?;
34440        }
34441        #[cfg(feature = "dml-diagrams")]
34442        if let Some(ref val) = self.rule_lst {
34443            val.write_element("a:ruleLst", writer)?;
34444        }
34445        #[cfg(feature = "extra-children")]
34446        {
34447            emit_idx += 1;
34448        }
34449        #[cfg(feature = "dml-diagrams")]
34450        for item in &self.for_each {
34451            #[cfg(feature = "extra-children")]
34452            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34453                extra_iter
34454                    .next()
34455                    .unwrap()
34456                    .node
34457                    .write_to(writer)
34458                    .map_err(SerializeError::from)?;
34459            }
34460            item.write_element("a:forEach", writer)?;
34461            #[cfg(feature = "extra-children")]
34462            {
34463                emit_idx += 1;
34464            }
34465        }
34466        #[cfg(feature = "dml-diagrams")]
34467        for item in &self.layout_node {
34468            #[cfg(feature = "extra-children")]
34469            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34470                extra_iter
34471                    .next()
34472                    .unwrap()
34473                    .node
34474                    .write_to(writer)
34475                    .map_err(SerializeError::from)?;
34476            }
34477            item.write_element("a:layoutNode", writer)?;
34478            #[cfg(feature = "extra-children")]
34479            {
34480                emit_idx += 1;
34481            }
34482        }
34483        #[cfg(feature = "dml-diagrams")]
34484        for item in &self.choose {
34485            #[cfg(feature = "extra-children")]
34486            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34487                extra_iter
34488                    .next()
34489                    .unwrap()
34490                    .node
34491                    .write_to(writer)
34492                    .map_err(SerializeError::from)?;
34493            }
34494            item.write_element("a:choose", writer)?;
34495            #[cfg(feature = "extra-children")]
34496            {
34497                emit_idx += 1;
34498            }
34499        }
34500        #[cfg(feature = "extra-children")]
34501        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34502            extra_iter
34503                .next()
34504                .unwrap()
34505                .node
34506                .write_to(writer)
34507                .map_err(SerializeError::from)?;
34508        }
34509        #[cfg(feature = "dml-diagrams")]
34510        if let Some(ref val) = self.ext_lst {
34511            val.write_element("a:extLst", writer)?;
34512        }
34513        #[cfg(feature = "extra-children")]
34514        {
34515            emit_idx += 1;
34516        }
34517        #[cfg(feature = "extra-children")]
34518        for extra in extra_iter {
34519            extra.node.write_to(writer).map_err(SerializeError::from)?;
34520        }
34521        Ok(())
34522    }
34523
34524    fn is_empty_element(&self) -> bool {
34525        #[cfg(feature = "dml-diagrams")]
34526        if self.alg.is_some() {
34527            return false;
34528        }
34529        #[cfg(feature = "dml-diagrams")]
34530        if self.shape.is_some() {
34531            return false;
34532        }
34533        #[cfg(feature = "dml-diagrams")]
34534        if self.pres_of.is_some() {
34535            return false;
34536        }
34537        #[cfg(feature = "dml-diagrams")]
34538        if self.constr_lst.is_some() {
34539            return false;
34540        }
34541        #[cfg(feature = "dml-diagrams")]
34542        if self.rule_lst.is_some() {
34543            return false;
34544        }
34545        #[cfg(feature = "dml-diagrams")]
34546        if !self.for_each.is_empty() {
34547            return false;
34548        }
34549        #[cfg(feature = "dml-diagrams")]
34550        if !self.layout_node.is_empty() {
34551            return false;
34552        }
34553        #[cfg(feature = "dml-diagrams")]
34554        if !self.choose.is_empty() {
34555            return false;
34556        }
34557        #[cfg(feature = "dml-diagrams")]
34558        if self.ext_lst.is_some() {
34559            return false;
34560        }
34561        #[cfg(feature = "extra-children")]
34562        if !self.extra_children.is_empty() {
34563            return false;
34564        }
34565        true
34566    }
34567}
34568
34569impl ToXml for LayoutChoose {
34570    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
34571        #[allow(unused_mut)]
34572        let mut start = start;
34573        #[cfg(feature = "dml-diagrams")]
34574        if let Some(ref val) = self.name {
34575            start.push_attribute(("name", val.as_str()));
34576        }
34577        #[cfg(feature = "extra-attrs")]
34578        for (key, value) in &self.extra_attrs {
34579            start.push_attribute((key.as_str(), value.as_str()));
34580        }
34581        start
34582    }
34583
34584    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
34585        #[cfg(feature = "extra-children")]
34586        let mut extra_iter = self.extra_children.iter().peekable();
34587        #[cfg(feature = "extra-children")]
34588        let mut emit_idx: usize = 0;
34589        #[cfg(feature = "dml-diagrams")]
34590        for item in &self.r#if {
34591            #[cfg(feature = "extra-children")]
34592            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34593                extra_iter
34594                    .next()
34595                    .unwrap()
34596                    .node
34597                    .write_to(writer)
34598                    .map_err(SerializeError::from)?;
34599            }
34600            item.write_element("a:if", writer)?;
34601            #[cfg(feature = "extra-children")]
34602            {
34603                emit_idx += 1;
34604            }
34605        }
34606        #[cfg(feature = "extra-children")]
34607        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34608            extra_iter
34609                .next()
34610                .unwrap()
34611                .node
34612                .write_to(writer)
34613                .map_err(SerializeError::from)?;
34614        }
34615        #[cfg(feature = "dml-diagrams")]
34616        if let Some(ref val) = self.r#else {
34617            val.write_element("a:else", writer)?;
34618        }
34619        #[cfg(feature = "extra-children")]
34620        {
34621            emit_idx += 1;
34622        }
34623        #[cfg(feature = "extra-children")]
34624        for extra in extra_iter {
34625            extra.node.write_to(writer).map_err(SerializeError::from)?;
34626        }
34627        Ok(())
34628    }
34629
34630    fn is_empty_element(&self) -> bool {
34631        #[cfg(feature = "dml-diagrams")]
34632        if !self.r#if.is_empty() {
34633            return false;
34634        }
34635        #[cfg(feature = "dml-diagrams")]
34636        if self.r#else.is_some() {
34637            return false;
34638        }
34639        #[cfg(feature = "extra-children")]
34640        if !self.extra_children.is_empty() {
34641            return false;
34642        }
34643        true
34644    }
34645}
34646
34647impl ToXml for DiagramSampleData {
34648    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
34649        #[allow(unused_mut)]
34650        let mut start = start;
34651        #[cfg(feature = "dml-diagrams")]
34652        if let Some(ref val) = self.use_def {
34653            start.push_attribute(("useDef", if *val { "1" } else { "0" }));
34654        }
34655        #[cfg(feature = "extra-attrs")]
34656        for (key, value) in &self.extra_attrs {
34657            start.push_attribute((key.as_str(), value.as_str()));
34658        }
34659        start
34660    }
34661
34662    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
34663        #[cfg(feature = "extra-children")]
34664        let mut extra_iter = self.extra_children.iter().peekable();
34665        #[cfg(feature = "extra-children")]
34666        let mut emit_idx: usize = 0;
34667        #[cfg(feature = "extra-children")]
34668        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34669            extra_iter
34670                .next()
34671                .unwrap()
34672                .node
34673                .write_to(writer)
34674                .map_err(SerializeError::from)?;
34675        }
34676        #[cfg(feature = "dml-diagrams")]
34677        if let Some(ref val) = self.data_model {
34678            val.write_element("a:dataModel", writer)?;
34679        }
34680        #[cfg(feature = "extra-children")]
34681        {
34682            emit_idx += 1;
34683        }
34684        #[cfg(feature = "extra-children")]
34685        for extra in extra_iter {
34686            extra.node.write_to(writer).map_err(SerializeError::from)?;
34687        }
34688        Ok(())
34689    }
34690
34691    fn is_empty_element(&self) -> bool {
34692        #[cfg(feature = "dml-diagrams")]
34693        if self.data_model.is_some() {
34694            return false;
34695        }
34696        #[cfg(feature = "extra-children")]
34697        if !self.extra_children.is_empty() {
34698            return false;
34699        }
34700        true
34701    }
34702}
34703
34704impl ToXml for DiagramCategory {
34705    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
34706        #[allow(unused_mut)]
34707        let mut start = start;
34708        #[cfg(feature = "dml-diagrams")]
34709        {
34710            let val = &self.r#type;
34711            start.push_attribute(("type", val.as_str()));
34712        }
34713        #[cfg(feature = "dml-diagrams")]
34714        {
34715            let val = &self.pri;
34716            {
34717                let s = val.to_string();
34718                start.push_attribute(("pri", s.as_str()));
34719            }
34720        }
34721        #[cfg(feature = "extra-attrs")]
34722        for (key, value) in &self.extra_attrs {
34723            start.push_attribute((key.as_str(), value.as_str()));
34724        }
34725        start
34726    }
34727
34728    fn is_empty_element(&self) -> bool {
34729        true
34730    }
34731}
34732
34733impl ToXml for DiagramCategories {
34734    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
34735        #[cfg(feature = "extra-children")]
34736        let mut extra_iter = self.extra_children.iter().peekable();
34737        #[cfg(feature = "extra-children")]
34738        let mut emit_idx: usize = 0;
34739        #[cfg(feature = "dml-diagrams")]
34740        for item in &self.cat {
34741            #[cfg(feature = "extra-children")]
34742            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34743                extra_iter
34744                    .next()
34745                    .unwrap()
34746                    .node
34747                    .write_to(writer)
34748                    .map_err(SerializeError::from)?;
34749            }
34750            item.write_element("a:cat", writer)?;
34751            #[cfg(feature = "extra-children")]
34752            {
34753                emit_idx += 1;
34754            }
34755        }
34756        #[cfg(feature = "extra-children")]
34757        for extra in extra_iter {
34758            extra.node.write_to(writer).map_err(SerializeError::from)?;
34759        }
34760        Ok(())
34761    }
34762
34763    fn is_empty_element(&self) -> bool {
34764        #[cfg(feature = "dml-diagrams")]
34765        if !self.cat.is_empty() {
34766            return false;
34767        }
34768        #[cfg(feature = "extra-children")]
34769        if !self.extra_children.is_empty() {
34770            return false;
34771        }
34772        true
34773    }
34774}
34775
34776impl ToXml for DiagramName {
34777    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
34778        #[allow(unused_mut)]
34779        let mut start = start;
34780        #[cfg(feature = "dml-diagrams")]
34781        if let Some(ref val) = self.lang {
34782            start.push_attribute(("lang", val.as_str()));
34783        }
34784        #[cfg(feature = "dml-diagrams")]
34785        {
34786            let val = &self.value;
34787            start.push_attribute(("val", val.as_str()));
34788        }
34789        #[cfg(feature = "extra-attrs")]
34790        for (key, value) in &self.extra_attrs {
34791            start.push_attribute((key.as_str(), value.as_str()));
34792        }
34793        start
34794    }
34795
34796    fn is_empty_element(&self) -> bool {
34797        true
34798    }
34799}
34800
34801impl ToXml for DiagramDescription {
34802    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
34803        #[allow(unused_mut)]
34804        let mut start = start;
34805        #[cfg(feature = "dml-diagrams")]
34806        if let Some(ref val) = self.lang {
34807            start.push_attribute(("lang", val.as_str()));
34808        }
34809        #[cfg(feature = "dml-diagrams")]
34810        {
34811            let val = &self.value;
34812            start.push_attribute(("val", val.as_str()));
34813        }
34814        #[cfg(feature = "extra-attrs")]
34815        for (key, value) in &self.extra_attrs {
34816            start.push_attribute((key.as_str(), value.as_str()));
34817        }
34818        start
34819    }
34820
34821    fn is_empty_element(&self) -> bool {
34822        true
34823    }
34824}
34825
34826impl ToXml for DiagramDefinition {
34827    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
34828        #[allow(unused_mut)]
34829        let mut start = start;
34830        #[cfg(feature = "dml-diagrams")]
34831        if let Some(ref val) = self.unique_id {
34832            start.push_attribute(("uniqueId", val.as_str()));
34833        }
34834        #[cfg(feature = "dml-diagrams")]
34835        if let Some(ref val) = self.min_ver {
34836            start.push_attribute(("minVer", val.as_str()));
34837        }
34838        #[cfg(feature = "dml-diagrams")]
34839        if let Some(ref val) = self.def_style {
34840            start.push_attribute(("defStyle", val.as_str()));
34841        }
34842        #[cfg(feature = "extra-attrs")]
34843        for (key, value) in &self.extra_attrs {
34844            start.push_attribute((key.as_str(), value.as_str()));
34845        }
34846        start
34847    }
34848
34849    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
34850        #[cfg(feature = "extra-children")]
34851        let mut extra_iter = self.extra_children.iter().peekable();
34852        #[cfg(feature = "extra-children")]
34853        let mut emit_idx: usize = 0;
34854        #[cfg(feature = "dml-diagrams")]
34855        for item in &self.title {
34856            #[cfg(feature = "extra-children")]
34857            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34858                extra_iter
34859                    .next()
34860                    .unwrap()
34861                    .node
34862                    .write_to(writer)
34863                    .map_err(SerializeError::from)?;
34864            }
34865            item.write_element("a:title", writer)?;
34866            #[cfg(feature = "extra-children")]
34867            {
34868                emit_idx += 1;
34869            }
34870        }
34871        #[cfg(feature = "dml-diagrams")]
34872        for item in &self.desc {
34873            #[cfg(feature = "extra-children")]
34874            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34875                extra_iter
34876                    .next()
34877                    .unwrap()
34878                    .node
34879                    .write_to(writer)
34880                    .map_err(SerializeError::from)?;
34881            }
34882            item.write_element("a:desc", writer)?;
34883            #[cfg(feature = "extra-children")]
34884            {
34885                emit_idx += 1;
34886            }
34887        }
34888        #[cfg(feature = "extra-children")]
34889        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34890            extra_iter
34891                .next()
34892                .unwrap()
34893                .node
34894                .write_to(writer)
34895                .map_err(SerializeError::from)?;
34896        }
34897        #[cfg(feature = "dml-diagrams")]
34898        if let Some(ref val) = self.cat_lst {
34899            val.write_element("a:catLst", writer)?;
34900        }
34901        #[cfg(feature = "extra-children")]
34902        {
34903            emit_idx += 1;
34904        }
34905        #[cfg(feature = "extra-children")]
34906        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34907            extra_iter
34908                .next()
34909                .unwrap()
34910                .node
34911                .write_to(writer)
34912                .map_err(SerializeError::from)?;
34913        }
34914        #[cfg(feature = "dml-diagrams")]
34915        if let Some(ref val) = self.samp_data {
34916            val.write_element("a:sampData", writer)?;
34917        }
34918        #[cfg(feature = "extra-children")]
34919        {
34920            emit_idx += 1;
34921        }
34922        #[cfg(feature = "extra-children")]
34923        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34924            extra_iter
34925                .next()
34926                .unwrap()
34927                .node
34928                .write_to(writer)
34929                .map_err(SerializeError::from)?;
34930        }
34931        #[cfg(feature = "dml-diagrams")]
34932        if let Some(ref val) = self.style_data {
34933            val.write_element("a:styleData", writer)?;
34934        }
34935        #[cfg(feature = "extra-children")]
34936        {
34937            emit_idx += 1;
34938        }
34939        #[cfg(feature = "extra-children")]
34940        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34941            extra_iter
34942                .next()
34943                .unwrap()
34944                .node
34945                .write_to(writer)
34946                .map_err(SerializeError::from)?;
34947        }
34948        #[cfg(feature = "dml-diagrams")]
34949        if let Some(ref val) = self.clr_data {
34950            val.write_element("a:clrData", writer)?;
34951        }
34952        #[cfg(feature = "extra-children")]
34953        {
34954            emit_idx += 1;
34955        }
34956        #[cfg(feature = "extra-children")]
34957        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34958            extra_iter
34959                .next()
34960                .unwrap()
34961                .node
34962                .write_to(writer)
34963                .map_err(SerializeError::from)?;
34964        }
34965        #[cfg(feature = "dml-diagrams")]
34966        {
34967            let val = &self.layout_node;
34968            val.write_element("a:layoutNode", writer)?;
34969        }
34970        #[cfg(feature = "extra-children")]
34971        {
34972            emit_idx += 1;
34973        }
34974        #[cfg(feature = "extra-children")]
34975        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
34976            extra_iter
34977                .next()
34978                .unwrap()
34979                .node
34980                .write_to(writer)
34981                .map_err(SerializeError::from)?;
34982        }
34983        #[cfg(feature = "dml-diagrams")]
34984        if let Some(ref val) = self.ext_lst {
34985            val.write_element("a:extLst", writer)?;
34986        }
34987        #[cfg(feature = "extra-children")]
34988        {
34989            emit_idx += 1;
34990        }
34991        #[cfg(feature = "extra-children")]
34992        for extra in extra_iter {
34993            extra.node.write_to(writer).map_err(SerializeError::from)?;
34994        }
34995        Ok(())
34996    }
34997
34998    fn is_empty_element(&self) -> bool {
34999        #[cfg(feature = "dml-diagrams")]
35000        if !self.title.is_empty() {
35001            return false;
35002        }
35003        #[cfg(feature = "dml-diagrams")]
35004        if !self.desc.is_empty() {
35005            return false;
35006        }
35007        #[cfg(feature = "dml-diagrams")]
35008        if self.cat_lst.is_some() {
35009            return false;
35010        }
35011        #[cfg(feature = "dml-diagrams")]
35012        if self.samp_data.is_some() {
35013            return false;
35014        }
35015        #[cfg(feature = "dml-diagrams")]
35016        if self.style_data.is_some() {
35017            return false;
35018        }
35019        #[cfg(feature = "dml-diagrams")]
35020        if self.clr_data.is_some() {
35021            return false;
35022        }
35023        #[cfg(feature = "dml-diagrams")]
35024        return false;
35025        #[cfg(feature = "dml-diagrams")]
35026        if self.ext_lst.is_some() {
35027            return false;
35028        }
35029        #[cfg(feature = "extra-children")]
35030        if !self.extra_children.is_empty() {
35031            return false;
35032        }
35033        true
35034    }
35035}
35036
35037impl ToXml for DiagramDefinitionHeader {
35038    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
35039        #[allow(unused_mut)]
35040        let mut start = start;
35041        #[cfg(feature = "dml-diagrams")]
35042        {
35043            let val = &self.unique_id;
35044            start.push_attribute(("uniqueId", val.as_str()));
35045        }
35046        #[cfg(feature = "dml-diagrams")]
35047        if let Some(ref val) = self.min_ver {
35048            start.push_attribute(("minVer", val.as_str()));
35049        }
35050        #[cfg(feature = "dml-diagrams")]
35051        if let Some(ref val) = self.def_style {
35052            start.push_attribute(("defStyle", val.as_str()));
35053        }
35054        #[cfg(feature = "dml-diagrams")]
35055        if let Some(ref val) = self.res_id {
35056            {
35057                let s = val.to_string();
35058                start.push_attribute(("resId", s.as_str()));
35059            }
35060        }
35061        #[cfg(feature = "extra-attrs")]
35062        for (key, value) in &self.extra_attrs {
35063            start.push_attribute((key.as_str(), value.as_str()));
35064        }
35065        start
35066    }
35067
35068    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
35069        #[cfg(feature = "extra-children")]
35070        let mut extra_iter = self.extra_children.iter().peekable();
35071        #[cfg(feature = "extra-children")]
35072        let mut emit_idx: usize = 0;
35073        #[cfg(feature = "dml-diagrams")]
35074        for item in &self.title {
35075            #[cfg(feature = "extra-children")]
35076            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35077                extra_iter
35078                    .next()
35079                    .unwrap()
35080                    .node
35081                    .write_to(writer)
35082                    .map_err(SerializeError::from)?;
35083            }
35084            item.write_element("a:title", writer)?;
35085            #[cfg(feature = "extra-children")]
35086            {
35087                emit_idx += 1;
35088            }
35089        }
35090        #[cfg(feature = "dml-diagrams")]
35091        for item in &self.desc {
35092            #[cfg(feature = "extra-children")]
35093            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35094                extra_iter
35095                    .next()
35096                    .unwrap()
35097                    .node
35098                    .write_to(writer)
35099                    .map_err(SerializeError::from)?;
35100            }
35101            item.write_element("a:desc", writer)?;
35102            #[cfg(feature = "extra-children")]
35103            {
35104                emit_idx += 1;
35105            }
35106        }
35107        #[cfg(feature = "extra-children")]
35108        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35109            extra_iter
35110                .next()
35111                .unwrap()
35112                .node
35113                .write_to(writer)
35114                .map_err(SerializeError::from)?;
35115        }
35116        #[cfg(feature = "dml-diagrams")]
35117        if let Some(ref val) = self.cat_lst {
35118            val.write_element("a:catLst", writer)?;
35119        }
35120        #[cfg(feature = "extra-children")]
35121        {
35122            emit_idx += 1;
35123        }
35124        #[cfg(feature = "extra-children")]
35125        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35126            extra_iter
35127                .next()
35128                .unwrap()
35129                .node
35130                .write_to(writer)
35131                .map_err(SerializeError::from)?;
35132        }
35133        #[cfg(feature = "dml-diagrams")]
35134        if let Some(ref val) = self.ext_lst {
35135            val.write_element("a:extLst", writer)?;
35136        }
35137        #[cfg(feature = "extra-children")]
35138        {
35139            emit_idx += 1;
35140        }
35141        #[cfg(feature = "extra-children")]
35142        for extra in extra_iter {
35143            extra.node.write_to(writer).map_err(SerializeError::from)?;
35144        }
35145        Ok(())
35146    }
35147
35148    fn is_empty_element(&self) -> bool {
35149        #[cfg(feature = "dml-diagrams")]
35150        if !self.title.is_empty() {
35151            return false;
35152        }
35153        #[cfg(feature = "dml-diagrams")]
35154        if !self.desc.is_empty() {
35155            return false;
35156        }
35157        #[cfg(feature = "dml-diagrams")]
35158        if self.cat_lst.is_some() {
35159            return false;
35160        }
35161        #[cfg(feature = "dml-diagrams")]
35162        if self.ext_lst.is_some() {
35163            return false;
35164        }
35165        #[cfg(feature = "extra-children")]
35166        if !self.extra_children.is_empty() {
35167            return false;
35168        }
35169        true
35170    }
35171}
35172
35173impl ToXml for DiagramDefinitionHeaderList {
35174    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
35175        #[cfg(feature = "extra-children")]
35176        let mut extra_iter = self.extra_children.iter().peekable();
35177        #[cfg(feature = "extra-children")]
35178        let mut emit_idx: usize = 0;
35179        #[cfg(feature = "dml-diagrams")]
35180        for item in &self.layout_def_hdr {
35181            #[cfg(feature = "extra-children")]
35182            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35183                extra_iter
35184                    .next()
35185                    .unwrap()
35186                    .node
35187                    .write_to(writer)
35188                    .map_err(SerializeError::from)?;
35189            }
35190            item.write_element("a:layoutDefHdr", writer)?;
35191            #[cfg(feature = "extra-children")]
35192            {
35193                emit_idx += 1;
35194            }
35195        }
35196        #[cfg(feature = "extra-children")]
35197        for extra in extra_iter {
35198            extra.node.write_to(writer).map_err(SerializeError::from)?;
35199        }
35200        Ok(())
35201    }
35202
35203    fn is_empty_element(&self) -> bool {
35204        #[cfg(feature = "dml-diagrams")]
35205        if !self.layout_def_hdr.is_empty() {
35206            return false;
35207        }
35208        #[cfg(feature = "extra-children")]
35209        if !self.extra_children.is_empty() {
35210            return false;
35211        }
35212        true
35213    }
35214}
35215
35216impl ToXml for DiagramRelationshipIds {
35217    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
35218        #[allow(unused_mut)]
35219        let mut start = start;
35220        #[cfg(feature = "dml-diagrams")]
35221        {
35222            let val = &self.dm;
35223            start.push_attribute(("r:dm", val.as_str()));
35224        }
35225        #[cfg(feature = "dml-diagrams")]
35226        {
35227            let val = &self.lo;
35228            start.push_attribute(("r:lo", val.as_str()));
35229        }
35230        #[cfg(feature = "dml-diagrams")]
35231        {
35232            let val = &self.qs;
35233            start.push_attribute(("r:qs", val.as_str()));
35234        }
35235        #[cfg(feature = "dml-diagrams")]
35236        {
35237            let val = &self.cs;
35238            start.push_attribute(("r:cs", val.as_str()));
35239        }
35240        #[cfg(feature = "extra-attrs")]
35241        for (key, value) in &self.extra_attrs {
35242            start.push_attribute((key.as_str(), value.as_str()));
35243        }
35244        start
35245    }
35246
35247    fn is_empty_element(&self) -> bool {
35248        true
35249    }
35250}
35251
35252impl ToXml for DiagramElementProperties {
35253    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
35254        #[allow(unused_mut)]
35255        let mut start = start;
35256        #[cfg(feature = "dml-diagrams")]
35257        if let Some(ref val) = self.pres_assoc_i_d {
35258            {
35259                let s = val.to_string();
35260                start.push_attribute(("presAssocID", s.as_str()));
35261            }
35262        }
35263        #[cfg(feature = "dml-diagrams")]
35264        if let Some(ref val) = self.pres_name {
35265            start.push_attribute(("presName", val.as_str()));
35266        }
35267        #[cfg(feature = "dml-diagrams")]
35268        if let Some(ref val) = self.pres_style_lbl {
35269            start.push_attribute(("presStyleLbl", val.as_str()));
35270        }
35271        #[cfg(feature = "dml-diagrams")]
35272        if let Some(ref val) = self.pres_style_idx {
35273            {
35274                let s = val.to_string();
35275                start.push_attribute(("presStyleIdx", s.as_str()));
35276            }
35277        }
35278        #[cfg(feature = "dml-diagrams")]
35279        if let Some(ref val) = self.pres_style_cnt {
35280            {
35281                let s = val.to_string();
35282                start.push_attribute(("presStyleCnt", s.as_str()));
35283            }
35284        }
35285        #[cfg(feature = "dml-diagrams")]
35286        if let Some(ref val) = self.lo_type_id {
35287            start.push_attribute(("loTypeId", val.as_str()));
35288        }
35289        #[cfg(feature = "dml-diagrams")]
35290        if let Some(ref val) = self.lo_cat_id {
35291            start.push_attribute(("loCatId", val.as_str()));
35292        }
35293        #[cfg(feature = "dml-diagrams")]
35294        if let Some(ref val) = self.qs_type_id {
35295            start.push_attribute(("qsTypeId", val.as_str()));
35296        }
35297        #[cfg(feature = "dml-diagrams")]
35298        if let Some(ref val) = self.qs_cat_id {
35299            start.push_attribute(("qsCatId", val.as_str()));
35300        }
35301        #[cfg(feature = "dml-diagrams")]
35302        if let Some(ref val) = self.cs_type_id {
35303            start.push_attribute(("csTypeId", val.as_str()));
35304        }
35305        #[cfg(feature = "dml-diagrams")]
35306        if let Some(ref val) = self.cs_cat_id {
35307            start.push_attribute(("csCatId", val.as_str()));
35308        }
35309        #[cfg(feature = "dml-diagrams")]
35310        if let Some(ref val) = self.coherent3_d_off {
35311            start.push_attribute(("coherent3DOff", if *val { "1" } else { "0" }));
35312        }
35313        #[cfg(feature = "dml-diagrams")]
35314        if let Some(ref val) = self.phldr_t {
35315            start.push_attribute(("phldrT", val.as_str()));
35316        }
35317        #[cfg(feature = "dml-diagrams")]
35318        if let Some(ref val) = self.phldr {
35319            start.push_attribute(("phldr", if *val { "1" } else { "0" }));
35320        }
35321        #[cfg(feature = "dml-diagrams")]
35322        if let Some(ref val) = self.cust_ang {
35323            {
35324                let s = val.to_string();
35325                start.push_attribute(("custAng", s.as_str()));
35326            }
35327        }
35328        #[cfg(feature = "dml-diagrams")]
35329        if let Some(ref val) = self.cust_flip_vert {
35330            start.push_attribute(("custFlipVert", if *val { "1" } else { "0" }));
35331        }
35332        #[cfg(feature = "dml-diagrams")]
35333        if let Some(ref val) = self.cust_flip_hor {
35334            start.push_attribute(("custFlipHor", if *val { "1" } else { "0" }));
35335        }
35336        #[cfg(feature = "dml-diagrams")]
35337        if let Some(ref val) = self.cust_sz_x {
35338            {
35339                let s = val.to_string();
35340                start.push_attribute(("custSzX", s.as_str()));
35341            }
35342        }
35343        #[cfg(feature = "dml-diagrams")]
35344        if let Some(ref val) = self.cust_sz_y {
35345            {
35346                let s = val.to_string();
35347                start.push_attribute(("custSzY", s.as_str()));
35348            }
35349        }
35350        #[cfg(feature = "dml-diagrams")]
35351        if let Some(ref val) = self.cust_scale_x {
35352            {
35353                let s = val.to_string();
35354                start.push_attribute(("custScaleX", s.as_str()));
35355            }
35356        }
35357        #[cfg(feature = "dml-diagrams")]
35358        if let Some(ref val) = self.cust_scale_y {
35359            {
35360                let s = val.to_string();
35361                start.push_attribute(("custScaleY", s.as_str()));
35362            }
35363        }
35364        #[cfg(feature = "dml-diagrams")]
35365        if let Some(ref val) = self.cust_t {
35366            start.push_attribute(("custT", if *val { "1" } else { "0" }));
35367        }
35368        #[cfg(feature = "dml-diagrams")]
35369        if let Some(ref val) = self.cust_lin_fact_x {
35370            {
35371                let s = val.to_string();
35372                start.push_attribute(("custLinFactX", s.as_str()));
35373            }
35374        }
35375        #[cfg(feature = "dml-diagrams")]
35376        if let Some(ref val) = self.cust_lin_fact_y {
35377            {
35378                let s = val.to_string();
35379                start.push_attribute(("custLinFactY", s.as_str()));
35380            }
35381        }
35382        #[cfg(feature = "dml-diagrams")]
35383        if let Some(ref val) = self.cust_lin_fact_neighbor_x {
35384            {
35385                let s = val.to_string();
35386                start.push_attribute(("custLinFactNeighborX", s.as_str()));
35387            }
35388        }
35389        #[cfg(feature = "dml-diagrams")]
35390        if let Some(ref val) = self.cust_lin_fact_neighbor_y {
35391            {
35392                let s = val.to_string();
35393                start.push_attribute(("custLinFactNeighborY", s.as_str()));
35394            }
35395        }
35396        #[cfg(feature = "dml-diagrams")]
35397        if let Some(ref val) = self.cust_rad_scale_rad {
35398            {
35399                let s = val.to_string();
35400                start.push_attribute(("custRadScaleRad", s.as_str()));
35401            }
35402        }
35403        #[cfg(feature = "dml-diagrams")]
35404        if let Some(ref val) = self.cust_rad_scale_inc {
35405            {
35406                let s = val.to_string();
35407                start.push_attribute(("custRadScaleInc", s.as_str()));
35408            }
35409        }
35410        #[cfg(feature = "extra-attrs")]
35411        for (key, value) in &self.extra_attrs {
35412            start.push_attribute((key.as_str(), value.as_str()));
35413        }
35414        start
35415    }
35416
35417    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
35418        #[cfg(feature = "extra-children")]
35419        let mut extra_iter = self.extra_children.iter().peekable();
35420        #[cfg(feature = "extra-children")]
35421        let mut emit_idx: usize = 0;
35422        #[cfg(feature = "extra-children")]
35423        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35424            extra_iter
35425                .next()
35426                .unwrap()
35427                .node
35428                .write_to(writer)
35429                .map_err(SerializeError::from)?;
35430        }
35431        #[cfg(feature = "dml-diagrams")]
35432        if let Some(ref val) = self.pres_layout_vars {
35433            val.write_element("a:presLayoutVars", writer)?;
35434        }
35435        #[cfg(feature = "extra-children")]
35436        {
35437            emit_idx += 1;
35438        }
35439        #[cfg(feature = "extra-children")]
35440        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35441            extra_iter
35442                .next()
35443                .unwrap()
35444                .node
35445                .write_to(writer)
35446                .map_err(SerializeError::from)?;
35447        }
35448        #[cfg(feature = "dml-diagrams")]
35449        if let Some(ref val) = self.style {
35450            val.write_element("a:style", writer)?;
35451        }
35452        #[cfg(feature = "extra-children")]
35453        {
35454            emit_idx += 1;
35455        }
35456        #[cfg(feature = "extra-children")]
35457        for extra in extra_iter {
35458            extra.node.write_to(writer).map_err(SerializeError::from)?;
35459        }
35460        Ok(())
35461    }
35462
35463    fn is_empty_element(&self) -> bool {
35464        #[cfg(feature = "dml-diagrams")]
35465        if self.pres_layout_vars.is_some() {
35466            return false;
35467        }
35468        #[cfg(feature = "dml-diagrams")]
35469        if self.style.is_some() {
35470            return false;
35471        }
35472        #[cfg(feature = "extra-children")]
35473        if !self.extra_children.is_empty() {
35474            return false;
35475        }
35476        true
35477    }
35478}
35479
35480impl ToXml for OrgChartProperties {
35481    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
35482        #[allow(unused_mut)]
35483        let mut start = start;
35484        #[cfg(feature = "dml-diagrams")]
35485        if let Some(ref val) = self.value {
35486            start.push_attribute(("val", if *val { "1" } else { "0" }));
35487        }
35488        #[cfg(feature = "extra-attrs")]
35489        for (key, value) in &self.extra_attrs {
35490            start.push_attribute((key.as_str(), value.as_str()));
35491        }
35492        start
35493    }
35494
35495    fn is_empty_element(&self) -> bool {
35496        true
35497    }
35498}
35499
35500impl ToXml for ChildMaximum {
35501    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
35502        #[allow(unused_mut)]
35503        let mut start = start;
35504        #[cfg(feature = "dml-diagrams")]
35505        if let Some(ref val) = self.value {
35506            {
35507                let s = val.to_string();
35508                start.push_attribute(("val", s.as_str()));
35509            }
35510        }
35511        #[cfg(feature = "extra-attrs")]
35512        for (key, value) in &self.extra_attrs {
35513            start.push_attribute((key.as_str(), value.as_str()));
35514        }
35515        start
35516    }
35517
35518    fn is_empty_element(&self) -> bool {
35519        true
35520    }
35521}
35522
35523impl ToXml for ChildPreference {
35524    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
35525        #[allow(unused_mut)]
35526        let mut start = start;
35527        #[cfg(feature = "dml-diagrams")]
35528        if let Some(ref val) = self.value {
35529            {
35530                let s = val.to_string();
35531                start.push_attribute(("val", s.as_str()));
35532            }
35533        }
35534        #[cfg(feature = "extra-attrs")]
35535        for (key, value) in &self.extra_attrs {
35536            start.push_attribute((key.as_str(), value.as_str()));
35537        }
35538        start
35539    }
35540
35541    fn is_empty_element(&self) -> bool {
35542        true
35543    }
35544}
35545
35546impl ToXml for BulletEnabled {
35547    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
35548        #[allow(unused_mut)]
35549        let mut start = start;
35550        #[cfg(feature = "dml-diagrams")]
35551        if let Some(ref val) = self.value {
35552            start.push_attribute(("val", if *val { "1" } else { "0" }));
35553        }
35554        #[cfg(feature = "extra-attrs")]
35555        for (key, value) in &self.extra_attrs {
35556            start.push_attribute((key.as_str(), value.as_str()));
35557        }
35558        start
35559    }
35560
35561    fn is_empty_element(&self) -> bool {
35562        true
35563    }
35564}
35565
35566impl ToXml for LayoutDirection {
35567    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
35568        #[allow(unused_mut)]
35569        let mut start = start;
35570        #[cfg(feature = "dml-diagrams")]
35571        if let Some(ref val) = self.value {
35572            {
35573                let s = val.to_string();
35574                start.push_attribute(("val", s.as_str()));
35575            }
35576        }
35577        #[cfg(feature = "extra-attrs")]
35578        for (key, value) in &self.extra_attrs {
35579            start.push_attribute((key.as_str(), value.as_str()));
35580        }
35581        start
35582    }
35583
35584    fn is_empty_element(&self) -> bool {
35585        true
35586    }
35587}
35588
35589impl ToXml for HierarchyBranchStyle {
35590    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
35591        #[allow(unused_mut)]
35592        let mut start = start;
35593        #[cfg(feature = "dml-diagrams")]
35594        if let Some(ref val) = self.value {
35595            {
35596                let s = val.to_string();
35597                start.push_attribute(("val", s.as_str()));
35598            }
35599        }
35600        #[cfg(feature = "extra-attrs")]
35601        for (key, value) in &self.extra_attrs {
35602            start.push_attribute((key.as_str(), value.as_str()));
35603        }
35604        start
35605    }
35606
35607    fn is_empty_element(&self) -> bool {
35608        true
35609    }
35610}
35611
35612impl ToXml for AnimateOneByOne {
35613    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
35614        #[allow(unused_mut)]
35615        let mut start = start;
35616        #[cfg(feature = "dml-diagrams")]
35617        if let Some(ref val) = self.value {
35618            {
35619                let s = val.to_string();
35620                start.push_attribute(("val", s.as_str()));
35621            }
35622        }
35623        #[cfg(feature = "extra-attrs")]
35624        for (key, value) in &self.extra_attrs {
35625            start.push_attribute((key.as_str(), value.as_str()));
35626        }
35627        start
35628    }
35629
35630    fn is_empty_element(&self) -> bool {
35631        true
35632    }
35633}
35634
35635impl ToXml for AnimateLevel {
35636    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
35637        #[allow(unused_mut)]
35638        let mut start = start;
35639        #[cfg(feature = "dml-diagrams")]
35640        if let Some(ref val) = self.value {
35641            {
35642                let s = val.to_string();
35643                start.push_attribute(("val", s.as_str()));
35644            }
35645        }
35646        #[cfg(feature = "extra-attrs")]
35647        for (key, value) in &self.extra_attrs {
35648            start.push_attribute((key.as_str(), value.as_str()));
35649        }
35650        start
35651    }
35652
35653    fn is_empty_element(&self) -> bool {
35654        true
35655    }
35656}
35657
35658impl ToXml for ResizeHandles {
35659    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
35660        #[allow(unused_mut)]
35661        let mut start = start;
35662        #[cfg(feature = "dml-diagrams")]
35663        if let Some(ref val) = self.value {
35664            {
35665                let s = val.to_string();
35666                start.push_attribute(("val", s.as_str()));
35667            }
35668        }
35669        #[cfg(feature = "extra-attrs")]
35670        for (key, value) in &self.extra_attrs {
35671            start.push_attribute((key.as_str(), value.as_str()));
35672        }
35673        start
35674    }
35675
35676    fn is_empty_element(&self) -> bool {
35677        true
35678    }
35679}
35680
35681impl ToXml for LayoutVariableProperties {
35682    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
35683        #[cfg(feature = "extra-children")]
35684        let mut extra_iter = self.extra_children.iter().peekable();
35685        #[cfg(feature = "extra-children")]
35686        let mut emit_idx: usize = 0;
35687        #[cfg(feature = "extra-children")]
35688        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35689            extra_iter
35690                .next()
35691                .unwrap()
35692                .node
35693                .write_to(writer)
35694                .map_err(SerializeError::from)?;
35695        }
35696        #[cfg(feature = "dml-diagrams")]
35697        if let Some(ref val) = self.org_chart {
35698            val.write_element("a:orgChart", writer)?;
35699        }
35700        #[cfg(feature = "extra-children")]
35701        {
35702            emit_idx += 1;
35703        }
35704        #[cfg(feature = "extra-children")]
35705        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35706            extra_iter
35707                .next()
35708                .unwrap()
35709                .node
35710                .write_to(writer)
35711                .map_err(SerializeError::from)?;
35712        }
35713        #[cfg(feature = "dml-diagrams")]
35714        if let Some(ref val) = self.ch_max {
35715            val.write_element("a:chMax", writer)?;
35716        }
35717        #[cfg(feature = "extra-children")]
35718        {
35719            emit_idx += 1;
35720        }
35721        #[cfg(feature = "extra-children")]
35722        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35723            extra_iter
35724                .next()
35725                .unwrap()
35726                .node
35727                .write_to(writer)
35728                .map_err(SerializeError::from)?;
35729        }
35730        #[cfg(feature = "dml-diagrams")]
35731        if let Some(ref val) = self.ch_pref {
35732            val.write_element("a:chPref", writer)?;
35733        }
35734        #[cfg(feature = "extra-children")]
35735        {
35736            emit_idx += 1;
35737        }
35738        #[cfg(feature = "extra-children")]
35739        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35740            extra_iter
35741                .next()
35742                .unwrap()
35743                .node
35744                .write_to(writer)
35745                .map_err(SerializeError::from)?;
35746        }
35747        #[cfg(feature = "dml-diagrams")]
35748        if let Some(ref val) = self.bullet_enabled {
35749            val.write_element("a:bulletEnabled", writer)?;
35750        }
35751        #[cfg(feature = "extra-children")]
35752        {
35753            emit_idx += 1;
35754        }
35755        #[cfg(feature = "extra-children")]
35756        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35757            extra_iter
35758                .next()
35759                .unwrap()
35760                .node
35761                .write_to(writer)
35762                .map_err(SerializeError::from)?;
35763        }
35764        #[cfg(feature = "dml-diagrams")]
35765        if let Some(ref val) = self.dir {
35766            val.write_element("a:dir", writer)?;
35767        }
35768        #[cfg(feature = "extra-children")]
35769        {
35770            emit_idx += 1;
35771        }
35772        #[cfg(feature = "extra-children")]
35773        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35774            extra_iter
35775                .next()
35776                .unwrap()
35777                .node
35778                .write_to(writer)
35779                .map_err(SerializeError::from)?;
35780        }
35781        #[cfg(feature = "dml-diagrams")]
35782        if let Some(ref val) = self.hier_branch {
35783            val.write_element("a:hierBranch", writer)?;
35784        }
35785        #[cfg(feature = "extra-children")]
35786        {
35787            emit_idx += 1;
35788        }
35789        #[cfg(feature = "extra-children")]
35790        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35791            extra_iter
35792                .next()
35793                .unwrap()
35794                .node
35795                .write_to(writer)
35796                .map_err(SerializeError::from)?;
35797        }
35798        #[cfg(feature = "dml-diagrams")]
35799        if let Some(ref val) = self.anim_one {
35800            val.write_element("a:animOne", writer)?;
35801        }
35802        #[cfg(feature = "extra-children")]
35803        {
35804            emit_idx += 1;
35805        }
35806        #[cfg(feature = "extra-children")]
35807        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35808            extra_iter
35809                .next()
35810                .unwrap()
35811                .node
35812                .write_to(writer)
35813                .map_err(SerializeError::from)?;
35814        }
35815        #[cfg(feature = "dml-diagrams")]
35816        if let Some(ref val) = self.anim_lvl {
35817            val.write_element("a:animLvl", writer)?;
35818        }
35819        #[cfg(feature = "extra-children")]
35820        {
35821            emit_idx += 1;
35822        }
35823        #[cfg(feature = "extra-children")]
35824        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35825            extra_iter
35826                .next()
35827                .unwrap()
35828                .node
35829                .write_to(writer)
35830                .map_err(SerializeError::from)?;
35831        }
35832        #[cfg(feature = "dml-diagrams")]
35833        if let Some(ref val) = self.resize_handles {
35834            val.write_element("a:resizeHandles", writer)?;
35835        }
35836        #[cfg(feature = "extra-children")]
35837        {
35838            emit_idx += 1;
35839        }
35840        #[cfg(feature = "extra-children")]
35841        for extra in extra_iter {
35842            extra.node.write_to(writer).map_err(SerializeError::from)?;
35843        }
35844        Ok(())
35845    }
35846
35847    fn is_empty_element(&self) -> bool {
35848        #[cfg(feature = "dml-diagrams")]
35849        if self.org_chart.is_some() {
35850            return false;
35851        }
35852        #[cfg(feature = "dml-diagrams")]
35853        if self.ch_max.is_some() {
35854            return false;
35855        }
35856        #[cfg(feature = "dml-diagrams")]
35857        if self.ch_pref.is_some() {
35858            return false;
35859        }
35860        #[cfg(feature = "dml-diagrams")]
35861        if self.bullet_enabled.is_some() {
35862            return false;
35863        }
35864        #[cfg(feature = "dml-diagrams")]
35865        if self.dir.is_some() {
35866            return false;
35867        }
35868        #[cfg(feature = "dml-diagrams")]
35869        if self.hier_branch.is_some() {
35870            return false;
35871        }
35872        #[cfg(feature = "dml-diagrams")]
35873        if self.anim_one.is_some() {
35874            return false;
35875        }
35876        #[cfg(feature = "dml-diagrams")]
35877        if self.anim_lvl.is_some() {
35878            return false;
35879        }
35880        #[cfg(feature = "dml-diagrams")]
35881        if self.resize_handles.is_some() {
35882            return false;
35883        }
35884        #[cfg(feature = "extra-children")]
35885        if !self.extra_children.is_empty() {
35886            return false;
35887        }
35888        true
35889    }
35890}
35891
35892impl ToXml for StyleDefinitionName {
35893    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
35894        #[allow(unused_mut)]
35895        let mut start = start;
35896        #[cfg(feature = "dml-diagrams")]
35897        if let Some(ref val) = self.lang {
35898            start.push_attribute(("lang", val.as_str()));
35899        }
35900        #[cfg(feature = "dml-diagrams")]
35901        {
35902            let val = &self.value;
35903            start.push_attribute(("val", val.as_str()));
35904        }
35905        #[cfg(feature = "extra-attrs")]
35906        for (key, value) in &self.extra_attrs {
35907            start.push_attribute((key.as_str(), value.as_str()));
35908        }
35909        start
35910    }
35911
35912    fn is_empty_element(&self) -> bool {
35913        true
35914    }
35915}
35916
35917impl ToXml for StyleDefinitionDescription {
35918    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
35919        #[allow(unused_mut)]
35920        let mut start = start;
35921        #[cfg(feature = "dml-diagrams")]
35922        if let Some(ref val) = self.lang {
35923            start.push_attribute(("lang", val.as_str()));
35924        }
35925        #[cfg(feature = "dml-diagrams")]
35926        {
35927            let val = &self.value;
35928            start.push_attribute(("val", val.as_str()));
35929        }
35930        #[cfg(feature = "extra-attrs")]
35931        for (key, value) in &self.extra_attrs {
35932            start.push_attribute((key.as_str(), value.as_str()));
35933        }
35934        start
35935    }
35936
35937    fn is_empty_element(&self) -> bool {
35938        true
35939    }
35940}
35941
35942impl ToXml for DiagramStyleCategory {
35943    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
35944        #[allow(unused_mut)]
35945        let mut start = start;
35946        #[cfg(feature = "dml-diagrams")]
35947        {
35948            let val = &self.r#type;
35949            start.push_attribute(("type", val.as_str()));
35950        }
35951        #[cfg(feature = "dml-diagrams")]
35952        {
35953            let val = &self.pri;
35954            {
35955                let s = val.to_string();
35956                start.push_attribute(("pri", s.as_str()));
35957            }
35958        }
35959        #[cfg(feature = "extra-attrs")]
35960        for (key, value) in &self.extra_attrs {
35961            start.push_attribute((key.as_str(), value.as_str()));
35962        }
35963        start
35964    }
35965
35966    fn is_empty_element(&self) -> bool {
35967        true
35968    }
35969}
35970
35971impl ToXml for DiagramStyleCategories {
35972    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
35973        #[cfg(feature = "extra-children")]
35974        let mut extra_iter = self.extra_children.iter().peekable();
35975        #[cfg(feature = "extra-children")]
35976        let mut emit_idx: usize = 0;
35977        #[cfg(feature = "dml-diagrams")]
35978        for item in &self.cat {
35979            #[cfg(feature = "extra-children")]
35980            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
35981                extra_iter
35982                    .next()
35983                    .unwrap()
35984                    .node
35985                    .write_to(writer)
35986                    .map_err(SerializeError::from)?;
35987            }
35988            item.write_element("a:cat", writer)?;
35989            #[cfg(feature = "extra-children")]
35990            {
35991                emit_idx += 1;
35992            }
35993        }
35994        #[cfg(feature = "extra-children")]
35995        for extra in extra_iter {
35996            extra.node.write_to(writer).map_err(SerializeError::from)?;
35997        }
35998        Ok(())
35999    }
36000
36001    fn is_empty_element(&self) -> bool {
36002        #[cfg(feature = "dml-diagrams")]
36003        if !self.cat.is_empty() {
36004            return false;
36005        }
36006        #[cfg(feature = "extra-children")]
36007        if !self.extra_children.is_empty() {
36008            return false;
36009        }
36010        true
36011    }
36012}
36013
36014impl ToXml for DiagramTextProperties {
36015    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
36016        #[cfg(feature = "extra-children")]
36017        let mut extra_iter = self.extra_children.iter().peekable();
36018        #[cfg(feature = "extra-children")]
36019        let mut emit_idx: usize = 0;
36020        #[cfg(feature = "extra-children")]
36021        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36022            extra_iter
36023                .next()
36024                .unwrap()
36025                .node
36026                .write_to(writer)
36027                .map_err(SerializeError::from)?;
36028        }
36029        #[cfg(feature = "dml-diagrams")]
36030        if let Some(ref val) = self.text3_d {
36031            val.write_element("", writer)?;
36032        }
36033        #[cfg(feature = "extra-children")]
36034        {
36035            emit_idx += 1;
36036        }
36037        #[cfg(feature = "extra-children")]
36038        for extra in extra_iter {
36039            extra.node.write_to(writer).map_err(SerializeError::from)?;
36040        }
36041        Ok(())
36042    }
36043
36044    fn is_empty_element(&self) -> bool {
36045        #[cfg(feature = "dml-diagrams")]
36046        if self.text3_d.is_some() {
36047            return false;
36048        }
36049        #[cfg(feature = "extra-children")]
36050        if !self.extra_children.is_empty() {
36051            return false;
36052        }
36053        true
36054    }
36055}
36056
36057impl ToXml for DiagramStyleLabel {
36058    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
36059        #[allow(unused_mut)]
36060        let mut start = start;
36061        #[cfg(feature = "dml-diagrams")]
36062        {
36063            let val = &self.name;
36064            start.push_attribute(("name", val.as_str()));
36065        }
36066        #[cfg(feature = "extra-attrs")]
36067        for (key, value) in &self.extra_attrs {
36068            start.push_attribute((key.as_str(), value.as_str()));
36069        }
36070        start
36071    }
36072
36073    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
36074        #[cfg(feature = "extra-children")]
36075        let mut extra_iter = self.extra_children.iter().peekable();
36076        #[cfg(feature = "extra-children")]
36077        let mut emit_idx: usize = 0;
36078        #[cfg(feature = "extra-children")]
36079        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36080            extra_iter
36081                .next()
36082                .unwrap()
36083                .node
36084                .write_to(writer)
36085                .map_err(SerializeError::from)?;
36086        }
36087        #[cfg(feature = "dml-diagrams")]
36088        if let Some(ref val) = self.scene3d {
36089            val.write_element("a:scene3d", writer)?;
36090        }
36091        #[cfg(feature = "extra-children")]
36092        {
36093            emit_idx += 1;
36094        }
36095        #[cfg(feature = "extra-children")]
36096        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36097            extra_iter
36098                .next()
36099                .unwrap()
36100                .node
36101                .write_to(writer)
36102                .map_err(SerializeError::from)?;
36103        }
36104        #[cfg(feature = "dml-diagrams")]
36105        if let Some(ref val) = self.sp3d {
36106            val.write_element("a:sp3d", writer)?;
36107        }
36108        #[cfg(feature = "extra-children")]
36109        {
36110            emit_idx += 1;
36111        }
36112        #[cfg(feature = "extra-children")]
36113        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36114            extra_iter
36115                .next()
36116                .unwrap()
36117                .node
36118                .write_to(writer)
36119                .map_err(SerializeError::from)?;
36120        }
36121        #[cfg(feature = "dml-diagrams")]
36122        if let Some(ref val) = self.tx_pr {
36123            val.write_element("a:txPr", writer)?;
36124        }
36125        #[cfg(feature = "extra-children")]
36126        {
36127            emit_idx += 1;
36128        }
36129        #[cfg(feature = "extra-children")]
36130        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36131            extra_iter
36132                .next()
36133                .unwrap()
36134                .node
36135                .write_to(writer)
36136                .map_err(SerializeError::from)?;
36137        }
36138        #[cfg(feature = "dml-diagrams")]
36139        if let Some(ref val) = self.style {
36140            val.write_element("a:style", writer)?;
36141        }
36142        #[cfg(feature = "extra-children")]
36143        {
36144            emit_idx += 1;
36145        }
36146        #[cfg(feature = "extra-children")]
36147        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36148            extra_iter
36149                .next()
36150                .unwrap()
36151                .node
36152                .write_to(writer)
36153                .map_err(SerializeError::from)?;
36154        }
36155        #[cfg(feature = "dml-diagrams")]
36156        if let Some(ref val) = self.ext_lst {
36157            val.write_element("a:extLst", writer)?;
36158        }
36159        #[cfg(feature = "extra-children")]
36160        {
36161            emit_idx += 1;
36162        }
36163        #[cfg(feature = "extra-children")]
36164        for extra in extra_iter {
36165            extra.node.write_to(writer).map_err(SerializeError::from)?;
36166        }
36167        Ok(())
36168    }
36169
36170    fn is_empty_element(&self) -> bool {
36171        #[cfg(feature = "dml-diagrams")]
36172        if self.scene3d.is_some() {
36173            return false;
36174        }
36175        #[cfg(feature = "dml-diagrams")]
36176        if self.sp3d.is_some() {
36177            return false;
36178        }
36179        #[cfg(feature = "dml-diagrams")]
36180        if self.tx_pr.is_some() {
36181            return false;
36182        }
36183        #[cfg(feature = "dml-diagrams")]
36184        if self.style.is_some() {
36185            return false;
36186        }
36187        #[cfg(feature = "dml-diagrams")]
36188        if self.ext_lst.is_some() {
36189            return false;
36190        }
36191        #[cfg(feature = "extra-children")]
36192        if !self.extra_children.is_empty() {
36193            return false;
36194        }
36195        true
36196    }
36197}
36198
36199impl ToXml for DiagramStyleDefinition {
36200    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
36201        #[allow(unused_mut)]
36202        let mut start = start;
36203        #[cfg(feature = "dml-diagrams")]
36204        if let Some(ref val) = self.unique_id {
36205            start.push_attribute(("uniqueId", val.as_str()));
36206        }
36207        #[cfg(feature = "dml-diagrams")]
36208        if let Some(ref val) = self.min_ver {
36209            start.push_attribute(("minVer", val.as_str()));
36210        }
36211        #[cfg(feature = "extra-attrs")]
36212        for (key, value) in &self.extra_attrs {
36213            start.push_attribute((key.as_str(), value.as_str()));
36214        }
36215        start
36216    }
36217
36218    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
36219        #[cfg(feature = "extra-children")]
36220        let mut extra_iter = self.extra_children.iter().peekable();
36221        #[cfg(feature = "extra-children")]
36222        let mut emit_idx: usize = 0;
36223        #[cfg(feature = "dml-diagrams")]
36224        for item in &self.title {
36225            #[cfg(feature = "extra-children")]
36226            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36227                extra_iter
36228                    .next()
36229                    .unwrap()
36230                    .node
36231                    .write_to(writer)
36232                    .map_err(SerializeError::from)?;
36233            }
36234            item.write_element("a:title", writer)?;
36235            #[cfg(feature = "extra-children")]
36236            {
36237                emit_idx += 1;
36238            }
36239        }
36240        #[cfg(feature = "dml-diagrams")]
36241        for item in &self.desc {
36242            #[cfg(feature = "extra-children")]
36243            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36244                extra_iter
36245                    .next()
36246                    .unwrap()
36247                    .node
36248                    .write_to(writer)
36249                    .map_err(SerializeError::from)?;
36250            }
36251            item.write_element("a:desc", writer)?;
36252            #[cfg(feature = "extra-children")]
36253            {
36254                emit_idx += 1;
36255            }
36256        }
36257        #[cfg(feature = "extra-children")]
36258        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36259            extra_iter
36260                .next()
36261                .unwrap()
36262                .node
36263                .write_to(writer)
36264                .map_err(SerializeError::from)?;
36265        }
36266        #[cfg(feature = "dml-diagrams")]
36267        if let Some(ref val) = self.cat_lst {
36268            val.write_element("a:catLst", writer)?;
36269        }
36270        #[cfg(feature = "extra-children")]
36271        {
36272            emit_idx += 1;
36273        }
36274        #[cfg(feature = "extra-children")]
36275        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36276            extra_iter
36277                .next()
36278                .unwrap()
36279                .node
36280                .write_to(writer)
36281                .map_err(SerializeError::from)?;
36282        }
36283        #[cfg(feature = "dml-diagrams")]
36284        if let Some(ref val) = self.scene3d {
36285            val.write_element("a:scene3d", writer)?;
36286        }
36287        #[cfg(feature = "extra-children")]
36288        {
36289            emit_idx += 1;
36290        }
36291        #[cfg(feature = "dml-diagrams")]
36292        for item in &self.style_lbl {
36293            #[cfg(feature = "extra-children")]
36294            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36295                extra_iter
36296                    .next()
36297                    .unwrap()
36298                    .node
36299                    .write_to(writer)
36300                    .map_err(SerializeError::from)?;
36301            }
36302            item.write_element("a:styleLbl", writer)?;
36303            #[cfg(feature = "extra-children")]
36304            {
36305                emit_idx += 1;
36306            }
36307        }
36308        #[cfg(feature = "extra-children")]
36309        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36310            extra_iter
36311                .next()
36312                .unwrap()
36313                .node
36314                .write_to(writer)
36315                .map_err(SerializeError::from)?;
36316        }
36317        #[cfg(feature = "dml-diagrams")]
36318        if let Some(ref val) = self.ext_lst {
36319            val.write_element("a:extLst", writer)?;
36320        }
36321        #[cfg(feature = "extra-children")]
36322        {
36323            emit_idx += 1;
36324        }
36325        #[cfg(feature = "extra-children")]
36326        for extra in extra_iter {
36327            extra.node.write_to(writer).map_err(SerializeError::from)?;
36328        }
36329        Ok(())
36330    }
36331
36332    fn is_empty_element(&self) -> bool {
36333        #[cfg(feature = "dml-diagrams")]
36334        if !self.title.is_empty() {
36335            return false;
36336        }
36337        #[cfg(feature = "dml-diagrams")]
36338        if !self.desc.is_empty() {
36339            return false;
36340        }
36341        #[cfg(feature = "dml-diagrams")]
36342        if self.cat_lst.is_some() {
36343            return false;
36344        }
36345        #[cfg(feature = "dml-diagrams")]
36346        if self.scene3d.is_some() {
36347            return false;
36348        }
36349        #[cfg(feature = "dml-diagrams")]
36350        if !self.style_lbl.is_empty() {
36351            return false;
36352        }
36353        #[cfg(feature = "dml-diagrams")]
36354        if self.ext_lst.is_some() {
36355            return false;
36356        }
36357        #[cfg(feature = "extra-children")]
36358        if !self.extra_children.is_empty() {
36359            return false;
36360        }
36361        true
36362    }
36363}
36364
36365impl ToXml for DiagramStyleDefinitionHeader {
36366    fn write_attrs<'a>(&self, start: BytesStart<'a>) -> BytesStart<'a> {
36367        #[allow(unused_mut)]
36368        let mut start = start;
36369        #[cfg(feature = "dml-diagrams")]
36370        {
36371            let val = &self.unique_id;
36372            start.push_attribute(("uniqueId", val.as_str()));
36373        }
36374        #[cfg(feature = "dml-diagrams")]
36375        if let Some(ref val) = self.min_ver {
36376            start.push_attribute(("minVer", val.as_str()));
36377        }
36378        #[cfg(feature = "dml-diagrams")]
36379        if let Some(ref val) = self.res_id {
36380            {
36381                let s = val.to_string();
36382                start.push_attribute(("resId", s.as_str()));
36383            }
36384        }
36385        #[cfg(feature = "extra-attrs")]
36386        for (key, value) in &self.extra_attrs {
36387            start.push_attribute((key.as_str(), value.as_str()));
36388        }
36389        start
36390    }
36391
36392    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
36393        #[cfg(feature = "extra-children")]
36394        let mut extra_iter = self.extra_children.iter().peekable();
36395        #[cfg(feature = "extra-children")]
36396        let mut emit_idx: usize = 0;
36397        #[cfg(feature = "dml-diagrams")]
36398        for item in &self.title {
36399            #[cfg(feature = "extra-children")]
36400            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36401                extra_iter
36402                    .next()
36403                    .unwrap()
36404                    .node
36405                    .write_to(writer)
36406                    .map_err(SerializeError::from)?;
36407            }
36408            item.write_element("a:title", writer)?;
36409            #[cfg(feature = "extra-children")]
36410            {
36411                emit_idx += 1;
36412            }
36413        }
36414        #[cfg(feature = "dml-diagrams")]
36415        for item in &self.desc {
36416            #[cfg(feature = "extra-children")]
36417            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36418                extra_iter
36419                    .next()
36420                    .unwrap()
36421                    .node
36422                    .write_to(writer)
36423                    .map_err(SerializeError::from)?;
36424            }
36425            item.write_element("a:desc", writer)?;
36426            #[cfg(feature = "extra-children")]
36427            {
36428                emit_idx += 1;
36429            }
36430        }
36431        #[cfg(feature = "extra-children")]
36432        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36433            extra_iter
36434                .next()
36435                .unwrap()
36436                .node
36437                .write_to(writer)
36438                .map_err(SerializeError::from)?;
36439        }
36440        #[cfg(feature = "dml-diagrams")]
36441        if let Some(ref val) = self.cat_lst {
36442            val.write_element("a:catLst", writer)?;
36443        }
36444        #[cfg(feature = "extra-children")]
36445        {
36446            emit_idx += 1;
36447        }
36448        #[cfg(feature = "extra-children")]
36449        while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36450            extra_iter
36451                .next()
36452                .unwrap()
36453                .node
36454                .write_to(writer)
36455                .map_err(SerializeError::from)?;
36456        }
36457        #[cfg(feature = "dml-diagrams")]
36458        if let Some(ref val) = self.ext_lst {
36459            val.write_element("a:extLst", writer)?;
36460        }
36461        #[cfg(feature = "extra-children")]
36462        {
36463            emit_idx += 1;
36464        }
36465        #[cfg(feature = "extra-children")]
36466        for extra in extra_iter {
36467            extra.node.write_to(writer).map_err(SerializeError::from)?;
36468        }
36469        Ok(())
36470    }
36471
36472    fn is_empty_element(&self) -> bool {
36473        #[cfg(feature = "dml-diagrams")]
36474        if !self.title.is_empty() {
36475            return false;
36476        }
36477        #[cfg(feature = "dml-diagrams")]
36478        if !self.desc.is_empty() {
36479            return false;
36480        }
36481        #[cfg(feature = "dml-diagrams")]
36482        if self.cat_lst.is_some() {
36483            return false;
36484        }
36485        #[cfg(feature = "dml-diagrams")]
36486        if self.ext_lst.is_some() {
36487            return false;
36488        }
36489        #[cfg(feature = "extra-children")]
36490        if !self.extra_children.is_empty() {
36491            return false;
36492        }
36493        true
36494    }
36495}
36496
36497impl ToXml for DiagramStyleDefinitionHeaderList {
36498    fn write_children<W: Write>(&self, writer: &mut Writer<W>) -> Result<(), SerializeError> {
36499        #[cfg(feature = "extra-children")]
36500        let mut extra_iter = self.extra_children.iter().peekable();
36501        #[cfg(feature = "extra-children")]
36502        let mut emit_idx: usize = 0;
36503        #[cfg(feature = "dml-diagrams")]
36504        for item in &self.style_def_hdr {
36505            #[cfg(feature = "extra-children")]
36506            while extra_iter.peek().is_some_and(|e| e.position <= emit_idx) {
36507                extra_iter
36508                    .next()
36509                    .unwrap()
36510                    .node
36511                    .write_to(writer)
36512                    .map_err(SerializeError::from)?;
36513            }
36514            item.write_element("a:styleDefHdr", writer)?;
36515            #[cfg(feature = "extra-children")]
36516            {
36517                emit_idx += 1;
36518            }
36519        }
36520        #[cfg(feature = "extra-children")]
36521        for extra in extra_iter {
36522            extra.node.write_to(writer).map_err(SerializeError::from)?;
36523        }
36524        Ok(())
36525    }
36526
36527    fn is_empty_element(&self) -> bool {
36528        #[cfg(feature = "dml-diagrams")]
36529        if !self.style_def_hdr.is_empty() {
36530            return false;
36531        }
36532        #[cfg(feature = "extra-children")]
36533        if !self.extra_children.is_empty() {
36534            return false;
36535        }
36536        true
36537    }
36538}