Failed Conditions
Push — master ( 25914a...598820 )
by Sébastien
02:52
created

CropFilter   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 8
eloc 23
dl 0
loc 62
ccs 19
cts 19
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
B getFFmpegCLIValue() 0 14 7
A __construct() 0 14 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Soluble\MediaTools\Video\Filter;
6
7
use Soluble\MediaTools\Video\Filter\Type\FFMpegVideoFilterInterface;
8
9
class CropFilter implements FFMpegVideoFilterInterface
10
{
11
    /** @var int|string|null */
12
    protected $height;
13
14
    /** @var int|string|null */
15
    protected $width;
16
17
    /** @var int|string|null */
18
    protected $x;
19
20
    /** @var int|string|null */
21
    protected $y;
22
23
    /** @var bool */
24
    protected $keepAspect;
25
26
    /** @var bool */
27
    protected $exact;
28
29
    /**
30
     * Crop filter.
31
     *
32
     * @see https://ffmpeg.org/ffmpeg-filters.html#crop
33
     *
34
     * @param string|int|null $width      The width of the output video, it defaults to 'iw'
35
     * @param string|int|null $height     The height of the output video, it defaults to 'ih'
36
     * @param string|int|null $x          The horizontal position, in the input video, of the left edge of the output video. It defaults to '(in_w-out_w)/2'
37
     * @param string|int|null $y          The vertical position, in the input video, of the top edge of the output video. It defaults to '(in_h-out_h)/2'
38
     * @param bool            $keepAspect will force the output display aspect ratio to be the same of the input, by changing the output sample aspect ratio
39
     * @param bool            $exact      Enable exact cropping. If enabled, subsampled videos will be cropped at exact width/height/x/y as specified and will not be rounded to nearest smaller value.
40
     */
41 1
    public function __construct(
42
        $width = null,
43
        $height = null,
44
        $x = null,
45
        $y = null,
46
        bool $keepAspect = false,
47
        bool $exact = false
48
    ) {
49 1
        $this->width      = $width;
50 1
        $this->height     = $height;
51 1
        $this->x          = $x;
52 1
        $this->y          = $y;
53 1
        $this->keepAspect = $keepAspect;
54 1
        $this->exact      = $exact;
55 1
    }
56
57 1
    public function getFFmpegCLIValue(): string
58
    {
59 1
        $args = array_filter([
60 1
            ($this->width !== null) ? "w={$this->width}" : false,
0 ignored issues
show
Coding Style Best Practice introduced by
As per coding-style, please use concatenation or sprintf for the variable $this instead of interpolation.

It is generally a best practice as it is often more readable to use concatenation instead of interpolation for variables inside strings.

// Instead of
$x = "foo $bar $baz";

// Better use either
$x = "foo " . $bar . " " . $baz;
$x = sprintf("foo %s %s", $bar, $baz);
Loading history...
61 1
            ($this->height !== null) ? "h={$this->height}" : false,
0 ignored issues
show
Coding Style Best Practice introduced by
As per coding-style, please use concatenation or sprintf for the variable $this instead of interpolation.

It is generally a best practice as it is often more readable to use concatenation instead of interpolation for variables inside strings.

// Instead of
$x = "foo $bar $baz";

// Better use either
$x = "foo " . $bar . " " . $baz;
$x = sprintf("foo %s %s", $bar, $baz);
Loading history...
62 1
            ($this->x !== null) ? "x={$this->x}" : false,
0 ignored issues
show
Coding Style Best Practice introduced by
As per coding-style, please use concatenation or sprintf for the variable $this instead of interpolation.

It is generally a best practice as it is often more readable to use concatenation instead of interpolation for variables inside strings.

// Instead of
$x = "foo $bar $baz";

// Better use either
$x = "foo " . $bar . " " . $baz;
$x = sprintf("foo %s %s", $bar, $baz);
Loading history...
63 1
            ($this->y !== null) ? "y={$this->y}" : false,
0 ignored issues
show
Coding Style Best Practice introduced by
As per coding-style, please use concatenation or sprintf for the variable $this instead of interpolation.

It is generally a best practice as it is often more readable to use concatenation instead of interpolation for variables inside strings.

// Instead of
$x = "foo $bar $baz";

// Better use either
$x = "foo " . $bar . " " . $baz;
$x = sprintf("foo %s %s", $bar, $baz);
Loading history...
64 1
            ($this->keepAspect) ? 'keep_aspect=1' : false,
65 1
            ($this->exact) ? 'exact=1' : false,
66
        ]);
67
68 1
        return sprintf(
69 1
            'crop=%s',
70 1
            implode(':', $args)
71
        );
72
    }
73
}
74