openxml-drawingml 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +8 -8
  3. data/lib/openxml/drawingml.rb +11 -0
  4. data/lib/openxml/drawingml/elements.rb +1 -1
  5. data/lib/openxml/drawingml/elements/adjust_values_list.rb +2 -2
  6. data/lib/openxml/drawingml/elements/blip.rb +3 -3
  7. data/lib/openxml/drawingml/elements/blip_fill.rb +1 -2
  8. data/lib/openxml/drawingml/elements/children_extents.rb +2 -1
  9. data/lib/openxml/drawingml/elements/children_offset.rb +2 -1
  10. data/lib/openxml/drawingml/elements/extension.rb +2 -1
  11. data/lib/openxml/drawingml/elements/extension_list.rb +2 -2
  12. data/lib/openxml/drawingml/elements/extents.rb +2 -1
  13. data/lib/openxml/drawingml/elements/fill_rectangle.rb +2 -1
  14. data/lib/openxml/drawingml/elements/graphic.rb +4 -1
  15. data/lib/openxml/drawingml/elements/graphic_data.rb +3 -1
  16. data/lib/openxml/drawingml/elements/graphic_frame_locks.rb +3 -1
  17. data/lib/openxml/drawingml/elements/head_end.rb +3 -1
  18. data/lib/openxml/drawingml/elements/line_break.rb +89 -0
  19. data/lib/openxml/drawingml/elements/no_autofit.rb +2 -2
  20. data/lib/openxml/drawingml/elements/no_fill.rb +3 -1
  21. data/lib/openxml/drawingml/elements/non_visual_drawing_properties.rb +1 -1
  22. data/lib/openxml/drawingml/elements/non_visual_picture_drawing_properties.rb +1 -2
  23. data/lib/openxml/drawingml/elements/non_visual_picture_properties.rb +1 -2
  24. data/lib/openxml/drawingml/elements/non_visual_shape_drawing_properties.rb +1 -2
  25. data/lib/openxml/drawingml/elements/offset.rb +1 -1
  26. data/lib/openxml/drawingml/elements/outline.rb +2 -2
  27. data/lib/openxml/drawingml/elements/paragraph.rb +78 -0
  28. data/lib/openxml/drawingml/elements/picture.rb +1 -2
  29. data/lib/openxml/drawingml/elements/picture_locks.rb +1 -1
  30. data/lib/openxml/drawingml/elements/picture_shape_properties.rb +1 -2
  31. data/lib/openxml/drawingml/elements/preset_geometry.rb +2 -2
  32. data/lib/openxml/drawingml/elements/preset_text_warp.rb +1 -2
  33. data/lib/openxml/drawingml/elements/round.rb +4 -1
  34. data/lib/openxml/drawingml/elements/run.rb +85 -0
  35. data/lib/openxml/drawingml/elements/shape_guide.rb +1 -1
  36. data/lib/openxml/drawingml/elements/solid_fill.rb +3 -1
  37. data/lib/openxml/drawingml/elements/source_rectangle.rb +1 -1
  38. data/lib/openxml/drawingml/elements/srgb_color.rb +2 -1
  39. data/lib/openxml/drawingml/elements/stretch.rb +2 -2
  40. data/lib/openxml/drawingml/elements/tail_end.rb +3 -1
  41. data/lib/openxml/drawingml/elements/text.rb +21 -0
  42. data/lib/openxml/drawingml/elements/theme_elements.rb +4 -1
  43. data/lib/openxml/drawingml/elements/transform_effect.rb +1 -2
  44. data/lib/openxml/drawingml/parts.rb +10 -0
  45. data/lib/openxml/drawingml/parts/theme.rb +46 -0
  46. data/lib/openxml/drawingml/properties.rb +24 -0
  47. data/lib/openxml/drawingml/properties/audio_cd.rb +16 -0
  48. data/lib/openxml/drawingml/properties/audio_cd_end.rb +13 -0
  49. data/lib/openxml/drawingml/properties/audio_cd_start.rb +13 -0
  50. data/lib/openxml/drawingml/properties/audio_cd_time_property.rb +11 -0
  51. data/lib/openxml/drawingml/properties/audio_file.rb +13 -0
  52. data/lib/openxml/drawingml/properties/autofit_none.rb +11 -0
  53. data/lib/openxml/drawingml/properties/autofit_normal.rb +14 -0
  54. data/lib/openxml/drawingml/properties/autofit_shape.rb +11 -0
  55. data/lib/openxml/drawingml/properties/background_fill_style_list.rb +14 -0
  56. data/lib/openxml/drawingml/properties/blip.rb +27 -0
  57. data/lib/openxml/drawingml/properties/body_properties.rb +81 -0
  58. data/lib/openxml/drawingml/properties/bullet_color.rb +13 -0
  59. data/lib/openxml/drawingml/properties/bullet_color_text.rb +11 -0
  60. data/lib/openxml/drawingml/properties/bullet_font.rb +13 -0
  61. data/lib/openxml/drawingml/properties/bullet_font_text.rb +11 -0
  62. data/lib/openxml/drawingml/properties/bullet_size_percent.rb +20 -0
  63. data/lib/openxml/drawingml/properties/bullet_size_points.rb +20 -0
  64. data/lib/openxml/drawingml/properties/bullet_size_text.rb +11 -0
  65. data/lib/openxml/drawingml/properties/bullet_style_auto_numbered.rb +27 -0
  66. data/lib/openxml/drawingml/properties/bullet_style_blip.rb +12 -0
  67. data/lib/openxml/drawingml/properties/bullet_style_character.rb +13 -0
  68. data/lib/openxml/drawingml/properties/bullet_style_none.rb +11 -0
  69. data/lib/openxml/drawingml/properties/child_extent.rb +13 -0
  70. data/lib/openxml/drawingml/properties/child_offset.rb +13 -0
  71. data/lib/openxml/drawingml/properties/color_component_rgb.rb +17 -0
  72. data/lib/openxml/drawingml/properties/color_container_property.rb +17 -0
  73. data/lib/openxml/drawingml/properties/color_hex_rgb.rb +20 -0
  74. data/lib/openxml/drawingml/properties/color_hsl.rb +17 -0
  75. data/lib/openxml/drawingml/properties/color_mapping.rb +31 -0
  76. data/lib/openxml/drawingml/properties/color_mapping_override.rb +16 -0
  77. data/lib/openxml/drawingml/properties/color_mapping_override_map.rb +13 -0
  78. data/lib/openxml/drawingml/properties/color_mapping_override_master.rb +11 -0
  79. data/lib/openxml/drawingml/properties/color_preset_color.rb +51 -0
  80. data/lib/openxml/drawingml/properties/color_property.rb +40 -0
  81. data/lib/openxml/drawingml/properties/color_scheme.rb +29 -0
  82. data/lib/openxml/drawingml/properties/color_scheme_accent_five.rb +13 -0
  83. data/lib/openxml/drawingml/properties/color_scheme_accent_four.rb +13 -0
  84. data/lib/openxml/drawingml/properties/color_scheme_accent_one.rb +13 -0
  85. data/lib/openxml/drawingml/properties/color_scheme_accent_six.rb +13 -0
  86. data/lib/openxml/drawingml/properties/color_scheme_accent_three.rb +13 -0
  87. data/lib/openxml/drawingml/properties/color_scheme_accent_two.rb +13 -0
  88. data/lib/openxml/drawingml/properties/color_scheme_color.rb +25 -0
  89. data/lib/openxml/drawingml/properties/color_scheme_dark_one.rb +13 -0
  90. data/lib/openxml/drawingml/properties/color_scheme_dark_two.rb +13 -0
  91. data/lib/openxml/drawingml/properties/color_scheme_followed_hyperlink.rb +13 -0
  92. data/lib/openxml/drawingml/properties/color_scheme_hyperlink.rb +13 -0
  93. data/lib/openxml/drawingml/properties/color_scheme_light_one.rb +13 -0
  94. data/lib/openxml/drawingml/properties/color_scheme_light_two.rb +13 -0
  95. data/lib/openxml/drawingml/properties/color_system_color.rb +30 -0
  96. data/lib/openxml/drawingml/properties/color_xform_alpha.rb +19 -0
  97. data/lib/openxml/drawingml/properties/color_xform_alpha_modulation.rb +11 -0
  98. data/lib/openxml/drawingml/properties/color_xform_alpha_offset.rb +19 -0
  99. data/lib/openxml/drawingml/properties/color_xform_blue.rb +11 -0
  100. data/lib/openxml/drawingml/properties/color_xform_blue_modulation.rb +11 -0
  101. data/lib/openxml/drawingml/properties/color_xform_blue_offset.rb +11 -0
  102. data/lib/openxml/drawingml/properties/color_xform_complement.rb +11 -0
  103. data/lib/openxml/drawingml/properties/color_xform_gamma.rb +11 -0
  104. data/lib/openxml/drawingml/properties/color_xform_grayscale.rb +11 -0
  105. data/lib/openxml/drawingml/properties/color_xform_green.rb +11 -0
  106. data/lib/openxml/drawingml/properties/color_xform_green_modulation.rb +11 -0
  107. data/lib/openxml/drawingml/properties/color_xform_green_offset.rb +11 -0
  108. data/lib/openxml/drawingml/properties/color_xform_hue.rb +20 -0
  109. data/lib/openxml/drawingml/properties/color_xform_hue_modulation.rb +11 -0
  110. data/lib/openxml/drawingml/properties/color_xform_hue_offset.rb +11 -0
  111. data/lib/openxml/drawingml/properties/color_xform_inverse.rb +11 -0
  112. data/lib/openxml/drawingml/properties/color_xform_inverse_gamma.rb +11 -0
  113. data/lib/openxml/drawingml/properties/color_xform_luminance.rb +11 -0
  114. data/lib/openxml/drawingml/properties/color_xform_luminance_modulation.rb +11 -0
  115. data/lib/openxml/drawingml/properties/color_xform_luminance_offset.rb +11 -0
  116. data/lib/openxml/drawingml/properties/color_xform_red.rb +11 -0
  117. data/lib/openxml/drawingml/properties/color_xform_red_modulation.rb +11 -0
  118. data/lib/openxml/drawingml/properties/color_xform_red_offset.rb +11 -0
  119. data/lib/openxml/drawingml/properties/color_xform_saturation.rb +11 -0
  120. data/lib/openxml/drawingml/properties/color_xform_saturation_modulation.rb +11 -0
  121. data/lib/openxml/drawingml/properties/color_xform_saturation_offset.rb +11 -0
  122. data/lib/openxml/drawingml/properties/color_xform_shade.rb +19 -0
  123. data/lib/openxml/drawingml/properties/color_xform_tint.rb +19 -0
  124. data/lib/openxml/drawingml/properties/complex_script_font.rb +13 -0
  125. data/lib/openxml/drawingml/properties/connection.rb +11 -0
  126. data/lib/openxml/drawingml/properties/connection_end.rb +13 -0
  127. data/lib/openxml/drawingml/properties/connection_shape_locks.rb +24 -0
  128. data/lib/openxml/drawingml/properties/connection_start.rb +13 -0
  129. data/lib/openxml/drawingml/properties/custom_color.rb +13 -0
  130. data/lib/openxml/drawingml/properties/custom_color_list.rb +14 -0
  131. data/lib/openxml/drawingml/properties/custom_dash_style.rb +14 -0
  132. data/lib/openxml/drawingml/properties/custom_geometry.rb +18 -0
  133. data/lib/openxml/drawingml/properties/dash_stop.rb +14 -0
  134. data/lib/openxml/drawingml/properties/default_paragraph_properties.rb +13 -0
  135. data/lib/openxml/drawingml/properties/default_run_properties.rb +13 -0
  136. data/lib/openxml/drawingml/properties/default_shape_properties.rb +15 -0
  137. data/lib/openxml/drawingml/properties/east_asian_font.rb +13 -0
  138. data/lib/openxml/drawingml/properties/effect_dag.rb +20 -0
  139. data/lib/openxml/drawingml/properties/effect_list.rb +17 -0
  140. data/lib/openxml/drawingml/properties/effect_reference.rb +13 -0
  141. data/lib/openxml/drawingml/properties/effect_style.rb +18 -0
  142. data/lib/openxml/drawingml/properties/effect_style_list.rb +14 -0
  143. data/lib/openxml/drawingml/properties/embedded_sound_file.rb +14 -0
  144. data/lib/openxml/drawingml/properties/extension.rb +14 -0
  145. data/lib/openxml/drawingml/properties/extension_list.rb +14 -0
  146. data/lib/openxml/drawingml/properties/extent.rb +29 -0
  147. data/lib/openxml/drawingml/properties/external_media_file.rb +15 -0
  148. data/lib/openxml/drawingml/properties/extra_color_scheme.rb +14 -0
  149. data/lib/openxml/drawingml/properties/extra_color_scheme_list.rb +14 -0
  150. data/lib/openxml/drawingml/properties/fill_blip.rb +22 -0
  151. data/lib/openxml/drawingml/properties/fill_gradient.rb +24 -0
  152. data/lib/openxml/drawingml/properties/fill_group.rb +11 -0
  153. data/lib/openxml/drawingml/properties/fill_none.rb +11 -0
  154. data/lib/openxml/drawingml/properties/fill_pattern.rb +23 -0
  155. data/lib/openxml/drawingml/properties/fill_rectangle.rb +13 -0
  156. data/lib/openxml/drawingml/properties/fill_reference.rb +13 -0
  157. data/lib/openxml/drawingml/properties/fill_solid.rb +13 -0
  158. data/lib/openxml/drawingml/properties/fill_style_list.rb +19 -0
  159. data/lib/openxml/drawingml/properties/fill_to_rectangle.rb +13 -0
  160. data/lib/openxml/drawingml/properties/flat_text.rb +39 -0
  161. data/lib/openxml/drawingml/properties/font_collection_property.rb +16 -0
  162. data/lib/openxml/drawingml/properties/font_property.rb +29 -0
  163. data/lib/openxml/drawingml/properties/font_reference.rb +13 -0
  164. data/lib/openxml/drawingml/properties/font_scheme.rb +18 -0
  165. data/lib/openxml/drawingml/properties/format_scheme.rb +19 -0
  166. data/lib/openxml/drawingml/properties/geometry_guide.rb +14 -0
  167. data/lib/openxml/drawingml/properties/geometry_guide_list.rb +14 -0
  168. data/lib/openxml/drawingml/properties/gradient_line.rb +14 -0
  169. data/lib/openxml/drawingml/properties/gradient_path.rb +16 -0
  170. data/lib/openxml/drawingml/properties/gradient_stop.rb +13 -0
  171. data/lib/openxml/drawingml/properties/gradient_stop_list.rb +14 -0
  172. data/lib/openxml/drawingml/properties/graphic.rb +13 -0
  173. data/lib/openxml/drawingml/properties/graphic_data.rb +14 -0
  174. data/lib/openxml/drawingml/properties/graphic_frame_locks.rb +20 -0
  175. data/lib/openxml/drawingml/properties/group_shape_locks.rb +22 -0
  176. data/lib/openxml/drawingml/properties/group_transform.rb +16 -0
  177. data/lib/openxml/drawingml/properties/head_end.rb +13 -0
  178. data/lib/openxml/drawingml/properties/highlight.rb +13 -0
  179. data/lib/openxml/drawingml/properties/hyperlink_click.rb +13 -0
  180. data/lib/openxml/drawingml/properties/hyperlink_hover.rb +13 -0
  181. data/lib/openxml/drawingml/properties/hyperlink_mouse_over.rb +13 -0
  182. data/lib/openxml/drawingml/properties/hyperlink_property.rb +22 -0
  183. data/lib/openxml/drawingml/properties/integer_property.rb +12 -0
  184. data/lib/openxml/drawingml/properties/latin_font.rb +13 -0
  185. data/lib/openxml/drawingml/properties/level1_paragraph_properties.rb +13 -0
  186. data/lib/openxml/drawingml/properties/level2_paragraph_properties.rb +13 -0
  187. data/lib/openxml/drawingml/properties/level3_paragraph_properties.rb +13 -0
  188. data/lib/openxml/drawingml/properties/level4_paragraph_properties.rb +13 -0
  189. data/lib/openxml/drawingml/properties/level5_paragraph_properties.rb +13 -0
  190. data/lib/openxml/drawingml/properties/level6_paragraph_properties.rb +13 -0
  191. data/lib/openxml/drawingml/properties/level7_paragraph_properties.rb +13 -0
  192. data/lib/openxml/drawingml/properties/level8_paragraph_properties.rb +13 -0
  193. data/lib/openxml/drawingml/properties/level9_paragraph_properties.rb +13 -0
  194. data/lib/openxml/drawingml/properties/line_default.rb +13 -0
  195. data/lib/openxml/drawingml/properties/line_end_properties.rb +12 -0
  196. data/lib/openxml/drawingml/properties/line_join_bevel.rb +11 -0
  197. data/lib/openxml/drawingml/properties/line_join_miter.rb +31 -0
  198. data/lib/openxml/drawingml/properties/line_join_round.rb +11 -0
  199. data/lib/openxml/drawingml/properties/line_property.rb +43 -0
  200. data/lib/openxml/drawingml/properties/line_spacing.rb +16 -0
  201. data/lib/openxml/drawingml/properties/line_style_list.rb +14 -0
  202. data/lib/openxml/drawingml/properties/list_style.rb +24 -0
  203. data/lib/openxml/drawingml/properties/major_font.rb +13 -0
  204. data/lib/openxml/drawingml/properties/minor_font.rb +13 -0
  205. data/lib/openxml/drawingml/properties/object_defaults.rb +17 -0
  206. data/lib/openxml/drawingml/properties/offset.rb +29 -0
  207. data/lib/openxml/drawingml/properties/outline.rb +13 -0
  208. data/lib/openxml/drawingml/properties/outline_reference.rb +13 -0
  209. data/lib/openxml/drawingml/properties/paragraph_properties.rb +78 -0
  210. data/lib/openxml/drawingml/properties/path.rb +49 -0
  211. data/lib/openxml/drawingml/properties/path_list.rb +14 -0
  212. data/lib/openxml/drawingml/properties/percentage_property.rb +17 -0
  213. data/lib/openxml/drawingml/properties/picture_locks.rb +25 -0
  214. data/lib/openxml/drawingml/properties/positive_integer_property.rb +12 -0
  215. data/lib/openxml/drawingml/properties/positive_percentage_property.rb +17 -0
  216. data/lib/openxml/drawingml/properties/preset_dash_style.rb +16 -0
  217. data/lib/openxml/drawingml/properties/preset_geometry.rb +59 -0
  218. data/lib/openxml/drawingml/properties/preset_text_warp.rb +25 -0
  219. data/lib/openxml/drawingml/properties/quick_time_file.rb +17 -0
  220. data/lib/openxml/drawingml/properties/relative_rectangle_property.rb +13 -0
  221. data/lib/openxml/drawingml/properties/right_to_left.rb +11 -0
  222. data/lib/openxml/drawingml/properties/run_properties.rb +93 -0
  223. data/lib/openxml/drawingml/properties/scene_3d.rb +17 -0
  224. data/lib/openxml/drawingml/properties/shape_adjustment_list.rb +14 -0
  225. data/lib/openxml/drawingml/properties/shape_default.rb +13 -0
  226. data/lib/openxml/drawingml/properties/shape_locks.rb +25 -0
  227. data/lib/openxml/drawingml/properties/shape_properties.rb +46 -0
  228. data/lib/openxml/drawingml/properties/shape_style.rb +16 -0
  229. data/lib/openxml/drawingml/properties/simple_boolean_property.rb +16 -0
  230. data/lib/openxml/drawingml/properties/simple_property_container_property.rb +14 -0
  231. data/lib/openxml/drawingml/properties/source_rectangle.rb +13 -0
  232. data/lib/openxml/drawingml/properties/space_after.rb +22 -0
  233. data/lib/openxml/drawingml/properties/space_before.rb +22 -0
  234. data/lib/openxml/drawingml/properties/spacing_percent.rb +11 -0
  235. data/lib/openxml/drawingml/properties/spacing_points.rb +20 -0
  236. data/lib/openxml/drawingml/properties/stretch.rb +13 -0
  237. data/lib/openxml/drawingml/properties/style_matrix_reference_property.rb +20 -0
  238. data/lib/openxml/drawingml/properties/supplemental_font.rb +14 -0
  239. data/lib/openxml/drawingml/properties/symbol_font.rb +13 -0
  240. data/lib/openxml/drawingml/properties/tab_list.rb +14 -0
  241. data/lib/openxml/drawingml/properties/tab_stop.rb +29 -0
  242. data/lib/openxml/drawingml/properties/tail_end.rb +13 -0
  243. data/lib/openxml/drawingml/properties/text_body.rb +15 -0
  244. data/lib/openxml/drawingml/properties/text_default.rb +13 -0
  245. data/lib/openxml/drawingml/properties/theme_elements.rb +16 -0
  246. data/lib/openxml/drawingml/properties/tile.rb +35 -0
  247. data/lib/openxml/drawingml/properties/tile_rectangle.rb +13 -0
  248. data/lib/openxml/drawingml/properties/transform.rb +19 -0
  249. data/lib/openxml/drawingml/properties/underline.rb +13 -0
  250. data/lib/openxml/drawingml/properties/underline_fill.rb +20 -0
  251. data/lib/openxml/drawingml/properties/underline_fill_text.rb +11 -0
  252. data/lib/openxml/drawingml/properties/underline_text.rb +11 -0
  253. data/lib/openxml/drawingml/properties/value_property.rb +12 -0
  254. data/lib/openxml/drawingml/properties/video_file.rb +13 -0
  255. data/lib/openxml/drawingml/properties/wav_audio_file.rb +13 -0
  256. data/lib/openxml/drawingml/version.rb +1 -1
  257. data/openxml-drawingml.gemspec +3 -3
  258. metadata +222 -5
  259. data/lib/openxml/drawingml/element.rb +0 -9
