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.
- checksums.yaml +4 -4
- data/.yardopts +9 -9
- data/.yardopts_guide +18 -18
- data/CHANGELOG.md +385 -354
- data/LICENSE +21 -21
- data/README.md +165 -168
- data/Rakefile +29 -29
- data/examples/generate.rb +15 -15
- data/lib/axlsx/content_type/abstract_content_type.rb +32 -32
- data/lib/axlsx/content_type/content_type.rb +26 -26
- data/lib/axlsx/content_type/default.rb +25 -25
- data/lib/axlsx/content_type/override.rb +25 -25
- data/lib/axlsx/doc_props/app.rb +235 -235
- data/lib/axlsx/doc_props/core.rb +39 -39
- data/lib/axlsx/drawing/area_chart.rb +99 -99
- data/lib/axlsx/drawing/area_series.rb +110 -110
- data/lib/axlsx/drawing/ax_data_source.rb +26 -26
- data/lib/axlsx/drawing/axes.rb +61 -61
- data/lib/axlsx/drawing/axis.rb +190 -190
- data/lib/axlsx/drawing/bar_3D_chart.rb +148 -148
- data/lib/axlsx/drawing/bar_chart.rb +138 -138
- data/lib/axlsx/drawing/bar_series.rb +97 -97
- data/lib/axlsx/drawing/bubble_chart.rb +59 -59
- data/lib/axlsx/drawing/bubble_series.rb +63 -63
- data/lib/axlsx/drawing/cat_axis.rb +85 -85
- data/lib/axlsx/drawing/chart.rb +299 -276
- data/lib/axlsx/drawing/d_lbls.rb +91 -90
- data/lib/axlsx/drawing/drawing.rb +167 -167
- data/lib/axlsx/drawing/graphic_frame.rb +54 -54
- data/lib/axlsx/drawing/hyperlink.rb +100 -100
- data/lib/axlsx/drawing/line_3D_chart.rb +68 -68
- data/lib/axlsx/drawing/line_chart.rb +99 -99
- data/lib/axlsx/drawing/line_series.rb +110 -110
- data/lib/axlsx/drawing/marker.rb +84 -84
- data/lib/axlsx/drawing/num_data.rb +52 -52
- data/lib/axlsx/drawing/num_data_source.rb +62 -62
- data/lib/axlsx/drawing/num_val.rb +34 -34
- data/lib/axlsx/drawing/one_cell_anchor.rb +99 -99
- data/lib/axlsx/drawing/pic.rb +211 -211
- data/lib/axlsx/drawing/picture_locking.rb +42 -42
- data/lib/axlsx/drawing/pie_3D_chart.rb +47 -47
- data/lib/axlsx/drawing/pie_series.rb +74 -74
- data/lib/axlsx/drawing/scaling.rb +60 -60
- data/lib/axlsx/drawing/scatter_chart.rb +74 -74
- data/lib/axlsx/drawing/scatter_series.rb +129 -129
- data/lib/axlsx/drawing/ser_axis.rb +45 -45
- data/lib/axlsx/drawing/series.rb +69 -69
- data/lib/axlsx/drawing/series_title.rb +25 -25
- data/lib/axlsx/drawing/str_data.rb +42 -42
- data/lib/axlsx/drawing/str_val.rb +34 -34
- data/lib/axlsx/drawing/title.rb +107 -97
- data/lib/axlsx/drawing/two_cell_anchor.rb +97 -97
- data/lib/axlsx/drawing/val_axis.rb +37 -37
- data/lib/axlsx/drawing/view_3D.rb +115 -115
- data/lib/axlsx/drawing/vml_drawing.rb +42 -42
- data/lib/axlsx/drawing/vml_shape.rb +66 -66
- data/lib/axlsx/package.rb +398 -388
- data/lib/axlsx/rels/relationship.rb +130 -130
- data/lib/axlsx/rels/relationships.rb +32 -32
- data/lib/axlsx/stylesheet/border.rb +73 -73
- data/lib/axlsx/stylesheet/border_pr.rb +71 -71
- data/lib/axlsx/stylesheet/cell_alignment.rb +132 -132
- data/lib/axlsx/stylesheet/cell_protection.rb +41 -41
- data/lib/axlsx/stylesheet/cell_style.rb +72 -72
- data/lib/axlsx/stylesheet/color.rb +76 -76
- data/lib/axlsx/stylesheet/dxf.rb +79 -79
- data/lib/axlsx/stylesheet/fill.rb +35 -35
- data/lib/axlsx/stylesheet/font.rb +156 -156
- data/lib/axlsx/stylesheet/gradient_fill.rb +103 -103
- data/lib/axlsx/stylesheet/gradient_stop.rb +37 -37
- data/lib/axlsx/stylesheet/num_fmt.rb +86 -86
- data/lib/axlsx/stylesheet/pattern_fill.rb +73 -73
- data/lib/axlsx/stylesheet/styles.rb +535 -494
- data/lib/axlsx/stylesheet/table_style.rb +54 -54
- data/lib/axlsx/stylesheet/table_style_element.rb +77 -77
- data/lib/axlsx/stylesheet/table_styles.rb +46 -46
- data/lib/axlsx/stylesheet/xf.rb +147 -147
- data/lib/axlsx/util/accessors.rb +64 -64
- data/lib/axlsx/util/constants.rb +416 -410
- data/lib/axlsx/util/mime_type_utils.rb +11 -11
- data/lib/axlsx/util/options_parser.rb +16 -16
- data/lib/axlsx/util/serialized_attributes.rb +89 -89
- data/lib/axlsx/util/simple_typed_list.rb +179 -179
- data/lib/axlsx/util/storage.rb +146 -146
- data/lib/axlsx/util/validators.rb +312 -312
- data/lib/axlsx/util/zip_command.rb +73 -73
- data/lib/axlsx/version.rb +5 -5
- data/lib/axlsx/workbook/defined_name.rb +128 -128
- data/lib/axlsx/workbook/defined_names.rb +21 -21
- data/lib/axlsx/workbook/shared_strings_table.rb +77 -77
- data/lib/axlsx/workbook/workbook.rb +425 -395
- data/lib/axlsx/workbook/workbook_view.rb +80 -80
- data/lib/axlsx/workbook/workbook_views.rb +22 -22
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -77
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -244
- data/lib/axlsx/workbook/worksheet/border_creator.rb +76 -0
- data/lib/axlsx/workbook/worksheet/break.rb +35 -35
- data/lib/axlsx/workbook/worksheet/cell.rb +532 -506
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
- data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
- data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
- data/lib/axlsx/workbook/worksheet/col.rb +145 -145
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
- data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
- data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
- data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
- data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
- data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
- data/lib/axlsx/workbook/worksheet/data_validation.rb +267 -246
- data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
- data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
- data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
- data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
- data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
- data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +335 -296
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
- data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
- data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
- data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
- data/lib/axlsx/workbook/worksheet/row.rb +164 -164
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
- data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
- data/lib/axlsx/workbook/worksheet/table.rb +102 -102
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
- data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
- data/lib/axlsx/workbook/worksheet/worksheet.rb +829 -786
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
- data/lib/axlsx.rb +204 -185
- data/lib/caxlsx.rb +2 -2
- data/lib/schema/dc.xsd +118 -118
- data/lib/schema/dcmitype.xsd +51 -51
- data/lib/schema/dcterms.xsd +331 -331
- data/lib/schema/dml-chartDrawing.xsd +146 -146
- data/lib/schema/dml-compatibility.xsd +14 -14
- data/lib/schema/dml-lockedCanvas.xsd +11 -11
- data/lib/schema/dml-main.xsd +3048 -3048
- data/lib/schema/dml-picture.xsd +23 -23
- data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
- data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
- data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
- data/lib/schema/shared-bibliography.xsd +144 -144
- data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
- data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
- data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
- data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
- data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
- data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
- data/lib/schema/shared-relationshipReference.xsd +25 -25
- data/lib/schema/vml-main.xsd +569 -569
- data/lib/schema/vml-officeDrawing.xsd +509 -509
- data/lib/schema/vml-presentationDrawing.xsd +12 -12
- data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
- data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
- data/lib/schema/xml.xsd +116 -116
- metadata +5 -252
- data/test/benchmark.rb +0 -72
- data/test/content_type/tc_content_type.rb +0 -76
- data/test/content_type/tc_default.rb +0 -16
- data/test/content_type/tc_override.rb +0 -14
- data/test/doc_props/tc_app.rb +0 -43
- data/test/doc_props/tc_core.rb +0 -42
- data/test/drawing/tc_area_chart.rb +0 -39
- data/test/drawing/tc_area_series.rb +0 -71
- data/test/drawing/tc_axes.rb +0 -8
- data/test/drawing/tc_axis.rb +0 -112
- data/test/drawing/tc_bar_3D_chart.rb +0 -86
- data/test/drawing/tc_bar_chart.rb +0 -86
- data/test/drawing/tc_bar_series.rb +0 -46
- data/test/drawing/tc_bubble_chart.rb +0 -44
- data/test/drawing/tc_bubble_series.rb +0 -21
- data/test/drawing/tc_cat_axis.rb +0 -31
- data/test/drawing/tc_cat_axis_data.rb +0 -27
- data/test/drawing/tc_chart.rb +0 -123
- data/test/drawing/tc_d_lbls.rb +0 -57
- data/test/drawing/tc_data_source.rb +0 -23
- data/test/drawing/tc_drawing.rb +0 -80
- data/test/drawing/tc_graphic_frame.rb +0 -27
- data/test/drawing/tc_hyperlink.rb +0 -64
- data/test/drawing/tc_line_3d_chart.rb +0 -47
- data/test/drawing/tc_line_chart.rb +0 -39
- data/test/drawing/tc_line_series.rb +0 -71
- data/test/drawing/tc_marker.rb +0 -44
- data/test/drawing/tc_named_axis_data.rb +0 -27
- data/test/drawing/tc_num_data.rb +0 -31
- data/test/drawing/tc_num_val.rb +0 -29
- data/test/drawing/tc_one_cell_anchor.rb +0 -66
- data/test/drawing/tc_pic.rb +0 -103
- data/test/drawing/tc_picture_locking.rb +0 -72
- data/test/drawing/tc_pie_3D_chart.rb +0 -28
- data/test/drawing/tc_pie_series.rb +0 -33
- data/test/drawing/tc_scaling.rb +0 -36
- data/test/drawing/tc_scatter_chart.rb +0 -48
- data/test/drawing/tc_scatter_series.rb +0 -74
- data/test/drawing/tc_ser_axis.rb +0 -31
- data/test/drawing/tc_series.rb +0 -23
- data/test/drawing/tc_series_title.rb +0 -54
- data/test/drawing/tc_str_data.rb +0 -18
- data/test/drawing/tc_str_val.rb +0 -30
- data/test/drawing/tc_title.rb +0 -70
- data/test/drawing/tc_two_cell_anchor.rb +0 -36
- data/test/drawing/tc_val_axis.rb +0 -24
- data/test/drawing/tc_view_3D.rb +0 -54
- data/test/drawing/tc_vml_drawing.rb +0 -25
- data/test/drawing/tc_vml_shape.rb +0 -106
- data/test/fixtures/image1.gif +0 -0
- data/test/fixtures/image1.jpeg +0 -0
- data/test/fixtures/image1.jpg +0 -0
- data/test/fixtures/image1.png +0 -0
- data/test/fixtures/image1_fake.jpg +0 -0
- data/test/profile.rb +0 -24
- data/test/rels/tc_relationship.rb +0 -52
- data/test/rels/tc_relationships.rb +0 -37
- data/test/stylesheet/tc_border.rb +0 -37
- data/test/stylesheet/tc_border_pr.rb +0 -32
- data/test/stylesheet/tc_cell_alignment.rb +0 -81
- data/test/stylesheet/tc_cell_protection.rb +0 -29
- data/test/stylesheet/tc_cell_style.rb +0 -57
- data/test/stylesheet/tc_color.rb +0 -43
- data/test/stylesheet/tc_dxf.rb +0 -81
- data/test/stylesheet/tc_fill.rb +0 -18
- data/test/stylesheet/tc_font.rb +0 -133
- data/test/stylesheet/tc_gradient_fill.rb +0 -72
- data/test/stylesheet/tc_gradient_stop.rb +0 -31
- data/test/stylesheet/tc_num_fmt.rb +0 -30
- data/test/stylesheet/tc_pattern_fill.rb +0 -43
- data/test/stylesheet/tc_styles.rb +0 -309
- data/test/stylesheet/tc_table_style.rb +0 -44
- data/test/stylesheet/tc_table_style_element.rb +0 -45
- data/test/stylesheet/tc_table_styles.rb +0 -29
- data/test/stylesheet/tc_xf.rb +0 -120
- data/test/tc_axlsx.rb +0 -109
- data/test/tc_helper.rb +0 -10
- data/test/tc_package.rb +0 -317
- data/test/util/tc_mime_type_utils.rb +0 -13
- data/test/util/tc_serialized_attributes.rb +0 -19
- data/test/util/tc_simple_typed_list.rb +0 -77
- data/test/util/tc_validators.rb +0 -210
- data/test/workbook/tc_defined_name.rb +0 -49
- data/test/workbook/tc_shared_strings_table.rb +0 -59
- data/test/workbook/tc_workbook.rb +0 -165
- data/test/workbook/tc_workbook_view.rb +0 -50
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
- data/test/workbook/worksheet/tc_break.rb +0 -49
- data/test/workbook/worksheet/tc_cell.rb +0 -465
- data/test/workbook/worksheet/tc_cfvo.rb +0 -31
- data/test/workbook/worksheet/tc_col.rb +0 -93
- data/test/workbook/worksheet/tc_color_scale.rb +0 -58
- data/test/workbook/worksheet/tc_comment.rb +0 -72
- data/test/workbook/worksheet/tc_comments.rb +0 -57
- data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
- data/test/workbook/worksheet/tc_data_bar.rb +0 -46
- data/test/workbook/worksheet/tc_data_validation.rb +0 -265
- data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
- data/test/workbook/worksheet/tc_header_footer.rb +0 -151
- data/test/workbook/worksheet/tc_icon_set.rb +0 -45
- data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
- data/test/workbook/worksheet/tc_page_margins.rb +0 -97
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
- data/test/workbook/worksheet/tc_page_setup.rb +0 -143
- data/test/workbook/worksheet/tc_pane.rb +0 -54
- data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
- data/test/workbook/worksheet/tc_print_options.rb +0 -72
- data/test/workbook/worksheet/tc_protected_range.rb +0 -17
- data/test/workbook/worksheet/tc_rich_text.rb +0 -44
- data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
- data/test/workbook/worksheet/tc_row.rb +0 -160
- data/test/workbook/worksheet/tc_selection.rb +0 -55
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
- data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
- data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
- data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
- data/test/workbook/worksheet/tc_table.rb +0 -77
- data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
- data/test/workbook/worksheet/tc_worksheet.rb +0 -632
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
|
-
module Axlsx
|
|
3
|
-
# 3D attributes for a chart.
|
|
4
|
-
class View3D
|
|
5
|
-
|
|
6
|
-
include Axlsx::OptionsParser
|
|
7
|
-
|
|
8
|
-
# Creates a new View3D for charts
|
|
9
|
-
# @option options [Integer] rot_x
|
|
10
|
-
# @option options [String] h_percent
|
|
11
|
-
# @option options [Integer] rot_y
|
|
12
|
-
# @option options [String] depth_percent
|
|
13
|
-
# @option options [Boolean] r_ang_ax
|
|
14
|
-
# @option options [Integer] perspective
|
|
15
|
-
def initialize(options={})
|
|
16
|
-
@rot_x, @h_percent, @rot_y, @depth_percent, @r_ang_ax, @perspective = nil, nil, nil, nil, nil, nil
|
|
17
|
-
parse_options options
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# Validation for hPercent
|
|
21
|
-
H_PERCENT_REGEX = /0*(([5-9])|([1-9][0-9])|([1-4][0-9][0-9])|500)/
|
|
22
|
-
|
|
23
|
-
# validation for depthPercent
|
|
24
|
-
DEPTH_PERCENT_REGEX = /0*(([2-9][0-9])|([1-9][0-9][0-9])|(1[0-9][0-9][0-9])|2000)/
|
|
25
|
-
|
|
26
|
-
# x rotation for the chart
|
|
27
|
-
# must be between -90 and 90
|
|
28
|
-
# @return [Integer]
|
|
29
|
-
attr_reader :rot_x
|
|
30
|
-
alias :rotX :rot_x
|
|
31
|
-
|
|
32
|
-
# height of chart as % of chart width
|
|
33
|
-
# must be between 5% and 500%
|
|
34
|
-
# @return [String]
|
|
35
|
-
attr_reader :h_percent
|
|
36
|
-
alias :hPercent :h_percent
|
|
37
|
-
|
|
38
|
-
# y rotation for the chart
|
|
39
|
-
# must be between 0 and 360
|
|
40
|
-
# @return [Integer]
|
|
41
|
-
attr_reader :rot_y
|
|
42
|
-
alias :rotY :rot_y
|
|
43
|
-
|
|
44
|
-
# depth or chart as % of chart width
|
|
45
|
-
# must be between 20% and 2000%
|
|
46
|
-
# @return [String]
|
|
47
|
-
attr_reader :depth_percent
|
|
48
|
-
alias :depthPercent :depth_percent
|
|
49
|
-
|
|
50
|
-
# Chart axis are at right angles
|
|
51
|
-
# @return [Boolean]
|
|
52
|
-
attr_reader :r_ang_ax
|
|
53
|
-
alias :rAngAx :r_ang_ax
|
|
54
|
-
|
|
55
|
-
# field of view angle
|
|
56
|
-
# @return [Integer]
|
|
57
|
-
attr_reader :perspective
|
|
58
|
-
|
|
59
|
-
# @see rot_x
|
|
60
|
-
def rot_x=(v)
|
|
61
|
-
RangeValidator.validate "View3D.rot_x", -90, 90, v
|
|
62
|
-
@rot_x = v
|
|
63
|
-
end
|
|
64
|
-
alias :rotX= :rot_x=
|
|
65
|
-
|
|
66
|
-
# @see h_percent
|
|
67
|
-
def h_percent=(v)
|
|
68
|
-
RegexValidator.validate "#{self.class}.h_percent", H_PERCENT_REGEX, v
|
|
69
|
-
@h_percent = v
|
|
70
|
-
end
|
|
71
|
-
alias :hPercent= :h_percent=
|
|
72
|
-
|
|
73
|
-
# @see rot_y
|
|
74
|
-
def rot_y=(v)
|
|
75
|
-
RangeValidator.validate "View3D.rot_y", 0, 360, v
|
|
76
|
-
@rot_y = v
|
|
77
|
-
end
|
|
78
|
-
alias :rotY= :rot_y=
|
|
79
|
-
|
|
80
|
-
# @see depth_percent
|
|
81
|
-
def depth_percent=(v) RegexValidator.validate "#{self.class}.depth_percent", DEPTH_PERCENT_REGEX, v; @depth_percent = v; end
|
|
82
|
-
alias :depthPercent= :depth_percent=
|
|
83
|
-
|
|
84
|
-
# @see r_ang_ax
|
|
85
|
-
def r_ang_ax=(v) Axlsx::validate_boolean(v); @r_ang_ax = v; end
|
|
86
|
-
alias :rAngAx= :r_ang_ax=
|
|
87
|
-
|
|
88
|
-
# @see perspective
|
|
89
|
-
def perspective=(v)
|
|
90
|
-
RangeValidator.validate "View3D.perspective", 0, 240, v
|
|
91
|
-
@perspective = v
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
# DataTypeValidator.validate "#{self.class}.perspective", [Integer], v, lambda {|arg| arg >= 0 && arg <= 240 }; @perspective = v; end
|
|
95
|
-
|
|
96
|
-
# Serializes the object
|
|
97
|
-
# @param [String] str
|
|
98
|
-
# @return [String]
|
|
99
|
-
def to_xml_string(str = '')
|
|
100
|
-
str << '<c:view3D>'
|
|
101
|
-
%w(rot_x h_percent rot_y depth_percent r_ang_ax perspective).each do |key|
|
|
102
|
-
str << element_for_attribute(key, 'c')
|
|
103
|
-
end
|
|
104
|
-
str << '</c:view3D>'
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
private
|
|
108
|
-
# Note: move this to Axlsx module if we find the smae pattern elsewhere.
|
|
109
|
-
def element_for_attribute(name, namespace='')
|
|
110
|
-
val =
|
|
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 = Axlsx.instance_values_for(self)[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
|
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
|
|
3
|
-
# A VmlShape is used to position and render a comment.
|
|
4
|
-
class VmlShape
|
|
5
|
-
|
|
6
|
-
include Axlsx::OptionsParser
|
|
7
|
-
include Axlsx::Accessors
|
|
8
|
-
|
|
9
|
-
# Creates a new VmlShape
|
|
10
|
-
# @option options [Integer] row
|
|
11
|
-
# @option options [Integer] column
|
|
12
|
-
# @option options [Integer] left_column
|
|
13
|
-
# @option options [Integer] left_offset
|
|
14
|
-
# @option options [Integer] top_row
|
|
15
|
-
# @option options [Integer] top_offset
|
|
16
|
-
# @option options [Integer] right_column
|
|
17
|
-
# @option options [Integer] right_offset
|
|
18
|
-
# @option options [Integer] bottom_row
|
|
19
|
-
# @option options [Integer] bottom_offset
|
|
20
|
-
def initialize(options={})
|
|
21
|
-
@row = @column = @left_column = @top_row = @right_column = @bottom_row = 0
|
|
22
|
-
@left_offset = 15
|
|
23
|
-
@top_offset = 2
|
|
24
|
-
@right_offset = 50
|
|
25
|
-
@bottom_offset = 5
|
|
26
|
-
@visible = true
|
|
27
|
-
@id = (0...8).map{65.+(rand(25)).chr}.join
|
|
28
|
-
parse_options options
|
|
29
|
-
yield self if block_given?
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
unsigned_int_attr_accessor :row, :column, :left_column, :left_offset, :top_row, :top_offset,
|
|
33
|
-
:right_column, :right_offset, :bottom_row, :bottom_offset
|
|
34
|
-
|
|
35
|
-
boolean_attr_accessor :visible
|
|
36
|
-
|
|
37
|
-
# serialize the shape to a string
|
|
38
|
-
# @param [String] str
|
|
39
|
-
# @return [String]
|
|
40
|
-
def to_xml_string(str ='')
|
|
41
|
-
str << <<SHAME_ON_YOU
|
|
42
|
-
|
|
43
|
-
<v:shape id="#{@id}" type="#_x0000_t202" fillcolor="#ffffa1 [80]" o:insetmode="auto"
|
|
44
|
-
style="visibility:#{@visible ? 'visible' : 'hidden'}">
|
|
45
|
-
<v:fill color2="#ffffa1 [80]"/>
|
|
46
|
-
<v:shadow on="t" obscured="t"/>
|
|
47
|
-
<v:path o:connecttype="none"/>
|
|
48
|
-
<v:textbox style='mso-fit-text-with-word-wrap:t'>
|
|
49
|
-
<div style='text-align:left'></div>
|
|
50
|
-
</v:textbox>
|
|
51
|
-
|
|
52
|
-
<x:ClientData ObjectType="Note">
|
|
53
|
-
<x:MoveWithCells/>
|
|
54
|
-
<x:SizeWithCells/>
|
|
55
|
-
<x:Anchor>#{left_column}, #{left_offset}, #{top_row}, #{top_offset}, #{right_column}, #{right_offset}, #{bottom_row}, #{bottom_offset}</x:Anchor>
|
|
56
|
-
<x:AutoFill>False</x:AutoFill>
|
|
57
|
-
<x:Row>#{row}</x:Row>
|
|
58
|
-
<x:Column>#{column}</x:Column>
|
|
59
|
-
#{@visible ? '<x:Visible/>' : ''}
|
|
60
|
-
</x:ClientData>
|
|
61
|
-
</v:shape>
|
|
62
|
-
SHAME_ON_YOU
|
|
63
|
-
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
1
|
+
module Axlsx
|
|
2
|
+
|
|
3
|
+
# A VmlShape is used to position and render a comment.
|
|
4
|
+
class VmlShape
|
|
5
|
+
|
|
6
|
+
include Axlsx::OptionsParser
|
|
7
|
+
include Axlsx::Accessors
|
|
8
|
+
|
|
9
|
+
# Creates a new VmlShape
|
|
10
|
+
# @option options [Integer] row
|
|
11
|
+
# @option options [Integer] column
|
|
12
|
+
# @option options [Integer] left_column
|
|
13
|
+
# @option options [Integer] left_offset
|
|
14
|
+
# @option options [Integer] top_row
|
|
15
|
+
# @option options [Integer] top_offset
|
|
16
|
+
# @option options [Integer] right_column
|
|
17
|
+
# @option options [Integer] right_offset
|
|
18
|
+
# @option options [Integer] bottom_row
|
|
19
|
+
# @option options [Integer] bottom_offset
|
|
20
|
+
def initialize(options={})
|
|
21
|
+
@row = @column = @left_column = @top_row = @right_column = @bottom_row = 0
|
|
22
|
+
@left_offset = 15
|
|
23
|
+
@top_offset = 2
|
|
24
|
+
@right_offset = 50
|
|
25
|
+
@bottom_offset = 5
|
|
26
|
+
@visible = true
|
|
27
|
+
@id = (0...8).map{65.+(rand(25)).chr}.join
|
|
28
|
+
parse_options options
|
|
29
|
+
yield self if block_given?
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
unsigned_int_attr_accessor :row, :column, :left_column, :left_offset, :top_row, :top_offset,
|
|
33
|
+
:right_column, :right_offset, :bottom_row, :bottom_offset
|
|
34
|
+
|
|
35
|
+
boolean_attr_accessor :visible
|
|
36
|
+
|
|
37
|
+
# serialize the shape to a string
|
|
38
|
+
# @param [String] str
|
|
39
|
+
# @return [String]
|
|
40
|
+
def to_xml_string(str ='')
|
|
41
|
+
str << <<SHAME_ON_YOU
|
|
42
|
+
|
|
43
|
+
<v:shape id="#{@id}" type="#_x0000_t202" fillcolor="#ffffa1 [80]" o:insetmode="auto"
|
|
44
|
+
style="visibility:#{@visible ? 'visible' : 'hidden'}">
|
|
45
|
+
<v:fill color2="#ffffa1 [80]"/>
|
|
46
|
+
<v:shadow on="t" obscured="t"/>
|
|
47
|
+
<v:path o:connecttype="none"/>
|
|
48
|
+
<v:textbox style='mso-fit-text-with-word-wrap:t'>
|
|
49
|
+
<div style='text-align:left'></div>
|
|
50
|
+
</v:textbox>
|
|
51
|
+
|
|
52
|
+
<x:ClientData ObjectType="Note">
|
|
53
|
+
<x:MoveWithCells/>
|
|
54
|
+
<x:SizeWithCells/>
|
|
55
|
+
<x:Anchor>#{left_column}, #{left_offset}, #{top_row}, #{top_offset}, #{right_column}, #{right_offset}, #{bottom_row}, #{bottom_offset}</x:Anchor>
|
|
56
|
+
<x:AutoFill>False</x:AutoFill>
|
|
57
|
+
<x:Row>#{row}</x:Row>
|
|
58
|
+
<x:Column>#{column}</x:Column>
|
|
59
|
+
#{@visible ? '<x:Visible/>' : ''}
|
|
60
|
+
</x:ClientData>
|
|
61
|
+
</v:shape>
|
|
62
|
+
SHAME_ON_YOU
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|