From 868b962347cf8ec001e6a7d68ebc294b633d80c0 Mon Sep 17 00:00:00 2001 From: codemasher Date: Sat, 10 Mar 2018 16:36:36 +0100 Subject: [PATCH] :octocat: https://github.com/chillerlan/php-qrcode/issues/13 --- src/QROptions.php | 212 +-------------------------------------- src/QROptionsTrait.php | 221 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 224 insertions(+), 209 deletions(-) create mode 100644 src/QROptionsTrait.php diff --git a/src/QROptions.php b/src/QROptions.php index 8e280a5a5..5468e98f3 100644 --- a/src/QROptions.php +++ b/src/QROptions.php @@ -12,10 +12,7 @@ namespace chillerlan\QRCode; -use chillerlan\QRCode\Data\QRMatrix; -use chillerlan\Traits\{ - Container, ContainerInterface -}; +use chillerlan\Traits\ContainerAbstract; /** * @property int $version @@ -48,209 +45,6 @@ * * @property array $moduleValues */ -class QROptions implements ContainerInterface{ - use Container; - - /** - * QR Code version number - * - * [1 ... 40] or QRCode::VERSION_AUTO - * - * @var int - */ - protected $version = QRCode::VERSION_AUTO; - - /** - * Minimum QR version (if $version = QRCode::VERSION_AUTO) - * - * @var int - */ - protected $versionMin = 1; - - /** - * Maximum QR version - * - * @var int - */ - protected $versionMax = 40; - - /** - * Error correct level - * - * QRCode::ECC_X where X is - * L => 7% - * M => 15% - * Q => 25% - * H => 30% - * - * @var int - */ - protected $eccLevel = QRCode::ECC_L; - - /** - * Mask Pattern to use - * - * [0...7] or QRCode::MASK_PATTERN_AUTO - * - * @var int - */ - protected $maskPattern = QRCode::MASK_PATTERN_AUTO; - - /** - * Add a "quiet zone" (margin) according to the QR code spec - * - * @var bool - */ - protected $addQuietzone = true; - - /** - * Size of the quiet zone - * - * internally clamped to [0 ... $moduleCount / 2], defaults to 4 modules - * - * @var int - */ - protected $quietzoneSize = 4; - - /** - * QRCode::OUTPUT_MARKUP_XXXX where XXXX = HTML, SVG - * QRCode::OUTPUT_IMAGE_XXX where XXX = PNG, GIF, JPG - * QRCode::OUTPUT_STRING_XXXX where XXXX = TEXT, JSON - * QRCode::OUTPUT_CUSTOM - * - * @var string - */ - protected $outputType = QRCode::OUTPUT_IMAGE_PNG; - - /** - * the FQCN of the custom QROutputInterface if $outputType is set to QRCode::OUTPUT_CUSTOM - * - * @var string - */ - protected $outputInterface; - - /** - * /path/to/cache.file - * - * @var string - */ - protected $cachefile; - - /** - * newline string [HTML, SVG, TEXT] - * - * @var string - */ - protected $eol = PHP_EOL; - - /** - * size of a QR code pixel [SVG, IMAGE_*] - * HTML -> via CSS - * - * @var int - */ - protected $scale = 5; - - /** - * a common css class - * - * @var string - */ - protected $cssClass; - - /** - * SVG opacity - * - * @var float - */ - protected $svgOpacity = 1.0; - - /** - * anything between - * - * @see https://developer.mozilla.org/docs/Web/SVG/Element/defs - * - * @var string - */ - protected $svgDefs = ''; - - /** - * string substitute for dark - * - * @var string - */ - protected $textDark = '🔴'; - - /** - * string substitute for light - * - * @var string - */ - protected $textLight = '⭕'; - - /** - * toggle base64 or raw image data - * - * @var bool - */ - protected $imageBase64 = true; - - /** - * toggle transparency, not supported by jpg - * - * @var bool - */ - protected $imageTransparent = true; - - /** - * @see imagecolortransparent() - * - * @var array [R, G, B] - */ - protected $imageTransparencyBG = [255, 255, 255]; - - /** - * @see imagepng() - * - * @var int - */ - protected $pngCompression = -1; - - /** - * @see imagejpeg() - * - * @var int - */ - protected $jpegQuality = 85; - - /** - * Module values map - * - * HTML : #ABCDEF, cssname, rgb(), rgba()... - * IMAGE: [63, 127, 255] // R, G, B - * - * @var array - */ - protected $moduleValues = [ - // light - QRMatrix::M_DATA => false, // 4 - QRMatrix::M_FINDER => false, // 6 - QRMatrix::M_SEPARATOR => false, // 8 - QRMatrix::M_ALIGNMENT => false, // 10 - QRMatrix::M_TIMING => false, // 12 - QRMatrix::M_FORMAT => false, // 14 - QRMatrix::M_VERSION => false, // 16 - QRMatrix::M_QUIETZONE => false, // 18 - QRMatrix::M_TEST => false, // 255 - // dark - QRMatrix::M_DARKMODULE << 8 => true, // 512 - QRMatrix::M_DATA << 8 => true, // 1024 - QRMatrix::M_FINDER << 8 => true, // 1536 - QRMatrix::M_ALIGNMENT << 8 => true, // 2560 - QRMatrix::M_TIMING << 8 => true, // 3072 - QRMatrix::M_FORMAT << 8 => true, // 3584 - QRMatrix::M_VERSION << 8 => true, // 4096 - QRMatrix::M_TEST << 8 => true, // 65280 - ]; - +class QROptions extends ContainerAbstract{ + use QROptionsTrait; } diff --git a/src/QROptionsTrait.php b/src/QROptionsTrait.php new file mode 100644 index 000000000..597324242 --- /dev/null +++ b/src/QROptionsTrait.php @@ -0,0 +1,221 @@ + + * @copyright 2018 smiley + * @license MIT + */ + +namespace chillerlan\QRCode; + +use chillerlan\QRCode\Data\QRMatrix; + +trait QROptionsTrait{ + + /** + * QR Code version number + * + * [1 ... 40] or QRCode::VERSION_AUTO + * + * @var int + */ + protected $version = QRCode::VERSION_AUTO; + + /** + * Minimum QR version (if $version = QRCode::VERSION_AUTO) + * + * @var int + */ + protected $versionMin = 1; + + /** + * Maximum QR version + * + * @var int + */ + protected $versionMax = 40; + + /** + * Error correct level + * + * QRCode::ECC_X where X is + * L => 7% + * M => 15% + * Q => 25% + * H => 30% + * + * @var int + */ + protected $eccLevel = QRCode::ECC_L; + + /** + * Mask Pattern to use + * + * [0...7] or QRCode::MASK_PATTERN_AUTO + * + * @var int + */ + protected $maskPattern = QRCode::MASK_PATTERN_AUTO; + + /** + * Add a "quiet zone" (margin) according to the QR code spec + * + * @var bool + */ + protected $addQuietzone = true; + + /** + * Size of the quiet zone + * + * internally clamped to [0 ... $moduleCount / 2], defaults to 4 modules + * + * @var int + */ + protected $quietzoneSize = 4; + + /** + * QRCode::OUTPUT_MARKUP_XXXX where XXXX = HTML, SVG + * QRCode::OUTPUT_IMAGE_XXX where XXX = PNG, GIF, JPG + * QRCode::OUTPUT_STRING_XXXX where XXXX = TEXT, JSON + * QRCode::OUTPUT_CUSTOM + * + * @var string + */ + protected $outputType = QRCode::OUTPUT_IMAGE_PNG; + + /** + * the FQCN of the custom QROutputInterface if $outputType is set to QRCode::OUTPUT_CUSTOM + * + * @var string + */ + protected $outputInterface; + + /** + * /path/to/cache.file + * + * @var string + */ + protected $cachefile; + + /** + * newline string [HTML, SVG, TEXT] + * + * @var string + */ + protected $eol = PHP_EOL; + + /** + * size of a QR code pixel [SVG, IMAGE_*] + * HTML -> via CSS + * + * @var int + */ + protected $scale = 5; + + /** + * a common css class + * + * @var string + */ + protected $cssClass; + + /** + * SVG opacity + * + * @var float + */ + protected $svgOpacity = 1.0; + + /** + * anything between + * + * @see https://developer.mozilla.org/docs/Web/SVG/Element/defs + * + * @var string + */ + protected $svgDefs = ''; + + /** + * string substitute for dark + * + * @var string + */ + protected $textDark = '🔴'; + + /** + * string substitute for light + * + * @var string + */ + protected $textLight = '⭕'; + + /** + * toggle base64 or raw image data + * + * @var bool + */ + protected $imageBase64 = true; + + /** + * toggle transparency, not supported by jpg + * + * @var bool + */ + protected $imageTransparent = true; + + /** + * @see imagecolortransparent() + * + * @var array [R, G, B] + */ + protected $imageTransparencyBG = [255, 255, 255]; + + /** + * @see imagepng() + * + * @var int + */ + protected $pngCompression = -1; + + /** + * @see imagejpeg() + * + * @var int + */ + protected $jpegQuality = 85; + + /** + * Module values map + * + * HTML : #ABCDEF, cssname, rgb(), rgba()... + * IMAGE: [63, 127, 255] // R, G, B + * + * @var array + */ + protected $moduleValues = [ + // light + QRMatrix::M_DATA => false, // 4 + QRMatrix::M_FINDER => false, // 6 + QRMatrix::M_SEPARATOR => false, // 8 + QRMatrix::M_ALIGNMENT => false, // 10 + QRMatrix::M_TIMING => false, // 12 + QRMatrix::M_FORMAT => false, // 14 + QRMatrix::M_VERSION => false, // 16 + QRMatrix::M_QUIETZONE => false, // 18 + QRMatrix::M_TEST => false, // 255 + // dark + QRMatrix::M_DARKMODULE << 8 => true, // 512 + QRMatrix::M_DATA << 8 => true, // 1024 + QRMatrix::M_FINDER << 8 => true, // 1536 + QRMatrix::M_ALIGNMENT << 8 => true, // 2560 + QRMatrix::M_TIMING << 8 => true, // 3072 + QRMatrix::M_FORMAT << 8 => true, // 3584 + QRMatrix::M_VERSION << 8 => true, // 4096 + QRMatrix::M_TEST << 8 => true, // 65280 + ]; + +}