xref: /plugin/dw2pdf/vendor/mpdf/qrcode/src/Output/Mpdf.php (revision fb347f35dc824cf59875d883dbf86d311f54de06)
1*fb347f35SAndreas Gohr<?php
2*fb347f35SAndreas Gohr
3*fb347f35SAndreas Gohrnamespace Mpdf\QrCode\Output;
4*fb347f35SAndreas Gohr
5*fb347f35SAndreas Gohruse Mpdf\Mpdf as MpdfObject;
6*fb347f35SAndreas Gohruse Mpdf\QrCode\QrCode;
7*fb347f35SAndreas Gohr
8*fb347f35SAndreas Gohrclass Mpdf
9*fb347f35SAndreas Gohr{
10*fb347f35SAndreas Gohr
11*fb347f35SAndreas Gohr	/**
12*fb347f35SAndreas Gohr	 * Write the QR code into an Mpdf\Mpdf object
13*fb347f35SAndreas Gohr	 *
14*fb347f35SAndreas Gohr	 * @param \Mpdf\QrCode\QrCode $qrCode QR code instance
15*fb347f35SAndreas Gohr	 * @param \Mpdf\Mpdf $mpdf Mpdf instance
16*fb347f35SAndreas Gohr	 * @param float $x position X
17*fb347f35SAndreas Gohr	 * @param float $y position Y
18*fb347f35SAndreas Gohr	 * @param float $w QR code width
19*fb347f35SAndreas Gohr	 * @param int[] $background RGB background color
20*fb347f35SAndreas Gohr	 * @param int[] $color RGB foreground and border color
21*fb347f35SAndreas Gohr	 */
22*fb347f35SAndreas Gohr	public function output(QrCode $qrCode, MpdfObject $mpdf, $x, $y, $w, $background = [255, 255, 255], $color = [0, 0, 0])
23*fb347f35SAndreas Gohr	{
24*fb347f35SAndreas Gohr		$size = $w;
25*fb347f35SAndreas Gohr		$qrSize = $qrCode->getQrSize();
26*fb347f35SAndreas Gohr		$s = $size / $qrCode->getQrDimensions();
27*fb347f35SAndreas Gohr
28*fb347f35SAndreas Gohr		$mpdf->SetDrawColor($color[0], $color[1], $color[2]);
29*fb347f35SAndreas Gohr		$mpdf->SetFillColor($background[0], $background[1], $background[2]);
30*fb347f35SAndreas Gohr
31*fb347f35SAndreas Gohr		if ($qrCode->isBorderDisabled()) {
32*fb347f35SAndreas Gohr			$minSize = 4;
33*fb347f35SAndreas Gohr			$maxSize = $qrSize - 4;
34*fb347f35SAndreas Gohr			$mpdf->Rect($x, $y, $size, $size, 'F');
35*fb347f35SAndreas Gohr		} else {
36*fb347f35SAndreas Gohr			$minSize = 0;
37*fb347f35SAndreas Gohr			$maxSize = $qrSize;
38*fb347f35SAndreas Gohr			$mpdf->Rect($x, $y, $size, $size, 'FD');
39*fb347f35SAndreas Gohr		}
40*fb347f35SAndreas Gohr
41*fb347f35SAndreas Gohr		$mpdf->SetFillColor($color[0], $color[1], $color[2]);
42*fb347f35SAndreas Gohr
43*fb347f35SAndreas Gohr		$final = $qrCode->getFinal();
44*fb347f35SAndreas Gohr
45*fb347f35SAndreas Gohr		for ($j = $minSize; $j < $maxSize; $j++) {
46*fb347f35SAndreas Gohr			for ($i = $minSize; $i < $maxSize; $i++) {
47*fb347f35SAndreas Gohr				if ($final[$i + $j * $qrSize + 1]) {
48*fb347f35SAndreas Gohr					$mpdf->Rect($x + ($i - $minSize) * $s, $y + ($j - $minSize) * $s, $s, $s, 'F');
49*fb347f35SAndreas Gohr				}
50*fb347f35SAndreas Gohr			}
51*fb347f35SAndreas Gohr		}
52*fb347f35SAndreas Gohr	}
53*fb347f35SAndreas Gohr
54*fb347f35SAndreas Gohr}
55