Browse Source

NEW: TEXTFIT to GDSupport class

Giancarlo Voci 7 years ago
parent
commit
332e65ab30
3 changed files with 42 additions and 55 deletions
  1. 1 1
      cfg/config.bin
  2. 19 53
      src/Modules/restful/restful.php
  3. 22 1
      src/OpenMind/System/GDSupport.php

+ 1 - 1
cfg/config.bin

@@ -1 +1 @@
-eJyFkF9v2jAUxd/vp4jytGlq4pBAuyFLC8FAuhCj/EFsFUIhGIia2NRx2FrEd1/IOu1xliwdXfn4/O55OpRim5X1GpYkin0aYsvoGwjcNKEBdcdYr2Vu6uC53oxoWEuilEDq46Yw91JwxfjOhDEZpVPcAxJ6dOyHU6ynyeTuQYeZP50F7U3wvs1g8OhGBvt1KiTDl4sqKvbh4yfb6tsDhND1CuM4xHr1Wr+UX46iVrgUeVbe1PAkpMK2jQbD3ZZnFcOiKgv+rMNu29RMYimEavUpq2ssToxXBd/B3F1tIpJE3zcTGm0mbhok2EIt7RIr2TCAobbI1BFGbkzSKMDmn08h9hMSunOC6fwuuA0COqUbL40TOidRS/713XG9mm0gU7VZVNmB1WYpDsI48QP4Hg03N1ua/O99ozpHCxOzkuVK+3ks8qOWN7USFZNaXrYejfFsWzL4C9HhvePCk0cjYuy369tCUuyaXBWCQ1eh9blnWIMHw0KG5SDoeuwjx7G7PHluAxISJ/DMXrGH/h3Lcu4d1LNR/x66Vn/Iw9vz+VHSbzyMPb7g0ze7ubgDNovD1fJctxgTPxyP6Com0dL3yBoWNGoL79kO/AZUMb+2
+eJyFkV1v2jAUhu8t+T9EXG2amg8SaDdkaSEYSBdilA/EVlUoBANRE5s5DluL+O9zwqpdzpIl29Jz3uccPx1Kvs3K+hmCFY5in4TI0oe6CYGbJiQg7gT1apEbPQg815tjDWlJlGIIUh81hbEXnEnKdgYEEzxOZ6gPAQ49MvHDGeqlyfTuQZFzfzYP1E7QXkVRCB7dSKe/T4Wg6HKRRUU/fPxkWwN7aJrm9apqxSHqVa/1z/LLkdcSlTzPyvY0OnEhkW2bw9Fuy7KKIl6VBXtRIbttU1OBBOeyvZyyukb8RFlVsB0EC3e9iXASfd9MSbSZummQIMtsrVdIikY5QTDSlpk8QjB2Y5xGATJutSGI/QSH7gIjsrgLupeAzMjGS+OELHCkevj6l7leDZVLZW0UVXagtVHyA9dP7ACB75Fw03Jp8j+gkTekVYppSXOp/ToW+VHLm1ryigotLxWlUZZtS6X+LtI5vktD8OSRCOv77XPXmuC7JpcFZxB0M7U+93Vr+KBbpm45ahLdZAem49i3WHFWOQmOEwhe6CvyzH/Lspx7x+zb5uBece2gf4jD28v5UZBvLIw9tmSzN7u5uEM6j8P16lx3OlM/nIzJOsbRyvewslqSSP1C33Yg+AOTHMFx

+ 19 - 53
src/Modules/restful/restful.php

@@ -15,7 +15,6 @@ use OpenMind\FindBox\SmartESL;
 use OpenMind\System\GDSupport;
 use OpenMind\System\PluginStrategy;
 use OpenMind\System\QueueSystem;
-use Picqer\Barcode\BarcodeGeneratorPNG;
 use Template;
 
 define('API_VERSION', '1.10 beta test only');
