1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
declare(strict_types=1); |
4
|
|
|
|
5
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Writer\Xlsx; |
6
|
|
|
|
7
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet; |
8
|
|
|
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; |
9
|
|
|
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional; |
10
|
|
|
|
11
|
|
|
class TransparentDrawingsTest extends AbstractFunctional |
12
|
|
|
{ |
13
|
|
|
/** |
14
|
|
|
* Save and load XLSX with 2-cell anchor drawing with transparency. |
15
|
|
|
*/ |
16
|
|
|
public function testTwoCellAnchorTransparent(): void |
17
|
|
|
{ |
18
|
|
|
$spreadsheet = new Spreadsheet(); |
19
|
|
|
$sheet = $spreadsheet->getActiveSheet(); |
20
|
|
|
|
21
|
|
|
// Add gif image that coordinates is two cell anchor. |
22
|
|
|
$drawing = new Drawing(); |
23
|
|
|
$drawing->setName('Blue Square'); |
24
|
|
|
$drawing->setPath('tests/data/Writer/XLSX/blue_square.png'); |
25
|
|
|
self::assertEquals($drawing->getWidth(), 100); |
26
|
|
|
self::assertEquals($drawing->getHeight(), 100); |
27
|
|
|
$drawing->setCoordinates('A1'); |
28
|
|
|
$drawing->setOffsetX(30); |
29
|
|
|
$drawing->setOffsetY(10); |
30
|
|
|
$drawing->setCoordinates2('E8'); |
31
|
|
|
$drawing->setOffsetX2(-50); |
32
|
|
|
$drawing->setOffsetY2(-20); |
33
|
|
|
$drawing->setOpacity(40000); |
34
|
|
|
$drawing->setWorksheet($sheet); |
35
|
|
|
|
36
|
|
|
// Write file |
37
|
|
|
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx'); |
38
|
|
|
$spreadsheet->disconnectWorksheets(); |
39
|
|
|
$rsheet = $reloadedSpreadsheet->getActiveSheet(); |
40
|
|
|
|
41
|
|
|
// Check image coordinates. |
42
|
|
|
$drawingCollection = $rsheet->getDrawingCollection(); |
43
|
|
|
self::assertCount(1, $drawingCollection); |
44
|
|
|
$drawing = $drawingCollection[0]; |
45
|
|
|
self::assertNotNull($drawing); |
46
|
|
|
|
47
|
|
|
self::assertSame(100, $drawing->getWidth()); |
48
|
|
|
self::assertSame(100, $drawing->getHeight()); |
49
|
|
|
self::assertSame('A1', $drawing->getCoordinates()); |
50
|
|
|
self::assertSame(30, $drawing->getOffsetX()); |
51
|
|
|
self::assertSame(10, $drawing->getOffsetY()); |
52
|
|
|
self::assertSame('E8', $drawing->getCoordinates2()); |
53
|
|
|
self::assertSame(-50, $drawing->getOffsetX2()); |
54
|
|
|
self::assertSame(-20, $drawing->getOffsetY2()); |
55
|
|
|
self::assertSame(40000, $drawing->getOpacity()); |
56
|
|
|
self::assertSame($rsheet, $drawing->getWorksheet()); |
57
|
|
|
$reloadedSpreadsheet->disconnectWorksheets(); |
58
|
|
|
} |
59
|
|
|
|
60
|
|
|
/** |
61
|
|
|
* Save and load XLSX with 1-cell anchor drawing with transparency. |
62
|
|
|
*/ |
63
|
|
|
public function testOneCellAnchorTransparent(): void |
64
|
|
|
{ |
65
|
|
|
$spreadsheet = new Spreadsheet(); |
66
|
|
|
$sheet = $spreadsheet->getActiveSheet(); |
67
|
|
|
|
68
|
|
|
// Add gif image that coordinates is two cell anchor. |
69
|
|
|
$drawing = new Drawing(); |
70
|
|
|
$drawing->setName('Blue Square'); |
71
|
|
|
$drawing->setPath('tests/data/Writer/XLSX/blue_square.png'); |
72
|
|
|
//self::assertEquals($drawing->getWidth(), 100); |
73
|
|
|
//self::assertEquals($drawing->getHeight(), 100); |
74
|
|
|
$drawing->setCoordinates('A1'); |
75
|
|
|
$drawing->setOpacity(40000); |
76
|
|
|
$drawing->setWorksheet($sheet); |
77
|
|
|
|
78
|
|
|
// Write file |
79
|
|
|
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx'); |
80
|
|
|
$spreadsheet->disconnectWorksheets(); |
81
|
|
|
$rsheet = $reloadedSpreadsheet->getActiveSheet(); |
82
|
|
|
|
83
|
|
|
// Check image coordinates. |
84
|
|
|
$drawingCollection = $rsheet->getDrawingCollection(); |
85
|
|
|
self::assertCount(1, $drawingCollection); |
86
|
|
|
$drawing = $drawingCollection[0]; |
87
|
|
|
self::assertNotNull($drawing); |
88
|
|
|
|
89
|
|
|
self::assertSame(100, $drawing->getWidth()); |
90
|
|
|
self::assertSame(100, $drawing->getHeight()); |
91
|
|
|
self::assertSame('A1', $drawing->getCoordinates()); |
92
|
|
|
self::assertSame(40000, $drawing->getOpacity()); |
93
|
|
|
self::assertSame($rsheet, $drawing->getWorksheet()); |
94
|
|
|
$reloadedSpreadsheet->disconnectWorksheets(); |
95
|
|
|
} |
96
|
|
|
} |
97
|
|
|
|