caxlsx 3.0.4 → 3.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 (294) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +354 -334
  5. data/LICENSE +21 -21
  6. data/README.md +168 -170
  7. data/Rakefile +29 -29
  8. data/examples/generate.rb +15 -15
  9. data/lib/axlsx/content_type/abstract_content_type.rb +32 -32
  10. data/lib/axlsx/content_type/content_type.rb +26 -26
  11. data/lib/axlsx/content_type/default.rb +25 -25
  12. data/lib/axlsx/content_type/override.rb +25 -25
  13. data/lib/axlsx/doc_props/app.rb +235 -235
  14. data/lib/axlsx/doc_props/core.rb +39 -39
  15. data/lib/axlsx/drawing/area_chart.rb +99 -99
  16. data/lib/axlsx/drawing/area_series.rb +110 -110
  17. data/lib/axlsx/drawing/ax_data_source.rb +26 -26
  18. data/lib/axlsx/drawing/axes.rb +61 -61
  19. data/lib/axlsx/drawing/axis.rb +190 -190
  20. data/lib/axlsx/drawing/bar_3D_chart.rb +148 -151
  21. data/lib/axlsx/drawing/bar_chart.rb +138 -143
  22. data/lib/axlsx/drawing/bar_series.rb +97 -80
  23. data/lib/axlsx/drawing/bubble_chart.rb +59 -59
  24. data/lib/axlsx/drawing/bubble_series.rb +63 -63
  25. data/lib/axlsx/drawing/cat_axis.rb +85 -85
  26. data/lib/axlsx/drawing/chart.rb +276 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +90 -90
  28. data/lib/axlsx/drawing/drawing.rb +167 -167
  29. data/lib/axlsx/drawing/graphic_frame.rb +54 -54
  30. data/lib/axlsx/drawing/hyperlink.rb +100 -100
  31. data/lib/axlsx/drawing/line_3D_chart.rb +68 -68
  32. data/lib/axlsx/drawing/line_chart.rb +99 -99
  33. data/lib/axlsx/drawing/line_series.rb +110 -110
  34. data/lib/axlsx/drawing/marker.rb +84 -84
  35. data/lib/axlsx/drawing/num_data.rb +52 -52
  36. data/lib/axlsx/drawing/num_data_source.rb +62 -62
  37. data/lib/axlsx/drawing/num_val.rb +34 -34
  38. data/lib/axlsx/drawing/one_cell_anchor.rb +99 -99
  39. data/lib/axlsx/drawing/pic.rb +211 -211
  40. data/lib/axlsx/drawing/picture_locking.rb +42 -42
  41. data/lib/axlsx/drawing/pie_3D_chart.rb +47 -47
  42. data/lib/axlsx/drawing/pie_series.rb +74 -74
  43. data/lib/axlsx/drawing/scaling.rb +60 -60
  44. data/lib/axlsx/drawing/scatter_chart.rb +74 -74
  45. data/lib/axlsx/drawing/scatter_series.rb +129 -98
  46. data/lib/axlsx/drawing/ser_axis.rb +45 -45
  47. data/lib/axlsx/drawing/series.rb +69 -69
  48. data/lib/axlsx/drawing/series_title.rb +25 -25
  49. data/lib/axlsx/drawing/str_data.rb +42 -42
  50. data/lib/axlsx/drawing/str_val.rb +34 -34
  51. data/lib/axlsx/drawing/title.rb +97 -97
  52. data/lib/axlsx/drawing/two_cell_anchor.rb +97 -97
  53. data/lib/axlsx/drawing/val_axis.rb +37 -37
  54. data/lib/axlsx/drawing/view_3D.rb +115 -115
  55. data/lib/axlsx/drawing/vml_drawing.rb +42 -42
  56. data/lib/axlsx/drawing/vml_shape.rb +66 -66
  57. data/lib/axlsx/package.rb +388 -363
  58. data/lib/axlsx/rels/relationship.rb +130 -130
  59. data/lib/axlsx/rels/relationships.rb +32 -32
  60. data/lib/axlsx/stylesheet/border.rb +73 -71
  61. data/lib/axlsx/stylesheet/border_pr.rb +71 -71
  62. data/lib/axlsx/stylesheet/cell_alignment.rb +132 -132
  63. data/lib/axlsx/stylesheet/cell_protection.rb +41 -41
  64. data/lib/axlsx/stylesheet/cell_style.rb +72 -72
  65. data/lib/axlsx/stylesheet/color.rb +76 -76
  66. data/lib/axlsx/stylesheet/dxf.rb +79 -79
  67. data/lib/axlsx/stylesheet/fill.rb +35 -35
  68. data/lib/axlsx/stylesheet/font.rb +156 -156
  69. data/lib/axlsx/stylesheet/gradient_fill.rb +103 -103
  70. data/lib/axlsx/stylesheet/gradient_stop.rb +37 -37
  71. data/lib/axlsx/stylesheet/num_fmt.rb +86 -86
  72. data/lib/axlsx/stylesheet/pattern_fill.rb +73 -73
  73. data/lib/axlsx/stylesheet/styles.rb +494 -420
  74. data/lib/axlsx/stylesheet/table_style.rb +54 -54
  75. data/lib/axlsx/stylesheet/table_style_element.rb +77 -77
  76. data/lib/axlsx/stylesheet/table_styles.rb +46 -46
  77. data/lib/axlsx/stylesheet/xf.rb +147 -147
  78. data/lib/axlsx/util/accessors.rb +64 -64
  79. data/lib/axlsx/util/constants.rb +410 -401
  80. data/lib/axlsx/util/mime_type_utils.rb +11 -11
  81. data/lib/axlsx/util/options_parser.rb +16 -16
  82. data/lib/axlsx/util/serialized_attributes.rb +89 -89
  83. data/lib/axlsx/util/simple_typed_list.rb +179 -179
  84. data/lib/axlsx/util/storage.rb +146 -146
  85. data/lib/axlsx/util/validators.rb +312 -312
  86. data/lib/axlsx/util/zip_command.rb +73 -73
  87. data/lib/axlsx/version.rb +5 -5
  88. data/lib/axlsx/workbook/defined_name.rb +128 -128
  89. data/lib/axlsx/workbook/defined_names.rb +21 -21
  90. data/lib/axlsx/workbook/shared_strings_table.rb +77 -77
  91. data/lib/axlsx/workbook/workbook.rb +395 -370
  92. data/lib/axlsx/workbook/workbook_view.rb +80 -80
  93. data/lib/axlsx/workbook/workbook_views.rb +22 -22
  94. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -77
  95. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
  96. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -244
  97. data/lib/axlsx/workbook/worksheet/break.rb +35 -35
  98. data/lib/axlsx/workbook/worksheet/cell.rb +506 -505
  99. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  100. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  101. data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
  102. data/lib/axlsx/workbook/worksheet/col.rb +145 -145
  103. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
  104. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
  105. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  106. data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
  107. data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
  108. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
  110. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
  111. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
  112. data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -246
  113. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
  114. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
  115. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
  116. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
  117. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
  118. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  119. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
  120. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  121. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
  122. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
  123. data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
  124. data/lib/axlsx/workbook/worksheet/pivot_table.rb +296 -289
  125. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
  126. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
  127. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
  128. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
  129. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  130. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
  131. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
  132. data/lib/axlsx/workbook/worksheet/row.rb +164 -162
  133. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
  134. data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
  135. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
  136. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
  137. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  138. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
  139. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
  140. data/lib/axlsx/workbook/worksheet/table.rb +102 -102
  141. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
  142. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  143. data/lib/axlsx/workbook/worksheet/worksheet.rb +786 -764
  144. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  145. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
  146. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
  147. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  148. data/lib/axlsx.rb +185 -170
  149. data/lib/caxlsx.rb +2 -2
  150. data/lib/schema/dc.xsd +118 -118
  151. data/lib/schema/dcmitype.xsd +51 -51
  152. data/lib/schema/dcterms.xsd +331 -331
  153. data/lib/schema/dml-chartDrawing.xsd +146 -146
  154. data/lib/schema/dml-compatibility.xsd +14 -14
  155. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  156. data/lib/schema/dml-main.xsd +3048 -3048
  157. data/lib/schema/dml-picture.xsd +23 -23
  158. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  159. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  160. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  161. data/lib/schema/shared-bibliography.xsd +144 -144
  162. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  163. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  164. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  165. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  166. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  167. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  168. data/lib/schema/shared-relationshipReference.xsd +25 -25
  169. data/lib/schema/vml-main.xsd +569 -569
  170. data/lib/schema/vml-officeDrawing.xsd +509 -509
  171. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  172. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  173. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  174. data/lib/schema/xml.xsd +116 -116
  175. data/test/benchmark.rb +72 -72
  176. data/test/content_type/tc_content_type.rb +76 -76
  177. data/test/content_type/tc_default.rb +16 -16
  178. data/test/content_type/tc_override.rb +14 -14
  179. data/test/doc_props/tc_app.rb +43 -43
  180. data/test/doc_props/tc_core.rb +42 -42
  181. data/test/drawing/tc_area_chart.rb +39 -39
  182. data/test/drawing/tc_area_series.rb +71 -71
  183. data/test/drawing/tc_axes.rb +7 -7
  184. data/test/drawing/tc_axis.rb +112 -112
  185. data/test/drawing/tc_bar_3D_chart.rb +86 -71
  186. data/test/drawing/tc_bar_chart.rb +86 -71
  187. data/test/drawing/tc_bar_series.rb +46 -37
  188. data/test/drawing/tc_bubble_chart.rb +44 -44
  189. data/test/drawing/tc_bubble_series.rb +21 -21
  190. data/test/drawing/tc_cat_axis.rb +31 -31
  191. data/test/drawing/tc_cat_axis_data.rb +27 -27
  192. data/test/drawing/tc_chart.rb +123 -123
  193. data/test/drawing/tc_d_lbls.rb +57 -57
  194. data/test/drawing/tc_data_source.rb +23 -23
  195. data/test/drawing/tc_drawing.rb +80 -80
  196. data/test/drawing/tc_graphic_frame.rb +27 -27
  197. data/test/drawing/tc_hyperlink.rb +64 -64
  198. data/test/drawing/tc_line_3d_chart.rb +47 -47
  199. data/test/drawing/tc_line_chart.rb +39 -39
  200. data/test/drawing/tc_line_series.rb +71 -71
  201. data/test/drawing/tc_marker.rb +44 -44
  202. data/test/drawing/tc_named_axis_data.rb +27 -27
  203. data/test/drawing/tc_num_data.rb +31 -31
  204. data/test/drawing/tc_num_val.rb +29 -29
  205. data/test/drawing/tc_one_cell_anchor.rb +66 -66
  206. data/test/drawing/tc_pic.rb +103 -103
  207. data/test/drawing/tc_picture_locking.rb +72 -72
  208. data/test/drawing/tc_pie_3D_chart.rb +28 -28
  209. data/test/drawing/tc_pie_series.rb +33 -33
  210. data/test/drawing/tc_scaling.rb +36 -36
  211. data/test/drawing/tc_scatter_chart.rb +48 -48
  212. data/test/drawing/tc_scatter_series.rb +74 -56
  213. data/test/drawing/tc_ser_axis.rb +31 -31
  214. data/test/drawing/tc_series.rb +23 -23
  215. data/test/drawing/tc_series_title.rb +54 -54
  216. data/test/drawing/tc_str_data.rb +18 -18
  217. data/test/drawing/tc_str_val.rb +30 -30
  218. data/test/drawing/tc_title.rb +70 -70
  219. data/test/drawing/tc_two_cell_anchor.rb +36 -36
  220. data/test/drawing/tc_val_axis.rb +24 -24
  221. data/test/drawing/tc_view_3D.rb +54 -54
  222. data/test/drawing/tc_vml_drawing.rb +25 -25
  223. data/test/drawing/tc_vml_shape.rb +106 -106
  224. data/test/profile.rb +24 -24
  225. data/test/rels/tc_relationship.rb +52 -52
  226. data/test/rels/tc_relationships.rb +37 -37
  227. data/test/stylesheet/tc_border.rb +37 -37
  228. data/test/stylesheet/tc_border_pr.rb +32 -32
  229. data/test/stylesheet/tc_cell_alignment.rb +81 -81
  230. data/test/stylesheet/tc_cell_protection.rb +29 -29
  231. data/test/stylesheet/tc_cell_style.rb +57 -57
  232. data/test/stylesheet/tc_color.rb +43 -43
  233. data/test/stylesheet/tc_dxf.rb +81 -81
  234. data/test/stylesheet/tc_fill.rb +18 -18
  235. data/test/stylesheet/tc_font.rb +133 -133
  236. data/test/stylesheet/tc_gradient_fill.rb +72 -72
  237. data/test/stylesheet/tc_gradient_stop.rb +31 -31
  238. data/test/stylesheet/tc_num_fmt.rb +30 -30
  239. data/test/stylesheet/tc_pattern_fill.rb +43 -43
  240. data/test/stylesheet/tc_styles.rb +309 -261
  241. data/test/stylesheet/tc_table_style.rb +44 -44
  242. data/test/stylesheet/tc_table_style_element.rb +45 -45
  243. data/test/stylesheet/tc_table_styles.rb +29 -29
  244. data/test/stylesheet/tc_xf.rb +120 -120
  245. data/test/tc_axlsx.rb +109 -109
  246. data/test/tc_helper.rb +10 -12
  247. data/test/tc_package.rb +317 -264
  248. data/test/util/tc_mime_type_utils.rb +13 -13
  249. data/test/util/tc_serialized_attributes.rb +19 -19
  250. data/test/util/tc_simple_typed_list.rb +77 -77
  251. data/test/util/tc_validators.rb +210 -210
  252. data/test/workbook/tc_defined_name.rb +49 -49
  253. data/test/workbook/tc_shared_strings_table.rb +59 -59
  254. data/test/workbook/tc_workbook.rb +165 -160
  255. data/test/workbook/tc_workbook_view.rb +50 -50
  256. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -38
  257. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -76
  258. data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -50
  259. data/test/workbook/worksheet/tc_break.rb +49 -49
  260. data/test/workbook/worksheet/tc_cell.rb +465 -453
  261. data/test/workbook/worksheet/tc_cfvo.rb +31 -31
  262. data/test/workbook/worksheet/tc_col.rb +93 -93
  263. data/test/workbook/worksheet/tc_color_scale.rb +58 -58
  264. data/test/workbook/worksheet/tc_comment.rb +72 -72
  265. data/test/workbook/worksheet/tc_comments.rb +57 -57
  266. data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -224
  267. data/test/workbook/worksheet/tc_data_bar.rb +46 -46
  268. data/test/workbook/worksheet/tc_data_validation.rb +265 -265
  269. data/test/workbook/worksheet/tc_date_time_converter.rb +124 -124
  270. data/test/workbook/worksheet/tc_header_footer.rb +151 -151
  271. data/test/workbook/worksheet/tc_icon_set.rb +45 -45
  272. data/test/workbook/worksheet/tc_outline_pr.rb +19 -19
  273. data/test/workbook/worksheet/tc_page_margins.rb +97 -97
  274. data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -15
  275. data/test/workbook/worksheet/tc_page_setup.rb +143 -143
  276. data/test/workbook/worksheet/tc_pane.rb +54 -54
  277. data/test/workbook/worksheet/tc_pivot_table.rb +180 -135
  278. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +62 -54
  279. data/test/workbook/worksheet/tc_print_options.rb +72 -72
  280. data/test/workbook/worksheet/tc_protected_range.rb +17 -17
  281. data/test/workbook/worksheet/tc_rich_text.rb +44 -44
  282. data/test/workbook/worksheet/tc_rich_text_run.rb +173 -173
  283. data/test/workbook/worksheet/tc_row.rb +160 -139
  284. data/test/workbook/worksheet/tc_selection.rb +55 -55
  285. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -18
  286. data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -88
  287. data/test/workbook/worksheet/tc_sheet_pr.rb +49 -49
  288. data/test/workbook/worksheet/tc_sheet_protection.rb +117 -117
  289. data/test/workbook/worksheet/tc_sheet_view.rb +214 -214
  290. data/test/workbook/worksheet/tc_table.rb +77 -67
  291. data/test/workbook/worksheet/tc_table_style_info.rb +53 -53
  292. data/test/workbook/worksheet/tc_worksheet.rb +632 -601
  293. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -55
  294. metadata +11 -11
