123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- <?php
- declare(strict_types = 1);
- namespace BaconQrCode\Encoder;
- use BaconQrCode\Common\ErrorCorrectionLevel;
- use BaconQrCode\Common\Mode;
- use BaconQrCode\Common\Version;
- /**
- * QR code.
- */
- final class QrCode
- {
- /**
- * Number of possible mask patterns.
- */
- public const NUM_MASK_PATTERNS = 8;
- /**
- * Mode of the QR code.
- *
- * @var Mode
- */
- private $mode;
- /**
- * EC level of the QR code.
- *
- * @var ErrorCorrectionLevel
- */
- private $errorCorrectionLevel;
- /**
- * Version of the QR code.
- *
- * @var Version
- */
- private $version;
- /**
- * Mask pattern of the QR code.
- *
- * @var int
- */
- private $maskPattern = -1;
- /**
- * Matrix of the QR code.
- *
- * @var ByteMatrix
- */
- private $matrix;
- public function __construct(
- Mode $mode,
- ErrorCorrectionLevel $errorCorrectionLevel,
- Version $version,
- int $maskPattern,
- ByteMatrix $matrix
- ) {
- $this->mode = $mode;
- $this->errorCorrectionLevel = $errorCorrectionLevel;
- $this->version = $version;
- $this->maskPattern = $maskPattern;
- $this->matrix = $matrix;
- }
- /**
- * Gets the mode.
- */
- public function getMode() : Mode
- {
- return $this->mode;
- }
- /**
- * Gets the EC level.
- */
- public function getErrorCorrectionLevel() : ErrorCorrectionLevel
- {
- return $this->errorCorrectionLevel;
- }
- /**
- * Gets the version.
- */
- public function getVersion() : Version
- {
- return $this->version;
- }
- /**
- * Gets the mask pattern.
- */
- public function getMaskPattern() : int
- {
- return $this->maskPattern;
- }
- /**
- * Gets the matrix.
- *
- * @return ByteMatrix
- */
- public function getMatrix()
- {
- return $this->matrix;
- }
- /**
- * Validates whether a mask pattern is valid.
- */
- public static function isValidMaskPattern(int $maskPattern) : bool
- {
- return $maskPattern > 0 && $maskPattern < self::NUM_MASK_PATTERNS;
- }
- /**
- * Returns a string representation of the QR code.
- */
- public function __toString() : string
- {
- $result = "<<\n"
- . ' mode: ' . $this->mode . "\n"
- . ' ecLevel: ' . $this->errorCorrectionLevel . "\n"
- . ' version: ' . $this->version . "\n"
- . ' maskPattern: ' . $this->maskPattern . "\n";
- if ($this->matrix === null) {
- $result .= " matrix: null\n";
- } else {
- $result .= " matrix:\n";
- $result .= $this->matrix;
- }
- $result .= ">>\n";
- return $result;
- }
- }
|