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