@@ -1,97 +1,97 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
- # This class details the anchor points for drawings.
4
- # @note The recommended way to manage drawings and charts is Worksheet#add_chart. Anchors are specified by the :start_at and :end_at options to that method.
5
- # @see Worksheet#add_chart
6
- class TwoCellAnchor
7
-
8
- include Axlsx::OptionsParser
9
-
10
- # A marker that defines the from cell anchor. The default from column and row are 0 and 0 respectively
11
- # @return [Marker]
12
- attr_reader :from
13
- # A marker that returns the to cell anchor. The default to column and row are 5 and 10 respectively
14
- # @return [Marker]
15
- attr_reader :to
16
-
17
- # The frame for your chart
18
- # @note this will be discontinued in version 2.0 please use object
19
- # @return [GraphicFrame]
20
- # attr_reader :graphic_frame
21
-
22
- # The object this anchor hosts
23
- # @return [Pic, GraphicFrame]
24
- attr_reader :object
25
-
26
- # The drawing that holds this anchor
27
- # @return [Drawing]
28
- attr_reader :drawing
29
-
30
- # Creates a new TwoCellAnchor object
31
- # c.start_at 5, 9
32
- # @param [Drawing] drawing
33
- # @option options [Array] :start_at the col, row to start at THIS IS DOCUMENTED BUT NOT IMPLEMENTED HERE!
34
- # @option options [Array] :end_at the col, row to end at
35
- def initialize(drawing, options={})
36
- @drawing = drawing
37
- drawing.anchors << self
38
- @from, @to = Marker.new, Marker.new(:col => 5, :row=>10)
39
- parse_options options
40
-
41
- # bit of a hack to work around the fact that the coords for start at and end at
42
- # are passed in as an array when specified in intialization options - however
43
- start_at(*options[:start_at]) if options[:start_at]
44
- end_at(*options[:end_at]) if options[:end_at]
45
- end
46
-
47
- # sets the col, row attributes for the from marker.
48
- # @note The recommended way to set the start position for graphical
49
- # objects is directly thru the object.
50
- # @see Chart#start_at
51
- def start_at(x, y=nil)
52
- from.coord x, y
53
- end
54
-
55
- # sets the col, row attributes for the to marker
56
- # @note the recommended way to set the to position for graphical
57
- # objects is directly thru the object
58
- # @see Char#end_at
59
- def end_at(x, y=nil)
60
- to.coord x, y
61
- end
62
-
63
- # Creates a graphic frame and chart object associated with this anchor
64
- # @return [Chart]
65
- def add_chart(chart_type, options)
66
- @object = GraphicFrame.new(self, chart_type, options)
67
- @object.chart
68
- end
69
-
70
- # Creates an image associated with this anchor.
71
- def add_pic(options={})
72
- @object = Pic.new(self, options)
73
- end
74
-
75
- # The index of this anchor in the drawing
76
- # @return [Integer]
77
- def index
78
- @drawing.anchors.index(self)
79
- end
80
-
81
- # Serializes the object
82
- # @param [String] str
83
- # @return [String]
84
- def to_xml_string(str = '')
85
- str << '<xdr:twoCellAnchor>'
86
- str << '<xdr:from>'
87
- from.to_xml_string str
88
- str << '</xdr:from>'
89
- str << '<xdr:to>'
90
- to.to_xml_string str
91
- str << '</xdr:to>'
92
- object.to_xml_string(str)
93
- str << '<xdr:clientData/>'
94
- str << '</xdr:twoCellAnchor>'
95
- end
96
- end
97
- end
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # This class details the anchor points for drawings.
4
+ # @note The recommended way to manage drawings and charts is Worksheet#add_chart. Anchors are specified by the :start_at and :end_at options to that method.
5
+ # @see Worksheet#add_chart
6
+ class TwoCellAnchor
7
+
8
+ include Axlsx::OptionsParser
9
+
10
+ # A marker that defines the from cell anchor. The default from column and row are 0 and 0 respectively
11
+ # @return [Marker]
12
+ attr_reader :from
13
+ # A marker that returns the to cell anchor. The default to column and row are 5 and 10 respectively
14
+ # @return [Marker]
15
+ attr_reader :to
16
+
17
+ # The frame for your chart
18
+ # @note this will be discontinued in version 2.0 please use object
19
+ # @return [GraphicFrame]
20
+ # attr_reader :graphic_frame
21
+
22
+ # The object this anchor hosts
23
+ # @return [Pic, GraphicFrame]
24
+ attr_reader :object
25
+
26
+ # The drawing that holds this anchor
27
+ # @return [Drawing]
28
+ attr_reader :drawing
29
+
30
+ # Creates a new TwoCellAnchor object
31
+ # c.start_at 5, 9
32
+ # @param [Drawing] drawing
33
+ # @option options [Array] :start_at the col, row to start at THIS IS DOCUMENTED BUT NOT IMPLEMENTED HERE!
34
+ # @option options [Array] :end_at the col, row to end at
35
+ def initialize(drawing, options={})
36
+ @drawing = drawing
37
+ drawing.anchors << self
38
+ @from, @to = Marker.new, Marker.new(:col => 5, :row=>10)
39
+ parse_options options
40
+
41
+ # bit of a hack to work around the fact that the coords for start at and end at
42
+ # are passed in as an array when specified in intialization options - however
43
+ start_at(*options[:start_at]) if options[:start_at]
44
+ end_at(*options[:end_at]) if options[:end_at]
45
+ end
46
+
47
+ # sets the col, row attributes for the from marker.
48
+ # @note The recommended way to set the start position for graphical
49
+ # objects is directly thru the object.
50
+ # @see Chart#start_at
51
+ def start_at(x, y=nil)
52
+ from.coord x, y
53
+ end
54
+
55
+ # sets the col, row attributes for the to marker
56
+ # @note the recommended way to set the to position for graphical
57
+ # objects is directly thru the object
58
+ # @see Char#end_at
59
+ def end_at(x, y=nil)
60
+ to.coord x, y
61
+ end
62
+
63
+ # Creates a graphic frame and chart object associated with this anchor
64
+ # @return [Chart]
65
+ def add_chart(chart_type, options)
66
+ @object = GraphicFrame.new(self, chart_type, options)
67
+ @object.chart
68
+ end
69
+
70
+ # Creates an image associated with this anchor.
71
+ def add_pic(options={})
72
+ @object = Pic.new(self, options)
73
+ end
74
+
75
+ # The index of this anchor in the drawing
76
+ # @return [Integer]
77
+ def index
78
+ @drawing.anchors.index(self)
79
+ end
80
+
81
+ # Serializes the object
82
+ # @param [String] str
83
+ # @return [String]
84
+ def to_xml_string(str = '')
85
+ str << '<xdr:twoCellAnchor>'
86
+ str << '<xdr:from>'
87
+ from.to_xml_string str
88
+ str << '</xdr:from>'
89
+ str << '<xdr:to>'
90
+ to.to_xml_string str
91
+ str << '</xdr:to>'
92
+ object.to_xml_string(str)
93
+ str << '<xdr:clientData/>'
94
+ str << '</xdr:twoCellAnchor>'
95
+ end
96
+ end
97
+ end
@@ -1,37 +1,37 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
- # the ValAxis class defines a chart value axis.
4
- class ValAxis < Axis
5
-
6
- # This element specifies how the value axis crosses the category axis.
7
- # must be one of [:between, :midCat]
8
- # @return [Symbol]
9
- attr_reader :cross_between
10
- alias :crossBetween :cross_between
11
-
12
- # Creates a new ValAxis object
13
- # @option options [Symbol] crosses_between
14
- def initialize(options={})
15
- self.cross_between = :between
16
- super(options)
17
- end
18
-
19
- # @see cross_between
20
- def cross_between=(v)
21
- RestrictionValidator.validate "ValAxis.cross_between", [:between, :midCat], v
22
- @cross_between = v
23
- end
24
- alias :crossBetween= :cross_between=
25
-
26
- # Serializes the object
27
- # @param [String] str
28
- # @return [String]
29
- def to_xml_string(str = '')
30
- str << '<c:valAx>'
31
- super(str)
32
- str << ('<c:crossBetween val="' << @cross_between.to_s << '"/>')
33
- str << '</c:valAx>'
34
- end
35
-
36
- end
37
- end
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # the ValAxis class defines a chart value axis.
4
+ class ValAxis < Axis
5
+
6
+ # This element specifies how the value axis crosses the category axis.
7
+ # must be one of [:between, :midCat]
8
+ # @return [Symbol]
9
+ attr_reader :cross_between
10
+ alias :crossBetween :cross_between
11
+
12
+ # Creates a new ValAxis object
13
+ # @option options [Symbol] crosses_between
14
+ def initialize(options={})
15
+ self.cross_between = :between
16
+ super(options)
17
+ end
18
+
19
+ # @see cross_between
20
+ def cross_between=(v)
21
+ RestrictionValidator.validate "ValAxis.cross_between", [:between, :midCat], v
22
+ @cross_between = v
23
+ end
24
+ alias :crossBetween= :cross_between=
25
+
26
+ # Serializes the object
27
+ # @param [String] str
28
+ # @return [String]
29
+ def to_xml_string(str = '')
30
+ str << '<c:valAx>'
31
+ super(str)
32
+ str << ('<c:crossBetween val="' << @cross_between.to_s << '"/>')
33
+ str << '</c:valAx>'
34
+ end
35
+
36
+ end
37
+ end
@@ -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
+ # 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,42 +1,42 @@
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
+
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