Color   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 35
rs 10
c 0
b 0
f 0
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A set() 0 5 2
A get() 0 9 2
1
<?php
2
3
namespace AmaTeam\Image\Projection\Image\Adapter\Imagick;
4
5
use Imagick;
6
use ImagickPixel;
7
8
class Color
9
{
10
    const COMPONENTS = [
11
        Imagick::COLOR_RED,
12
        Imagick::COLOR_GREEN,
13
        Imagick::COLOR_BLUE,
14
        Imagick::COLOR_ALPHA
15
    ];
16
17
    /**
18
     * TODO: this black bit magic is probably optimizable
19
     *
20
     * @param ImagickPixel $pixel
21
     * @return int
22
     */
23
    public static function get(ImagickPixel $pixel)
24
    {
25
        $color = 0;
26
        for ($i = 0; $i < 4; $i++) {
27
            $component = $pixel->getColorValue(self::COMPONENTS[$i]);
28
            $component = ((int) ($component * 0xFF)) & 0xFF;
29
            $color |= $component << ((3 - $i) * 8);
30
        }
31
        return $color;
32
    }
33
34
    /**
35
     * @param ImagickPixel $pixel
36
     * @param int $color
37
     */
38
    public static function set(ImagickPixel $pixel, $color)
39
    {
40
        for ($i = 0; $i < 4; $i++) {
41
            $component = ($color >> ((3 - $i) * 8)) & 0xFF;
42
            $pixel->setColorValue(self::COMPONENTS[$i], $component / 255.0);
43
        }
44
    }
45
}
46