CiffRenderer   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 87
Duplicated Lines 0 %

Test Coverage

Coverage 82.61%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 19
c 1
b 0
f 0
dl 0
loc 87
ccs 19
cts 23
cp 0.8261
rs 10
wmc 6

6 Methods

Rating   Name   Duplication   Size   Complexity  
A factory() 0 5 1
A __construct() 0 6 1
A setFontResolver() 0 3 1
A setGraphicResolver() 0 3 1
A renderString() 0 8 1
A renderFile() 0 4 1
1
<?php
2
3
namespace Graze\CiffRenderer;
4
5
use Illuminate\Filesystem\Filesystem;
6
use Graze\CiffRenderer\Renderer\RendererDocument;
7
use \SimpleXMLElement;
8
9
class CiffRenderer
10
{
11
    /**
12
     * @var Filesystem
13
     */
14
    private $filesystem;
15
16
    /**
17
     * @var RendererDocument
18
     */
19
    private $rendererDocument;
20
21
    /**
22
     * @var callable
23
     */
24
    private $fontResolver;
25
26
    /**
27
     * @var callable
28
     */
29
    private $graphicResolver;
30
31
    /**
32
     * @param Filesystem $filesystem
33
     * @param RendererDocument $rendererDocument
34
     */
35 2
    public function __construct(
36
        Filesystem $filesystem,
37
        RendererDocument $rendererDocument
38
    ) {
39 2
        $this->filesystem = $filesystem;
40 2
        $this->rendererDocument = $rendererDocument;
41 2
    }
42
43
    /**
44
     * Render an image from a ciff file located on the filesystem.
45
     *
46
     * @param string $path
47
     * @return \Intervention\Image\Image
48
     */
49 1
    public function renderFile($path)
50
    {
51 1
        $string = $this->filesystem->get($path);
52 1
        return $this->renderString($string);
53
    }
54
55
    /**
56
     * Render an image from ciff data contained within a string.
57
     *
58
     * @param string $string
59
     * @return \Intervention\Image\Image
60
     */
61 2
    public function renderString($string)
62
    {
63 2
        $xml = new SimpleXMLElement($string, LIBXML_NOBLANKS);
64
65 2
        return $this->rendererDocument->render(
66 2
            $xml,
67 2
            $this->fontResolver,
68 2
            $this->graphicResolver
69
        );
70
    }
71
72
    /**
73
     * @param callable $fontResolver
74
     */
75 2
    public function setFontResolver(callable $fontResolver)
76
    {
77 2
        $this->fontResolver = $fontResolver;
78 2
    }
79
80
    /**
81
     * @param callable $graphicResolver
82
     */
83 2
    public function setGraphicResolver(callable $graphicResolver)
84
    {
85 2
        $this->graphicResolver = $graphicResolver;
86 2
    }
87
88
    /**
89
     * @return CiffRenderer
90
     */
91
    public static function factory()
92
    {
93
        return new static(
94
            new Filesystem(),
95
            RendererDocument::factory()
96
        );
97
    }
98
}
99