caxlsx 3.2.0 → 3.4.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 (301) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +394 -354
  5. data/LICENSE +21 -21
  6. data/README.md +184 -168
  7. data/Rakefile +28 -29
  8. data/examples/generate.rb +15 -15
  9. data/lib/axlsx/content_type/abstract_content_type.rb +29 -32
  10. data/lib/axlsx/content_type/content_type.rb +22 -26
  11. data/lib/axlsx/content_type/default.rb +21 -25
  12. data/lib/axlsx/content_type/override.rb +21 -25
  13. data/lib/axlsx/doc_props/app.rb +230 -235
  14. data/lib/axlsx/doc_props/core.rb +34 -39
  15. data/lib/axlsx/drawing/area_chart.rb +96 -99
  16. data/lib/axlsx/drawing/area_series.rb +107 -110
  17. data/lib/axlsx/drawing/ax_data_source.rb +21 -26
  18. data/lib/axlsx/drawing/axes.rb +60 -61
  19. data/lib/axlsx/drawing/axis.rb +185 -190
  20. data/lib/axlsx/drawing/bar_3D_chart.rb +145 -148
  21. data/lib/axlsx/drawing/bar_chart.rb +135 -138
  22. data/lib/axlsx/drawing/bar_series.rb +91 -97
  23. data/lib/axlsx/drawing/bubble_chart.rb +56 -59
  24. data/lib/axlsx/drawing/bubble_series.rb +60 -63
  25. data/lib/axlsx/drawing/cat_axis.rb +80 -85
  26. data/lib/axlsx/drawing/chart.rb +294 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +92 -90
  28. data/lib/axlsx/drawing/drawing.rb +163 -167
  29. data/lib/axlsx/drawing/graphic_frame.rb +51 -54
  30. data/lib/axlsx/drawing/hyperlink.rb +97 -100
  31. data/lib/axlsx/drawing/line_3D_chart.rb +64 -68
  32. data/lib/axlsx/drawing/line_chart.rb +96 -99
  33. data/lib/axlsx/drawing/line_series.rb +107 -110
  34. data/lib/axlsx/drawing/marker.rb +80 -84
  35. data/lib/axlsx/drawing/num_data.rb +47 -52
  36. data/lib/axlsx/drawing/num_data_source.rb +58 -62
  37. data/lib/axlsx/drawing/num_val.rb +31 -34
  38. data/lib/axlsx/drawing/one_cell_anchor.rb +97 -99
  39. data/lib/axlsx/drawing/pic.rb +244 -211
  40. data/lib/axlsx/drawing/picture_locking.rb +39 -42
  41. data/lib/axlsx/drawing/pie_3D_chart.rb +42 -47
  42. data/lib/axlsx/drawing/pie_series.rb +69 -74
  43. data/lib/axlsx/drawing/scaling.rb +57 -60
  44. data/lib/axlsx/drawing/scatter_chart.rb +71 -74
  45. data/lib/axlsx/drawing/scatter_series.rb +126 -129
  46. data/lib/axlsx/drawing/ser_axis.rb +41 -45
  47. data/lib/axlsx/drawing/series.rb +67 -69
  48. data/lib/axlsx/drawing/series_title.rb +23 -25
  49. data/lib/axlsx/drawing/str_data.rb +37 -42
  50. data/lib/axlsx/drawing/str_val.rb +31 -34
  51. data/lib/axlsx/drawing/title.rb +104 -97
  52. data/lib/axlsx/drawing/two_cell_anchor.rb +95 -97
  53. data/lib/axlsx/drawing/val_axis.rb +34 -37
  54. data/lib/axlsx/drawing/view_3D.rb +115 -115
  55. data/lib/axlsx/drawing/vml_drawing.rb +39 -42
  56. data/lib/axlsx/drawing/vml_shape.rb +63 -66
  57. data/lib/axlsx/package.rb +397 -388
  58. data/lib/axlsx/rels/relationship.rb +127 -130
  59. data/lib/axlsx/rels/relationships.rb +29 -32
  60. data/lib/axlsx/stylesheet/border.rb +70 -73
  61. data/lib/axlsx/stylesheet/border_pr.rb +69 -71
  62. data/lib/axlsx/stylesheet/cell_alignment.rb +124 -132
  63. data/lib/axlsx/stylesheet/cell_protection.rb +38 -41
  64. data/lib/axlsx/stylesheet/cell_style.rb +68 -72
  65. data/lib/axlsx/stylesheet/color.rb +77 -76
  66. data/lib/axlsx/stylesheet/dxf.rb +75 -79
  67. data/lib/axlsx/stylesheet/fill.rb +31 -35
  68. data/lib/axlsx/stylesheet/font.rb +157 -156
  69. data/lib/axlsx/stylesheet/gradient_fill.rb +101 -103
  70. data/lib/axlsx/stylesheet/gradient_stop.rb +36 -37
  71. data/lib/axlsx/stylesheet/num_fmt.rb +83 -86
  72. data/lib/axlsx/stylesheet/pattern_fill.rb +71 -73
  73. data/lib/axlsx/stylesheet/styles.rb +543 -494
  74. data/lib/axlsx/stylesheet/table_style.rb +51 -54
  75. data/lib/axlsx/stylesheet/table_style_element.rb +74 -77
  76. data/lib/axlsx/stylesheet/table_styles.rb +42 -46
  77. data/lib/axlsx/stylesheet/xf.rb +144 -147
  78. data/lib/axlsx/util/accessors.rb +62 -64
  79. data/lib/axlsx/util/constants.rb +414 -410
  80. data/lib/axlsx/util/mime_type_utils.rb +24 -11
  81. data/lib/axlsx/util/options_parser.rb +15 -16
  82. data/lib/axlsx/util/serialized_attributes.rb +88 -89
  83. data/lib/axlsx/util/simple_typed_list.rb +180 -179
  84. data/lib/axlsx/util/storage.rb +142 -146
  85. data/lib/axlsx/util/validators.rb +315 -312
  86. data/lib/axlsx/util/zip_command.rb +71 -73
  87. data/lib/axlsx/version.rb +4 -5
  88. data/lib/axlsx/workbook/defined_name.rb +129 -128
  89. data/lib/axlsx/workbook/defined_names.rb +20 -21
  90. data/lib/axlsx/workbook/shared_strings_table.rb +74 -77
  91. data/lib/axlsx/workbook/workbook.rb +430 -395
  92. data/lib/axlsx/workbook/workbook_view.rb +75 -80
  93. data/lib/axlsx/workbook/workbook_views.rb +20 -22
  94. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +78 -77
  95. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
  96. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +243 -244
  97. data/lib/axlsx/workbook/worksheet/border_creator.rb +79 -0
  98. data/lib/axlsx/workbook/worksheet/break.rb +32 -35
  99. data/lib/axlsx/workbook/worksheet/cell.rb +552 -506
  100. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  101. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  102. data/lib/axlsx/workbook/worksheet/cfvos.rb +16 -18
  103. data/lib/axlsx/workbook/worksheet/col.rb +142 -145
  104. data/lib/axlsx/workbook/worksheet/col_breaks.rb +34 -35
  105. data/lib/axlsx/workbook/worksheet/color_scale.rb +108 -110
  106. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  107. data/lib/axlsx/workbook/worksheet/comment.rb +90 -91
  108. data/lib/axlsx/workbook/worksheet/comments.rb +78 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +81 -82
  110. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +216 -220
  111. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +23 -25
  112. data/lib/axlsx/workbook/worksheet/data_bar.rb +127 -129
  113. data/lib/axlsx/workbook/worksheet/data_validation.rb +266 -246
  114. data/lib/axlsx/workbook/worksheet/data_validations.rb +25 -28
  115. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +28 -30
  116. data/lib/axlsx/workbook/worksheet/dimension.rb +65 -64
  117. data/lib/axlsx/workbook/worksheet/header_footer.rb +51 -52
  118. data/lib/axlsx/workbook/worksheet/icon_set.rb +80 -81
  119. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  120. data/lib/axlsx/workbook/worksheet/outline_pr.rb +32 -33
  121. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  122. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +42 -44
  123. data/lib/axlsx/workbook/worksheet/page_setup.rb +237 -240
  124. data/lib/axlsx/workbook/worksheet/pane.rb +138 -139
  125. data/lib/axlsx/workbook/worksheet/pivot_table.rb +332 -296
  126. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +63 -66
  127. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +23 -24
  128. data/lib/axlsx/workbook/worksheet/print_options.rb +38 -39
  129. data/lib/axlsx/workbook/worksheet/protected_range.rb +46 -47
  130. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  131. data/lib/axlsx/workbook/worksheet/rich_text.rb +53 -55
  132. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +266 -250
  133. data/lib/axlsx/workbook/worksheet/row.rb +173 -164
  134. data/lib/axlsx/workbook/worksheet/row_breaks.rb +32 -33
  135. data/lib/axlsx/workbook/worksheet/selection.rb +99 -101
  136. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +28 -29
  137. data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -27
  138. data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +18 -18
  139. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  140. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +117 -118
  141. data/lib/axlsx/workbook/worksheet/sheet_view.rb +206 -213
  142. data/lib/axlsx/workbook/worksheet/table.rb +100 -102
  143. data/lib/axlsx/workbook/worksheet/table_style_info.rb +48 -49
  144. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  145. data/lib/axlsx/workbook/worksheet/worksheet.rb +857 -786
  146. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  147. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +59 -58
  148. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +73 -74
  149. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  150. data/lib/axlsx.rb +218 -185
  151. data/lib/caxlsx.rb +1 -2
  152. data/lib/schema/dc.xsd +118 -118
  153. data/lib/schema/dcmitype.xsd +51 -51
  154. data/lib/schema/dcterms.xsd +331 -331
  155. data/lib/schema/dml-chartDrawing.xsd +146 -146
  156. data/lib/schema/dml-compatibility.xsd +14 -14
  157. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  158. data/lib/schema/dml-main.xsd +3048 -3048
  159. data/lib/schema/dml-picture.xsd +23 -23
  160. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  161. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  162. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  163. data/lib/schema/shared-bibliography.xsd +144 -144
  164. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  165. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  166. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  167. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  168. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  169. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  170. data/lib/schema/shared-relationshipReference.xsd +25 -25
  171. data/lib/schema/vml-main.xsd +569 -569
  172. data/lib/schema/vml-officeDrawing.xsd +509 -509
  173. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  174. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  175. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  176. data/lib/schema/xml.xsd +116 -116
  177. metadata +5 -252
  178. data/test/benchmark.rb +0 -72
  179. data/test/content_type/tc_content_type.rb +0 -76
  180. data/test/content_type/tc_default.rb +0 -16
  181. data/test/content_type/tc_override.rb +0 -14
  182. data/test/doc_props/tc_app.rb +0 -43
  183. data/test/doc_props/tc_core.rb +0 -42
  184. data/test/drawing/tc_area_chart.rb +0 -39
  185. data/test/drawing/tc_area_series.rb +0 -71
  186. data/test/drawing/tc_axes.rb +0 -8
  187. data/test/drawing/tc_axis.rb +0 -112
  188. data/test/drawing/tc_bar_3D_chart.rb +0 -86
  189. data/test/drawing/tc_bar_chart.rb +0 -86
  190. data/test/drawing/tc_bar_series.rb +0 -46
  191. data/test/drawing/tc_bubble_chart.rb +0 -44
  192. data/test/drawing/tc_bubble_series.rb +0 -21
  193. data/test/drawing/tc_cat_axis.rb +0 -31
  194. data/test/drawing/tc_cat_axis_data.rb +0 -27
  195. data/test/drawing/tc_chart.rb +0 -123
  196. data/test/drawing/tc_d_lbls.rb +0 -57
  197. data/test/drawing/tc_data_source.rb +0 -23
  198. data/test/drawing/tc_drawing.rb +0 -80
  199. data/test/drawing/tc_graphic_frame.rb +0 -27
  200. data/test/drawing/tc_hyperlink.rb +0 -64
  201. data/test/drawing/tc_line_3d_chart.rb +0 -47
  202. data/test/drawing/tc_line_chart.rb +0 -39
  203. data/test/drawing/tc_line_series.rb +0 -71
  204. data/test/drawing/tc_marker.rb +0 -44
  205. data/test/drawing/tc_named_axis_data.rb +0 -27
  206. data/test/drawing/tc_num_data.rb +0 -31
  207. data/test/drawing/tc_num_val.rb +0 -29
  208. data/test/drawing/tc_one_cell_anchor.rb +0 -66
  209. data/test/drawing/tc_pic.rb +0 -103
  210. data/test/drawing/tc_picture_locking.rb +0 -72
  211. data/test/drawing/tc_pie_3D_chart.rb +0 -28
  212. data/test/drawing/tc_pie_series.rb +0 -33
  213. data/test/drawing/tc_scaling.rb +0 -36
  214. data/test/drawing/tc_scatter_chart.rb +0 -48
  215. data/test/drawing/tc_scatter_series.rb +0 -74
  216. data/test/drawing/tc_ser_axis.rb +0 -31
  217. data/test/drawing/tc_series.rb +0 -23
  218. data/test/drawing/tc_series_title.rb +0 -54
  219. data/test/drawing/tc_str_data.rb +0 -18
  220. data/test/drawing/tc_str_val.rb +0 -30
  221. data/test/drawing/tc_title.rb +0 -70
  222. data/test/drawing/tc_two_cell_anchor.rb +0 -36
  223. data/test/drawing/tc_val_axis.rb +0 -24
  224. data/test/drawing/tc_view_3D.rb +0 -54
  225. data/test/drawing/tc_vml_drawing.rb +0 -25
  226. data/test/drawing/tc_vml_shape.rb +0 -106
  227. data/test/fixtures/image1.gif +0 -0
  228. data/test/fixtures/image1.jpeg +0 -0
  229. data/test/fixtures/image1.jpg +0 -0
  230. data/test/fixtures/image1.png +0 -0
  231. data/test/fixtures/image1_fake.jpg +0 -0
  232. data/test/profile.rb +0 -24
  233. data/test/rels/tc_relationship.rb +0 -52
  234. data/test/rels/tc_relationships.rb +0 -37
  235. data/test/stylesheet/tc_border.rb +0 -37
  236. data/test/stylesheet/tc_border_pr.rb +0 -32
  237. data/test/stylesheet/tc_cell_alignment.rb +0 -81
  238. data/test/stylesheet/tc_cell_protection.rb +0 -29
  239. data/test/stylesheet/tc_cell_style.rb +0 -57
  240. data/test/stylesheet/tc_color.rb +0 -43
  241. data/test/stylesheet/tc_dxf.rb +0 -81
  242. data/test/stylesheet/tc_fill.rb +0 -18
  243. data/test/stylesheet/tc_font.rb +0 -133
  244. data/test/stylesheet/tc_gradient_fill.rb +0 -72
  245. data/test/stylesheet/tc_gradient_stop.rb +0 -31
  246. data/test/stylesheet/tc_num_fmt.rb +0 -30
  247. data/test/stylesheet/tc_pattern_fill.rb +0 -43
  248. data/test/stylesheet/tc_styles.rb +0 -309
  249. data/test/stylesheet/tc_table_style.rb +0 -44
  250. data/test/stylesheet/tc_table_style_element.rb +0 -45
  251. data/test/stylesheet/tc_table_styles.rb +0 -29
  252. data/test/stylesheet/tc_xf.rb +0 -120
  253. data/test/tc_axlsx.rb +0 -109
  254. data/test/tc_helper.rb +0 -10
  255. data/test/tc_package.rb +0 -317
  256. data/test/util/tc_mime_type_utils.rb +0 -13
  257. data/test/util/tc_serialized_attributes.rb +0 -19
  258. data/test/util/tc_simple_typed_list.rb +0 -77
  259. data/test/util/tc_validators.rb +0 -210
  260. data/test/workbook/tc_defined_name.rb +0 -49
  261. data/test/workbook/tc_shared_strings_table.rb +0 -59
  262. data/test/workbook/tc_workbook.rb +0 -165
  263. data/test/workbook/tc_workbook_view.rb +0 -50
  264. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
  265. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
  266. data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
  267. data/test/workbook/worksheet/tc_break.rb +0 -49
  268. data/test/workbook/worksheet/tc_cell.rb +0 -465
  269. data/test/workbook/worksheet/tc_cfvo.rb +0 -31
  270. data/test/workbook/worksheet/tc_col.rb +0 -93
  271. data/test/workbook/worksheet/tc_color_scale.rb +0 -58
  272. data/test/workbook/worksheet/tc_comment.rb +0 -72
  273. data/test/workbook/worksheet/tc_comments.rb +0 -57
  274. data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
  275. data/test/workbook/worksheet/tc_data_bar.rb +0 -46
  276. data/test/workbook/worksheet/tc_data_validation.rb +0 -265
  277. data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
  278. data/test/workbook/worksheet/tc_header_footer.rb +0 -151
  279. data/test/workbook/worksheet/tc_icon_set.rb +0 -45
  280. data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
  281. data/test/workbook/worksheet/tc_page_margins.rb +0 -97
  282. data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
  283. data/test/workbook/worksheet/tc_page_setup.rb +0 -143
  284. data/test/workbook/worksheet/tc_pane.rb +0 -54
  285. data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
  286. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
  287. data/test/workbook/worksheet/tc_print_options.rb +0 -72
  288. data/test/workbook/worksheet/tc_protected_range.rb +0 -17
  289. data/test/workbook/worksheet/tc_rich_text.rb +0 -44
  290. data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
  291. data/test/workbook/worksheet/tc_row.rb +0 -160
  292. data/test/workbook/worksheet/tc_selection.rb +0 -55
  293. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
  294. data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
  295. data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
  296. data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
  297. data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
  298. data/test/workbook/worksheet/tc_table.rb +0 -77
  299. data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
  300. data/test/workbook/worksheet/tc_worksheet.rb +0 -632
  301. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
