ooxml_parser 0.5.1 → 0.8.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/lib/ooxml_parser.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content/choice.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content/choice/math_text.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/alternate_content/choice/math_text/math_paragraph.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart.rb +6 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series.rb +2 -2
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/chart/chart/series/series_text.rb +0 -2
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/docx_drawing.rb +1 -20
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_drawing_distance_from_text.rb +3 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/docx_drawing_properties.rb +51 -4
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/ooxml_coordinates.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/drawing_properties/ooxml_size.rb +4 -1
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_blip.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_blip/file_reference.rb +4 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/picture/docx_picture.rb +0 -2
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape.rb +3 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/ooxml_text_box.rb +1 -3
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/shape_style.rb +42 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/shape_style/effect_reference.rb +35 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/shape_style/fill_reference.rb +35 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/shape_style/font_reference.rb +35 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/docx_shape/shape_style/line_reference.rb +35 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/color/docx_color_scheme.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/custom_geometry/docx_custom_geometry/docx_shape_line_path/docx_shape_line_element.rb +0 -2
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_line.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_properties.rb +12 -4
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/drawing/graphic/shape/shape_properties/docx_shape_size.rb +10 -3
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/old_docx_picture.rb +1 -3
- data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/shape/old_docx_shape_properties.rb +1 -3
- data/lib/ooxml_parser/common_parser/common_data/borders_properties.rb +3 -0
- data/lib/ooxml_parser/common_parser/common_data/color.rb +48 -82
- data/lib/ooxml_parser/common_parser/common_data/color/color_helper.rb +4 -3
- data/lib/ooxml_parser/common_parser/common_data/color/color_indexes.list +66 -0
- data/lib/ooxml_parser/common_parser/common_data/color/ooxml_color.rb +5 -0
- data/lib/ooxml_parser/common_parser/common_data/colors/color_properties.rb +8 -2
- data/lib/ooxml_parser/common_parser/common_data/colors/hsl_color.rb +11 -0
- data/lib/ooxml_parser/common_parser/common_data/colors/scheme_color.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/colors/theme_colors.rb +4 -0
- data/lib/ooxml_parser/common_parser/common_data/content_types.rb +2 -0
- data/lib/ooxml_parser/common_parser/common_data/content_types/content_type_default.rb +3 -0
- data/lib/ooxml_parser/common_parser/common_data/content_types/content_type_override.rb +3 -0
- data/lib/ooxml_parser/common_parser/common_data/coordinates.rb +7 -0
- data/lib/ooxml_parser/common_parser/common_data/hyperlink.rb +14 -3
- data/lib/ooxml_parser/common_parser/common_data/ooxml_document_object.rb +28 -2
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run.rb +3 -0
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties.rb +28 -12
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragraph_run/run_properties/outline.rb +4 -2
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/numbering_properties.rb +2 -0
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/paragraph_borders.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/paragraph/paragrpah_properties/spacing.rb +16 -13
- data/lib/ooxml_parser/common_parser/common_data/table.rb +2 -0
- data/lib/ooxml_parser/common_parser/common_data/table/margins/paragraph_margins.rb +3 -0
- data/lib/ooxml_parser/common_parser/common_data/table/margins/table_margins.rb +7 -0
- data/lib/ooxml_parser/common_parser/common_data/table/properties/table_position.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_properties.rb +1 -0
- data/lib/ooxml_parser/common_parser/common_data/table/properties/table_style_properties/table_style_properties_helper.rb +4 -4
- data/lib/ooxml_parser/common_parser/common_data/table/row/cell/cell_properties.rb +4 -5
- data/lib/ooxml_parser/common_parser/common_data/table/row/cell/properties/borders.rb +6 -0
- data/lib/ooxml_parser/common_parser/common_data/table/table_grid.rb +3 -0
- data/lib/ooxml_parser/common_parser/common_data/underline.rb +7 -2
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure.rb +41 -9
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/comments/comment.rb +3 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/document_style.rb +3 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph.rb +25 -8
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/bookmark_end.rb +1 -1
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/comment_range_start.rb +1 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_formula/pre_sub_superscript.rb +3 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run.rb +13 -3
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/docx_paragraph_run_helpers.rb +4 -1
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/docx_paragraph_run/shape.rb +0 -2
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/frame_properties.rb +3 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/docx_paragraph/indents.rb +4 -2
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/header_footer.rb +8 -4
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/numbering.rb +5 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/columns.rb +3 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/note.rb +6 -2
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/page_properties/page_size.rb +1 -0
- data/lib/ooxml_parser/docx_parser/docx_data/document_structure/styles.rb +2 -0
- data/lib/ooxml_parser/docx_parser/docx_parser.rb +3 -0
- data/lib/ooxml_parser/name.rb +1 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation.rb +2 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme.rb +3 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/presentation_theme/theme_color.rb +3 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide.rb +5 -2
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide/timing/time_node.rb +3 -0
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/slide_helper.rb +15 -1
- data/lib/ooxml_parser/pptx_parser/pptx_data/presentation/slide/transition/transition.rb +3 -0
- data/lib/ooxml_parser/pptx_parser/pptx_parser.rb +4 -1
- data/lib/ooxml_parser/version.rb +2 -1
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook.rb +21 -2
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/chartsheet.rb +3 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache.rb +41 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition.rb +37 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_source.rb +33 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/pivot_cache/pivot_cache_definition/cache_source/worksheet_source.rb +26 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet.rb +2 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/cell_xfs/xf.rb +5 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fills/fill.rb +2 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/style_sheet/fonts/font.rb +3 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet.rb +5 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/excel_comments.rb +4 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_data/view_model/workbook/worksheet/xlsx_column_properties.rb +4 -0
- data/lib/ooxml_parser/xlsx_parser/xlsx_parser.rb +3 -0
- metadata +70 -4
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OoxmlParser
|
|
4
|
+
# Class for parsing `a:lnRef` tags
|
|
5
|
+
class LineReference < OOXMLDocumentObject
|
|
6
|
+
# @return [Integer] Style Matrix Index
|
|
7
|
+
attr_reader :index
|
|
8
|
+
# @return [Color] scheme color of LineReference
|
|
9
|
+
attr_reader :scheme_color
|
|
10
|
+
|
|
11
|
+
def initialize(parent: nil)
|
|
12
|
+
@parent = parent
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Parse LineReference object
|
|
16
|
+
# @param node [Nokogiri::XML:Element] node to parse
|
|
17
|
+
# @return [LineReference] result of parsing
|
|
18
|
+
def parse(node)
|
|
19
|
+
node.attributes.each do |key, value|
|
|
20
|
+
case key
|
|
21
|
+
when 'idx'
|
|
22
|
+
@index = value.value.to_f
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
node.xpath('*').each do |node_child|
|
|
27
|
+
case node_child.name
|
|
28
|
+
when 'schemeClr'
|
|
29
|
+
@scheme_color = Color.new(parent: self).parse_scheme_color(node_child)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
self
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -10,8 +10,18 @@ require_relative 'custom_geometry/ooxml_custom_geometry'
|
|
|
10
10
|
module OoxmlParser
|
|
11
11
|
# DOCX Shape Properties
|
|
12
12
|
class DocxShapeProperties < OOXMLDocumentObject
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
# @return [DocxShapeSize] size of shape
|
|
14
|
+
attr_reader :shape_size
|
|
15
|
+
# @return [PresetGeometry] preset geometry of object
|
|
16
|
+
attr_reader :preset_geometry
|
|
17
|
+
# @return [DocxColor] color of object
|
|
18
|
+
attr_reader :fill_color
|
|
19
|
+
# @return [DocxShapeLine] line info
|
|
20
|
+
attr_reader :line
|
|
21
|
+
# @return [PresetGeometry] is some geometry custom
|
|
22
|
+
attr_reader :custom_geometry
|
|
23
|
+
# @return [BlipFill] BlipFill data
|
|
24
|
+
attr_reader :blip_fill
|
|
15
25
|
|
|
16
26
|
alias transform shape_size
|
|
17
27
|
alias fill fill_color
|
|
@@ -33,8 +43,6 @@ module OoxmlParser
|
|
|
33
43
|
@shape_size = DocxShapeSize.new(parent: self).parse(node_child)
|
|
34
44
|
when 'prstGeom'
|
|
35
45
|
@preset_geometry = PresetGeometry.new(parent: self).parse(node_child)
|
|
36
|
-
when 'txbx'
|
|
37
|
-
@text_box = TextBox.parse_list(node_child)
|
|
38
46
|
when 'ln'
|
|
39
47
|
@line = DocxShapeLine.new(parent: self).parse(node_child)
|
|
40
48
|
when 'blipFill'
|
|
@@ -3,9 +3,16 @@
|
|
|
3
3
|
module OoxmlParser
|
|
4
4
|
# Docx Shape Size
|
|
5
5
|
class DocxShapeSize < OOXMLDocumentObject
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
# @return [OoxmlSize] rotation info
|
|
7
|
+
attr_reader :rotation
|
|
8
|
+
# @return [OOXMLCoordinates] offset info
|
|
9
|
+
attr_reader :offset
|
|
10
|
+
# @return [OOXMLCoordinates] extent info
|
|
11
|
+
attr_reader :extent
|
|
12
|
+
# @return [OOXMLCoordinates] child offset
|
|
13
|
+
attr_reader :child_offset
|
|
14
|
+
# @return [OOXMLCoordinates] child extent
|
|
15
|
+
attr_reader :child_extent
|
|
9
16
|
# @return [True, False] is image flipped horizontally
|
|
10
17
|
attr_reader :flip_horizontal
|
|
11
18
|
# @return [True, False] is image flipped vertically
|
data/lib/ooxml_parser/common_parser/common_data/alternate_content/picture/old_docx_picture.rb
CHANGED
|
@@ -6,7 +6,7 @@ require_relative 'group/old_docx_group'
|
|
|
6
6
|
module OoxmlParser
|
|
7
7
|
# Fallback DOCX Picture
|
|
8
8
|
class OldDocxPicture < OOXMLDocumentObject
|
|
9
|
-
attr_accessor :data, :type
|
|
9
|
+
attr_accessor :data, :type
|
|
10
10
|
|
|
11
11
|
# Parse OldDocxPicture object
|
|
12
12
|
# @param node [Nokogiri::XML:Element] node to parse
|
|
@@ -20,8 +20,6 @@ module OoxmlParser
|
|
|
20
20
|
when 'group'
|
|
21
21
|
@type = :group
|
|
22
22
|
@data = OldDocxGroup.new(parent: self).parse(node_child)
|
|
23
|
-
when 'style'
|
|
24
|
-
@style_number = node_child.attribute('val').value.to_i
|
|
25
23
|
end
|
|
26
24
|
end
|
|
27
25
|
self
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
module OoxmlParser
|
|
4
4
|
# Fallback DOCX Shape Properties
|
|
5
5
|
class OldDocxShapeProperties < OOXMLDocumentObject
|
|
6
|
-
attr_accessor :fill_color, :
|
|
6
|
+
attr_accessor :fill_color, :stroke_color, :stroke_weight
|
|
7
7
|
|
|
8
8
|
# Parse OldDocxShapeProperties object
|
|
9
9
|
# @param node [Nokogiri::XML:Element] node to parse
|
|
@@ -13,8 +13,6 @@ module OoxmlParser
|
|
|
13
13
|
case key
|
|
14
14
|
when 'fillcolor'
|
|
15
15
|
@fill_color = Color.new(parent: self).parse_hex_string(value.value.delete('#'))
|
|
16
|
-
when 'opacity'
|
|
17
|
-
@opacity = value.value.to_f
|
|
18
16
|
when 'strokecolor'
|
|
19
17
|
@stroke_color = Color.new(parent: self).parse_hex_string(value.value.delete('#'))
|
|
20
18
|
when 'strokeweight'
|
|
@@ -27,12 +27,15 @@ module OoxmlParser
|
|
|
27
27
|
size.zero? && val == :none
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
+
# @return [String] result of convert of object to string
|
|
30
31
|
def to_s
|
|
31
32
|
return '' if nil?
|
|
32
33
|
|
|
33
34
|
"borders color: #{@color}, size: #{size}, space: #{@space}, value: #{@val}"
|
|
34
35
|
end
|
|
35
36
|
|
|
37
|
+
# Method to copy object
|
|
38
|
+
# @return [BordersProperties] copied object
|
|
36
39
|
def copy
|
|
37
40
|
BordersProperties.new(@color, size, @val, @space)
|
|
38
41
|
end
|
|
@@ -12,79 +12,6 @@ module OoxmlParser
|
|
|
12
12
|
# Class for Color in RGB
|
|
13
13
|
class Color < OOXMLDocumentObject
|
|
14
14
|
include ColorHelper
|
|
15
|
-
# @return [Array] Deprecated Indexed colors
|
|
16
|
-
# List of color duplicated from `OpenXML Sdk IndexedColors` class
|
|
17
|
-
# See https://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.indexedcolors.aspx
|
|
18
|
-
COLOR_INDEXED =
|
|
19
|
-
%w[
|
|
20
|
-
000000
|
|
21
|
-
FFFFFF
|
|
22
|
-
FF0000
|
|
23
|
-
00FF00
|
|
24
|
-
0000FF
|
|
25
|
-
FFFF00
|
|
26
|
-
FF00FF
|
|
27
|
-
00FFFF
|
|
28
|
-
000000
|
|
29
|
-
FFFFFF
|
|
30
|
-
FF0000
|
|
31
|
-
00FF00
|
|
32
|
-
0000FF
|
|
33
|
-
FFFF00
|
|
34
|
-
FF00FF
|
|
35
|
-
00FFFF
|
|
36
|
-
800000
|
|
37
|
-
008000
|
|
38
|
-
000080
|
|
39
|
-
808000
|
|
40
|
-
800080
|
|
41
|
-
008080
|
|
42
|
-
C0C0C0
|
|
43
|
-
808080
|
|
44
|
-
9999FF
|
|
45
|
-
993366
|
|
46
|
-
FFFFCC
|
|
47
|
-
CCFFFF
|
|
48
|
-
660066
|
|
49
|
-
FF8080
|
|
50
|
-
0066CC
|
|
51
|
-
CCCCFF
|
|
52
|
-
000080
|
|
53
|
-
FF00FF
|
|
54
|
-
FFFF00
|
|
55
|
-
00FFFF
|
|
56
|
-
800080
|
|
57
|
-
800000
|
|
58
|
-
008080
|
|
59
|
-
0000FF
|
|
60
|
-
00CCFF
|
|
61
|
-
CCFFFF
|
|
62
|
-
CCFFCC
|
|
63
|
-
FFFF99
|
|
64
|
-
99CCFF
|
|
65
|
-
FF99CC
|
|
66
|
-
CC99FF
|
|
67
|
-
FFCC99
|
|
68
|
-
3366FF
|
|
69
|
-
33CCCC
|
|
70
|
-
99CC00
|
|
71
|
-
FFCC00
|
|
72
|
-
FF9900
|
|
73
|
-
FF6600
|
|
74
|
-
666699
|
|
75
|
-
969696
|
|
76
|
-
003366
|
|
77
|
-
339966
|
|
78
|
-
003300
|
|
79
|
-
333300
|
|
80
|
-
993300
|
|
81
|
-
993366
|
|
82
|
-
333399
|
|
83
|
-
333333
|
|
84
|
-
n/a
|
|
85
|
-
n/a
|
|
86
|
-
].freeze
|
|
87
|
-
|
|
88
15
|
# @return [Integer] Value of Red Part
|
|
89
16
|
attr_accessor :red
|
|
90
17
|
# @return [Integer] Value of Green Part
|
|
@@ -93,15 +20,17 @@ module OoxmlParser
|
|
|
93
20
|
attr_accessor :blue
|
|
94
21
|
# @return [String] Value of Color Style
|
|
95
22
|
attr_accessor :style
|
|
23
|
+
|
|
96
24
|
alias set_style style=
|
|
97
25
|
# @return [String] color scheme of color
|
|
98
26
|
attr_accessor :scheme
|
|
99
27
|
|
|
100
28
|
# @return [Integer] Value of alpha-channel
|
|
101
29
|
attr_accessor :alpha_channel
|
|
30
|
+
|
|
102
31
|
alias set_alpha_channel alpha_channel=
|
|
103
32
|
|
|
104
|
-
|
|
33
|
+
# @return [ColorProperties] properties of color
|
|
105
34
|
attr_accessor :properties
|
|
106
35
|
|
|
107
36
|
# Value of color if non selected
|
|
@@ -117,6 +46,7 @@ module OoxmlParser
|
|
|
117
46
|
@parent = parent
|
|
118
47
|
end
|
|
119
48
|
|
|
49
|
+
# @return [String] result of convert of object to string
|
|
120
50
|
def to_s
|
|
121
51
|
if @red == VALUE_FOR_NONE_COLOR && @green == VALUE_FOR_NONE_COLOR && @blue == VALUE_FOR_NONE_COLOR
|
|
122
52
|
'none'
|
|
@@ -125,38 +55,46 @@ module OoxmlParser
|
|
|
125
55
|
end
|
|
126
56
|
end
|
|
127
57
|
|
|
58
|
+
# @return [String] inspect of object for debug means
|
|
128
59
|
def inspect
|
|
129
60
|
to_s
|
|
130
61
|
end
|
|
131
62
|
|
|
63
|
+
# @return [String] color in hex value
|
|
132
64
|
def to_hex
|
|
133
65
|
(@red.to_s(16).rjust(2, '0') + @green.to_s(16).rjust(2, '0') + @blue.to_s(16).rjust(2, '0')).upcase
|
|
134
66
|
end
|
|
135
67
|
|
|
136
68
|
alias to_int16 to_hex
|
|
137
69
|
|
|
70
|
+
# @return [True, False] is color default
|
|
138
71
|
def none?
|
|
139
72
|
(@red == VALUE_FOR_NONE_COLOR) && (@green == VALUE_FOR_NONE_COLOR) && (@blue == VALUE_FOR_NONE_COLOR) ||
|
|
140
73
|
(style == :nil)
|
|
141
74
|
end
|
|
142
75
|
|
|
76
|
+
# @return [True, False] is color not default
|
|
143
77
|
def any?
|
|
144
78
|
!none?
|
|
145
79
|
end
|
|
146
80
|
|
|
81
|
+
# @return [True, False] is color white
|
|
147
82
|
def white?
|
|
148
83
|
(@red == 255) && (@green == 255) && (@blue == 255)
|
|
149
84
|
end
|
|
150
85
|
|
|
86
|
+
# Method to copy object
|
|
87
|
+
# @return [Color] copied object
|
|
151
88
|
def copy
|
|
152
89
|
Color.new(@red, @green, @blue)
|
|
153
90
|
end
|
|
154
91
|
|
|
92
|
+
# Compare this object to other
|
|
93
|
+
# @param other [Object] any other object
|
|
94
|
+
# @return [True, False] result of comparision
|
|
155
95
|
def ==(other)
|
|
156
96
|
if other.is_a?(Color)
|
|
157
|
-
if
|
|
158
|
-
false
|
|
159
|
-
elsif (@red == other.red) && (@green == other.green) && (@blue == other.blue)
|
|
97
|
+
if (@red == other.red) && (@green == other.green) && (@blue == other.blue)
|
|
160
98
|
true
|
|
161
99
|
elsif (none? && other.white?) || (white? && other.none?)
|
|
162
100
|
true
|
|
@@ -190,18 +128,27 @@ module OoxmlParser
|
|
|
190
128
|
(self.red - red).abs < delta && (self.green - green).abs < delta && (self.blue - blue).abs < delta ? true : false
|
|
191
129
|
end
|
|
192
130
|
|
|
131
|
+
# Apply tint to color
|
|
132
|
+
# @param tint [Integer] tint to apply
|
|
133
|
+
# @return [void]
|
|
193
134
|
def calculate_with_tint!(tint)
|
|
194
135
|
@red += (tint.to_f * (255 - @red)).to_i
|
|
195
136
|
@green += (tint.to_f * (255 - @green)).to_i
|
|
196
137
|
@blue += (tint.to_f * (255 - @blue)).to_i
|
|
197
138
|
end
|
|
198
139
|
|
|
140
|
+
# Apply shade to color
|
|
141
|
+
# @param shade [Integer] shade to apply
|
|
142
|
+
# @return [void]
|
|
199
143
|
def calculate_with_shade!(shade)
|
|
200
144
|
@red = (@red * shade.to_f).to_i
|
|
201
145
|
@green = (@green * shade.to_f).to_i
|
|
202
146
|
@blue = (@blue * shade.to_f).to_i
|
|
203
147
|
end
|
|
204
148
|
|
|
149
|
+
# Parse color scheme data
|
|
150
|
+
# @param scheme_color_node [Nokogiri::XML:Element] node to parse
|
|
151
|
+
# @return [Color] result of parsing
|
|
205
152
|
def parse_scheme_color(scheme_color_node)
|
|
206
153
|
color = root_object.theme.color_scheme[scheme_color_node.attribute('val').value.to_sym].color
|
|
207
154
|
hls = HSLColor.rgb_to_hsl(color)
|
|
@@ -229,6 +176,9 @@ module OoxmlParser
|
|
|
229
176
|
self
|
|
230
177
|
end
|
|
231
178
|
|
|
179
|
+
# Parse color model data
|
|
180
|
+
# @param color_model_parent_node [Nokogiri::XML:Element] node to parse
|
|
181
|
+
# @return [Color] result of parsing
|
|
232
182
|
def parse_color_model(color_model_parent_node)
|
|
233
183
|
color = nil
|
|
234
184
|
tint = nil
|
|
@@ -240,9 +190,6 @@ module OoxmlParser
|
|
|
240
190
|
end
|
|
241
191
|
end
|
|
242
192
|
case color_model_node.name
|
|
243
|
-
when 'scrgbClr'
|
|
244
|
-
color = Color.new(color_model_node.attribute('r').value.to_i, color_model_node.attribute('g').value.to_i, color_model_node.attribute('b').value.to_i)
|
|
245
|
-
color.alpha_channel = ColorAlphaChannel.parse(color_model_node)
|
|
246
193
|
when 'srgbClr'
|
|
247
194
|
color = Color.new.parse_hex_string(color_model_node.attribute('val').value)
|
|
248
195
|
color.alpha_channel = ColorAlphaChannel.parse(color_model_node)
|
|
@@ -261,6 +208,9 @@ module OoxmlParser
|
|
|
261
208
|
self
|
|
262
209
|
end
|
|
263
210
|
|
|
211
|
+
# Parse color data
|
|
212
|
+
# @param color_node [Nokogiri::XML:Element] node to parse
|
|
213
|
+
# @return [Color] result of parsing
|
|
264
214
|
def parse_color(color_node)
|
|
265
215
|
case color_node.name
|
|
266
216
|
when 'srgbClr'
|
|
@@ -280,6 +230,7 @@ module OoxmlParser
|
|
|
280
230
|
end
|
|
281
231
|
|
|
282
232
|
class << self
|
|
233
|
+
# @return [Color] random color
|
|
283
234
|
def generate_random_color
|
|
284
235
|
Color.new(rand(256), rand(256), rand(256))
|
|
285
236
|
end
|
|
@@ -293,19 +244,31 @@ module OoxmlParser
|
|
|
293
244
|
const_array_name.map { |current_color| Color.parse_string(current_color) }
|
|
294
245
|
end
|
|
295
246
|
|
|
247
|
+
# @param index [Integer] index to get
|
|
248
|
+
# @return [Color] color by it's index
|
|
296
249
|
def get_rgb_by_color_index(index)
|
|
297
|
-
color_by_index =
|
|
250
|
+
color_by_index = color_indexes[index]
|
|
298
251
|
return :unknown if color_by_index.nil?
|
|
299
252
|
|
|
300
253
|
color_by_index == 'n/a' ? Color.new : Color.new.parse_hex_string(color_by_index)
|
|
301
254
|
end
|
|
302
255
|
|
|
256
|
+
# @return [Array] Deprecated Indexed colors
|
|
257
|
+
# List of color duplicated from `OpenXML Sdk IndexedColors` class
|
|
258
|
+
# See https://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.indexedcolors.aspx
|
|
259
|
+
def color_indexes
|
|
260
|
+
@color_indexes ||= File.readlines("#{__dir__}/color/color_indexes.list", chomp: true)
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
# Parse color from string
|
|
264
|
+
# @param str [String] string to parse
|
|
265
|
+
# @return [Color] result of parsing
|
|
303
266
|
def parse_string(str)
|
|
304
267
|
return str if str.is_a?(Color)
|
|
305
268
|
return Color.new(VALUE_FOR_NONE_COLOR, VALUE_FOR_NONE_COLOR, VALUE_FOR_NONE_COLOR) if str == 'none' || str == '' || str == 'transparent' || str.nil?
|
|
306
269
|
|
|
307
270
|
split = if str.include?('RGB (') || str.include?('rgb(')
|
|
308
|
-
str.gsub(/[(RGBrgb
|
|
271
|
+
str.gsub(/[(RGBrgb() )]/, '').split(',')
|
|
309
272
|
elsif str.include?('RGB ') || str.include?('rgb')
|
|
310
273
|
str.gsub(/RGB |rgb/, '').split(', ')
|
|
311
274
|
else
|
|
@@ -317,6 +280,9 @@ module OoxmlParser
|
|
|
317
280
|
|
|
318
281
|
alias parse parse_string
|
|
319
282
|
|
|
283
|
+
# Convert other object type to Color
|
|
284
|
+
# @param something [Object] object to convert
|
|
285
|
+
# @return [Color] result of conversion
|
|
320
286
|
def to_color(something)
|
|
321
287
|
case something
|
|
322
288
|
when SchemeColor
|
|
@@ -9,15 +9,16 @@ module OoxmlParser
|
|
|
9
9
|
return self if %w[auto null].include?(hex_string)
|
|
10
10
|
|
|
11
11
|
char_array = hex_string.split(//)
|
|
12
|
-
|
|
12
|
+
case char_array.length
|
|
13
|
+
when 3
|
|
13
14
|
@red = char_array[0].hex
|
|
14
15
|
@green = char_array[1].hex
|
|
15
16
|
@blue = char_array[2].hex
|
|
16
|
-
|
|
17
|
+
when 6
|
|
17
18
|
@red = (char_array[0] + char_array[1]).hex
|
|
18
19
|
@green = (char_array[2] + char_array[3]).hex
|
|
19
20
|
@blue = (char_array[4] + char_array[5]).hex
|
|
20
|
-
|
|
21
|
+
when 8
|
|
21
22
|
@alpha_channel = (char_array[0] + char_array[1]).hex
|
|
22
23
|
@red = (char_array[2] + char_array[3]).hex
|
|
23
24
|
@green = (char_array[4] + char_array[5]).hex
|