* @copyright 2020 smiley * @license MIT */ namespace WCPOS\Vendor\chillerlan\QRCode\Data; use WCPOS\Vendor\chillerlan\QRCode\Common\Mode; /** * abstract methods for the several data modes */ abstract class QRDataModeAbstract implements QRDataModeInterface { /** * The data to write */ protected string $data; /** * QRDataModeAbstract constructor. * * @throws \chillerlan\QRCode\Data\QRCodeDataException */ public function __construct(string $data) { $data = $this::convertEncoding($data); if (!$this::validateString($data)) { throw new QRCodeDataException('invalid data'); } $this->data = $data; } /** * returns the character count of the $data string */ protected function getCharCount() : int { return \strlen($this->data); } /** * @inheritDoc */ public static function convertEncoding(string $string) : string { return $string; } /** * shortcut */ protected static function getLengthBits(int $versionNumber) : int { return Mode::getLengthBitsForVersion(static::DATAMODE, $versionNumber); } }