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;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |