caxlsx 3.2.0 → 3.3.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 (300) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +385 -354
  5. data/LICENSE +21 -21
  6. data/README.md +165 -168
  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 -148
  21. data/lib/axlsx/drawing/bar_chart.rb +138 -138
  22. data/lib/axlsx/drawing/bar_series.rb +97 -97
  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 +299 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +91 -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 -129
  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 +107 -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 +398 -388
  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 -73
  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 +535 -494
  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 +416 -410
  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 +425 -395
  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/border_creator.rb +76 -0
  98. data/lib/axlsx/workbook/worksheet/break.rb +35 -35
  99. data/lib/axlsx/workbook/worksheet/cell.rb +532 -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 +18 -18
  103. data/lib/axlsx/workbook/worksheet/col.rb +145 -145
  104. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
  105. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
  106. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  107. data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
  108. data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
  110. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
  111. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
  112. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
  113. data/lib/axlsx/workbook/worksheet/data_validation.rb +267 -246
  114. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
  115. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
  116. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
  117. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
  118. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
  119. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  120. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
  121. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  122. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
  123. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
  124. data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
  125. data/lib/axlsx/workbook/worksheet/pivot_table.rb +335 -296
  126. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
  127. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
  128. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
  129. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
  130. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  131. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
  132. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
  133. data/lib/axlsx/workbook/worksheet/row.rb +164 -164
  134. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
  135. data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
  136. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
  137. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
  138. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  139. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
  140. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
  141. data/lib/axlsx/workbook/worksheet/table.rb +102 -102
  142. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
  143. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  144. data/lib/axlsx/workbook/worksheet/worksheet.rb +829 -786
  145. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  146. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
  147. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
  148. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  149. data/lib/axlsx.rb +204 -185
  150. data/lib/caxlsx.rb +2 -2
  151. data/lib/schema/dc.xsd +118 -118
  152. data/lib/schema/dcmitype.xsd +51 -51
  153. data/lib/schema/dcterms.xsd +331 -331
  154. data/lib/schema/dml-chartDrawing.xsd +146 -146
  155. data/lib/schema/dml-compatibility.xsd +14 -14
  156. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  157. data/lib/schema/dml-main.xsd +3048 -3048
  158. data/lib/schema/dml-picture.xsd +23 -23
  159. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  160. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  161. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  162. data/lib/schema/shared-bibliography.xsd +144 -144
  163. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  164. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  165. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  166. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  167. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  168. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  169. data/lib/schema/shared-relationshipReference.xsd +25 -25
  170. data/lib/schema/vml-main.xsd +569 -569
  171. data/lib/schema/vml-officeDrawing.xsd +509 -509
  172. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  173. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  174. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  175. data/lib/schema/xml.xsd +116 -116
  176. metadata +5 -252
  177. data/test/benchmark.rb +0 -72
  178. data/test/content_type/tc_content_type.rb +0 -76
  179. data/test/content_type/tc_default.rb +0 -16
  180. data/test/content_type/tc_override.rb +0 -14
  181. data/test/doc_props/tc_app.rb +0 -43
  182. data/test/doc_props/tc_core.rb +0 -42
  183. data/test/drawing/tc_area_chart.rb +0 -39
  184. data/test/drawing/tc_area_series.rb +0 -71
  185. data/test/drawing/tc_axes.rb +0 -8
  186. data/test/drawing/tc_axis.rb +0 -112
  187. data/test/drawing/tc_bar_3D_chart.rb +0 -86
  188. data/test/drawing/tc_bar_chart.rb +0 -86
  189. data/test/drawing/tc_bar_series.rb +0 -46
  190. data/test/drawing/tc_bubble_chart.rb +0 -44
  191. data/test/drawing/tc_bubble_series.rb +0 -21
  192. data/test/drawing/tc_cat_axis.rb +0 -31
  193. data/test/drawing/tc_cat_axis_data.rb +0 -27
  194. data/test/drawing/tc_chart.rb +0 -123
  195. data/test/drawing/tc_d_lbls.rb +0 -57
  196. data/test/drawing/tc_data_source.rb +0 -23
  197. data/test/drawing/tc_drawing.rb +0 -80
  198. data/test/drawing/tc_graphic_frame.rb +0 -27
  199. data/test/drawing/tc_hyperlink.rb +0 -64
  200. data/test/drawing/tc_line_3d_chart.rb +0 -47
  201. data/test/drawing/tc_line_chart.rb +0 -39
  202. data/test/drawing/tc_line_series.rb +0 -71
  203. data/test/drawing/tc_marker.rb +0 -44
  204. data/test/drawing/tc_named_axis_data.rb +0 -27
  205. data/test/drawing/tc_num_data.rb +0 -31
  206. data/test/drawing/tc_num_val.rb +0 -29
  207. data/test/drawing/tc_one_cell_anchor.rb +0 -66
  208. data/test/drawing/tc_pic.rb +0 -103
  209. data/test/drawing/tc_picture_locking.rb +0 -72
  210. data/test/drawing/tc_pie_3D_chart.rb +0 -28
  211. data/test/drawing/tc_pie_series.rb +0 -33
  212. data/test/drawing/tc_scaling.rb +0 -36
  213. data/test/drawing/tc_scatter_chart.rb +0 -48
  214. data/test/drawing/tc_scatter_series.rb +0 -74
  215. data/test/drawing/tc_ser_axis.rb +0 -31
  216. data/test/drawing/tc_series.rb +0 -23
  217. data/test/drawing/tc_series_title.rb +0 -54
  218. data/test/drawing/tc_str_data.rb +0 -18
  219. data/test/drawing/tc_str_val.rb +0 -30
  220. data/test/drawing/tc_title.rb +0 -70
  221. data/test/drawing/tc_two_cell_anchor.rb +0 -36
  222. data/test/drawing/tc_val_axis.rb +0 -24
  223. data/test/drawing/tc_view_3D.rb +0 -54
  224. data/test/drawing/tc_vml_drawing.rb +0 -25
  225. data/test/drawing/tc_vml_shape.rb +0 -106
  226. data/test/fixtures/image1.gif +0 -0
  227. data/test/fixtures/image1.jpeg +0 -0
  228. data/test/fixtures/image1.jpg +0 -0
  229. data/test/fixtures/image1.png +0 -0
  230. data/test/fixtures/image1_fake.jpg +0 -0
  231. data/test/profile.rb +0 -24
  232. data/test/rels/tc_relationship.rb +0 -52
  233. data/test/rels/tc_relationships.rb +0 -37
  234. data/test/stylesheet/tc_border.rb +0 -37
  235. data/test/stylesheet/tc_border_pr.rb +0 -32
  236. data/test/stylesheet/tc_cell_alignment.rb +0 -81
  237. data/test/stylesheet/tc_cell_protection.rb +0 -29
  238. data/test/stylesheet/tc_cell_style.rb +0 -57
  239. data/test/stylesheet/tc_color.rb +0 -43
  240. data/test/stylesheet/tc_dxf.rb +0 -81
  241. data/test/stylesheet/tc_fill.rb +0 -18
  242. data/test/stylesheet/tc_font.rb +0 -133
  243. data/test/stylesheet/tc_gradient_fill.rb +0 -72
  244. data/test/stylesheet/tc_gradient_stop.rb +0 -31
  245. data/test/stylesheet/tc_num_fmt.rb +0 -30
  246. data/test/stylesheet/tc_pattern_fill.rb +0 -43
  247. data/test/stylesheet/tc_styles.rb +0 -309
  248. data/test/stylesheet/tc_table_style.rb +0 -44
  249. data/test/stylesheet/tc_table_style_element.rb +0 -45
  250. data/test/stylesheet/tc_table_styles.rb +0 -29
  251. data/test/stylesheet/tc_xf.rb +0 -120
  252. data/test/tc_axlsx.rb +0 -109
  253. data/test/tc_helper.rb +0 -10
  254. data/test/tc_package.rb +0 -317
  255. data/test/util/tc_mime_type_utils.rb +0 -13
  256. data/test/util/tc_serialized_attributes.rb +0 -19
  257. data/test/util/tc_simple_typed_list.rb +0 -77
  258. data/test/util/tc_validators.rb +0 -210
  259. data/test/workbook/tc_defined_name.rb +0 -49
  260. data/test/workbook/tc_shared_strings_table.rb +0 -59
  261. data/test/workbook/tc_workbook.rb +0 -165
  262. data/test/workbook/tc_workbook_view.rb +0 -50
  263. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
  264. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
  265. data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
  266. data/test/workbook/worksheet/tc_break.rb +0 -49
  267. data/test/workbook/worksheet/tc_cell.rb +0 -465
  268. data/test/workbook/worksheet/tc_cfvo.rb +0 -31
  269. data/test/workbook/worksheet/tc_col.rb +0 -93
  270. data/test/workbook/worksheet/tc_color_scale.rb +0 -58
  271. data/test/workbook/worksheet/tc_comment.rb +0 -72
  272. data/test/workbook/worksheet/tc_comments.rb +0 -57
  273. data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
  274. data/test/workbook/worksheet/tc_data_bar.rb +0 -46
  275. data/test/workbook/worksheet/tc_data_validation.rb +0 -265
  276. data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
  277. data/test/workbook/worksheet/tc_header_footer.rb +0 -151
  278. data/test/workbook/worksheet/tc_icon_set.rb +0 -45
  279. data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
  280. data/test/workbook/worksheet/tc_page_margins.rb +0 -97
  281. data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
  282. data/test/workbook/worksheet/tc_page_setup.rb +0 -143
  283. data/test/workbook/worksheet/tc_pane.rb +0 -54
  284. data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
  285. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
  286. data/test/workbook/worksheet/tc_print_options.rb +0 -72
  287. data/test/workbook/worksheet/tc_protected_range.rb +0 -17
  288. data/test/workbook/worksheet/tc_rich_text.rb +0 -44
  289. data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
  290. data/test/workbook/worksheet/tc_row.rb +0 -160
  291. data/test/workbook/worksheet/tc_selection.rb +0 -55
  292. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
  293. data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
  294. data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
  295. data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
  296. data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
  297. data/test/workbook/worksheet/tc_table.rb +0 -77
  298. data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
  299. data/test/workbook/worksheet/tc_worksheet.rb +0 -632
  300. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
