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,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