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,13 @@
1
+ require "openxml/drawingml/properties/line_property"
2
+
3
+ module OpenXml
4
+ module DrawingML
5
+ module Properties
6
+ class Outline < LineProperty
7
+ namespace :a
8
+ tag :ln
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require "openxml/drawingml/properties/style_matrix_reference_property"
2
+
3
+ module OpenXml
4
+ module DrawingML
5
+ module Properties
6
+ class OutlineReference < StyleMatrixReferenceProperty
7
+ namespace :a
8
+ tag :lnRef
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,78 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class ParagraphProperties < OpenXml::Properties::ComplexProperty
5
+ include OpenXml::ContainsProperties
6
+ namespace :a
7
+ tag :pPr
8
+
9
+ attribute :alignment, displays_as: :algn, one_of: %i{ ctr dist just justLow l r thaiDist }
10
+ attribute :default_tab_size, displays_as: :defTabSz, expects: :coordinate
11
+ attribute :east_asian_line_break, displays_as: :eaLnBrk, expects: :boolean
12
+ attribute :vertical_alignment, displays_as: :fontAlgn, one_of: %i{ auto b base ctr t }
13
+ attribute :hanging_punctuation, displays_as: :hangingPunct, expects: :boolean
14
+ attribute :indent, expects: :indent_range
15
+ attribute :latin_line_break, displays_as: :latinLnBrk, expects: :boolean
16
+ attribute :level, displays_as: :lvl, in_range: 0..8
17
+ attribute :left_margin, displays_as: :marL, expects: :text_margin
18
+ attribute :right_margin, displays_as: :marR, expects: :text_margin
19
+ attribute :right_to_left, displays_as: :rtl, expects: :boolean
20
+
21
+ property :line_spacing
22
+ property :space_before
23
+ property :space_after
24
+
25
+ property_choice do
26
+ property :bullet_color
27
+ value_property :bullet_color_matches_text, as: :bullet_color_text
28
+ end
29
+
30
+ property_choice do
31
+ value_property :bullet_size_matches_text, as: :bullet_size_text
32
+ value_property :bullet_size_percent
33
+ value_property :bullet_size_points
34
+ end
35
+
36
+ property_choice do
37
+ value_property :bullet_font_matches_text, as: :bullet_font_text
38
+ value_property :bullet_font
39
+ end
40
+
41
+ property_choice do
42
+ value_property :disable_bullets, as: :bullet_style_none
43
+ property :autonumbered_bullets, as: :bullet_style_auto_numbered
44
+ property :character_bullets, as: :bullet_style_character
45
+ property :blip_bullets, as: :bullet_style_blip
46
+ end
47
+
48
+ property :tab_list
49
+ property :default_run_properties
50
+ property :extension_list
51
+
52
+ private
53
+
54
+ def coordinate(value)
55
+ message = "Invalid coordinate: Must either be an integer or include units"
56
+ is_integer = value.is_a?(Integer)
57
+ is_measure = value.is_a?(String) && value =~ OpenXml::DrawingML::ST_UniversalMeasure
58
+ raise ArgumentError, message unless is_integer || is_measure
59
+ end
60
+
61
+ def indent_range(value)
62
+ message = "Invalid indentation range: Must be an integer between -51,206,400 and 51,206,400 or include units"
63
+ is_integer_in_range = value.is_a?(Integer) && (-51_206_400..51_206_400).cover?(value)
64
+ is_measure = value.is_a?(String) && value =~ OpenXml::DrawingML::ST_UniversalMeasure
65
+ raise ArgumentError, message unless is_integer_in_range || is_measure
66
+ end
67
+
68
+ def text_margin(value)
69
+ message = "Invalid text margin: Must be an integer between 0 and 51,206,400 or include units"
70
+ is_integer_in_range = value.is_a?(Integer) && (0..51_206_400).cover?(value)
71
+ is_measure = value.is_a?(String) && value =~ OpenXml::DrawingML::ST_PositiveUniversalMeasure
72
+ raise ArgumentError, message unless is_integer_in_range || is_measure
73
+ end
74
+
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,49 @@
1
+ # require "openxml/drawingml/properties/path_close"
2
+ # require "openxml/drawingml/properties/path_move_to"
3
+ # require "openxml/drawingml/properties/path_line_to"
4
+ # require "openxml/drawingml/properties/path_arc_to"
5
+ # require "openxml/drawingml/properties/path_quadratic_bezier_to"
6
+ # require "openxml/drawingml/properties/path_cubic_bezier_to"
7
+
8
+ module OpenXml
9
+ module DrawingML
10
+ module Properties
11
+ class Path < OpenXml::Properties::ContainerProperty
12
+ include OpenXml::HasAttributes
13
+ namespace :a
14
+ tag :path
15
+ # TODO: Implement child classes
16
+ # child_classes :path_close, :path_move_to, :path_line_to, :path_arc_to,
17
+ # :path_quadradic_bezier_to, :cubic_bezier_to
18
+
19
+ FILL_MODES = %i{ none norm lighten lightenLess darken darkenLess }.freeze
20
+
21
+ attribute :width, displays_as: :w, expects: :positive_coordinate
22
+ attribute :height, displays_as: :h, expects: :positive_coordinate
23
+ attribute :fill_mode, displays_as: :fill, one_of: FILL_MODES
24
+ attribute :stroked, displays_as: :stroke, expects: :boolean
25
+ attribute :extrusion_ok, displays_as: :extrusionOk, expects: :boolean
26
+
27
+ def render?
28
+ attributes.keys.map(&method(:send)).any? { |value| !value.nil? } || super
29
+ end
30
+
31
+ private
32
+
33
+ def positive_coordinate(value)
34
+ message = "Invalid coordinate: should either be an integer (in EMUs) or include a unit"
35
+ raise ArgumentError, message unless positive_universal_measure?(value) || positive_integer?(value)
36
+ end
37
+
38
+ def positive_universal_measure?(value)
39
+ value.is_a?(String) && value =~ OpenXml::DrawingML::ST_PositiveUniversalMeasure
40
+ end
41
+
42
+ def positive_integer?(value)
43
+ value.is_a?(Integer) && value >= 0
44
+ end
45
+
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,14 @@
1
+ require "openxml/drawingml/properties/path"
2
+
3
+ module OpenXml
4
+ module DrawingML
5
+ module Properties
6
+ class PathList < OpenXml::Properties::ContainerProperty
7
+ namespace :a
8
+ tag :pathLst
9
+ child_class :path
10
+
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class PercentageProperty < ValueProperty
5
+
6
+ def valid?
7
+ value =~ OpenXml::DrawingML::ST_Percentage
8
+ end
9
+
10
+ def invalid_message
11
+ "#{value.inspect} is an invalid value for #{name}; it must be a percentage"
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class PictureLocks < OpenXml::Properties::ComplexProperty
5
+ include OpenXml::ContainsProperties
6
+ namespace :a
7
+ tag :picLocks
8
+
9
+ attribute :disable_grouping, displays_as: :noGrp, expects: :boolean
10
+ attribute :disable_selection, displays_as: :noSelect, expects: :boolean
11
+ attribute :disable_rotation, displays_as: :noRot, expects: :boolean
12
+ attribute :disable_aspect_ratio_change, displays_as: :noChangeAspect, expects: :boolean
13
+ attribute :disable_moving, displays_as: :noMove, expects: :boolean
14
+ attribute :disable_resizing, displays_as: :noResize, expects: :boolean
15
+ attribute :disable_edit_points, displays_as: :noEditPoints, expects: :boolean
16
+ attribute :disable_adjustment_handles, displays_as: :noAdjustHandles, expects: :boolean
17
+ attribute :disable_change_arrowheads, displays_as: :noChangeArrowheads, expects: :boolean
18
+ attribute :disable_cropping, displays_as: :noCrop, expects: :boolean
19
+
20
+ property :extension_list
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,12 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class PositiveIntegerProperty < OpenXml::Properties::PositiveIntegerProperty
5
+ private def value_attribute
6
+ "val"
7
+ end
8
+
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class PositivePercentageProperty < ValueProperty
5
+
6
+ def valid?
7
+ value =~ OpenXml::DrawingML::ST_PositivePercentage
8
+ end
9
+
10
+ def invalid_message
11
+ "#{value.inspect} is an invalid value for #{name}; it must be a positive percentage"
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,16 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class PresetDashStyle < ValueProperty
5
+ namespace :a
6
+ tag :prstDash
7
+
8
+ def ok_values
9
+ %i{ dash dashDot dot lgDash lgDashDot lgDashDotDot solid sysDash
10
+ sysDashDot sysDashDotDot sysDot }
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,59 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class PresetGeometry < OpenXml::Properties::ComplexProperty
5
+ include OpenXml::ContainsProperties
6
+ namespace :a
7
+ tag :prstGeom
8
+
9
+ PRESET_GEOMETRIES = %i{
10
+ accentBorderCallout1 accentBorderCallout2 accentBorderCallout3
11
+ accentCallout1 accentCallout2 accentCallout3 actionButtonBackPrevious
12
+ actionButtonBeginning actionButtonBlank actionButtonDocument
13
+ actionButtonEnd actionButtonForwardNext actionButtonHelp
14
+ actionButtonHome actionButtonInformation actionButtonMovie
15
+ actionButtonReturn actionButtonSound arc bentArrow bentConnector2
16
+ bentConnector3 bentConnector4 bentConnector5 bentUpArrow bevel
17
+ blockArc borderCallout1 borderCallout2 borderCallout3 bracePair
18
+ bracketPair callout1 callout2 callout3 can chartPlus chartStar chartX
19
+ chevron chord circularArrow cloud cloudCallout corner cornerTabs cube
20
+ curvedConnector2 curvedConnector3 curvedConnector4 curvedConnector5
21
+ curvedDownArrow curvedLeftArrow curvedRightArrow curvedUpArrow
22
+ decagon diagStripe diamond dodecagon donut doubleWave downArrow
23
+ downArrowCallout ellipse ellipseRibbon ellipseRibbon2
24
+ flowChartAlternateProcess flowChartCollate flowChartConnector
25
+ flowChartDecision flowChartDelay flowChartDisplay flowChartDocument
26
+ flowChartExtract flowChartInputOutput flowChartInternalStorage
27
+ flowChartMagneticDisk flowChartMagneticDrum flowChartMagneticTape
28
+ flowChartManualInput flowChartManualOperation flowChartMerge
29
+ flowChartMultidocument flowChartOfflineStorage flowChartOffpageConnector
30
+ flowChartOnlineStorage flowChartOr flowChartPredefinedProcess
31
+ flowChartPreparation flowChartProcess flowChartPunchedCard
32
+ flowChartPunchedTape flowChartSort flowChartSummingJunction
33
+ flowChartTerminator foldedCorner frame funnel gear6 gear9 halfFrame
34
+ heart heptagon hexagon homePlate horizontalScroll irregularSeal1
35
+ irregularSeal2 leftArrow leftArrowCallout leftBrace leftBracket
36
+ leftCircularArrow leftRightArrow leftRightArrowCallout
37
+ leftRightCircularArrow leftRightRibbon leftRightUpArrow leftUpArrow
38
+ lightningBolt line lineInv mathDivide mathEqual mathMinu mathMultiply
39
+ mathNotEqual mathPlus moon nonIsoscelesTrapezoid noSmoking
40
+ notchedRightArrow octagon parallelogram pentagon pie pieWedge plaque
41
+ plaqueTabs plus quadArrow quadArrowCallout rect ribbon ribbon2
42
+ rightArrow rightArrowCallout rightBrace rightBracket round1Rect
43
+ round2DiagRect round2SameRect roundRect rtTriangle smileyFace
44
+ snip1Rect snip2DiagRect snip2SameRect snipRoundRect squareTabs star10
45
+ star12 star16 star24 star32 star4 star5 star6 star7 star8
46
+ straightConnector1 stripedRightArrow sun swooshArrow teardrop
47
+ trapezoid triangle upArrow upArrowCallout upDownArrow upDownArrowCallout
48
+ uturnArrow verticalScroll wave wedgeEllipseCallout wedgeRectCallout
49
+ wedgeRoundRectCallout
50
+ }.freeze
51
+
52
+ attribute :shape, displays_as: :prst, one_of: PRESET_GEOMETRIES
53
+
54
+ property :shape_adjustment_list
55
+
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,25 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class PresetTextWarp < OpenXml::Properties::ComplexProperty
5
+ namespace :a
6
+ tag :prstTxWarp
7
+
8
+ PRESET_WARPS = %i{
9
+ textArchDown textArchDownPour textArchUp textArchUpPour textButton
10
+ textButtonPour textCanDown textCanUp textCascadeDown textCascadeUp
11
+ textChevron textChevronInverted textCircle textCirclePour
12
+ textCurveDown textCurveUp textDeflate textDeflateBottom
13
+ textDeflateInflate textDeflateInflateDeflate textDeflateTop
14
+ textDoubleWave1 textFadeDown textFadeLeft textFadeRight textFadeUp
15
+ textInflate textInflateBottom textInflateTop textNoShape textPlain
16
+ textRingInside textRingOutside textSlantDown textSlantUp textStop
17
+ textTriangle textTriangleInverted textWave1 textWave2 textWave4
18
+ }.freeze
19
+
20
+ attribute :preset, displays_as: :prst, one_of: PRESET_WARPS
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,17 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class QuickTimeFile < OpenXml::Properties::ComplexProperty
5
+ include OpenXml::ContainsProperties
6
+ namespace :a
7
+ tag :quickTimeFile
8
+
9
+ attribute :link, namespace: :r, expects: :string, required: true
10
+
11
+ property :extension_list
12
+
13
+ end
14
+ end
15
+ end
16
+ end
17
+
@@ -0,0 +1,13 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class RelativeRectangleProperty < OpenXml::Properties::ComplexProperty
5
+ attribute :bottom_offset, displays_as: :b, expects: :percentage
6
+ attribute :left_offset, displays_as: :l, expects: :percentage
7
+ attribute :right_offset, displays_as: :r, expects: :percentage
8
+ attribute :top_offset, displays_as: :t, expects: :percentage
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class RightToLeft < SimpleBooleanProperty
5
+ namespace :a
6
+ tag :rtl
7
+
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,93 @@
1
+ module OpenXml
2
+ module DrawingML
3
+ module Properties
4
+ class RunProperties < OpenXml::Properties::ComplexProperty
5
+ include OpenXml::ContainsProperties
6
+ namespace :a
7
+ tag :rPr
8
+
9
+ UNDERLINE_STYLES = %i{
10
+ dash dashHeavy dashLong dashLongHeavy dbl dotDash dotDashHeavy
11
+ dotDotDash dotDotDashHeavy dotted dottedHeavy heavy none sng wavy
12
+ wavyDbl wavyHeavy words
13
+ }.freeze
14
+
15
+ attribute :alternative_language, displays_as: :altLang, expects: :string
16
+ attribute :bold, displays_as: :b, expects: :boolean
17
+ attribute :baseline, expects: :percentage
18
+ attribute :bookmark_target, displays_as: :bmk, expects: :string
19
+ attribute :capitalization, displays_as: :cap, one_of: %i{ all none small }
20
+ attribute :dirty, expects: :boolean
21
+ attribute :spelling_error, displays_as: :err, expects: :boolean
22
+ attribute :italic, displays_as: :i, expects: :boolean
23
+ attribute :kerning, displays_as: :kern, expects: :integer, in_range: (0..400_000)
24
+ attribute :kumimoji, expects: :boolean
25
+ attribute :language, displays_as: :lang, expects: :string
26
+ attribute :no_proofing, displays_as: :noProof, expects: :boolean
27
+ attribute :normalize_heights, displays_as: :normalizeH, expects: :boolean
28
+ attribute :smart_tag_clean, displays_as: :smtClean, expects: :boolean
29
+ attribute :smart_tag_id, displays_as: :smtId, expects: :positive_integer
30
+ attribute :spacing, displays_as: :spc, expects: :point
31
+ attribute :strikethrough, displays_as: :strike, one_of: %i{ dblStrike noStrike sngStrike }
32
+ attribute :font_size, displays_as: :sz, expects: :integer, in_range: (100..400_000)
33
+ attribute :underline_style, displays_as: :u, one_of: UNDERLINE_STYLES
34
+
35
+ property :outline
36
+
37
+ property_choice do
38
+ value_property :no_fill, as: :fill_none
39
+ property :solid_fill, as: :fill_solid
40
+ property :gradient_fill, as: :fill_gradient
41
+ property :pattern_fill, as: :fill_pattern
42
+ property :blip_fill, as: :fill_blip
43
+ value_property :inherit_group_fill, as: :fill_group
44
+ end
45
+
46
+ property_choice do
47
+ property :effect_list
48
+ property :effect_dag
49
+ end
50
+
51
+ property :highlight
52
+
53
+ property_choice do
54
+ value_property :underline_inherits, as: :underline_text
55
+ property :underline
56
+ end
57
+
58
+ property_choice do
59
+ value_property :underline_fill_inherits, as: :underline_fill_text
60
+ property :underline_fill
61
+ end
62
+
63
+ value_property :latin_font
64
+ value_property :east_asian_font
65
+ value_property :complex_script_font
66
+ value_property :symbol_font
67
+
68
+ property :hyperlink_click
69
+ property :hyperlink_mouse_over
70
+
71
+ value_property :right_to_left
72
+
73
+ property :extension_list
74
+
75
+ private
76
+
77
+ def point(value)
78
+ message = "Invalid point: Must either be an integer between -400,000 and 400,000 or include units"
79
+ raise ArgumentError, message unless valid_point?(value) || valid_measure?(value)
80
+ end
81
+
82
+ def valid_point?(value)
83
+ value.is_a?(Integer) && (-400_000..400_000).cover?(value)
84
+ end
85
+
86
+ def valid_measure?(value)
87
+ value.is_a?(String) && value =~ OpenXml::DrawingML::ST_UniversalMeasure
88
+ end
89
+
90
+ end
91
+ end
92
+ end
93
+ end