Skip to content

Commit 1468e7d

Browse files
committed
Merge branch 'develop' into issue192
2 parents 1b34a23 + a84e729 commit 1468e7d

File tree

6 files changed

+74
-100
lines changed

6 files changed

+74
-100
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
- ODPresentation & PowerPoint2007 Writer : Support for video - @Progi1984 GH-123
2727
- ODPresentation & PowerPoint2007 Writer : Support for Visibility for slides - @Progi1984
2828
- PowerPoint2007 Writer : Presentation with predefined View Type - @Progi1984 GH-120
29+
- PowerPoint2007 Writer : Implement alpha channel to Fills - @Dayjo GH-203 / @Progi1984 GH-215
2930

3031
## 0.6.0 - 2016-01-24
3132

src/PhpPresentation/Style/Color.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,21 @@ public function setARGB($pValue = self::COLOR_BLACK)
8787
return $this;
8888
}
8989

90+
/**
91+
* Get the alpha % of the ARGB
92+
* Will return 100 if no ARGB
93+
* @return integer
94+
*/
95+
public function getAlpha()
96+
{
97+
$alpha = 100;
98+
if (strlen($this->argb) >= 6) {
99+
$dec = hexdec(substr($this->argb, 0, 2));
100+
$alpha = number_format(($dec/255) * 100, 2);
101+
}
102+
return $alpha;
103+
}
104+
90105
/**
91106
* Get RGB
92107
*

src/PhpPresentation/Writer/PowerPoint2007/AbstractDecoratorWriter.php

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use PhpOffice\Common\Drawing as CommonDrawing;
66
use PhpOffice\Common\XMLWriter;
77
use PhpOffice\PhpPresentation\Style\Border;
8+
use PhpOffice\PhpPresentation\Style\Color;
89
use PhpOffice\PhpPresentation\Style\Fill;
910
use PhpOffice\PhpPresentation\Style\Outline;
1011

@@ -84,12 +85,7 @@ protected function writeBorder(XMLWriter $objWriter, $pBorder, $pElementName = '
8485
} else {
8586
// a:solidFill
8687
$objWriter->startElement('a:solidFill');
87-
88-
// a:srgbClr
89-
$objWriter->startElement('a:srgbClr');
90-
$objWriter->writeAttribute('val', $pBorder->getColor()->getRGB());
91-
$objWriter->endElement();
92-
88+
$this->writeColor($objWriter, $pBorder->getColor());
9389
$objWriter->endElement();
9490
}
9591

@@ -118,6 +114,29 @@ protected function writeBorder(XMLWriter $objWriter, $pBorder, $pElementName = '
118114
$objWriter->endElement();
119115
}
120116

117+
/**
118+
* @param XMLWriter $objWriter
119+
* @param Color $color
120+
* @param int|null $alpha
121+
*/
122+
protected function writeColor(XMLWriter $objWriter, Color $color, $alpha = null)
123+
{
124+
if (is_null($alpha)) {
125+
$alpha = $color->getAlpha();
126+
}
127+
128+
// a:srgbClr
129+
$objWriter->startElement('a:srgbClr');
130+
$objWriter->writeAttribute('val', $color->getRGB());
131+
132+
// a:alpha
133+
$objWriter->startElement('a:alpha');
134+
$objWriter->writeAttribute('val', $alpha * 1000);
135+
$objWriter->endElement();
136+
137+
$objWriter->endElement();
138+
}
139+
121140
/**
122141
* Write Fill
123142
*
@@ -159,12 +178,7 @@ protected function writeSolidFill(XMLWriter $objWriter, Fill $pFill)
159178
{
160179
// a:gradFill
161180
$objWriter->startElement('a:solidFill');
162-
163-
// srgbClr
164-
$objWriter->startElement('a:srgbClr');
165-
$objWriter->writeAttribute('val', $pFill->getStartColor()->getRGB());
166-
$objWriter->endElement();
167-
181+
$this->writeColor($objWriter, $pFill->getStartColor());
168182
$objWriter->endElement();
169183
}
170184

@@ -185,23 +199,13 @@ protected function writeGradientFill(XMLWriter $objWriter, Fill $pFill)
185199
// a:gs
186200
$objWriter->startElement('a:gs');
187201
$objWriter->writeAttribute('pos', '0');
188-
189-
// srgbClr
190-
$objWriter->startElement('a:srgbClr');
191-
$objWriter->writeAttribute('val', $pFill->getStartColor()->getRGB());
192-
$objWriter->endElement();
193-
202+
$this->writeColor($objWriter, $pFill->getStartColor());
194203
$objWriter->endElement();
195204

196205
// a:gs
197206
$objWriter->startElement('a:gs');
198207
$objWriter->writeAttribute('pos', '100000');
199-
200-
// srgbClr
201-
$objWriter->startElement('a:srgbClr');
202-
$objWriter->writeAttribute('val', $pFill->getEndColor()->getRGB());
203-
$objWriter->endElement();
204-
208+
$this->writeColor($objWriter, $pFill->getEndColor());
205209
$objWriter->endElement();
206210

207211
$objWriter->endElement();
@@ -230,20 +234,14 @@ protected function writePatternFill(XMLWriter $objWriter, Fill $pFill)
230234
// fgClr
231235
$objWriter->startElement('a:fgClr');
232236

233-
// srgbClr
234-
$objWriter->startElement('a:srgbClr');
235-
$objWriter->writeAttribute('val', $pFill->getStartColor()->getRGB());
236-
$objWriter->endElement();
237+
$this->writeColor($objWriter, $pFill->getStartColor());
237238

238239
$objWriter->endElement();
239240

240241
// bgClr
241242
$objWriter->startElement('a:bgClr');
242243

243-
// srgbClr
244-
$objWriter->startElement('a:srgbClr');
245-
$objWriter->writeAttribute('val', $pFill->getEndColor()->getRGB());
246-
$objWriter->endElement();
244+
$this->writeColor($objWriter, $pFill->getEndColor());
247245

248246
$objWriter->endElement();
249247

src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php

Lines changed: 11 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -165,16 +165,7 @@ public function writeChart(Chart $chart)
165165
$objWriter->writeAttribute('algn', $chart->getShadow()->getAlignment());
166166
$objWriter->writeAttribute('rotWithShape', '0');
167167

168-
// a:srgbClr
169-
$objWriter->startElement('a:srgbClr');
170-
$objWriter->writeAttribute('val', $chart->getShadow()->getColor()->getRGB());
171-
172-
// a:alpha
173-
$objWriter->startElement('a:alpha');
174-
$objWriter->writeAttribute('val', $chart->getShadow()->getAlpha() * 1000);
175-
$objWriter->endElement();
176-
177-
$objWriter->endElement();
168+
$this->writeColor($objWriter, $chart->getShadow()->getColor(), $chart->getShadow()->getAlpha());
178169

179170
$objWriter->endElement();
180171

@@ -447,10 +438,7 @@ protected function writeTitle(XMLWriter $objWriter, Title $subject)
447438
// Font - a:solidFill
448439
$objWriter->startElement('a:solidFill');
449440

450-
// a:srgbClr
451-
$objWriter->startElement('a:srgbClr');
452-
$objWriter->writeAttribute('val', $subject->getFont()->getColor()->getRGB());
453-
$objWriter->endElement();
441+
$this->writeColor($objWriter, $subject->getFont()->getColor());
454442

455443
$objWriter->endElement();
456444

@@ -617,10 +605,7 @@ protected function writeLegend(XMLWriter $objWriter, Legend $subject)
617605
// Font - a:solidFill
618606
$objWriter->startElement('a:solidFill');
619607

620-
// a:srgbClr
621-
$objWriter->startElement('a:srgbClr');
622-
$objWriter->writeAttribute('val', $subject->getFont()->getColor()->getRGB());
623-
$objWriter->endElement();
608+
$this->writeColor($objWriter, $subject->getFont()->getColor());
624609

625610
$objWriter->endElement();
626611

@@ -780,10 +765,7 @@ protected function writeTypeArea(XMLWriter $objWriter, Area $subject, $includeSh
780765
// c:ser > c:dLbls > c:txPr > a:p > a:pPr > a:defRPr > a:solidFill
781766
$objWriter->startElement('a:solidFill');
782767

783-
// c:ser > c:dLbls > c:txPr > a:p > a:pPr > a:defRPr > a:solidFill > a:srgbClr
784-
$objWriter->startElement('a:srgbClr');
785-
$objWriter->writeAttribute('val', $series->getFont()->getColor()->getRGB());
786-
$objWriter->endElement();
768+
$this->writeColor($objWriter, $series->getFont()->getColor());
787769

788770
// c:ser > c:dLbls > c:txPr > a:p > a:pPr > a:defRPr > ## a:solidFill
789771
$objWriter->endElement();
@@ -999,10 +981,7 @@ protected function writeTypeBar(XMLWriter $objWriter, Bar $subject, $includeShee
999981
// Font - a:solidFill
1000982
$objWriter->startElement('a:solidFill');
1001983

1002-
// a:srgbClr
1003-
$objWriter->startElement('a:srgbClr');
1004-
$objWriter->writeAttribute('val', $series->getFont()->getColor()->getRGB());
1005-
$objWriter->endElement();
984+
$this->writeColor($objWriter, $series->getFont()->getColor());
1006985

1007986
$objWriter->endElement();
1008987

@@ -1216,10 +1195,7 @@ protected function writeTypeBar3D(XMLWriter $objWriter, Bar3D $subject, $include
12161195
// Font - a:solidFill
12171196
$objWriter->startElement('a:solidFill');
12181197

1219-
// a:srgbClr
1220-
$objWriter->startElement('a:srgbClr');
1221-
$objWriter->writeAttribute('val', $series->getFont()->getColor()->getRGB());
1222-
$objWriter->endElement();
1198+
$this->writeColor($objWriter, $series->getFont()->getColor());
12231199

12241200
$objWriter->endElement();
12251201

@@ -1417,10 +1393,7 @@ protected function writeTypePie(XMLWriter $objWriter, Pie $subject, $includeShee
14171393
// Font - a:solidFill
14181394
$objWriter->startElement('a:solidFill');
14191395

1420-
// a:srgbClr
1421-
$objWriter->startElement('a:srgbClr');
1422-
$objWriter->writeAttribute('val', $series->getFont()->getColor()->getRGB());
1423-
$objWriter->endElement();
1396+
$this->writeColor($objWriter, $series->getFont()->getColor());
14241397

14251398
$objWriter->endElement();
14261399

@@ -1591,10 +1564,7 @@ protected function writeTypePie3D(XMLWriter $objWriter, Pie3D $subject, $include
15911564
// Font - a:solidFill
15921565
$objWriter->startElement('a:solidFill');
15931566

1594-
// a:srgbClr
1595-
$objWriter->startElement('a:srgbClr');
1596-
$objWriter->writeAttribute('val', $series->getFont()->getColor()->getRGB());
1597-
$objWriter->endElement();
1567+
$this->writeColor($objWriter, $series->getFont()->getColor());
15981568

15991569
$objWriter->endElement();
16001570

@@ -1743,10 +1713,7 @@ protected function writeTypeLine(XMLWriter $objWriter, Line $subject, $includeSh
17431713
// Font - a:solidFill
17441714
$objWriter->startElement('a:solidFill');
17451715

1746-
// a:srgbClr
1747-
$objWriter->startElement('a:srgbClr');
1748-
$objWriter->writeAttribute('val', $series->getFont()->getColor()->getRGB());
1749-
$objWriter->endElement();
1716+
$this->writeColor($objWriter, $series->getFont()->getColor());
17501717

17511718
$objWriter->endElement();
17521719

@@ -1927,10 +1894,7 @@ protected function writeTypeScatter(XMLWriter $objWriter, Scatter $subject, $inc
19271894
// Font - a:solidFill
19281895
$objWriter->startElement('a:solidFill');
19291896

1930-
// a:srgbClr
1931-
$objWriter->startElement('a:srgbClr');
1932-
$objWriter->writeAttribute('val', $series->getFont()->getColor()->getRGB());
1933-
$objWriter->endElement();
1897+
$this->writeColor($objWriter, $series->getFont()->getColor());
19341898

19351899
$objWriter->endElement();
19361900

@@ -2205,10 +2169,7 @@ protected function writeAxis(XMLWriter $objWriter, Chart\Axis $oAxis, $typeAxis)
22052169
// Font - a:solidFill
22062170
$objWriter->startElement('a:solidFill');
22072171

2208-
// a:srgbClr
2209-
$objWriter->startElement('a:srgbClr');
2210-
$objWriter->writeAttribute('val', $oAxis->getFont()->getColor()->getRGB());
2211-
$objWriter->endElement();
2172+
$this->writeColor($objWriter, $oAxis->getFont()->getColor());
22122173

22132174
$objWriter->endElement();
22142175

src/PhpPresentation/Writer/PowerPoint2007/PptSlides.php

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -376,10 +376,7 @@ public function writeSlide(Slide $pSlide)
376376
// a:solidFill
377377
$objWriter->startElement('a:solidFill');
378378

379-
// a:srgbClr
380-
$objWriter->startElement('a:srgbClr');
381-
$objWriter->writeAttribute('val', $oBackground->getColor()->getRGB());
382-
$objWriter->endElement();
379+
$this->writeColor($objWriter, $oBackground->getColor());
383380

384381
// > a:solidFill
385382
$objWriter->endElement();
@@ -1245,10 +1242,7 @@ protected function writeParagraphs(XMLWriter $objWriter, $paragraphs)
12451242
// Color - a:solidFill
12461243
$objWriter->startElement('a:solidFill');
12471244

1248-
// a:srgbClr
1249-
$objWriter->startElement('a:srgbClr');
1250-
$objWriter->writeAttribute('val', $element->getFont()->getColor()->getRGB());
1251-
$objWriter->endElement();
1245+
$this->writeColor($objWriter, $element->getFont()->getColor());
12521246

12531247
$objWriter->endElement();
12541248

@@ -1410,16 +1404,7 @@ protected function writeShadow(XMLWriter $objWriter, $oShadow)
14101404
$objWriter->writeAttribute('algn', $oShadow->getAlignment());
14111405
$objWriter->writeAttribute('rotWithShape', '0');
14121406

1413-
// a:srgbClr
1414-
$objWriter->startElement('a:srgbClr');
1415-
$objWriter->writeAttribute('val', $oShadow->getColor()->getRGB());
1416-
1417-
// a:alpha
1418-
$objWriter->startElement('a:alpha');
1419-
$objWriter->writeAttribute('val', $oShadow->getAlpha() * 1000);
1420-
$objWriter->endElement();
1421-
1422-
$objWriter->endElement();
1407+
$this->writeColor($objWriter, $oShadow->getColor(), $oShadow->getAlpha());
14231408

14241409
$objWriter->endElement();
14251410

tests/PhpPresentation/Tests/Style/ColorTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,20 @@ public function testConstruct()
3737
$this->assertEquals(Color::COLOR_BLUE, $object->getARGB());
3838
}
3939

40+
/**
41+
* Test Alpha
42+
*/
43+
public function testAlpha()
44+
{
45+
$object = new Color();
46+
$this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Color', $object->setARGB());
47+
$this->assertEquals(100, $object->getAlpha());
48+
$this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Color', $object->setARGB(Color::COLOR_BLUE));
49+
$this->assertEquals(100, $object->getAlpha());
50+
$this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Color', $object->setARGB('AA0000FF'));
51+
$this->assertEquals(66.67, $object->getAlpha());
52+
}
53+
4054
/**
4155
* Test get/set ARGB
4256
*/

0 commit comments

Comments
 (0)