Completed
Push — master ( 4d68bf...65c9bd )
by John
02:57
created

FieldParserBarcode   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 94
Duplicated Lines 0 %

Test Coverage

Coverage 92%

Importance

Changes 0
Metric Value
eloc 22
dl 0
loc 94
ccs 23
cts 25
cp 0.92
rs 10
c 0
b 0
f 0
wmc 6

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getIsInverse() 0 3 1
A __construct() 0 14 1
A factory() 0 12 1
A getFontSize() 0 5 1
A getFontFace() 0 3 1
A getText() 0 6 1
1
<?php
2
3
namespace Graze\CiffRenderer\Parser\FieldParser;
4
5
use Graze\CiffRenderer\Parser\FieldParser\FieldParserFixedText;
6
use Graze\CiffRenderer\Parser\FieldParser\FieldParserInterface;
7
use Graze\CiffRenderer\BarcodeGenerator\BarcodeGeneratorFactory;
8
use Graze\CiffRenderer\Parser\FieldParserRegistry;
9
use \SimpleXMLElement;
10
11
class FieldParserBarcode extends FieldParserFixedText implements FieldParserInterface
12
{
13
    /**
14
     * @var float
15
     */
16
    const FONT_SIZE_MULTIPLIER = 141;
17
18
    /**
19
     * @var BarcodeGeneratorFactory
20
     */
21
    private $barcodeGeneratorFactory;
22
23
    /**
24
     * @param BarcodeGeneratorFactory $barcodeGeneratorFactory
25
     * @param FieldParserRegistry $fieldParserRegistry
26
     * @param SimpleXMLElement $xmlHeader
27
     * @param SimpleXMLElement $xmlField
28
     * @param float $scale
29
     */
30 11
    public function __construct(
31
        BarcodeGeneratorFactory $barcodeGeneratorFactory,
32
        FieldParserRegistry $fieldParserRegistry,
33
        SimpleXMLElement $xmlHeader,
34
        SimpleXMLElement $xmlField,
35
        $scale
36
    ) {
37 11
        $this->barcodeGeneratorFactory = $barcodeGeneratorFactory;
38
39 11
        parent::__construct(
40 11
            $fieldParserRegistry,
41 11
            $xmlHeader,
42 11
            $xmlField,
43
            $scale
44 11
        );
45 11
    }
46
47
    /**
48
     * @return int
49
     */
50 1
    public function getFontSize()
51
    {
52 1
        $size = (float) $this->xmlField->Barcode->HR->HRFont->Pitch;
53
54 1
        return (int) round($size * self::FONT_SIZE_MULTIPLIER * $this->scale);
55
    }
56
57
    /**
58
     * @return string
59
     */
60
    public function getFontFace()
61
    {
62
        return (string) $this->xmlField->Barcode->HR->HRFont->Family;
63
    }
64
65
    /**
66
     * @return bool
67
     */
68 1
    public function getIsInverse()
69
    {
70 1
        return (bool) (string) $this->xmlField->Inverse;
71
    }
72
73
    /**
74
     * Generate a barcode string.
75
     *
76
     * @return string
77
     */
78 1
    public function getText()
79
    {
80 1
        $data = parent::getText();
81 1
        $barcodeGenerator = $this->barcodeGeneratorFactory->getGenerator($this->xmlField->Barcode->Type);
82
83 1
        return $barcodeGenerator->generate($data);
84
    }
85
86
    /**
87
     * @param FieldParserRegistry $fieldParserRegistry
88
     * @param SimpleXMLElement $xmlHeader
89
     * @param SimpleXMLElement $xmlField
90
     * @param float $scale
91
     * @return FieldParserInterface
92
     */
93 1
    public static function factory(
94
        FieldParserRegistry $fieldParserRegistry,
95
        SimpleXMLElement $xmlHeader,
96
        SimpleXMLElement $xmlField,
97
        $scale
98
    ) {
99 1
        return new static(
100 1
            new BarcodeGeneratorFactory(),
101 1
            $fieldParserRegistry,
102 1
            $xmlHeader,
103 1
            $xmlField,
104
            $scale
105 1
        );
106
    }
107
}
108