@@ -49,62 +48,29 @@ class restful extends PluginStrategy
 
 	public function RESTful_gentpl($f3)
 	{
-		$bolla = '01234567';
-		$bolla_filler = '1234567';
-		$lente_dx = 'ZSS 123456 DX';
-		$lente_sx = 'ZSS 123456 eee';
-		$lavorazione = 'COC';
-		$z_diametro_dx = '50';
-		$z_diametro_sx = '70';
-		$z_sfera_dx = '-0.75';
-		$z_sfera_sx = '-0.50';
-		$z_cilindro_dx = '+0.25';
-		$z_cilindro_sx = '+0.25';
-		$z_ubic_prod_dx = 'B-2-1';
-		$z_ubic_prod_sx = 'A-123-56';
-
-
-		$font = 'C:\Users\Giancarlo\AppData\Local\Microsoft\Windows\Fonts\Lato-Bold.ttf';
-		$fontBlack = 'C:\Users\Giancarlo\AppData\Local\Microsoft\Windows\Fonts\Lato-Black.ttf';
-		$fontSize = 15;
-
-		$grafica[] = ['BODY' => ['w' => 264, 'h' => 176, 'bgcolor' => '#FFFFFF']];
-
-		$grafica[] = ['LINE' => ['x1' => 0, 'y1' => 55, 'x2' => 263, 'y2' => 55, 'color' => '#000000']];
-		$grafica[] = ['LINE' => ['x1' => 0, 'y1' => 110, 'x2' => 263, 'y2' => 110, 'color' => '#000000']];
-
-		$grafica[] = ['TEXT' => ['x' => 10, 'y' => 22, 'size' => $fontSize, 'color' => '#000000', 'value' => $lente_dx, 'font' => $font]];
-		$grafica[] = ['TEXT' => ['x' => 10, 'y' => 47, 'size' => $fontSize, 'color' => '#000000', 'value' => $z_diametro_dx, 'font' => $font]];
-		$grafica[] = ['TEXT' => ['x' => 45, 'y' => 47, 'size' => $fontSize, 'color' => '#000000', 'value' => $z_sfera_dx, 'font' => $font]];
-		$grafica[] = ['TEXT' => ['x' => 100, 'y' => 47, 'size' => $fontSize, 'color' => '#000000', 'value' => $z_cilindro_dx, 'font' => $font]];
-		$grafica[] = ['TEXT' => ['x' => 170, 'y' => 47, 'size' => $fontSize, 'color' => '#000000', 'value' => $z_ubic_prod_dx, 'font' => $font]];
-
-		$grafica[] = ['TEXT' => ['x' => 10, 'y' => 77, 'size' => $fontSize, 'color' => '#000000', 'value' => $lente_sx, 'font' => $font]];
-		$grafica[] = ['TEXT' => ['x' => 10, 'y' => 102, 'size' => $fontSize, 'color' => '#000000', 'value' => $z_diametro_sx, 'font' => $font]];
-		$grafica[] = ['TEXT' => ['x' => 45, 'y' => 102, 'size' => $fontSize, 'color' => '#000000', 'value' => $z_sfera_sx, 'font' => $font]];
-		$grafica[] = ['TEXT' => ['x' => 100, 'y' => 102, 'size' => $fontSize, 'color' => '#000000', 'value' => $z_cilindro_sx, 'font' => $font]];
-		$grafica[] = ['TEXT' => ['x' => 170, 'y' => 102, 'size' => $fontSize, 'color' => '#000000', 'value' => $z_ubic_prod_sx, 'font' => $font]];
-
-		$grafica[] = ['BARCODE' => [
-			'x' => 10, 'y' => 120,
-			'widthFactor' => 2,
-			'h' => 55,
-			'type' => BarcodeGeneratorPNG::TYPE_INTERLEAVED_2_5,
-			'value' => '01234567'
-		]];
-
-
-		$lavorazioneColor = $lavorazione == 'COC' ? '#FF0000' : '#000000';
-		$grafica[] = ['RECT' => ['x1' => 170, 'y1' => 120, 'x2' => 263, 'y2' => 175, 'color' => $lavorazioneColor, 'filled' => 1]];
-
-		$grafica[] = ['TEXT' => ['x' => 178, 'y' => 161, 'size' => 26, 'color' => '#FFFFFF', 'value' => $lavorazione, 'font' => $fontBlack]];
+		$font = '"C:\\\\Users\\\\Giancarlo\\\\AppData\\\\Local\\\\Microsoft\\\\Windows\\\\Fonts\\\\Lato-Black.ttf"';
+		$fontSize = 16;
+
+		$demo1 = json_decode('[{"BODY":{"w":264,"h":176,"bgcolor":"#FFFFFF"}},{"LINE":{"x1":0,"y1":55,"x2":263,"y2":55,"color":"#000000"}},{"LINE":{"x1":0,"y1":110,"x2":263,"y2":110,"color":"#000000"}},{"TEXT":{"x":10,"y":22,"size":' . $fontSize . ',"color":"#000000","value":"ZSS 123456 DX","font":' . $font . '}},{"TEXT":{"x":10,"y":47,"size":' . $fontSize . ',"color":"#000000","value":"50","font":' . $font . '}},{"TEXT":{"x":45,"y":47,"size":' . $fontSize . ',"color":"#000000","value":"-0.75","font":' . $font . '}},{"TEXT":{"x":100,"y":47,"size":' . $fontSize . ',"color":"#000000","value":"+0.25","font":' . $font . '}},{"TEXT":{"x":170,"y":47,"size":' . $fontSize . ',"color":"#000000","value":"B-2-1","font":' . $font . '}},{"TEXT":{"x":10,"y":77,"size":' . $fontSize . ',"color":"#000000","value":"ZSS 123456 eee","font":' . $font . '}},{"TEXT":{"x":10,"y":102,"size":' . $fontSize . ',"color":"#000000","value":"70","font":' . $font . '}},{"TEXT":{"x":45,"y":102,"size":' . $fontSize . ',"color":"#000000","value":"-0.50","font":' . $font . '}},{"TEXT":{"x":100,"y":102,"size":' . $fontSize . ',"color":"#000000","value":"+0.25","font":' . $font . '}},{"TEXT":{"x":170,"y":102,"size":' . $fontSize . ',"color":"#000000","value":"A-123-56","font":' . $font . '}},{"BARCODE":{"x":10,"y":120,"widthFactor":2,"h":55,"type":"I25","value":"01234567"}},{"RECT":{"x1":170,"y1":120,"x2":263,"y2":175,"color":"#FF0000","filled":1}},{"TEXT":{"x":178,"y":161,"size":26,"color":"#FFFFFF","value":"COC","font":' . $font . '}}]', true);
+
+		$demo2 = json_decode('
+[
+ {"BODY":{"w":264,"h":176,"bgcolor":"#FFFFFF"}},
+ {"RECT":{"x1":5,"y1":5,"x2":100,"y2":90,"color":"#FF0000","filled":1}},
+ {"TEXTFIT":{"x":8,"y":40,"w":95,"color":"#FFFFFF","value":"MAXMARA","font":' . $font . '}},
+ {"RECT":{"x1":105,"y1":95,"x2":200,"y2":176,"color":"#FF0000","filled":1}},
+ {"TEXTFIT":{"x":107,"y":140,"w":95,"color":"#FFFFFF","value":"ZEISS","font":' . $font . '}}
+]', true);
 
 		$gd = new GDSupport();
-		$imageBin = $gd->Render($grafica);
+		$gd->Render($demo2, 'f:\test_tpl.png');
+		$imageBin = $gd->Render($demo2);
 
+//		$esl = new SmartESL($this->findBoxCore, ['0108A338']);
+//		$esl = new SmartESL($this->findBoxCore, ['0109BDC8']);
 		$esl = new SmartESL($this->findBoxCore, ['01097D82']);
-		$esl->SetPageImage($imageBin, 2);
-		$esl->SwitchPage(2);
+		$esl->SetPageImage($imageBin, 1);
+//		$esl->SwitchPage(1);
 
 	}
 

+ 22 - 1
src/OpenMind/System/GDSupport.php

@@ -43,8 +43,8 @@ class GDSupport
 
 				case 'BODY':
 					$this->image = imagecreatetruecolor($prop['w'], $prop['h']);
-					imageantialias($this->image, true);
 					$bgColor = isset($prop['bgcolor']) ? $this->getColor($prop['bgcolor']) : NULL;
+					imageantialias($this->image, false);
 					imagefill($this->image, 0, 0, $bgColor);
 					break;
 
@@ -52,6 +52,11 @@ class GDSupport
 					imagettftext($this->image, $prop['size'], 0, $prop['x'], $prop['y'], $color, $prop['font'], $prop['value']);
 					break;
 
+				case 'TEXTFIT':
+					$fontSizeCalulated = $this->fixTextRect($prop['value'], $prop['font'], $prop['w']);
+					imagettftext($this->image, $fontSizeCalulated, 0, $prop['x'], $prop['y'], $color, $prop['font'], $prop['value']);
+					break;
+
 				case 'FILL':
 					imagefill($this->image, $prop['x'], $prop['y'], $color);
 					break;
@@ -90,6 +95,10 @@ class GDSupport
 			}
 		}
 
+		// ESL color fix
+		imagetruecolortopalette($this->image, false, 3);
+		imagefilter($this->image, IMG_FILTER_CONTRAST, -100);
+
 		ob_start();
 		imagepng($this->image, $outputPathFile);
 		$data = ob_get_contents();
@@ -107,6 +116,18 @@ class GDSupport
 		return imagecolorallocate($this->image, $r, $g, $b);
 	}
 
+	private function fixTextRect(string $text, string $font, int $maxWidth): int
+	{
+		$font_size = 0;
+		do {
+			$font_size += 0.1;
+			$p = imagettfbbox($font_size, 0, $font, $text);
+			$txt_width = $p[2] - $p[0];
+		} while ($txt_width <= $maxWidth);
+
+		return $font_size;
+	}
+
 	public function __destruct()
 	{
 		$this->Destroy();