@@ -1,211 +1,211 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
- # a Pic object represents an image in your worksheet
4
- # Worksheet#add_image is the recommended way to manage images in your sheets
5
- # @see Worksheet#add_image
6
- class Pic
7
-
8
- include Axlsx::OptionsParser
9
-
10
- # Creates a new Pic(ture) object
11
- # @param [Anchor] anchor the anchor that holds this image
12
- # @option options [String] :name
13
- # @option options [String] :descr
14
- # @option options [String] :image_src
15
- # @option options [Array] :start_at
16
- # @option options [Integer] :width
17
- # @option options [Integer] :height
18
- # @option options [Float] :opacity - set the picture opacity, accepts a value between 0.0 and 1.0
19
- def initialize(anchor, options={})
20
- @anchor = anchor
21
- @hyperlink = nil
22
- @anchor.drawing.worksheet.workbook.images << self
23
- parse_options options
24
- start_at(*options[:start_at]) if options[:start_at]
25
- yield self if block_given?
26
- @picture_locking = PictureLocking.new(options)
27
- @opacity = (options[:opacity] * 100000).round if options[:opacity]
28
- end
29
-
30
- # allowed mime types
31
- ALLOWED_MIME_TYPES = %w(image/jpeg image/png image/gif)
32
-
33
- # The name to use for this picture
34
- # @return [String]
35
- attr_reader :name
36
-
37
- # A description of the picture
38
- # @return [String]
39
- attr_reader :descr
40
-
41
- # The path to the image you want to include
42
- # Only local images are supported at this time.
43
- # @return [String]
44
- attr_reader :image_src
45
-
46
- # The anchor for this image
47
- # @return [OneCellAnchor]
48
- attr_reader :anchor
49
-
50
- # The picture locking attributes for this picture
51
- attr_reader :picture_locking
52
-
53
- attr_reader :hyperlink
54
-
55
- # Picture opacity
56
- # @return [Integer]
57
- attr_reader :opacity
58
-
59
- # sets or updates a hyperlink for this image.
60
- # @param [String] v The href value for the hyper link
61
- # @option options @see Hyperlink#initialize All options available to the Hyperlink class apply - however href will be overridden with the v parameter value.
62
- def hyperlink=(v, options={})
63
- options[:href] = v
64
- if hyperlink.is_a?(Hyperlink)
65
- options.each do |o|
66
- hyperlink.send("#{o[0]}=", o[1]) if hyperlink.respond_to? "#{o[0]}="
67
- end
68
- else
69
- @hyperlink = Hyperlink.new(self, options)
70
- end
71
- hyperlink
72
- end
73
-
74
- def image_src=(v)
75
- Axlsx::validate_string(v)
76
- RestrictionValidator.validate 'Pic.image_src', ALLOWED_MIME_TYPES, MimeTypeUtils.get_mime_type(v)
77
- raise ArgumentError, "File does not exist" unless File.exist?(v)
78
- @image_src = v
79
- end
80
-
81
- # @see name
82
- def name=(v) Axlsx::validate_string(v); @name = v; end
83
-
84
- # @see descr
85
- def descr=(v) Axlsx::validate_string(v); @descr = v; end
86
-
87
- # The file name of image_src without any path information
88
- # @return [String]
89
- def file_name
90
- File.basename(image_src) unless image_src.nil?
91
- end
92
-
93
- # returns the extension of image_src without the preceeding '.'
94
- # @return [String]
95
- def extname
96
- File.extname(image_src).delete('.') unless image_src.nil?
97
- end
98
-
99
- # The index of this image in the workbooks images collections
100
- # @return [Index]
101
- def index
102
- @anchor.drawing.worksheet.workbook.images.index(self)
103
- end
104
-
105
- # The part name for this image used in serialization and relationship building
106
- # @return [String]
107
- def pn
108
- "#{IMAGE_PN % [(index+1), extname]}"
109
- end
110
-
111
- # The relationship object for this pic.
112
- # @return [Relationship]
113
- def relationship
114
- Relationship.new(self, IMAGE_R, "../#{pn}")
115
- end
116
-
117
- # providing access to the anchor's width attribute
118
- # @see OneCellAnchor.width
119
- def width
120
- return unless @anchor.is_a?(OneCellAnchor)
121
- @anchor.width
122
- end
123
-
124
- # @see width
125
- def width=(v)
126
- use_one_cell_anchor unless @anchor.is_a?(OneCellAnchor)
127
- @anchor.width = v
128
- end
129
-
130
- # providing access to update the anchor's height attribute
131
- # @see OneCellAnchor.width
132
- # @note this is a noop if you are using a TwoCellAnchor
133
- def height
134
- @anchor.height
135
- end
136
-
137
- # @see height
138
- # @note This is a noop if you are using a TwoCellAnchor
139
- def height=(v)
140
- use_one_cell_anchor unless @anchor.is_a?(OneCellAnchor)
141
- @anchor.height = v
142
- end
143
-
144
- # This is a short cut method to set the start anchor position
145
- # If you need finer granularity in positioning use
146
- # graphic_frame.anchor.from.colOff / rowOff
147
- # @param [Integer] x The column
148
- # @param [Integer] y The row
149
- # @return [Marker]
150
- def start_at(x, y=nil)
151
- @anchor.start_at x, y
152
- @anchor.from
153
- end
154
-
155
- # noop if not using a two cell anchor
156
- # @param [Integer] x The column
157
- # @param [Integer] y The row
158
- # @return [Marker]
159
- def end_at(x, y=nil)
160
- use_two_cell_anchor unless @anchor.is_a?(TwoCellAnchor)
161
- @anchor.end_at x, y
162
- @anchor.to
163
- end
164
-
165
- # Serializes the object
166
- # @param [String] str
167
- # @return [String]
168
- def to_xml_string(str = '')
169
- str << '<xdr:pic>'
170
- str << '<xdr:nvPicPr>'
171
- str << ('<xdr:cNvPr id="2" name="' << name.to_s << '" descr="' << descr.to_s << '">')
172
- hyperlink.to_xml_string(str) if hyperlink.is_a?(Hyperlink)
173
- str << '</xdr:cNvPr><xdr:cNvPicPr>'
174
- picture_locking.to_xml_string(str)
175
- str << '</xdr:cNvPicPr></xdr:nvPicPr>'
176
- str << '<xdr:blipFill>'
177
- str << ('<a:blip xmlns:r ="' << XML_NS_R << '" r:embed="' << relationship.Id << '">')
178
- if opacity
179
- str << "<a:alphaModFix amt=\"#{opacity}\"/>"
180
- end
181
- str << '</a:blip>'
182
- str << '<a:stretch><a:fillRect/></a:stretch></xdr:blipFill><xdr:spPr>'
183
- str << '<a:xfrm><a:off x="0" y="0"/><a:ext cx="2336800" cy="2161540"/></a:xfrm>'
184
- str << '<a:prstGeom prst="rect"><a:avLst/></a:prstGeom></xdr:spPr></xdr:pic>'
185
- end
186
-
187
- private
188
-
189
- # Changes the anchor to a one cell anchor.
190
- def use_one_cell_anchor
191
- return if @anchor.is_a?(OneCellAnchor)
192
- new_anchor = OneCellAnchor.new(@anchor.drawing, :start_at => [@anchor.from.col, @anchor.from.row])
193
- swap_anchor(new_anchor)
194
- end
195
-
196
- #changes the anchor type to a two cell anchor
197
- def use_two_cell_anchor
198
- return if @anchor.is_a?(TwoCellAnchor)
199
- new_anchor = TwoCellAnchor.new(@anchor.drawing, :start_at => [@anchor.from.col, @anchor.from.row])
200
- swap_anchor(new_anchor)
201
- end
202
-
203
- # refactoring of swapping code, law of demeter be damned!
204
- def swap_anchor(new_anchor)
205
- new_anchor.drawing.anchors.delete(new_anchor)
206
- @anchor.drawing.anchors[@anchor.drawing.anchors.index(@anchor)] = new_anchor
207
- new_anchor.instance_variable_set "@object", @anchor.object
208
- @anchor = new_anchor
209
- end
210
- end
211
- end
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # a Pic object represents an image in your worksheet
4
+ # Worksheet#add_image is the recommended way to manage images in your sheets
5
+ # @see Worksheet#add_image
6
+ class Pic
7
+
8
+ include Axlsx::OptionsParser
9
+
10
+ # Creates a new Pic(ture) object
11
+ # @param [Anchor] anchor the anchor that holds this image
12
+ # @option options [String] :name
13
+ # @option options [String] :descr
14
+ # @option options [String] :image_src
15
+ # @option options [Array] :start_at
16
+ # @option options [Integer] :width
17
+ # @option options [Integer] :height
18
+ # @option options [Float] :opacity - set the picture opacity, accepts a value between 0.0 and 1.0
19
+ def initialize(anchor, options={})
20
+ @anchor = anchor
21
+ @hyperlink = nil
22
+ @anchor.drawing.worksheet.workbook.images << self
23
+ parse_options options
24
+ start_at(*options[:start_at]) if options[:start_at]
25
+ yield self if block_given?
26
+ @picture_locking = PictureLocking.new(options)
27
+ @opacity = (options[:opacity] * 100000).round if options[:opacity]
28
+ end
29
+
30
+ # allowed mime types
31
+ ALLOWED_MIME_TYPES = %w(image/jpeg image/png image/gif)
32
+
33
+ # The name to use for this picture
34
+ # @return [String]
35
+ attr_reader :name
36
+
37
+ # A description of the picture
38
+ # @return [String]
39
+ attr_reader :descr
40
+
41
+ # The path to the image you want to include
42
+ # Only local images are supported at this time.
43
+ # @return [String]
44
+ attr_reader :image_src
45
+
46
+ # The anchor for this image
47
+ # @return [OneCellAnchor]
48
+ attr_reader :anchor
49
+
50
+ # The picture locking attributes for this picture
51
+ attr_reader :picture_locking
52
+
53
+ attr_reader :hyperlink
54
+
55
+ # Picture opacity
56
+ # @return [Integer]
57
+ attr_reader :opacity
58
+
59
+ # sets or updates a hyperlink for this image.
60
+ # @param [String] v The href value for the hyper link
61
+ # @option options @see Hyperlink#initialize All options available to the Hyperlink class apply - however href will be overridden with the v parameter value.
62
+ def hyperlink=(v, options={})
63
+ options[:href] = v
64
+ if hyperlink.is_a?(Hyperlink)
65
+ options.each do |o|
66
+ hyperlink.send("#{o[0]}=", o[1]) if hyperlink.respond_to? "#{o[0]}="
67
+ end
68
+ else
69
+ @hyperlink = Hyperlink.new(self, options)
70
+ end
71
+ hyperlink
72
+ end
73
+
74
+ def image_src=(v)
75
+ Axlsx::validate_string(v)
76
+ RestrictionValidator.validate 'Pic.image_src', ALLOWED_MIME_TYPES, MimeTypeUtils.get_mime_type(v)
77
+ raise ArgumentError, "File does not exist" unless File.exist?(v)
78
+ @image_src = v
79
+ end
80
+
81
+ # @see name
82
+ def name=(v) Axlsx::validate_string(v); @name = v; end
83
+
84
+ # @see descr
85
+ def descr=(v) Axlsx::validate_string(v); @descr = v; end
86
+
87
+ # The file name of image_src without any path information
88
+ # @return [String]
89
+ def file_name
90
+ File.basename(image_src) unless image_src.nil?
91
+ end
92
+
93
+ # returns the extension of image_src without the preceeding '.'
94
+ # @return [String]
95
+ def extname
96
+ File.extname(image_src).delete('.') unless image_src.nil?
97
+ end
98
+
99
+ # The index of this image in the workbooks images collections
100
+ # @return [Index]
101
+ def index
102
+ @anchor.drawing.worksheet.workbook.images.index(self)
103
+ end
104
+
105
+ # The part name for this image used in serialization and relationship building
106
+ # @return [String]
107
+ def pn
108
+ "#{IMAGE_PN % [(index+1), extname]}"
109
+ end
110
+
111
+ # The relationship object for this pic.
112
+ # @return [Relationship]
113
+ def relationship
114
+ Relationship.new(self, IMAGE_R, "../#{pn}")
115
+ end
116
+
117
+ # providing access to the anchor's width attribute
118
+ # @see OneCellAnchor.width
119
+ def width
120
+ return unless @anchor.is_a?(OneCellAnchor)
121
+ @anchor.width
122
+ end
123
+
124
+ # @see width
125
+ def width=(v)
126
+ use_one_cell_anchor unless @anchor.is_a?(OneCellAnchor)
127
+ @anchor.width = v
128
+ end
129
+
130
+ # providing access to update the anchor's height attribute
131
+ # @see OneCellAnchor.width
132
+ # @note this is a noop if you are using a TwoCellAnchor
133
+ def height
134
+ @anchor.height
135
+ end
136
+
137
+ # @see height
138
+ # @note This is a noop if you are using a TwoCellAnchor
139
+ def height=(v)
140
+ use_one_cell_anchor unless @anchor.is_a?(OneCellAnchor)
141
+ @anchor.height = v
142
+ end
143
+
144
+ # This is a short cut method to set the start anchor position
145
+ # If you need finer granularity in positioning use
146
+ # graphic_frame.anchor.from.colOff / rowOff
147
+ # @param [Integer] x The column
148
+ # @param [Integer] y The row
149
+ # @return [Marker]
150
+ def start_at(x, y=nil)
151
+ @anchor.start_at x, y
152
+ @anchor.from
153
+ end
154
+
155
+ # noop if not using a two cell anchor
156
+ # @param [Integer] x The column
157
+ # @param [Integer] y The row
158
+ # @return [Marker]
159
+ def end_at(x, y=nil)
160
+ use_two_cell_anchor unless @anchor.is_a?(TwoCellAnchor)
161
+ @anchor.end_at x, y
162
+ @anchor.to
163
+ end
164
+
165
+ # Serializes the object
166
+ # @param [String] str
167
+ # @return [String]
168
+ def to_xml_string(str = '')
169
+ str << '<xdr:pic>'
170
+ str << '<xdr:nvPicPr>'
171
+ str << ('<xdr:cNvPr id="2" name="' << name.to_s << '" descr="' << descr.to_s << '">')
172
+ hyperlink.to_xml_string(str) if hyperlink.is_a?(Hyperlink)
173
+ str << '</xdr:cNvPr><xdr:cNvPicPr>'
174
+ picture_locking.to_xml_string(str)
175
+ str << '</xdr:cNvPicPr></xdr:nvPicPr>'
176
+ str << '<xdr:blipFill>'
177
+ str << ('<a:blip xmlns:r ="' << XML_NS_R << '" r:embed="' << relationship.Id << '">')
178
+ if opacity
179
+ str << "<a:alphaModFix amt=\"#{opacity}\"/>"
180
+ end
181
+ str << '</a:blip>'
182
+ str << '<a:stretch><a:fillRect/></a:stretch></xdr:blipFill><xdr:spPr>'
183
+ str << '<a:xfrm><a:off x="0" y="0"/><a:ext cx="2336800" cy="2161540"/></a:xfrm>'
184
+ str << '<a:prstGeom prst="rect"><a:avLst/></a:prstGeom></xdr:spPr></xdr:pic>'
185
+ end
186
+
187
+ private
188
+
189
+ # Changes the anchor to a one cell anchor.
190
+ def use_one_cell_anchor
191
+ return if @anchor.is_a?(OneCellAnchor)
192
+ new_anchor = OneCellAnchor.new(@anchor.drawing, :start_at => [@anchor.from.col, @anchor.from.row])
193
+ swap_anchor(new_anchor)
194
+ end
195
+
196
+ #changes the anchor type to a two cell anchor
197
+ def use_two_cell_anchor
198
+ return if @anchor.is_a?(TwoCellAnchor)
199
+ new_anchor = TwoCellAnchor.new(@anchor.drawing, :start_at => [@anchor.from.col, @anchor.from.row])
200
+ swap_anchor(new_anchor)
201
+ end
202
+
203
+ # refactoring of swapping code, law of demeter be damned!
204
+ def swap_anchor(new_anchor)
205
+ new_anchor.drawing.anchors.delete(new_anchor)
206
+ @anchor.drawing.anchors[@anchor.drawing.anchors.index(@anchor)] = new_anchor
207
+ new_anchor.instance_variable_set "@object", @anchor.object
208
+ @anchor = new_anchor
209
+ end
210
+ end
211
+ end
@@ -1,42 +1,42 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
- # The picture locking class defines the locking properties for pictures in your workbook.
4
- class PictureLocking
5
-
6
- include Axlsx::OptionsParser
7
- include Axlsx::SerializedAttributes
8
- include Axlsx::Accessors
9
-
10
- boolean_attr_accessor :noGrp, :noSelect, :noRot, :noChangeAspect,
11
- :noMove, :noResize, :noEditPoints, :noAdjustHandles,
12
- :noChangeArrowheads, :noChangeShapeType
13
-
14
- serializable_attributes :noGrp, :noSelect, :noRot, :noChangeAspect,
15
- :noMove, :noResize, :noEditPoints, :noAdjustHandles,
16
- :noChangeArrowheads, :noChangeShapeType
17
-
18
- # Creates a new PictureLocking object
19
- # @option options [Boolean] noGrp
20
- # @option options [Boolean] noSelect
21
- # @option options [Boolean] noRot
22
- # @option options [Boolean] noChangeAspect
23
- # @option options [Boolean] noMove
24
- # @option options [Boolean] noResize
25
- # @option options [Boolean] noEditPoints
26
- # @option options [Boolean] noAdjustHandles
27
- # @option options [Boolean] noChangeArrowheads
28
- # @option options [Boolean] noChangeShapeType
29
- def initialize(options={})
30
- @noChangeAspect = true
31
- parse_options options
32
- end
33
-
34
- # Serializes the object
35
- # @param [String] str
36
- # @return [String]
37
- def to_xml_string(str = '')
38
- serialized_tag('a:picLocks', str)
39
- end
40
-
41
- end
42
- end
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # The picture locking class defines the locking properties for pictures in your workbook.
4
+ class PictureLocking
5
+
6
+ include Axlsx::OptionsParser
7
+ include Axlsx::SerializedAttributes
8
+ include Axlsx::Accessors
9
+
10
+ boolean_attr_accessor :noGrp, :noSelect, :noRot, :noChangeAspect,
11
+ :noMove, :noResize, :noEditPoints, :noAdjustHandles,
12
+ :noChangeArrowheads, :noChangeShapeType
13
+
14
+ serializable_attributes :noGrp, :noSelect, :noRot, :noChangeAspect,
15
+ :noMove, :noResize, :noEditPoints, :noAdjustHandles,
16
+ :noChangeArrowheads, :noChangeShapeType
17
+
18
+ # Creates a new PictureLocking object
19
+ # @option options [Boolean] noGrp
20
+ # @option options [Boolean] noSelect
21
+ # @option options [Boolean] noRot
22
+ # @option options [Boolean] noChangeAspect
23
+ # @option options [Boolean] noMove
24
+ # @option options [Boolean] noResize
25
+ # @option options [Boolean] noEditPoints
26
+ # @option options [Boolean] noAdjustHandles
27
+ # @option options [Boolean] noChangeArrowheads
28
+ # @option options [Boolean] noChangeShapeType
29
+ def initialize(options={})
30
+ @noChangeAspect = true
31
+ parse_options options
32
+ end
33
+
34
+ # Serializes the object
35
+ # @param [String] str
36
+ # @return [String]
37
+ def to_xml_string(str = '')
38
+ serialized_tag('a:picLocks', str)
39
+ end
40
+
41
+ end
42
+ end
@@ -1,47 +1,47 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
-
4
-
5
- # The Pie3DChart is a three dimentional piechart (who would have guessed?) that you can add to your worksheet.
6
- # @see Worksheet#add_chart
7
- # @see Chart#add_series
8
- # @see README for an example
9
- class Pie3DChart < Chart
10
-
11
- # Creates a new pie chart object
12
- # @param [GraphicFrame] frame The workbook that owns this chart.
13
- # @option options [Cell, String] title
14
- # @option options [Boolean] show_legend
15
- # @option options [Symbol] grouping
16
- # @option options [String] gap_depth
17
- # @option options [Integer] rot_x
18
- # @option options [String] h_percent
19
- # @option options [Integer] rot_y
20
- # @option options [String] depth_percent
21
- # @option options [Boolean] r_ang_ax
22
- # @option options [Integer] perspective
23
- # @see Chart
24
- # @see View3D
25
- def initialize(frame, options={})
26
- @vary_colors = true
27
- super(frame, options)
28
- @series_type = PieSeries
29
- @view_3D = View3D.new({:rot_x =>30, :perspective=>30}.merge(options))
30
- @d_lbls = nil
31
- end
32
-
33
- # Serializes the object
34
- # @param [String] str
35
- # @return [String]
36
- def to_xml_string(str = '')
37
- super(str) do
38
- str << '<c:pie3DChart>'
39
- str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
40
- @series.each { |ser| ser.to_xml_string(str) }
41
- d_lbls.to_xml_string(str) if @d_lbls
42
- str << '</c:pie3DChart>'
43
- end
44
- end
45
-
46
- end
47
- end
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+
4
+
5
+ # The Pie3DChart is a three dimentional piechart (who would have guessed?) that you can add to your worksheet.
6
+ # @see Worksheet#add_chart
7
+ # @see Chart#add_series
8
+ # @see README for an example
9
+ class Pie3DChart < Chart
10
+
11
+ # Creates a new pie chart object
12
+ # @param [GraphicFrame] frame The workbook that owns this chart.
13
+ # @option options [Cell, String] title
14
+ # @option options [Boolean] show_legend
15
+ # @option options [Symbol] grouping
16
+ # @option options [String] gap_depth
17
+ # @option options [Integer] rot_x
18
+ # @option options [String] h_percent
19
+ # @option options [Integer] rot_y
20
+ # @option options [String] depth_percent
21
+ # @option options [Boolean] r_ang_ax
22
+ # @option options [Integer] perspective
23
+ # @see Chart
24
+ # @see View3D
25
+ def initialize(frame, options={})
26
+ @vary_colors = true
27
+ super(frame, options)
28
+ @series_type = PieSeries
29
+ @view_3D = View3D.new({:rot_x =>30, :perspective=>30}.merge(options))
30
+ @d_lbls = nil
31
+ end
32
+
33
+ # Serializes the object
34
+ # @param [String] str
35
+ # @return [String]
36
+ def to_xml_string(str = '')
37
+ super(str) do
38
+ str << '<c:pie3DChart>'
39
+ str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
40
+ @series.each { |ser| ser.to_xml_string(str) }
41
+ d_lbls.to_xml_string(str) if @d_lbls
42
+ str << '</c:pie3DChart>'
43
+ end
44
+ end
45
+
46
+ end
47
+ end