@@ -0,0 +1,17 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class Scene3d < SimplePropertyContainerProperty
5
+ include HasChildren
6
+ name "scene_3d"
7
+ namespace :a
8
+ tag :scene3d
9
+
10
+ # TODO: Implement various 3d scene components: `camera`, `lightRig`, `backdrop`
11
+
12
+ property :extension_list
13
+
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,14 @@
1
+ require "openxml/drawingml/properties/geometry_guide"
2
+
3
+ module OpenXml
4
+ module DrawingML
5
+ module Properties
6
+ class ShapeAdjustmentList < OpenXml::Properties::ContainerProperty
7
+ namespace :a
8
+ tag :avLst
9
+ child_class :geometry_guide
10
+
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ require "openxml/drawingml/properties/default_shape_properties"
2
+
3
+ module OpenXml
4
+ module DrawingML
5
+ module Properties
6
+ class ShapeDefault < DefaultShapeProperties
7
+ namespace :a
8
+ tag :spDef
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,25 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class ShapeLocks < OpenXml::Properties::ComplexProperty
5
+ include OpenXml::ContainsProperties
6
+ namespace :a
7
+ tag :spLocks
8
+
9
+ attribute :disable_text_editing, displays_as: :noTextEdit, expects: :boolean
10
+ attribute :disable_grouping, displays_as: :noGrp, expects: :boolean
11
+ attribute :disable_selection, displays_as: :noSelect, expects: :boolean
12
+ attribute :disable_rotation, displays_as: :noRot, expects: :boolean
13
+ attribute :disable_aspect_ratio_change, displays_as: :noChangeAspect, expects: :boolean
14
+ attribute :disable_moving, displays_as: :noMove, expects: :boolean
15
+ attribute :disable_resizing, displays_as: :noResize, expects: :boolean
16
+ attribute :disable_edit_points, displays_as: :noEditPoints, expects: :boolean
17
+ attribute :disable_adjustment_handles, displays_as: :noAdjustHandles, expects: :boolean
18
+ attribute :disable_change_arrowheads, displays_as: :noChangeArrowheads, expects: :boolean
19
+
20
+ property :extension_list
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,46 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class ShapeProperties < OpenXml::Properties::ComplexProperty
5
+ include OpenXml::ContainsProperties
6
+ namespace :a
7
+ tag :spPr
8
+
9
+ BLACK_AND_WHITE_MODES = %i{
10
+ auto black blackGray blackWhite clr gray grayWhite hidden invGray ltGray white
11
+ }.freeze
12
+
13
+ attribute :bw_mode, displays_as: :bwMode, one_of: BLACK_AND_WHITE_MODES
14
+
15
+ property :transform
16
+
17
+ property_choice do
18
+ property :custom_geometry
19
+ property :preset_geometry
20
+ end
21
+
22
+ property_choice do
23
+ value_property :no_fill, as: :fill_none
24
+ property :solid_fill, as: :fill_solid
25
+ property :gradient_fill, as: :fill_gradient
26
+ property :pattern_fill, as: :fill_pattern
27
+ property :blip_fill, as: :fill_blip
28
+ value_property :inherit_group_fill, as: :fill_group
29
+ end
30
+
31
+ property :outline
32
+
33
+ property_choice do
34
+ property :effect_list
35
+ property :effect_dag
36
+ end
37
+
38
+ property :scene_3d
39
+ # property :shape_3d # TODO: sp3d
40
+
41
+ property :extension_list
42
+
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,16 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class ShapeStyle < SimplePropertyContainerProperty
5
+ namespace :a
6
+ tag :style
7
+
8
+ property :outline_reference, required: true
9
+ property :fill_reference, required: true
10
+ property :effect_reference, required: true
11
+ property :font_reference, required: true
12
+
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class SimpleBooleanProperty < OpenXml::Properties::BooleanProperty
5
+
6
+ def to_xml(xml)
7
+ return unless value
8
+ apply_namespace(xml).public_send(tag) do
9
+ yield xml if block_given?
10
+ end
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,14 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class SimplePropertyContainerProperty < SimpleBooleanProperty
5
+ include OpenXml::ContainsProperties
6
+
7
+ def initialize(*_args)
8
+ super(true)
9
+ end
10
+
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ require "openxml/drawingml/properties/relative_rectangle_property"
2
+
3
+ module OpenXml
4
+ module DrawingML
5
+ module Properties
6
+ class SourceRectangle < RelativeRectangleProperty
7
+ namespace :a
8
+ tag :srcRect
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,22 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class SpaceAfter < SimplePropertyContainerProperty
5
+ namespace :a
6
+ tag :spcAft
7
+
8
+ property_choice do
9
+ value_property :spacing_percent
10
+ value_property :spacing_points
11
+ end
12
+
13
+ def initialize(value)
14
+ super()
15
+ target_property = value =~ /%/ ? :spacing_percent= : :spacing_points=
16
+ public_send(target_property, value)
17
+ end
18
+
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class SpaceBefore < SimplePropertyContainerProperty
5
+ namespace :a
6
+ tag :spcBef
7
+
8
+ property_choice do
9
+ value_property :spacing_percent
10
+ value_property :spacing_points
11
+ end
12
+
13
+ def initialize(value)
14
+ super()
15
+ target_property = value =~ /%/ ? :spacing_percent= : :spacing_points=
16
+ public_send(target_property, value)
17
+ end
18
+
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class SpacingPercent < PercentageProperty
5
+ namespace :a
6
+ tag :spcPct
7
+
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,20 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class SpacingPoints < IntegerProperty
5
+ namespace :a
6
+ tag :spcPts
7
+
8
+ def valid?
9
+ # Value range taken from OpenXml Spec Part 1, section 20.1.10.77
10
+ super && (0..158_400).cover?(value)
11
+ end
12
+
13
+ def invalid_message
14
+ "Invalid spacing_points: must be a point value between 0 and 158,400"
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,13 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class Stretch < SimplePropertyContainerProperty
5
+ namespace :a
6
+ tag :stretch
7
+
8
+ property :fill_rectangle
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,20 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class StyleMatrixReferenceProperty < OpenXml::Properties::ComplexProperty
5
+ include OpenXml::ContainsProperties
6
+ attribute :index, displays_as: :idx, expects: :positive_integer, required: true
7
+
8
+ property_choice required: true do
9
+ property :component_rgb, as: :color_component_rgb
10
+ value_property :rgb, as: :color_hex_rgb
11
+ property :hsl, as: :color_hsl
12
+ value_property :system_color, as: :color_system_color
13
+ value_property :scheme_color, as: :color_scheme_color
14
+ value_property :preset_color, as: :color_preset_color
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,14 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class SupplementalFont < OpenXml::Properties::ComplexProperty
5
+ namespace :a
6
+ tag :font
7
+
8
+ attribute :script, expects: :string
9
+ attribute :typeface, expects: :string
10
+
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ require "openxml/drawingml/properties/font_property"
2
+
3
+ module OpenXml
4
+ module DrawingML
5
+ module Properties
6
+ class SymbolFont < FontProperty
7
+ namespace :a
8
+ tag :sym
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ require "openxml/drawingml/properties/tab_stop"
2
+
3
+ module OpenXml
4
+ module DrawingML
5
+ module Properties
6
+ class TabList < OpenXml::Properties::ContainerProperty
7
+ namespace :a
8
+ tag :tabLst
9
+ child_class :tab_stop
10
+
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,29 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class TabStop < OpenXml::Properties::ComplexProperty
5
+ namespace :a
6
+ tag :tab
7
+
8
+ attribute :alignment, displays_as: :algn, one_of: %i{ ctr dec l r }
9
+ attribute :position, displays_as: :pos, expects: :coordinate
10
+
11
+ private
12
+
13
+ def coordinate(value)
14
+ message = "Invalid coordinate: Must be an integer or include a unit measure"
15
+ raise ArgumentError, message unless integer?(value) || universal_measure?(value)
16
+ end
17
+
18
+ def universal_measure?(value)
19
+ value.is_a?(String) && value =~ OpenXml::DrawingML::ST_UniversalMeasure
20
+ end
21
+
22
+ def integer?(value)
23
+ value.is_a?(Integer)
24
+ end
25
+
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,13 @@
1
+ require "openxml/drawingml/properties/line_end_properties"
2
+
3
+ module OpenXml
4
+ module DrawingML
5
+ module Properties
6
+ class TailEnd < LineEndProperties
7
+ namespace :a
8
+ tag :tailEnd
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class TextBody < SimplePropertyContainerProperty
5
+ include OpenXml::HasChildren
6
+ namespace :a
7
+ tag :txBody
8
+
9
+ property :body_properties, required: true
10
+ property :list_style
11
+
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ require "openxml/drawingml/properties/default_shape_properties"
2
+
3
+ module OpenXml
4
+ module DrawingML
5
+ module Properties
6
+ class TextDefault < DefaultShapeProperties
7
+ namespace :a
8
+ tag :txDef
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class ThemeElements < SimplePropertyContainerProperty
5
+ namespace :a
6
+ tag :themeElements
7
+
8
+ property :color_scheme, required: true
9
+ property :font_scheme, required: true
10
+ property :format_scheme, required: true
11
+ property :extension_list
12
+
13
+ end
14
+ end
15
+ end
16
+ end