write_xlsx 1.08.1 → 1.09.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +10 -0
- data/Changes +17 -0
- data/README.md +1 -1
- data/examples/background.rb +19 -0
- data/examples/ignore_errors.rb +39 -0
- data/examples/keep_leading_zeros.rb +17 -0
- data/lib/write_xlsx/chart/axis.rb +3 -3
- data/lib/write_xlsx/chart/scatter.rb +0 -15
- data/lib/write_xlsx/chart/series.rb +1 -1
- data/lib/write_xlsx/chart.rb +28 -28
- data/lib/write_xlsx/chartsheet.rb +3 -3
- data/lib/write_xlsx/drawing.rb +39 -39
- data/lib/write_xlsx/format.rb +11 -179
- data/lib/write_xlsx/package/app.rb +2 -2
- data/lib/write_xlsx/package/button.rb +8 -8
- data/lib/write_xlsx/package/comments.rb +8 -8
- data/lib/write_xlsx/package/content_types.rb +18 -9
- data/lib/write_xlsx/package/core.rb +5 -5
- data/lib/write_xlsx/package/custom.rb +2 -2
- data/lib/write_xlsx/package/metadata.rb +159 -0
- data/lib/write_xlsx/package/packager.rb +21 -0
- data/lib/write_xlsx/package/shared_strings.rb +6 -6
- data/lib/write_xlsx/package/styles.rb +11 -11
- data/lib/write_xlsx/package/table.rb +23 -23
- data/lib/write_xlsx/package/theme.rb +1 -1
- data/lib/write_xlsx/package/vml.rb +43 -43
- data/lib/write_xlsx/shape.rb +17 -15
- data/lib/write_xlsx/sparkline.rb +340 -340
- data/lib/write_xlsx/utility.rb +4 -23
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook.rb +171 -644
- data/lib/write_xlsx/worksheet/cell_data.rb +25 -3
- data/lib/write_xlsx/worksheet/data_validation.rb +20 -20
- data/lib/write_xlsx/worksheet/hyperlink.rb +4 -4
- data/lib/write_xlsx/worksheet/page_setup.rb +12 -12
- data/lib/write_xlsx/worksheet.rb +267 -4144
- data/test/perl_output/background.xlsx +0 -0
- data/test/perl_output/ignore_errors.xlsx +0 -0
- data/test/perl_output/keep_leading_zeros.xlsx +0 -0
- data/test/perl_output/multi_line.xlsx +0 -0
- data/test/regression/images/logo.gif +0 -0
- data/test/regression/images/logo.jpg +0 -0
- data/test/regression/images/red.gif +0 -0
- data/test/regression/test_background01.rb +23 -0
- data/test/regression/test_background02.rb +23 -0
- data/test/regression/test_background03.rb +24 -0
- data/test/regression/test_background04.rb +25 -0
- data/test/regression/test_background05.rb +25 -0
- data/test/regression/test_background06.rb +31 -0
- data/test/regression/test_background07.rb +37 -0
- data/test/regression/test_chart_axis47.rb +52 -0
- data/test/regression/test_chart_axis48.rb +53 -0
- data/test/regression/test_dynamic_array01.rb +25 -0
- data/test/regression/test_image56.rb +23 -0
- data/test/regression/test_image57.rb +23 -0
- data/test/regression/test_set_column10.rb +55 -0
- data/test/regression/test_set_column11.rb +48 -0
- data/test/regression/test_set_row01.rb +35 -0
- data/test/regression/test_set_row02.rb +35 -0
- data/test/regression/test_set_row03.rb +35 -0
- data/test/regression/test_set_row04.rb +35 -0
- data/test/regression/xlsx_files/background01.xlsx +0 -0
- data/test/regression/xlsx_files/background02.xlsx +0 -0
- data/test/regression/xlsx_files/background03.xlsx +0 -0
- data/test/regression/xlsx_files/background04.xlsx +0 -0
- data/test/regression/xlsx_files/background05.xlsx +0 -0
- data/test/regression/xlsx_files/background06.xlsx +0 -0
- data/test/regression/xlsx_files/background07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis47.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis48.xlsx +0 -0
- data/test/regression/xlsx_files/dynamic_array01.xlsx +0 -0
- data/test/regression/xlsx_files/image56.xlsx +0 -0
- data/test/regression/xlsx_files/image57.xlsx +0 -0
- data/test/regression/xlsx_files/set_row01.xlsx +0 -0
- data/test/regression/xlsx_files/set_row03.xlsx +0 -0
- data/test/test_example_match.rb +73 -0
- data/test/worksheet/test_pixels_to_row_col.rb +46 -0
- metadata +86 -2
@@ -117,8 +117,8 @@ module Writexlsx
|
|
117
117
|
)
|
118
118
|
elsif user_data[:total_string]
|
119
119
|
total_label_only(
|
120
|
-
|
121
|
-
|
120
|
+
@row2, col_num, col_data, user_data[:total_string], user_data[:format]
|
121
|
+
)
|
122
122
|
end
|
123
123
|
|
124
124
|
# Get the dxf format index.
|
@@ -181,7 +181,7 @@ module Writexlsx
|
|
181
181
|
row1, row2 = row2, row1 if row1 > row2
|
182
182
|
col1, col2 = col2, col1 if col1 > col2
|
183
183
|
|
184
|
-
|
184
|
+
# The final hash contains the validation parameters.
|
185
185
|
param ||= {}
|
186
186
|
|
187
187
|
# Turn on Excel's defaults.
|
@@ -208,17 +208,17 @@ module Writexlsx
|
|
208
208
|
# List of valid input parameters.
|
209
209
|
def valid_table_parameter
|
210
210
|
[
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
211
|
+
:autofilter,
|
212
|
+
:banded_columns,
|
213
|
+
:banded_rows,
|
214
|
+
:columns,
|
215
|
+
:data,
|
216
|
+
:first_column,
|
217
|
+
:header_row,
|
218
|
+
:last_column,
|
219
|
+
:name,
|
220
|
+
:style,
|
221
|
+
:total_row
|
222
222
|
]
|
223
223
|
end
|
224
224
|
|
@@ -331,12 +331,12 @@ module Writexlsx
|
|
331
331
|
xmlns = "#{schema}spreadsheetml/2006/main"
|
332
332
|
|
333
333
|
attributes = [
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
334
|
+
['xmlns', xmlns],
|
335
|
+
['id', id],
|
336
|
+
['name', @name],
|
337
|
+
['displayName', @name],
|
338
|
+
['ref', @range]
|
339
|
+
]
|
340
340
|
|
341
341
|
unless ptrue?(@header_row_count)
|
342
342
|
attributes << ['headerRowCount', 0]
|
@@ -378,9 +378,9 @@ module Writexlsx
|
|
378
378
|
#
|
379
379
|
def write_table_column(col_data)
|
380
380
|
attributes = [
|
381
|
-
|
382
|
-
|
383
|
-
|
381
|
+
['id', col_data.id],
|
382
|
+
['name', col_data.name]
|
383
|
+
]
|
384
384
|
|
385
385
|
if ptrue?(col_data.total_string)
|
386
386
|
attributes << [:totalsRowLabel, col_data.total_string]
|
@@ -36,7 +36,7 @@ module Writexlsx
|
|
36
36
|
#
|
37
37
|
def write_theme_file
|
38
38
|
theme =
|
39
|
-
%Q{<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
39
|
+
%Q{<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
40
40
|
<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink><a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS Pゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS Pゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Arial"/><a:font script="Hebr" typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:shade val="51000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="80000"><a:schemeClr val="phClr"><a:shade val="93000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="94000"/><a:satMod val="135000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/></a:theme>}
|
41
41
|
@writer.write(theme)
|
42
42
|
end
|
@@ -37,8 +37,8 @@ module Writexlsx
|
|
37
37
|
end
|
38
38
|
unless comments_data.empty?
|
39
39
|
write_shape_type_and_shape(
|
40
|
-
|
41
|
-
|
40
|
+
comments_data,
|
41
|
+
vml_shape_id, z_index) do
|
42
42
|
write_comment_shapetype
|
43
43
|
end
|
44
44
|
end
|
@@ -84,9 +84,9 @@ module Writexlsx
|
|
84
84
|
def xml_attributes
|
85
85
|
schema = 'urn:schemas-microsoft-com:'
|
86
86
|
[
|
87
|
-
|
88
|
-
|
89
|
-
|
87
|
+
['xmlns:v', "#{schema}vml"],
|
88
|
+
['xmlns:o', "#{schema}office:office"],
|
89
|
+
['xmlns:x', "#{schema}office:excel"]
|
90
90
|
]
|
91
91
|
end
|
92
92
|
|
@@ -95,8 +95,8 @@ module Writexlsx
|
|
95
95
|
#
|
96
96
|
def write_shapelayout(data_id)
|
97
97
|
attributes = [
|
98
|
-
|
99
|
-
|
98
|
+
['v:ext', 'edit']
|
99
|
+
]
|
100
100
|
|
101
101
|
@writer.tag_elements('o:shapelayout', attributes) do
|
102
102
|
# Write the o:idmap element.
|
@@ -121,10 +121,10 @@ module Writexlsx
|
|
121
121
|
#
|
122
122
|
def write_comment_shapetype
|
123
123
|
attributes = [
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
124
|
+
['id', '_x0000_t202'],
|
125
|
+
['coordsize', '21600,21600'],
|
126
|
+
['o:spt', 202],
|
127
|
+
['path', 'm,l,21600r21600,l21600,xe']
|
128
128
|
]
|
129
129
|
|
130
130
|
@writer.tag_elements('v:shapetype', attributes) do
|
@@ -140,11 +140,11 @@ module Writexlsx
|
|
140
140
|
#
|
141
141
|
def write_button_shapetype
|
142
142
|
attributes = [
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
143
|
+
['id', '_x0000_t201'],
|
144
|
+
['coordsize', '21600,21600'],
|
145
|
+
['o:spt', 201],
|
146
|
+
['path', 'm,l,21600r21600,l21600,xe']
|
147
|
+
]
|
148
148
|
|
149
149
|
@writer.tag_elements('v:shapetype', attributes) do
|
150
150
|
# Write the v:stroke element.
|
@@ -169,14 +169,14 @@ module Writexlsx
|
|
169
169
|
stroked = 'f'
|
170
170
|
|
171
171
|
attributes = [
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
172
|
+
['id', id],
|
173
|
+
['coordsize', coordsize],
|
174
|
+
['o:spt', spt],
|
175
|
+
['o:preferrelative', o_preferrelative],
|
176
|
+
['path', path],
|
177
|
+
['filled', filled],
|
178
|
+
['stroked', stroked]
|
179
|
+
]
|
180
180
|
|
181
181
|
@writer.tag_elements('v:shapetype', attributes) do
|
182
182
|
# Write the v:stroke element.
|
@@ -198,12 +198,12 @@ module Writexlsx
|
|
198
198
|
#
|
199
199
|
def write_button_path
|
200
200
|
attributes = [
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
201
|
+
['shadowok', 'f'],
|
202
|
+
['o:extrusionok', 'f'],
|
203
|
+
['strokeok', 'f'],
|
204
|
+
['fillok', 'f'],
|
205
|
+
['o:connecttype', 'rect']
|
206
|
+
]
|
207
207
|
@writer.empty_tag('v:path', attributes)
|
208
208
|
end
|
209
209
|
|
@@ -216,10 +216,10 @@ module Writexlsx
|
|
216
216
|
connecttype = 'rect'
|
217
217
|
|
218
218
|
attributes = [
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
219
|
+
['o:extrusionok', extrusionok],
|
220
|
+
['gradientshapeok', gradientshapeok],
|
221
|
+
['o:connecttype', connecttype]
|
222
|
+
]
|
223
223
|
|
224
224
|
@writer.empty_tag('v:path', attributes)
|
225
225
|
end
|
@@ -229,9 +229,9 @@ module Writexlsx
|
|
229
229
|
#
|
230
230
|
def write_shapetype_lock
|
231
231
|
attributes = [
|
232
|
-
|
233
|
-
|
234
|
-
|
232
|
+
['v:ext', 'edit'],
|
233
|
+
['shapetype', 't']
|
234
|
+
]
|
235
235
|
@writer.empty_tag('o:lock', attributes)
|
236
236
|
end
|
237
237
|
|
@@ -240,9 +240,9 @@ module Writexlsx
|
|
240
240
|
#
|
241
241
|
def write_rotation_lock
|
242
242
|
attributes = [
|
243
|
-
|
244
|
-
|
245
|
-
|
243
|
+
['v:ext', 'edit'],
|
244
|
+
['rotation', 't']
|
245
|
+
]
|
246
246
|
@writer.empty_tag('o:lock', attributes)
|
247
247
|
end
|
248
248
|
|
@@ -254,9 +254,9 @@ module Writexlsx
|
|
254
254
|
aspectratio = 't'
|
255
255
|
|
256
256
|
attributes = [
|
257
|
-
|
258
|
-
|
259
|
-
|
257
|
+
['v:ext', ext],
|
258
|
+
['aspectratio', aspectratio]
|
259
|
+
]
|
260
260
|
|
261
261
|
@writer.empty_tag('o:lock', attributes)
|
262
262
|
end
|
data/lib/write_xlsx/shape.rb
CHANGED
@@ -154,15 +154,17 @@ module Writexlsx
|
|
154
154
|
# EMUs per point. Therefore, 12,700 * 3 /4 = 9,525 EMUs per pixel.
|
155
155
|
#
|
156
156
|
def calc_position_emus(worksheet)
|
157
|
-
c_start, r_start,
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
157
|
+
c_start, r_start,
|
158
|
+
xx1, yy1, c_end, r_end,
|
159
|
+
xx2, yy2, x_abslt, y_abslt =
|
160
|
+
worksheet.position_object_pixels(
|
161
|
+
@column_start,
|
162
|
+
@row_start,
|
163
|
+
@x_offset,
|
164
|
+
@y_offset,
|
165
|
+
@width * @scale_x,
|
166
|
+
@height * @scale_y
|
167
|
+
)
|
166
168
|
|
167
169
|
# Now that x2/y2 have been calculated with a potentially negative
|
168
170
|
# width/height we use the absolute value and convert to EMUs.
|
@@ -297,12 +299,12 @@ module Writexlsx
|
|
297
299
|
|
298
300
|
def dimensions
|
299
301
|
[
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
302
|
+
@column_start, @row_start,
|
303
|
+
@x1, @y1,
|
304
|
+
@column_end, @row_end,
|
305
|
+
@x2, @y2,
|
306
|
+
@x_abs, @y_abs,
|
307
|
+
@width_emu, @height_emu
|
306
308
|
]
|
307
309
|
end
|
308
310
|
end
|