Просмотр исходного кода

:octocat: QREps: extract header() method to ease customization

smiley 1 год назад
Родитель
Сommit
54dac157c6
1 измененных файлов с 35 добавлено и 24 удалено
  1. 35 24
      src/Output/QREps.php

+ 35 - 24
src/Output/QREps.php

@@ -93,30 +93,7 @@ class QREps extends QROutputAbstract{
 	}
 
 	public function dump(string|null $file = null):string{
-		[$width, $height] = $this->getOutputDimensions();
-
-		$eps = [
-			// main header
-			'%!PS-Adobe-3.0 EPSF-3.0',
-			'%%Creator: php-qrcode (https://github.com/chillerlan/php-qrcode)',
-			'%%Title: QR Code',
-			sprintf('%%%%CreationDate: %1$s', date('c')),
-			'%%DocumentData: Clean7Bit',
-			'%%LanguageLevel: 3',
-			sprintf('%%%%BoundingBox: 0 0 %s %s', $width, $height),
-			'%%EndComments',
-			// function definitions
-			'%%BeginProlog',
-			'/F { rectfill } def',
-			'/R { setrgbcolor } def',
-			'/C { setcmykcolor } def',
-			'%%EndProlog',
-		];
-
-		if($this::moduleValueIsValid($this->options->bgColor)){
-			$eps[] = $this->prepareModuleValue($this->options->bgColor);
-			$eps[] = sprintf('0 0 %s %s F', $width, $height);
-		}
+		$eps = $this->header();
 
 		// create the path elements
 		$paths = $this->collectModules($this->module(...));
@@ -141,6 +118,40 @@ class QREps extends QROutputAbstract{
 		return $data;
 	}
 
+	/**
+	 * Returns the main header for the EPS file, including function definitions and background
+	 *
+	 * @return array<int, string>
+	 */
+	protected function header():array{
+		[$width, $height] = $this->getOutputDimensions();
+
+		$header = [
+			// main header
+			'%!PS-Adobe-3.0 EPSF-3.0',
+			'%%Creator: php-qrcode (https://github.com/chillerlan/php-qrcode)',
+			'%%Title: QR Code',
+			sprintf('%%%%CreationDate: %1$s', date('c')),
+			'%%DocumentData: Clean7Bit',
+			'%%LanguageLevel: 3',
+			sprintf('%%%%BoundingBox: 0 0 %s %s', $width, $height),
+			'%%EndComments',
+			// function definitions
+			'%%BeginProlog',
+			'/F { rectfill } def',
+			'/R { setrgbcolor } def',
+			'/C { setcmykcolor } def',
+			'%%EndProlog',
+		];
+
+		if($this::moduleValueIsValid($this->options->bgColor)){
+			$header[] = $this->prepareModuleValue($this->options->bgColor);
+			$header[] = sprintf('0 0 %s %s F', $width, $height);
+		}
+
+		return $header;
+	}
+
 	/**
 	 * Returns a path segment for a single module
 	 */