@@ -1,115 +1,115 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
- # 3D attributes for a chart.
4
- class View3D
5
-
6
- include Axlsx::OptionsParser
7
-
8
- # Creates a new View3D for charts
9
- # @option options [Integer] rot_x
10
- # @option options [String] h_percent
11
- # @option options [Integer] rot_y
12
- # @option options [String] depth_percent
13
- # @option options [Boolean] r_ang_ax
14
- # @option options [Integer] perspective
15
- def initialize(options={})
16
- @rot_x, @h_percent, @rot_y, @depth_percent, @r_ang_ax, @perspective = nil, nil, nil, nil, nil, nil
17
- parse_options options
18
- end
19
-
20
- # Validation for hPercent
21
- H_PERCENT_REGEX = /0*(([5-9])|([1-9][0-9])|([1-4][0-9][0-9])|500)/
22
-
23
- # validation for depthPercent
24
- DEPTH_PERCENT_REGEX = /0*(([2-9][0-9])|([1-9][0-9][0-9])|(1[0-9][0-9][0-9])|2000)/
25
-
26
- # x rotation for the chart
27
- # must be between -90 and 90
28
- # @return [Integer]
29
- attr_reader :rot_x
30
- alias :rotX :rot_x
31
-
32
- # height of chart as % of chart width
33
- # must be between 5% and 500%
34
- # @return [String]
35
- attr_reader :h_percent
36
- alias :hPercent :h_percent
37
-
38
- # y rotation for the chart
39
- # must be between 0 and 360
40
- # @return [Integer]
41
- attr_reader :rot_y
42
- alias :rotY :rot_y
43
-
44
- # depth or chart as % of chart width
45
- # must be between 20% and 2000%
46
- # @return [String]
47
- attr_reader :depth_percent
48
- alias :depthPercent :depth_percent
49
-
50
- # Chart axis are at right angles
51
- # @return [Boolean]
52
- attr_reader :r_ang_ax
53
- alias :rAngAx :r_ang_ax
54
-
55
- # field of view angle
56
- # @return [Integer]
57
- attr_reader :perspective
58
-
59
- # @see rot_x
60
- def rot_x=(v)
61
- RangeValidator.validate "View3D.rot_x", -90, 90, v
62
- @rot_x = v
63
- end
64
- alias :rotX= :rot_x=
65
-
66
- # @see h_percent
67
- def h_percent=(v)
68
- RegexValidator.validate "#{self.class}.h_percent", H_PERCENT_REGEX, v
69
- @h_percent = v
70
- end
71
- alias :hPercent= :h_percent=
72
-
73
- # @see rot_y
74
- def rot_y=(v)
75
- RangeValidator.validate "View3D.rot_y", 0, 360, v
76
- @rot_y = v
77
- end
78
- alias :rotY= :rot_y=
79
-
80
- # @see depth_percent
81
- def depth_percent=(v) RegexValidator.validate "#{self.class}.depth_percent", DEPTH_PERCENT_REGEX, v; @depth_percent = v; end
82
- alias :depthPercent= :depth_percent=
83
-
84
- # @see r_ang_ax
85
- def r_ang_ax=(v) Axlsx::validate_boolean(v); @r_ang_ax = v; end
86
- alias :rAngAx= :r_ang_ax=
87
-
88
- # @see perspective
89
- def perspective=(v)
90
- RangeValidator.validate "View3D.perspective", 0, 240, v
91
- @perspective = v
92
- end
93
-
94
- # DataTypeValidator.validate "#{self.class}.perspective", [Integer], v, lambda {|arg| arg >= 0 && arg <= 240 }; @perspective = v; end
95
-
96
- # Serializes the object
97
- # @param [String] str
98
- # @return [String]
99
- def to_xml_string(str = '')
100
- str << '<c:view3D>'
101
- %w(rot_x h_percent rot_y depth_percent r_ang_ax perspective).each do |key|
102
- str << element_for_attribute(key, 'c')
103
- end
104
- str << '</c:view3D>'
105
- end
106
-
107
- private
108
- # Note: move this to Axlsx module if we find the smae pattern elsewhere.
109
- def element_for_attribute(name, namespace='')
110
- val = instance_values[name]
111
- return "" if val == nil
112
- "<%s:%s val='%s'/>" % [namespace, Axlsx::camel(name, false), val]
113
- end
114
- end
115
- end
1
+ module Axlsx
2
+ # 3D attributes for a chart.
3
+ class View3D
4
+ include Axlsx::OptionsParser
5
+
6
+ # Creates a new View3D for charts
7
+ # @option options [Integer] rot_x
8
+ # @option options [String] h_percent
9
+ # @option options [Integer] rot_y
10
+ # @option options [String] depth_percent
11
+ # @option options [Boolean] r_ang_ax
12
+ # @option options [Integer] perspective
13
+ def initialize(options = {})
14
+ @rot_x, @h_percent, @rot_y, @depth_percent, @r_ang_ax, @perspective = nil, nil, nil, nil, nil, nil
15
+ parse_options options
16
+ end
17
+
18
+ # Validation for hPercent
19
+ H_PERCENT_REGEX = /0*(([5-9])|([1-9][0-9])|([1-4][0-9][0-9])|500)/
20
+
21
+ # validation for depthPercent
22
+ DEPTH_PERCENT_REGEX = /0*(([2-9][0-9])|([1-9][0-9][0-9])|(1[0-9][0-9][0-9])|2000)/
23
+
24
+ # x rotation for the chart
25
+ # must be between -90 and 90
26
+ # @return [Integer]
27
+ attr_reader :rot_x
28
+ alias :rotX :rot_x
29
+
30
+ # height of chart as % of chart width
31
+ # must be between 5% and 500%
32
+ # @return [String]
33
+ attr_reader :h_percent
34
+ alias :hPercent :h_percent
35
+
36
+ # y rotation for the chart
37
+ # must be between 0 and 360
38
+ # @return [Integer]
39
+ attr_reader :rot_y
40
+ alias :rotY :rot_y
41
+
42
+ # depth or chart as % of chart width
43
+ # must be between 20% and 2000%
44
+ # @return [String]
45
+ attr_reader :depth_percent
46
+ alias :depthPercent :depth_percent
47
+
48
+ # Chart axis are at right angles
49
+ # @return [Boolean]
50
+ attr_reader :r_ang_ax
51
+ alias :rAngAx :r_ang_ax
52
+
53
+ # field of view angle
54
+ # @return [Integer]
55
+ attr_reader :perspective
56
+
57
+ # @see rot_x
58
+ def rot_x=(v)
59
+ RangeValidator.validate "View3D.rot_x", -90, 90, v
60
+ @rot_x = v
61
+ end
62
+ alias :rotX= :rot_x=
63
+
64
+ # @see h_percent
65
+ def h_percent=(v)
66
+ RegexValidator.validate "#{self.class}.h_percent", H_PERCENT_REGEX, v
67
+ @h_percent = v
68
+ end
69
+ alias :hPercent= :h_percent=
70
+
71
+ # @see rot_y
72
+ def rot_y=(v)
73
+ RangeValidator.validate "View3D.rot_y", 0, 360, v
74
+ @rot_y = v
75
+ end
76
+ alias :rotY= :rot_y=
77
+
78
+ # @see depth_percent
79
+ def depth_percent=(v) RegexValidator.validate "#{self.class}.depth_percent", DEPTH_PERCENT_REGEX, v; @depth_percent = v; end
80
+ alias :depthPercent= :depth_percent=
81
+
82
+ # @see r_ang_ax
83
+ def r_ang_ax=(v) Axlsx::validate_boolean(v); @r_ang_ax = v; end
84
+ alias :rAngAx= :r_ang_ax=
85
+
86
+ # @see perspective
87
+ def perspective=(v)
88
+ RangeValidator.validate "View3D.perspective", 0, 240, v
89
+ @perspective = v
90
+ end
91
+
92
+ # DataTypeValidator.validate "#{self.class}.perspective", [Integer], v, lambda {|arg| arg >= 0 && arg <= 240 }; @perspective = v; end
93
+
94
+ # Serializes the object
95
+ # @param [String] str
96
+ # @return [String]
97
+ def to_xml_string(str = '')
98
+ str << '<c:view3D>'
99
+ %w(rot_x h_percent rot_y depth_percent r_ang_ax perspective).each do |key|
100
+ str << element_for_attribute(key, 'c')
101
+ end
102
+ str << '</c:view3D>'
103
+ end
104
+
105
+ private
106
+
107
+ # Note: move this to Axlsx module if we find the smae pattern elsewhere.
108
+ def element_for_attribute(name, namespace = '')
109
+ val = Axlsx.instance_values_for(self)[name]
110
+ return "" if val == nil
111
+
112
+ "<%s:%s val='%s'/>" % [namespace, Axlsx::camel(name, false), val]
113
+ end
114
+ end
115
+ end
@@ -1,42 +1,39 @@
1
- module Axlsx
2
-
3
- # a vml drawing used for comments in excel.
4
- class VmlDrawing
5
-
6
- # creates a new Vml Drawing object.
7
- # @param [Comments] comments the comments object this drawing is associated with
8
- def initialize(comments)
9
- raise ArgumentError, "you must provide a comments object" unless comments.is_a?(Comments)
10
- @comments = comments
11
- end
12
-
13
- # The part name for this vml drawing
14
- # @return [String]
15
- def pn
16
- "#{VML_DRAWING_PN}" % (@comments.worksheet.index + 1)
17
- end
18
-
19
- # serialize the vml_drawing to xml.
20
- # @param [String] str
21
- # @return [String]
22
- def to_xml_string(str = '')
23
- str << <<BAD_PROGRAMMER
24
- <xml xmlns:v="urn:schemas-microsoft-com:vml"
25
- xmlns:o="urn:schemas-microsoft-com:office:office"
26
- xmlns:x="urn:schemas-microsoft-com:office:excel">
27
- <o:shapelayout v:ext="edit">
28
- <o:idmap v:ext="edit" data="#{@comments.worksheet.index+1}"/>
29
- </o:shapelayout>
30
- <v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202"
31
- path="m0,0l0,21600,21600,21600,21600,0xe">
32
- <v:stroke joinstyle="miter"/>
33
- <v:path gradientshapeok="t" o:connecttype="rect"/>
34
- </v:shapetype>
35
- BAD_PROGRAMMER
36
- @comments.each { |comment| comment.vml_shape.to_xml_string str }
37
- str << "</xml>"
38
-
39
- end
40
-
41
- end
42
- end
1
+ module Axlsx
2
+ # a vml drawing used for comments in excel.
3
+ class VmlDrawing
4
+ # creates a new Vml Drawing object.
5
+ # @param [Comments] comments the comments object this drawing is associated with
6
+ def initialize(comments)
7
+ raise ArgumentError, "you must provide a comments object" unless comments.is_a?(Comments)
8
+
9
+ @comments = comments
10
+ end
11
+
12
+ # The part name for this vml drawing
13
+ # @return [String]
14
+ def pn
15
+ "#{VML_DRAWING_PN}" % (@comments.worksheet.index + 1)
16
+ end
17
+
18
+ # serialize the vml_drawing to xml.
19
+ # @param [String] str
20
+ # @return [String]
21
+ def to_xml_string(str = '')
22
+ str << <<BAD_PROGRAMMER
23
+ <xml xmlns:v="urn:schemas-microsoft-com:vml"
24
+ xmlns:o="urn:schemas-microsoft-com:office:office"
25
+ xmlns:x="urn:schemas-microsoft-com:office:excel">
26
+ <o:shapelayout v:ext="edit">
27
+ <o:idmap v:ext="edit" data="#{@comments.worksheet.index + 1}"/>
28
+ </o:shapelayout>
29
+ <v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202"
30
+ path="m0,0l0,21600,21600,21600,21600,0xe">
31
+ <v:stroke joinstyle="miter"/>
32
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
33
+ </v:shapetype>
34
+ BAD_PROGRAMMER
35
+ @comments.each { |comment| comment.vml_shape.to_xml_string str }
36
+ str << "</xml>"
37
+ end
38
+ end
39
+ end
@@ -1,66 +1,63 @@
1
- module Axlsx
2
-
3
- # A VmlShape is used to position and render a comment.
4
- class VmlShape
5
-
6
- include Axlsx::OptionsParser
7
- include Axlsx::Accessors
8
-
9
- # Creates a new VmlShape
10
- # @option options [Integer] row
11
- # @option options [Integer] column
12
- # @option options [Integer] left_column
13
- # @option options [Integer] left_offset
14
- # @option options [Integer] top_row
15
- # @option options [Integer] top_offset
16
- # @option options [Integer] right_column
17
- # @option options [Integer] right_offset
18
- # @option options [Integer] bottom_row
19
- # @option options [Integer] bottom_offset
20
- def initialize(options={})
21
- @row = @column = @left_column = @top_row = @right_column = @bottom_row = 0
22
- @left_offset = 15
23
- @top_offset = 2
24
- @right_offset = 50
25
- @bottom_offset = 5
26
- @visible = true
27
- @id = (0...8).map{65.+(rand(25)).chr}.join
28
- parse_options options
29
- yield self if block_given?
30
- end
31
-
32
- unsigned_int_attr_accessor :row, :column, :left_column, :left_offset, :top_row, :top_offset,
33
- :right_column, :right_offset, :bottom_row, :bottom_offset
34
-
35
- boolean_attr_accessor :visible
36
-
37
- # serialize the shape to a string
38
- # @param [String] str
39
- # @return [String]
40
- def to_xml_string(str ='')
41
- str << <<SHAME_ON_YOU
42
-
43
- <v:shape id="#{@id}" type="#_x0000_t202" fillcolor="#ffffa1 [80]" o:insetmode="auto"
44
- style="visibility:#{@visible ? 'visible' : 'hidden'}">
45
- <v:fill color2="#ffffa1 [80]"/>
46
- <v:shadow on="t" obscured="t"/>
47
- <v:path o:connecttype="none"/>
48
- <v:textbox style='mso-fit-text-with-word-wrap:t'>
49
- <div style='text-align:left'></div>
50
- </v:textbox>
51
-
52
- <x:ClientData ObjectType="Note">
53
- <x:MoveWithCells/>
54
- <x:SizeWithCells/>
55
- <x:Anchor>#{left_column}, #{left_offset}, #{top_row}, #{top_offset}, #{right_column}, #{right_offset}, #{bottom_row}, #{bottom_offset}</x:Anchor>
56
- <x:AutoFill>False</x:AutoFill>
57
- <x:Row>#{row}</x:Row>
58
- <x:Column>#{column}</x:Column>
59
- #{@visible ? '<x:Visible/>' : ''}
60
- </x:ClientData>
61
- </v:shape>
62
- SHAME_ON_YOU
63
-
64
- end
65
- end
66
- end
1
+ module Axlsx
2
+ # A VmlShape is used to position and render a comment.
3
+ class VmlShape
4
+ include Axlsx::OptionsParser
5
+ include Axlsx::Accessors
6
+
7
+ # Creates a new VmlShape
8
+ # @option options [Integer] row
9
+ # @option options [Integer] column
10
+ # @option options [Integer] left_column
11
+ # @option options [Integer] left_offset
12
+ # @option options [Integer] top_row
13
+ # @option options [Integer] top_offset
14
+ # @option options [Integer] right_column
15
+ # @option options [Integer] right_offset
16
+ # @option options [Integer] bottom_row
17
+ # @option options [Integer] bottom_offset
18
+ def initialize(options = {})
19
+ @row = @column = @left_column = @top_row = @right_column = @bottom_row = 0
20
+ @left_offset = 15
21
+ @top_offset = 2
22
+ @right_offset = 50
23
+ @bottom_offset = 5
24
+ @visible = true
25
+ @id = (0...8).map { 65.+(rand(25)).chr }.join
26
+ parse_options options
27
+ yield self if block_given?
28
+ end
29
+
30
+ unsigned_int_attr_accessor :row, :column, :left_column, :left_offset, :top_row, :top_offset,
31
+ :right_column, :right_offset, :bottom_row, :bottom_offset
32
+
33
+ boolean_attr_accessor :visible
34
+
35
+ # serialize the shape to a string
36
+ # @param [String] str
37
+ # @return [String]
38
+ def to_xml_string(str = '')
39
+ str << <<SHAME_ON_YOU
40
+
41
+ <v:shape id="#{@id}" type="#_x0000_t202" fillcolor="#ffffa1 [80]" o:insetmode="auto"
42
+ style="visibility:#{@visible ? 'visible' : 'hidden'}">
43
+ <v:fill color2="#ffffa1 [80]"/>
44
+ <v:shadow on="t" obscured="t"/>
45
+ <v:path o:connecttype="none"/>
46
+ <v:textbox style='mso-fit-text-with-word-wrap:t'>
47
+ <div style='text-align:left'></div>
48
+ </v:textbox>
49
+
50
+ <x:ClientData ObjectType="Note">
51
+ <x:MoveWithCells/>
52
+ <x:SizeWithCells/>
53
+ <x:Anchor>#{left_column}, #{left_offset}, #{top_row}, #{top_offset}, #{right_column}, #{right_offset}, #{bottom_row}, #{bottom_offset}</x:Anchor>
54
+ <x:AutoFill>False</x:AutoFill>
55
+ <x:Row>#{row}</x:Row>
56
+ <x:Column>#{column}</x:Column>
57
+ #{@visible ? '<x:Visible/>' : ''}
58
+ </x:ClientData>
59
+ </v:shape>
60
+ SHAME_ON_YOU
61
+ end
62
+ end
63
+ end