136 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			136 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | /* | ||
|  |  * Copyright 2007 ZXing authors | ||
|  |  * | ||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||
|  |  * you may not use this file except in compliance with the License. | ||
|  |  * You may obtain a copy of the License at | ||
|  |  * | ||
|  |  *      http://www.apache.org/licenses/LICENSE-2.0 | ||
|  |  * | ||
|  |  * Unless required by applicable law or agreed to in writing, software | ||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
|  |  * See the License for the specific language governing permissions and | ||
|  |  * limitations under the License. | ||
|  |  */ | ||
|  | 
 | ||
|  | namespace Zxing; | ||
|  | 
 | ||
|  | /** | ||
|  |  * <p>Encapsulates the result of decoding a barcode within an image.</p> | ||
|  |  * | ||
|  |  * @author Sean Owen | ||
|  |  */ | ||
|  | final class Result | ||
|  | { | ||
|  |     private $text; | ||
|  |     private $rawBytes; | ||
|  |     private $resultPoints; | ||
|  |     private $format; | ||
|  |     private $resultMetadata; | ||
|  |     private $timestamp; | ||
|  | 
 | ||
|  |     public function __construct( | ||
|  |         $text, | ||
|  |         $rawBytes, | ||
|  |         $resultPoints, | ||
|  |         $format, | ||
|  |         $timestamp = '' | ||
|  |     ) { | ||
|  | 
 | ||
|  |         $this->text           = $text; | ||
|  |         $this->rawBytes       = $rawBytes; | ||
|  |         $this->resultPoints   = $resultPoints; | ||
|  |         $this->format         = $format; | ||
|  |         $this->resultMetadata = null; | ||
|  |         $this->timestamp      = $timestamp ?: time(); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @return raw text encoded by the barcode | ||
|  |      */ | ||
|  |     public function getText() | ||
|  |     { | ||
|  |         return $this->text; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @return raw bytes encoded by the barcode, if applicable, otherwise {@code null} | ||
|  |      */ | ||
|  |     public function getRawBytes() | ||
|  |     { | ||
|  |         return $this->rawBytes; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @return points related to the barcode in the image. These are typically points | ||
|  |      *         identifying finder patterns or the corners of the barcode. The exact meaning is | ||
|  |      *         specific to the type of barcode that was decoded. | ||
|  |      */ | ||
|  |     public function getResultPoints() | ||
|  |     { | ||
|  |         return $this->resultPoints; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @return {@link BarcodeFormat} representing the format of the barcode that was decoded | ||
|  |      */ | ||
|  |     public function getBarcodeFormat() | ||
|  |     { | ||
|  |         return $this->format; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @return {@link Map} mapping {@link ResultMetadataType} keys to values. May be | ||
|  |      *   {@code null}. This contains optional metadata about what was detected about the barcode, | ||
|  |      *   like orientation. | ||
|  |      */ | ||
|  |     public function getResultMetadata() | ||
|  |     { | ||
|  |         return $this->resultMetadata; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function putMetadata($type, $value) | ||
|  |     { | ||
|  |         if ($this->resultMetadata === null) { | ||
|  |             $this->resultMetadata = []; | ||
|  |         } | ||
|  |         $resultMetadata[$type] = $value; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function putAllMetadata($metadata) | ||
|  |     { | ||
|  |         if ($metadata !== null) { | ||
|  |             if ($this->resultMetadata === null) { | ||
|  |                 $this->resultMetadata = $metadata; | ||
|  |             } else { | ||
|  |                 $this->resultMetadata = array_merge($this->resultMetadata, $metadata); | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     public function addResultPoints($newPoints) | ||
|  |     { | ||
|  |         $oldPoints = $this->resultPoints; | ||
|  |         if ($oldPoints === null) { | ||
|  |             $this->resultPoints = $newPoints; | ||
|  |         } else if ($newPoints !== null && count($newPoints) > 0) { | ||
|  |             $allPoints          = fill_array(0, count($oldPoints) + count($newPoints), 0); | ||
|  |             $allPoints          = arraycopy($oldPoints, 0, $allPoints, 0, count($oldPoints)); | ||
|  |             $allPoints          = arraycopy($newPoints, 0, $allPoints, count($oldPoints), count($newPoints)); | ||
|  |             $this->resultPoints = $allPoints; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getTimestamp() | ||
|  |     { | ||
|  |         return $this->timestamp; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function toString() | ||
|  |     { | ||
|  |         return $this->text; | ||
|  |     } | ||
|  | } |