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
|
# frozen_string_literal: true
module Axlsx
# A VmlShape is used to position and render a comment.
class VmlShape
include Axlsx::OptionsParser
include Axlsx::Accessors
# Creates a new VmlShape
# @option options [Integer] row
# @option options [Integer] column
# @option options [Integer] left_column
# @option options [Integer] left_offset
# @option options [Integer] top_row
# @option options [Integer] top_offset
# @option options [Integer] right_column
# @option options [Integer] right_offset
# @option options [Integer] bottom_row
# @option options [Integer] bottom_offset
def initialize(options = {})
@row = @column = @left_column = @top_row = @right_column = @bottom_row = 0
@left_offset = 15
@top_offset = 2
@right_offset = 50
@bottom_offset = 5
@visible = true
@id = Array.new(8) { rand(65..89).chr }.join
parse_options options
yield self if block_given?
end
unsigned_int_attr_accessor :row, :column, :left_column, :left_offset, :top_row, :top_offset,
:right_column, :right_offset, :bottom_row, :bottom_offset
boolean_attr_accessor :visible
# serialize the shape to a string
# @param [String] str
# @return [String]
def to_xml_string(str = +'')
str << <<~XML
<v:shape id="#{@id}" type="#_x0000_t202" fillcolor="#ffffa1 [80]" o:insetmode="auto"
style="visibility:#{@visible ? 'visible' : 'hidden'}">
<v:fill color2="#ffffa1 [80]"/>
<v:shadow on="t" obscured="t"/>
<v:path o:connecttype="none"/>
<v:textbox style='mso-fit-text-with-word-wrap:t'>
<div style='text-align:left'></div>
</v:textbox>
<x:ClientData ObjectType="Note">
<x:MoveWithCells/>
<x:SizeWithCells/>
<x:Anchor>#{left_column}, #{left_offset}, #{top_row}, #{top_offset}, #{right_column}, #{right_offset}, #{bottom_row}, #{bottom_offset}</x:Anchor>
<x:AutoFill>False</x:AutoFill>
<x:Row>#{row}</x:Row>
<x:Column>#{column}</x:Column>
#{@visible ? '<x:Visible/>' : ''}
</x:ClientData>
</v:shape>
XML
end
end
end
|