summaryrefslogtreecommitdiffhomepage
path: root/lib/axlsx/stylesheet/cell_alignment.rb
blob: 75d86e2dbce1d59317cd1f2fd5d0a12eaca57eaf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
module Axlsx
  # CellAlignment stores information about the cell alignment of a style Xf Object.
  # @note Using Styles#add_style is the recommended way to manage cell alignment. 
  # @see Styles#add_style
  class CellAlignment
    # The horizontal alignment of the cell.
    # @note 
    #  The horizontal cell alignement style must be one of
    #   :general
    #   :left
    #   :center
    #   :right
    #   :fill
    #   :justify
    #   :centerContinuous
    #   :distributed
    # @return [Symbol]
    attr_reader :horizontal

    # The vertical alignment of the cell.
    # @note
    #  The vertical cell allingment style must be one of the following:
    #   :top
    #   :center
    #   :bottom
    #   :justify
    #   :distributed
    # @return [Symbol]
    attr_reader :vertical

    # The textRotation of the cell.
    # @return [Integer]
    attr_reader :textRotation

    # Indicate if the text of the cell should wrap
    # @return [Boolean]
    attr_reader :wrapText
    
    # The amount of indent
    # @return [Integer]
    attr_reader :indent

    # The amount of relativeIndent
    # @return [Integer]
    attr_reader :relativeIndent

    # Indicate if the last line should be justified.
    # @return [Boolean]
    attr_reader :justifyLastLine

    # Indicate if the text should be shrunk to the fit in the cell.
    # @return [Boolean]
    attr_reader :shrinkToFit

    # The reading order of the text
    # 0 Context Dependent 
    # 1 Left-to-Right
    # 2 Right-to-Left
    # @return [Integer]
    attr_reader :readingOrder
    
    # Create a new cell_alignment object
    # @option options [Symbol] horizontal
    # @option options [Symbol] vertical
    # @option options [Integer] textRotation
    # @option options [Boolean] wrapText
    # @option options [Integer] indent
    # @option options [Integer] relativeIndent
    # @option options [Boolean] justifyLastLine
    # @option options [Boolean] shrinkToFit
    # @option options [Integer] readingOrder
    def initialize(options={})
      options.each do |o|
        self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
      end
    end        
    
    # @see horizontal
    def horizontal=(v) Axlsx::validate_horizontal_alignment v; @horizontal = v end    
    # @see vertical
    def vertical=(v) Axlsx::validate_vertical_alignment v; @vertical = v end    
    # @see textRotation
    def textRotation=(v) Axlsx::validate_unsigned_int v; @textRotation = v end    
    # @see wrapText
    def wrapText=(v) Axlsx::validate_boolean v; @wrapText = v end    
    # @see indent
    def indent=(v) Axlsx::validate_unsigned_int v; @indent = v end    
    # @see relativeIndent
    def relativeIndent=(v) Axlsx::validate_int v; @relativeIndent = v end    
    # @see justifyLastLine
    def justifyLastLine=(v) Axlsx::validate_boolean v; @justifyLastLine = v end    
    # @see shrinkToFit
    def shrinkToFit=(v) Axlsx::validate_boolean v; @shrinkToFit = v end    
    # @see readingOrder
    def readingOrder=(v) Axlsx::validate_unsigned_int v; @readingOrder = v end  

    # Serializes the cell alignment
    # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
    # @return [String]
    def to_xml(xml)
      xml.alignment(self.instance_values)      
    end
    
  end
end