CiffRenderer::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 6
ccs 3
cts 3
cp 1
crap 1
rs 10
c 0
b 0
f 0
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