1use hard_xml::{XmlRead, XmlResult, XmlWrite, XmlWriter};
7use std::borrow::Cow;
8use std::io::Write;
9
10use crate::schema::{SCHEMA_MAIN, SCHEMA_RELATIONSHIPS_DOCUMENT, SCHEMA_WORDML_14};
11use crate::{__string_enum, __xml_test_suites, write_attr};
12
13#[derive(Debug, Default, XmlRead, Clone)]
15#[cfg_attr(test, derive(PartialEq))]
16#[xml(tag = "w:settings")]
17pub struct Settings<'a> {
18 #[xml(child = "w:writeProtection")]
20 pub write_protection: Option<WriteProtection>,
21 #[xml(child = "w:view")]
23 pub view: Option<View>,
24 #[xml(child = "w:zoom")]
26 pub zoom: Option<Zoom>,
27 #[xml(child = "w:removePersonalInformation")]
29 pub remove_personal_information: Option<RemovePersonalInformation>,
30 #[xml(child = "w:removeDateAndTime")]
32 pub remove_date_and_time: Option<RemoveDateAndTime>,
33 #[xml(child = "w:doNotDisplayPageBoundaries")]
35 pub do_not_display_page_boundaries: Option<DoNotDisplayPageBoundaries>,
36 #[xml(child = "w:displayBackgroundShape")]
38 pub display_background_shape: Option<DisplayBackgroundShape>,
39 #[xml(child = "w:printPostScriptOverText")]
41 pub print_post_script_over_text: Option<PrintPostScriptOverText>,
42 #[xml(child = "w:printFractionalCharacterWidth")]
44 pub print_fractional_character_width: Option<PrintFractionalCharacterWidth>,
45 #[xml(child = "w:printFormsData")]
47 pub print_forms_data: Option<PrintFormsData>,
48 #[xml(child = "w:embedTrueTypeFonts")]
50 pub embed_true_type_fonts: Option<EmbedTrueTypeFonts>,
51 #[xml(child = "w:embedSystemFonts")]
53 pub embed_system_fonts: Option<EmbedSystemFonts>,
54 #[xml(child = "w:saveSubsetFonts")]
56 pub save_subset_fonts: Option<SaveSubsetFonts>,
57 #[xml(child = "w:saveFormsData")]
59 pub save_forms_data: Option<SaveFormsData>,
60 #[xml(child = "w:mirrorMargins")]
62 pub mirror_margins: Option<MirrorMargins>,
63 #[xml(child = "w:alignBordersAndEdges")]
65 pub align_borders_and_edges: Option<AlignBordersAndEdges>,
66 #[xml(child = "w:bordersDoNotSurroundHeader")]
68 pub borders_do_not_surround_header: Option<BordersDoNotSurroundHeader>,
69 #[xml(child = "w:bordersDoNotSurroundFooter")]
71 pub borders_do_not_surround_footer: Option<BordersDoNotSurroundFooter>,
72 #[xml(child = "w:gutterAtTop")]
74 pub gutter_at_top: Option<GutterAtTop>,
75 #[xml(child = "w:hideSpellingErrors")]
77 pub hide_spelling_errors: Option<HideSpellingErrors>,
78 #[xml(child = "w:hideGrammaticalErrors")]
80 pub hide_grammatical_errors: Option<HideGrammaticalErrors>,
81 #[xml(child = "w:activeWritingStyle")]
83 pub active_writing_style: Option<ActiveWritingStyle>,
84 #[xml(child = "w:proofState")]
86 pub proof_state: Option<ProofState>,
87 #[xml(child = "w:formsDesign")]
89 pub forms_design: Option<FormsDesign>,
90 #[xml(child = "w:attachedTemplate")]
92 pub attached_template: Option<AttachedTemplate<'a>>,
93 #[xml(child = "w:linkStyles")]
95 pub link_styles: Option<LinkStyles>,
96 #[xml(child = "w:stylePaneFormatFilter")]
98 pub style_pane_format_filter: Option<StylePaneFormatFilter>,
99 #[xml(child = "w:stylePaneSortMethod")]
101 pub style_pane_sort_method: Option<StylePaneSortMethod>,
102 #[xml(child = "w:documentType")]
104 pub document_type: Option<DocumentType>,
105 #[xml(child = "w:mailMerge")]
107 pub mail_merge: Option<MailMerge>,
108 #[xml(child = "w:revisionView")]
110 pub revision_view: Option<RevisionView>,
111 #[xml(child = "w:trackRevisions")]
113 pub track_revisions: Option<TrackRevisions>,
114 #[xml(child = "w:doNotTrackMoves")]
116 pub do_not_track_moves: Option<DoNotTrackMoves>,
117 #[xml(child = "w:doNotTrackFormatting")]
119 pub do_not_track_formatting: Option<DoNotTrackFormatting>,
120 #[xml(child = "w:documentProtection")]
122 pub document_protection: Option<DocumentProtection>,
123 #[xml(child = "w:autoFormatOverride")]
125 pub auto_format_override: Option<AutoFormatOverride>,
126 #[xml(child = "w:styleLockTheme")]
128 pub style_lock_theme: Option<StyleLockTheme>,
129 #[xml(child = "w:styleLockQFSet")]
131 pub style_lock_qfset: Option<StyleLockQfset>,
132 #[xml(child = "w:defaultTabStop")]
134 pub default_tab_stop: Option<DefaultTabStop>,
135 #[xml(child = "w:autoHyphenation")]
137 pub auto_hyphenation: Option<AutoHyphenation>,
138 #[xml(child = "w:consecutiveHyphenLimit")]
140 pub consecutive_hyphen_limit: Option<ConsecutiveHyphenLimit>,
141 #[xml(child = "w:hyphenationZone")]
143 pub hyphenation_zone: Option<HyphenationZone>,
144 #[xml(child = "w:doNotHyphenateCaps")]
146 pub do_not_hyphenate_caps: Option<DoNotHyphenateCaps>,
147 #[xml(child = "w:showEnvelope")]
149 pub show_envelope: Option<ShowEnvelope>,
150 #[xml(child = "w:summaryLength")]
152 pub summary_length: Option<SummaryLength>,
153 #[xml(child = "w:clickAndTypeStyle")]
155 pub click_and_type_style: Option<ClickAndTypeStyle>,
156 #[xml(child = "w:defaultTableStyle")]
158 pub default_table_style: Option<DefaultTableStyle>,
159 #[xml(child = "w:evenAndOddHeaders")]
161 pub even_and_odd_headers: Option<EvenAndOddHeaders>,
162 #[xml(child = "w:bookFoldRevPrinting")]
164 pub book_fold_rev_printing: Option<BookFoldRevPrinting>,
165 #[xml(child = "w:bookFoldPrinting")]
167 pub book_fold_printing: Option<BookFoldPrinting>,
168 #[xml(child = "w:bookFoldPrintingSheets")]
170 pub book_fold_printing_sheets: Option<BookFoldPrintingSheets>,
171 #[xml(child = "w:drawingGridHorizontalSpacing")]
173 pub drawing_grid_horizontal_spacing: Option<DrawingGridHorizontalSpacing>,
174 #[xml(child = "w:drawingGridVerticalSpacing")]
176 pub drawing_grid_vertical_spacing: Option<DrawingGridVerticalSpacing>,
177 #[xml(child = "w:displayHorizontalDrawingGridEvery")]
179 pub display_horizontal_drawing_grid_every: Option<DisplayHorizontalDrawingGridEvery>,
180 #[xml(child = "w:displayVerticalDrawingGridEvery")]
182 pub display_vertical_drawing_grid_every: Option<DisplayVerticalDrawingGridEvery>,
183 #[xml(child = "w:doNotUseMarginsForDrawingGridOrigin")]
185 pub do_not_use_margins_for_drawing_grid_origin: Option<DoNotUseMarginsForDrawingGridOrigin>,
186 #[xml(child = "w:drawingGridHorizontalOrigin")]
188 pub drawing_grid_horizontal_origin: Option<DrawingGridHorizontalOrigin>,
189 #[xml(child = "w:drawingGridVerticalOrigin")]
191 pub drawing_grid_vertical_origin: Option<DrawingGridVerticalOrigin>,
192 #[xml(child = "w:doNotShadeFormData")]
194 pub do_not_shade_form_data: Option<DoNotShadeFormData>,
195 #[xml(child = "w:noPunctuationKerning")]
197 pub no_punctuation_kerning: Option<NoPunctuationKerning>,
198 #[xml(child = "w:characterSpacingControl")]
200 pub character_spacing_control: Option<CharacterSpacingControl>,
201 #[xml(child = "w:printTwoOnOne")]
203 pub print_two_on_one: Option<PrintTwoOnOne>,
204 #[xml(child = "w:strictFirstAndLastChars")]
206 pub strict_first_and_last_chars: Option<StrictFirstAndLastChars>,
207 #[xml(child = "w:noLineBreaksAfter")]
209 pub no_line_breaks_after: Option<NoLineBreaksAfter>,
210 #[xml(child = "w:noLineBreaksBefore")]
212 pub no_line_breaks_before: Option<NoLineBreaksBefore>,
213 #[xml(child = "w:savePreviewPicture")]
215 pub save_preview_picture: Option<SavePreviewPicture>,
216 #[xml(child = "w:doNotValidateAgainstSchema")]
218 pub do_not_validate_against_schema: Option<DoNotValidateAgainstSchema>,
219 #[xml(child = "w:saveInvalidXml")]
221 pub save_invalid_xml: Option<SaveInvalidXml>,
222 #[xml(child = "w:ignoreMixedContent")]
224 pub ignore_mixed_content: Option<IgnoreMixedContent>,
225 #[xml(child = "w:alwaysShowPlaceholderText")]
227 pub always_show_placeholder_text: Option<AlwaysShowPlaceholderText>,
228 #[xml(child = "w:doNotDemarcateInvalidXml")]
230 pub do_not_demarcate_invalid_xml: Option<DoNotDemarcateInvalidXml>,
231 #[xml(child = "w:saveXmlDataOnly")]
233 pub save_xml_data_only: Option<SaveXmlDataOnly>,
234 #[xml(child = "w:useXSLTWhenSaving")]
236 pub use_xsltwhen_saving: Option<UseXsltwhenSaving>,
237 #[xml(child = "w:saveThroughXslt")]
239 pub save_through_xslt: Option<SaveThroughXslt>,
240 #[xml(child = "w:showXMLTags")]
242 pub show_xmltags: Option<ShowXmltags>,
243 #[xml(child = "w:alwaysMergeEmptyNamespace")]
245 pub always_merge_empty_namespace: Option<AlwaysMergeEmptyNamespace>,
246 #[xml(child = "w:updateFields")]
248 pub update_fields: Option<UpdateFields>,
249 #[xml(child = "w:hdrShapeDefaults")]
251 pub hdr_shape_defaults: Option<HdrShapeDefaults>,
252 #[xml(child = "w:footnotePr")]
254 pub footnote_pr: Option<crate::formatting::FootnoteProperty2>,
255 #[xml(child = "w:endnotePr")]
257 pub endnote_pr: Option<crate::formatting::EndnoteProperty2>,
258 #[xml(child = "w:compat")]
260 pub compat: Option<Compat>,
261 #[xml(child = "w:docVars")]
263 pub doc_vars: Option<DocVars<'a>>,
264 #[xml(child = "w:rsids")]
266 pub rsids: Option<Rsids<'a>>,
267 #[xml(child = "w:uiCompat97To2003")]
272 pub ui_compat97_to2003: Option<UiCompat97to2003>,
273 #[xml(child = "w:themeFontLang")]
278 pub theme_font_lang: Option<ThemeFontLang<'a>>,
279 #[xml(child = "w:clrSchemeMapping")]
281 pub clr_scheme_mapping: Option<ClrSchemeMapping>,
282 #[xml(child = "w:doNotIncludeSubdocsInStats")]
284 pub do_not_include_subdocs_in_stats: Option<DoNotIncludeSubdocsInStats>,
285 #[xml(child = "w:doNotAutoCompressPictures")]
287 pub do_not_auto_compress_pictures: Option<DoNotAutoCompressPictures>,
288 #[xml(child = "w:forceUpgrade")]
290 pub force_upgrade: Option<ForceUpgrade>,
291 #[xml(child = "w:captions")]
293 pub captions: Option<Captions>,
294 #[xml(child = "w:readModeInkLockDown")]
296 pub read_mode_ink_lock_down: Option<ReadModeInkLockDown>,
297 #[xml(child = "w:shapeDefaults")]
305 pub shape_defaults: Option<ShapeDefaults>,
306 #[xml(child = "w:doNotEmbedSmartTags")]
308 pub do_not_embed_smart_tags: Option<DoNotEmbedSmartTags>,
309 #[xml(child = "w:decimalSymbol")]
311 pub decimal_symbol: Option<DecimalSymbol<'a>>,
312 #[xml(child = "w:listSeparator")]
314 pub list_separator: Option<ListSeparator<'a>>,
315}
316
317#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
318#[cfg_attr(test, derive(PartialEq))]
319#[xml(tag = "w:writeProtection")]
320pub struct WriteProtection {}
321
322#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
323#[cfg_attr(test, derive(PartialEq))]
324#[xml(tag = "w:smartTagType")]
325pub struct SmartTagType {}
326
327#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
328#[cfg_attr(test, derive(PartialEq))]
329#[xml(tag = "w:view")]
330pub struct View {
331 #[xml(attr = "w:val")]
332 pub val: ViewType,
333}
334
335#[derive(Debug, Default, Clone)]
336#[cfg_attr(test, derive(PartialEq))]
337pub enum ViewType {
338 #[default]
339 None, Print, Outline, MasterPages, Normal, Web, }
346
347__string_enum! {
348 ViewType {
349 None = "none",
350 Print = "print",
351 Outline = "outline",
352 MasterPages = "masterPages",
353 Normal = "normal",
354 Web = "web",
355 }
356}
357
358#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
359#[cfg_attr(test, derive(PartialEq))]
360#[xml(tag = "w:zoom")]
361pub struct Zoom {
362 #[xml(attr = "w:val")]
363 pub val: Option<ZoomType>,
364 #[xml(attr = "w:percent")]
365 pub percent: Option<i32>,
366}
367
368#[derive(Debug, Default, Clone)]
369#[cfg_attr(test, derive(PartialEq))]
370pub enum ZoomType {
371 #[default]
372 None, FullPage, BestFit, TextFit, }
377
378__string_enum! {
379 ZoomType {
380 None = "none",
381 FullPage = "fullPage",
382 BestFit = "bestFit",
383 TextFit = "textFit",
384 }
385}
386
387#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
388#[cfg_attr(test, derive(PartialEq))]
389#[xml(tag = "w:removePersonalInformation")]
390pub struct RemovePersonalInformation {
391 #[xml(attr = "w:value")]
392 pub val: Option<bool>,
393}
394
395#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
396#[cfg_attr(test, derive(PartialEq))]
397#[xml(tag = "w:removeDateAndTime")]
398pub struct RemoveDateAndTime {
399 #[xml(attr = "w:value")]
400 pub val: Option<bool>,
401}
402
403#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
404#[cfg_attr(test, derive(PartialEq))]
405#[xml(tag = "w:doNotDisplayPageBoundaries")]
406pub struct DoNotDisplayPageBoundaries {
407 #[xml(attr = "w:value")]
408 pub val: Option<bool>,
409}
410
411#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
412#[cfg_attr(test, derive(PartialEq))]
413#[xml(tag = "w:displayBackgroundShape")]
414pub struct DisplayBackgroundShape {
415 #[xml(attr = "w:value")]
416 pub val: Option<bool>,
417}
418
419#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
420#[cfg_attr(test, derive(PartialEq))]
421#[xml(tag = "w:printPostScriptOverText")]
422pub struct PrintPostScriptOverText {
423 #[xml(attr = "w:value")]
424 pub val: Option<bool>,
425}
426
427#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
428#[cfg_attr(test, derive(PartialEq))]
429#[xml(tag = "w:printFractionalCharacterWidth")]
430pub struct PrintFractionalCharacterWidth {
431 #[xml(attr = "w:value")]
432 pub val: Option<bool>,
433}
434
435#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
436#[cfg_attr(test, derive(PartialEq))]
437#[xml(tag = "w:printFormsData")]
438pub struct PrintFormsData {
439 #[xml(attr = "w:value")]
440 pub val: Option<bool>,
441}
442
443#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
444#[cfg_attr(test, derive(PartialEq))]
445#[xml(tag = "w:embedTrueTypeFonts")]
446pub struct EmbedTrueTypeFonts {
447 #[xml(attr = "w:value")]
448 pub val: Option<bool>,
449}
450
451#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
452#[cfg_attr(test, derive(PartialEq))]
453#[xml(tag = "w:embedSystemFonts")]
454pub struct EmbedSystemFonts {
455 #[xml(attr = "w:value")]
456 pub val: Option<bool>,
457}
458
459#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
460#[cfg_attr(test, derive(PartialEq))]
461#[xml(tag = "w:saveSubsetFonts")]
462pub struct SaveSubsetFonts {
463 #[xml(attr = "w:value")]
464 pub val: Option<bool>,
465}
466
467#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
468#[cfg_attr(test, derive(PartialEq))]
469#[xml(tag = "w:saveFormsData")]
470pub struct SaveFormsData {
471 #[xml(attr = "w:value")]
472 pub val: Option<bool>,
473}
474
475#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
476#[cfg_attr(test, derive(PartialEq))]
477#[xml(tag = "w:mirrorMargins")]
478pub struct MirrorMargins {
479 #[xml(attr = "w:value")]
480 pub val: Option<bool>,
481}
482
483#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
484#[cfg_attr(test, derive(PartialEq))]
485#[xml(tag = "w:alignBordersAndEdges")]
486pub struct AlignBordersAndEdges {
487 #[xml(attr = "w:value")]
488 pub val: Option<bool>,
489}
490
491#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
492#[cfg_attr(test, derive(PartialEq))]
493#[xml(tag = "w:bordersDoNotSurroundHeader")]
494pub struct BordersDoNotSurroundHeader {
495 #[xml(attr = "w:value")]
496 pub val: Option<bool>,
497}
498
499#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
500#[cfg_attr(test, derive(PartialEq))]
501#[xml(tag = "w:bordersDoNotSurroundFooter")]
502pub struct BordersDoNotSurroundFooter {
503 #[xml(attr = "w:value")]
504 pub val: Option<bool>,
505}
506
507#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
508#[cfg_attr(test, derive(PartialEq))]
509#[xml(tag = "w:gutterAtTop")]
510pub struct GutterAtTop {
511 #[xml(attr = "w:value")]
512 pub val: Option<bool>,
513}
514
515#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
516#[cfg_attr(test, derive(PartialEq))]
517#[xml(tag = "w:hideSpellingErrors")]
518pub struct HideSpellingErrors {
519 #[xml(attr = "w:value")]
520 pub val: Option<bool>,
521}
522
523#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
524#[cfg_attr(test, derive(PartialEq))]
525#[xml(tag = "w:hideGrammaticalErrors")]
526pub struct HideGrammaticalErrors {
527 #[xml(attr = "w:value")]
528 pub val: Option<bool>,
529}
530
531#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
532#[cfg_attr(test, derive(PartialEq))]
533#[xml(tag = "w:activeWritingStyle")]
534pub struct ActiveWritingStyle {}
535
536#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
537#[cfg_attr(test, derive(PartialEq))]
538#[xml(tag = "w:proofState")]
539pub struct ProofState {
540 #[xml(attr = "w:spelling")]
541 pub spelling: Option<ProofStateType>,
542 #[xml(attr = "w:grammar")]
543 pub grammar: Option<ProofStateType>,
544}
545
546#[derive(Debug, Default, Clone)]
547#[cfg_attr(test, derive(PartialEq))]
548pub enum ProofStateType {
549 #[default]
550 Clean, Dirty, }
553
554__string_enum! {
555 ProofStateType {
556 Clean ="clean",
557 Dirty = "dirty",
558 }
559}
560
561#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
562#[cfg_attr(test, derive(PartialEq))]
563#[xml(tag = "w:formsDesign")]
564pub struct FormsDesign {
565 #[xml(attr = "w:value")]
566 pub val: Option<bool>,
567}
568
569#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
570#[cfg_attr(test, derive(PartialEq))]
571#[xml(tag = "w:attachedTemplate")]
572pub struct AttachedTemplate<'a> {
573 #[xml(attr = "r:id")]
574 pub val: Cow<'a, str>,
575}
576
577#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
578#[cfg_attr(test, derive(PartialEq))]
579#[xml(tag = "w:linkStyles")]
580pub struct LinkStyles {
581 #[xml(attr = "w:value")]
582 pub val: Option<bool>,
583}
584
585#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
586#[cfg_attr(test, derive(PartialEq))]
587#[xml(tag = "w:stylePaneFormatFilter")]
588pub struct StylePaneFormatFilter {}
589
590#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
591#[cfg_attr(test, derive(PartialEq))]
592#[xml(tag = "w:stylePaneSortMethod")]
593pub struct StylePaneSortMethod {}
594
595#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
596#[cfg_attr(test, derive(PartialEq))]
597#[xml(tag = "w:documentType")]
598pub struct DocumentType {}
599
600#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
601#[cfg_attr(test, derive(PartialEq))]
602#[xml(tag = "w:mailMerge")]
603pub struct MailMerge {
604 }
653
654#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
655#[cfg_attr(test, derive(PartialEq))]
656#[xml(tag = "w:revisionView")]
657pub struct RevisionView {}
658
659#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
660#[cfg_attr(test, derive(PartialEq))]
661#[xml(tag = "w:trackRevisions")]
662pub struct TrackRevisions {
663 #[xml(attr = "w:value")]
664 pub val: Option<bool>,
665}
666
667#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
668#[cfg_attr(test, derive(PartialEq))]
669#[xml(tag = "w:doNotTrackMoves")]
670pub struct DoNotTrackMoves {
671 #[xml(attr = "w:value")]
672 pub val: Option<bool>,
673}
674
675#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
676#[cfg_attr(test, derive(PartialEq))]
677#[xml(tag = "w:doNotTrackFormatting")]
678pub struct DoNotTrackFormatting {
679 #[xml(attr = "w:value")]
680 pub val: Option<bool>,
681}
682
683#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
684#[cfg_attr(test, derive(PartialEq))]
685#[xml(tag = "w:documentProtection")]
686pub struct DocumentProtection {}
687
688#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
689#[cfg_attr(test, derive(PartialEq))]
690#[xml(tag = "w:autoFormatOverride")]
691pub struct AutoFormatOverride {}
692
693#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
694#[cfg_attr(test, derive(PartialEq))]
695#[xml(tag = "w:styleLockTheme")]
696pub struct StyleLockTheme {
697 #[xml(attr = "w:value")]
698 pub val: Option<bool>,
699}
700
701#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
702#[cfg_attr(test, derive(PartialEq))]
703#[xml(tag = "w:styleLockQFSet")]
704pub struct StyleLockQfset {
705 #[xml(attr = "w:value")]
706 pub val: Option<bool>,
707}
708
709#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
710#[cfg_attr(test, derive(PartialEq))]
711#[xml(tag = "w:defaultTabStop")]
712pub struct DefaultTabStop {
713 #[xml(attr = "w:val")]
714 pub val: isize,
715}
716
717#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
718#[cfg_attr(test, derive(PartialEq))]
719#[xml(tag = "w:autoHyphenation")]
720pub struct AutoHyphenation {
721 #[xml(attr = "w:value")]
722 pub val: Option<bool>,
723}
724
725#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
726#[cfg_attr(test, derive(PartialEq))]
727#[xml(tag = "w:consecutiveHyphenLimit")]
728pub struct ConsecutiveHyphenLimit {}
729
730#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
731#[cfg_attr(test, derive(PartialEq))]
732#[xml(tag = "w:hyphenationZone")]
733pub struct HyphenationZone {}
734
735#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
736#[cfg_attr(test, derive(PartialEq))]
737#[xml(tag = "w:doNotHyphenateCaps")]
738pub struct DoNotHyphenateCaps {
739 #[xml(attr = "w:value")]
740 pub val: Option<bool>,
741}
742
743#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
744#[cfg_attr(test, derive(PartialEq))]
745#[xml(tag = "w:showEnvelope")]
746pub struct ShowEnvelope {
747 #[xml(attr = "w:value")]
748 pub val: Option<bool>,
749}
750
751#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
752#[cfg_attr(test, derive(PartialEq))]
753#[xml(tag = "w:summaryLength")]
754pub struct SummaryLength {}
755
756#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
757#[cfg_attr(test, derive(PartialEq))]
758#[xml(tag = "w:clickAndTypeStyle")]
759pub struct ClickAndTypeStyle {}
760
761#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
762#[cfg_attr(test, derive(PartialEq))]
763#[xml(tag = "w:defaultTableStyle")]
764pub struct DefaultTableStyle {}
765
766#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
767#[cfg_attr(test, derive(PartialEq))]
768#[xml(tag = "w:bookFoldRevPrinting")]
769pub struct BookFoldRevPrinting {
770 #[xml(attr = "w:value")]
771 pub val: Option<bool>,
772}
773
774#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
775#[cfg_attr(test, derive(PartialEq))]
776#[xml(tag = "w:bookFoldPrinting")]
777pub struct BookFoldPrinting {
778 #[xml(attr = "w:value")]
779 pub val: Option<bool>,
780}
781
782#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
783#[cfg_attr(test, derive(PartialEq))]
784#[xml(tag = "w:bookFoldPrintingSheets")]
785pub struct BookFoldPrintingSheets {}
786
787#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
788#[cfg_attr(test, derive(PartialEq))]
789#[xml(tag = "w:drawingGridHorizontalSpacing")]
790pub struct DrawingGridHorizontalSpacing {
791 #[xml(attr = "w:val")]
792 pub val: isize,
793}
794
795#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
796#[cfg_attr(test, derive(PartialEq))]
797#[xml(tag = "w:drawingGridVerticalSpacing")]
798pub struct DrawingGridVerticalSpacing {
799 #[xml(attr = "w:val")]
800 pub val: isize,
801}
802
803#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
804#[cfg_attr(test, derive(PartialEq))]
805#[xml(tag = "w:displayHorizontalDrawingGridEvery")]
806pub struct DisplayHorizontalDrawingGridEvery {
807 #[xml(attr = "w:val")]
808 pub val: isize,
809}
810
811#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
812#[cfg_attr(test, derive(PartialEq))]
813#[xml(tag = "w:displayVerticalDrawingGridEvery")]
814pub struct DisplayVerticalDrawingGridEvery {
815 #[xml(attr = "w:val")]
816 pub val: isize,
817}
818
819#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
820#[cfg_attr(test, derive(PartialEq))]
821#[xml(tag = "w:doNotUseMarginsForDrawingGridOrigin")]
822pub struct DoNotUseMarginsForDrawingGridOrigin {
823 #[xml(attr = "w:value")]
824 pub val: Option<bool>,
825}
826
827#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
828#[cfg_attr(test, derive(PartialEq))]
829#[xml(tag = "w:drawingGridHorizontalOrigin")]
830pub struct DrawingGridHorizontalOrigin {}
831
832#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
833#[cfg_attr(test, derive(PartialEq))]
834#[xml(tag = "w:drawingGridVerticalOrigin")]
835pub struct DrawingGridVerticalOrigin {}
836
837#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
838#[cfg_attr(test, derive(PartialEq))]
839#[xml(tag = "w:doNotShadeFormData")]
840pub struct DoNotShadeFormData {
841 #[xml(attr = "w:value")]
842 pub val: Option<bool>,
843}
844
845#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
846#[cfg_attr(test, derive(PartialEq))]
847#[xml(tag = "w:noPunctuationKerning")]
848pub struct NoPunctuationKerning {
849 #[xml(attr = "w:value")]
850 pub val: Option<bool>,
851}
852
853#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
854#[cfg_attr(test, derive(PartialEq))]
855#[xml(tag = "w:characterSpacingControl")]
856pub struct CharacterSpacingControl {
857 #[xml(attr = "w:val")]
858 pub val: CharacterSpacingControlType,
859}
860
861#[derive(Debug, Default, Clone)]
862#[cfg_attr(test, derive(PartialEq))]
863pub enum CharacterSpacingControlType {
864 #[default]
865 DoNotCompress, CompressPunctuation, CompressPunctuationAndJapaneseKana, }
869
870__string_enum! {
871 CharacterSpacingControlType {
872 DoNotCompress = "doNotCompress",
873 CompressPunctuation = "compressPunctuation",
874 CompressPunctuationAndJapaneseKana = "compressPunctuationAndJapaneseKana",
875 }
876}
877
878#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
879#[cfg_attr(test, derive(PartialEq))]
880#[xml(tag = "w:printTwoOnOne")]
881pub struct PrintTwoOnOne {
882 #[xml(attr = "w:value")]
883 pub val: Option<bool>,
884}
885
886#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
887#[cfg_attr(test, derive(PartialEq))]
888#[xml(tag = "w:strictFirstAndLastChars")]
889pub struct StrictFirstAndLastChars {
890 #[xml(attr = "w:value")]
891 pub val: Option<bool>,
892}
893
894#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
895#[cfg_attr(test, derive(PartialEq))]
896#[xml(tag = "w:noLineBreaksAfter")]
897pub struct NoLineBreaksAfter {}
898
899#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
900#[cfg_attr(test, derive(PartialEq))]
901#[xml(tag = "w:noLineBreaksBefore")]
902pub struct NoLineBreaksBefore {}
903
904#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
905#[cfg_attr(test, derive(PartialEq))]
906#[xml(tag = "w:savePreviewPicture")]
907pub struct SavePreviewPicture {
908 #[xml(attr = "w:value")]
909 pub val: Option<bool>,
910}
911
912#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
913#[cfg_attr(test, derive(PartialEq))]
914#[xml(tag = "w:doNotValidateAgainstSchema")]
915pub struct DoNotValidateAgainstSchema {
916 #[xml(attr = "w:value")]
917 pub val: Option<bool>,
918}
919
920#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
921#[cfg_attr(test, derive(PartialEq))]
922#[xml(tag = "w:saveInvalidXml")]
923pub struct SaveInvalidXml {
924 #[xml(attr = "w:value")]
925 pub val: Option<bool>,
926}
927
928#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
929#[cfg_attr(test, derive(PartialEq))]
930#[xml(tag = "w:ignoreMixedContent")]
931pub struct IgnoreMixedContent {
932 #[xml(attr = "w:value")]
933 pub val: Option<bool>,
934}
935
936#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
937#[cfg_attr(test, derive(PartialEq))]
938#[xml(tag = "w:alwaysShowPlaceholderText")]
939pub struct AlwaysShowPlaceholderText {
940 #[xml(attr = "w:value")]
941 pub val: Option<bool>,
942}
943
944#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
945#[cfg_attr(test, derive(PartialEq))]
946#[xml(tag = "w:doNotDemarcateInvalidXml")]
947pub struct DoNotDemarcateInvalidXml {
948 #[xml(attr = "w:value")]
949 pub val: Option<bool>,
950}
951
952#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
953#[cfg_attr(test, derive(PartialEq))]
954#[xml(tag = "w:saveXmlDataOnly")]
955pub struct SaveXmlDataOnly {
956 #[xml(attr = "w:value")]
957 pub val: Option<bool>,
958}
959
960#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
961#[cfg_attr(test, derive(PartialEq))]
962#[xml(tag = "w:useXSLTWhenSaving")]
963pub struct UseXsltwhenSaving {
964 #[xml(attr = "w:value")]
965 pub val: Option<bool>,
966}
967
968#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
969#[cfg_attr(test, derive(PartialEq))]
970#[xml(tag = "w:saveThroughXslt")]
971pub struct SaveThroughXslt {}
972
973#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
974#[cfg_attr(test, derive(PartialEq))]
975#[xml(tag = "w:showXMLTags")]
976pub struct ShowXmltags {
977 #[xml(attr = "w:value")]
978 pub val: Option<bool>,
979}
980
981#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
982#[cfg_attr(test, derive(PartialEq))]
983#[xml(tag = "w:alwaysMergeEmptyNamespace")]
984pub struct AlwaysMergeEmptyNamespace {
985 #[xml(attr = "w:value")]
986 pub val: Option<bool>,
987}
988
989#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
990#[cfg_attr(test, derive(PartialEq))]
991#[xml(tag = "w:updateFields")]
992pub struct UpdateFields {
993 #[xml(attr = "w:value")]
994 pub val: Option<bool>,
995}
996
997#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
998#[cfg_attr(test, derive(PartialEq))]
999#[xml(tag = "w:hdrShapeDefaults")]
1000pub struct HdrShapeDefaults {}
1001
1002#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1003#[cfg_attr(test, derive(PartialEq))]
1004#[xml(tag = "w:compat")]
1005pub struct Compat {}
1006
1007#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1008#[cfg_attr(test, derive(PartialEq))]
1009#[xml(tag = "w:docVars")]
1010pub struct DocVars<'a> {
1011 #[xml(child = "w:docVar")]
1012 pub vars: Vec<DocVar<'a>>,
1013}
1014
1015#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1016#[cfg_attr(test, derive(PartialEq))]
1017#[xml(tag = "w:docVar")]
1018pub struct DocVar<'a> {
1019 #[xml(attr = "w:name")]
1020 pub name: Cow<'a, str>,
1021 #[xml(attr = "w:val")]
1022 pub val: Cow<'a, str>,
1023}
1024
1025#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1026#[cfg_attr(test, derive(PartialEq))]
1027#[xml(tag = "w:rsids")]
1028pub struct Rsids<'a> {
1029 #[xml(child = "w:rsidRoot")]
1030 pub ro: Option<RsidRoot<'a>>,
1031 #[xml(child = "w:rsid")]
1032 pub rsids: Vec<Rsid<'a>>,
1033}
1034
1035#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1036#[cfg_attr(test, derive(PartialEq))]
1037#[xml(tag = "w:rsid")]
1038pub struct Rsid<'a> {
1039 #[xml(attr = "w:val")]
1040 pub val: Cow<'a, str>,
1041}
1042
1043#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1044#[cfg_attr(test, derive(PartialEq))]
1045#[xml(tag = "w:rsidRoot")]
1046pub struct RsidRoot<'a> {
1047 #[xml(attr = "w:val")]
1048 pub val: Cow<'a, str>,
1049}
1050
1051#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1052#[cfg_attr(test, derive(PartialEq))]
1053#[xml(tag = "w:uiCompat97To2003")]
1054pub struct UiCompat97to2003 {
1055 #[xml(attr = "w:value")]
1056 pub val: Option<bool>,
1057}
1058
1059#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1060#[cfg_attr(test, derive(PartialEq))]
1061#[xml(tag = "w:clrSchemeMapping")]
1062pub struct ClrSchemeMapping {}
1063
1064#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1065#[cfg_attr(test, derive(PartialEq))]
1066#[xml(tag = "w:doNotIncludeSubdocsInStats")]
1067pub struct DoNotIncludeSubdocsInStats {
1068 #[xml(attr = "w:value")]
1069 pub val: Option<bool>,
1070}
1071
1072#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1073#[cfg_attr(test, derive(PartialEq))]
1074#[xml(tag = "w:doNotAutoCompressPictures")]
1075pub struct DoNotAutoCompressPictures {
1076 #[xml(attr = "w:value")]
1077 pub val: Option<bool>,
1078}
1079
1080#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1081#[cfg_attr(test, derive(PartialEq))]
1082#[xml(tag = "w:forceUpgrade")]
1083pub struct ForceUpgrade {}
1084
1085#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1086#[cfg_attr(test, derive(PartialEq))]
1087#[xml(tag = "w:captions")]
1088pub struct Captions {}
1089
1090#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1091#[cfg_attr(test, derive(PartialEq))]
1092#[xml(tag = "w:readModeInkLockDown")]
1093pub struct ReadModeInkLockDown {}
1094
1095#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1096#[cfg_attr(test, derive(PartialEq))]
1097#[xml(tag = "w:shapeDefaults")]
1098pub struct ShapeDefaults {}
1099
1100#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1101#[cfg_attr(test, derive(PartialEq))]
1102#[xml(tag = "w:doNotEmbedSmartTags")]
1103pub struct DoNotEmbedSmartTags {
1104 #[xml(attr = "w:value")]
1105 pub val: Option<bool>,
1106}
1107
1108#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1109#[cfg_attr(test, derive(PartialEq))]
1110#[xml(tag = "w:decimalSymbol")]
1111pub struct DecimalSymbol<'a> {
1112 #[xml(attr = "w:val")]
1113 pub val: Cow<'a, str>,
1114}
1115
1116#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1117#[cfg_attr(test, derive(PartialEq))]
1118#[xml(tag = "w:listSeparator")]
1119pub struct ListSeparator<'a> {
1120 #[xml(attr = "w:val")]
1121 pub val: Cow<'a, str>,
1122}
1123
1124#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1125#[cfg_attr(test, derive(PartialEq))]
1126#[xml(tag = "w:evenAndOddHeaders")]
1127pub struct EvenAndOddHeaders {}
1128
1129#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
1130#[cfg_attr(test, derive(PartialEq))]
1131#[xml(tag = "w:themeFontLang")]
1132pub struct ThemeFontLang<'a> {
1133 #[xml(attr = "w:val")]
1134 pub val: Option<Cow<'a, str>>,
1135 #[xml(attr = "w:eastAsia")]
1136 pub east_asia: Option<Cow<'a, str>>,
1137}
1138
1139impl<'a> XmlWrite for Settings<'a> {
1140 fn to_writer<W: Write>(&self, writer: &mut XmlWriter<W>) -> XmlResult<()> {
1141 let Settings {
1142 write_protection,
1143 view,
1144 zoom,
1145 remove_personal_information,
1146 remove_date_and_time,
1147 do_not_display_page_boundaries,
1148 display_background_shape,
1149 print_post_script_over_text,
1150 print_fractional_character_width,
1151 print_forms_data,
1152 embed_true_type_fonts,
1153 embed_system_fonts,
1154 save_subset_fonts,
1155 save_forms_data,
1156 mirror_margins,
1157 align_borders_and_edges,
1158 borders_do_not_surround_header,
1159 borders_do_not_surround_footer,
1160 gutter_at_top,
1161 hide_spelling_errors,
1162 hide_grammatical_errors,
1163 active_writing_style,
1164 proof_state,
1165 forms_design,
1166 attached_template,
1167 link_styles,
1168 style_pane_format_filter,
1169 style_pane_sort_method,
1170 document_type,
1171 mail_merge,
1172 revision_view,
1173 track_revisions,
1174 do_not_track_moves,
1175 do_not_track_formatting,
1176 document_protection,
1177 auto_format_override,
1178 style_lock_theme,
1179 style_lock_qfset,
1180 default_tab_stop,
1181 auto_hyphenation,
1182 consecutive_hyphen_limit,
1183 hyphenation_zone,
1184 do_not_hyphenate_caps,
1185 show_envelope,
1186 summary_length,
1187 click_and_type_style,
1188 default_table_style,
1189 even_and_odd_headers,
1190 book_fold_rev_printing,
1191 book_fold_printing,
1192 book_fold_printing_sheets,
1193 drawing_grid_horizontal_spacing,
1194 drawing_grid_vertical_spacing,
1195 display_horizontal_drawing_grid_every,
1196 display_vertical_drawing_grid_every,
1197 do_not_use_margins_for_drawing_grid_origin,
1198 drawing_grid_horizontal_origin,
1199 drawing_grid_vertical_origin,
1200 do_not_shade_form_data,
1201 no_punctuation_kerning,
1202 character_spacing_control,
1203 print_two_on_one,
1204 strict_first_and_last_chars,
1205 no_line_breaks_after,
1206 no_line_breaks_before,
1207 save_preview_picture,
1208 do_not_validate_against_schema,
1209 save_invalid_xml,
1210 ignore_mixed_content,
1211 always_show_placeholder_text,
1212 do_not_demarcate_invalid_xml,
1213 save_xml_data_only,
1214 use_xsltwhen_saving,
1215 save_through_xslt,
1216 show_xmltags,
1217 always_merge_empty_namespace,
1218 update_fields,
1219 hdr_shape_defaults,
1220 footnote_pr,
1221 endnote_pr,
1222 compat,
1223 doc_vars,
1224 rsids,
1225 ui_compat97_to2003,
1226 theme_font_lang,
1227 clr_scheme_mapping,
1228 do_not_include_subdocs_in_stats,
1229 do_not_auto_compress_pictures,
1230 force_upgrade,
1231 captions,
1232 read_mode_ink_lock_down,
1233 shape_defaults,
1234 do_not_embed_smart_tags,
1235 decimal_symbol,
1236 list_separator,
1237 } = self;
1238
1239 log::debug!("[Settings] Started writing.");
1240 let _ = write!(writer.inner, "{}", crate::schema::SCHEMA_XML);
1241
1242 writer.write_element_start("w:settings")?;
1243
1244 writer.write_attribute("xmlns:r", SCHEMA_RELATIONSHIPS_DOCUMENT)?;
1245
1246 writer.write_attribute("xmlns:w", SCHEMA_MAIN)?;
1247
1248 writer.write_attribute("xmlns:w14", SCHEMA_WORDML_14)?;
1249
1250 writer.write_element_end_open()?;
1251
1252 write_attr(write_protection, writer)?;
1253 write_attr(view, writer)?;
1254 write_attr(zoom, writer)?;
1255 write_attr(remove_personal_information, writer)?;
1256 write_attr(remove_date_and_time, writer)?;
1257 write_attr(do_not_display_page_boundaries, writer)?;
1258 write_attr(display_background_shape, writer)?;
1259 write_attr(print_post_script_over_text, writer)?;
1260 write_attr(print_fractional_character_width, writer)?;
1261 write_attr(print_forms_data, writer)?;
1262 write_attr(embed_true_type_fonts, writer)?;
1263 write_attr(embed_system_fonts, writer)?;
1264 write_attr(save_subset_fonts, writer)?;
1265 write_attr(save_forms_data, writer)?;
1266 write_attr(mirror_margins, writer)?;
1267 write_attr(align_borders_and_edges, writer)?;
1268 write_attr(borders_do_not_surround_header, writer)?;
1269 write_attr(borders_do_not_surround_footer, writer)?;
1270 write_attr(gutter_at_top, writer)?;
1271 write_attr(hide_spelling_errors, writer)?;
1272 write_attr(hide_grammatical_errors, writer)?;
1273 write_attr(active_writing_style, writer)?;
1274 write_attr(proof_state, writer)?;
1275 write_attr(forms_design, writer)?;
1276 write_attr(attached_template, writer)?;
1277 write_attr(link_styles, writer)?;
1278 write_attr(style_pane_format_filter, writer)?;
1279 write_attr(style_pane_sort_method, writer)?;
1280 write_attr(document_type, writer)?;
1281 write_attr(mail_merge, writer)?;
1282 write_attr(revision_view, writer)?;
1283 write_attr(track_revisions, writer)?;
1284 write_attr(do_not_track_moves, writer)?;
1285 write_attr(do_not_track_formatting, writer)?;
1286 write_attr(document_protection, writer)?;
1287 write_attr(auto_format_override, writer)?;
1288 write_attr(style_lock_theme, writer)?;
1289 write_attr(style_lock_qfset, writer)?;
1290 write_attr(default_tab_stop, writer)?;
1291 write_attr(auto_hyphenation, writer)?;
1292 write_attr(consecutive_hyphen_limit, writer)?;
1293 write_attr(hyphenation_zone, writer)?;
1294 write_attr(do_not_hyphenate_caps, writer)?;
1295 write_attr(show_envelope, writer)?;
1296 write_attr(summary_length, writer)?;
1297 write_attr(click_and_type_style, writer)?;
1298 write_attr(default_table_style, writer)?;
1299 write_attr(even_and_odd_headers, writer)?;
1300 write_attr(book_fold_rev_printing, writer)?;
1301 write_attr(book_fold_printing, writer)?;
1302 write_attr(book_fold_printing_sheets, writer)?;
1303 write_attr(drawing_grid_horizontal_spacing, writer)?;
1304 write_attr(drawing_grid_vertical_spacing, writer)?;
1305 write_attr(display_horizontal_drawing_grid_every, writer)?;
1306 write_attr(display_vertical_drawing_grid_every, writer)?;
1307 write_attr(do_not_use_margins_for_drawing_grid_origin, writer)?;
1308 write_attr(drawing_grid_horizontal_origin, writer)?;
1309 write_attr(drawing_grid_vertical_origin, writer)?;
1310 write_attr(do_not_shade_form_data, writer)?;
1311 write_attr(no_punctuation_kerning, writer)?;
1312 write_attr(character_spacing_control, writer)?;
1313 write_attr(print_two_on_one, writer)?;
1314 write_attr(strict_first_and_last_chars, writer)?;
1315 write_attr(no_line_breaks_after, writer)?;
1316 write_attr(no_line_breaks_before, writer)?;
1317 write_attr(save_preview_picture, writer)?;
1318 write_attr(do_not_validate_against_schema, writer)?;
1319 write_attr(save_invalid_xml, writer)?;
1320 write_attr(ignore_mixed_content, writer)?;
1321 write_attr(always_show_placeholder_text, writer)?;
1322 write_attr(do_not_demarcate_invalid_xml, writer)?;
1323 write_attr(save_xml_data_only, writer)?;
1324 write_attr(use_xsltwhen_saving, writer)?;
1325 write_attr(save_through_xslt, writer)?;
1326 write_attr(show_xmltags, writer)?;
1327 write_attr(always_merge_empty_namespace, writer)?;
1328 write_attr(update_fields, writer)?;
1329 write_attr(hdr_shape_defaults, writer)?;
1330 write_attr(footnote_pr, writer)?;
1331 write_attr(endnote_pr, writer)?;
1332 write_attr(compat, writer)?;
1333 write_attr(doc_vars, writer)?;
1334 write_attr(rsids, writer)?;
1335 write_attr(ui_compat97_to2003, writer)?;
1336 write_attr(theme_font_lang, writer)?;
1337 write_attr(clr_scheme_mapping, writer)?;
1338 write_attr(do_not_include_subdocs_in_stats, writer)?;
1339 write_attr(do_not_auto_compress_pictures, writer)?;
1340 write_attr(force_upgrade, writer)?;
1341 write_attr(captions, writer)?;
1342 write_attr(read_mode_ink_lock_down, writer)?;
1343 write_attr(shape_defaults, writer)?;
1344 write_attr(do_not_embed_smart_tags, writer)?;
1345 write_attr(decimal_symbol, writer)?;
1346 write_attr(list_separator, writer)?;
1347
1348 writer.write_element_end_close("w:settings")?;
1349
1350 log::debug!("[Settings] Finished writing.");
1351
1352 Ok(())
1353 }
1354}
1355
1356__xml_test_suites!(
1357 Settings,
1358 Settings::default(),
1359 format!(
1360 r#"{}<w:settings xmlns:r="{}" xmlns:w="{}" xmlns:w14="{}"></w:settings>"#,
1361 crate::schema::SCHEMA_XML,
1362 SCHEMA_RELATIONSHIPS_DOCUMENT,
1363 SCHEMA_MAIN,
1364 SCHEMA_WORDML_14
1365 )
1366 .as_str(),
1367);