check   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 1
dl 0
loc 37
ccs 9
cts 9
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A is_dark() 0 6 2
A rgb_contrast() 0 7 1
1
<?php
2
/**
3
 * The 'check' class
4
 */
5
6
namespace projectcleverweb\color;
7
8
/**
9
 * The 'check' class
10
 */
11
class check {
12
	
13
	/**
14
	 * Checks if a RGB color appears as a darker or lighter color using YIQ
15
	 * color weights
16
	 * 
17
	 * @param  int $r           The red value
18
	 * @param  int $g           The green value
19
	 * @param  int $b           The blue value
20
	 * @param  int $check_score The minimum score to check, a number in the range of 0 - 255
21
	 * @return boolean          If the YIQ score is >= $check_score returns FALSE, otherwise TRUE
22
	 */
23 31
	public static function is_dark(int $r = 0, int $g = 0, int $b = 0, int $check_score = 128) :bool {
24 31
		if (generate::yiq_score($r, $g, $b) >= $check_score) {
25 31
			return FALSE;
26
		}
27 31
		return TRUE;
28
	}
29
	
30
	/**
31
	 * Measures the visual contrast of 2 RGB colors.
32
	 * 
33
	 * NOTE: most colors do not have a 100% contrasting opposite, but all colors
34
	 * do have a contrasting opposite that is at least 50%.
35
	 * 
36
	 * @param  array $rgb1 The first color, array where offsets 'r', 'g', & 'b' contain their respective values.
37
	 * @param  array $rgb2 The second color, array where offsets 'r', 'g', & 'b' contain their respective values.
38
	 * @return float       The visual contrast as a percentage (e.g. 12.345)
39
	 */
40 1
	public static function rgb_contrast($rgb1, $rgb2) {
41 1
		$r = (max($rgb1['r'], $rgb2['r']) - min($rgb1['r'], $rgb2['r'])) * 299;
42 1
		$g = (max($rgb1['g'], $rgb2['g']) - min($rgb1['g'], $rgb2['g'])) * 587;
43 1
		$b = (max($rgb1['b'], $rgb2['b']) - min($rgb1['b'], $rgb2['b'])) * 114;
44
		// Sum => Average => Convert to percentage
45 1
		return ($r + $g + $b) / 1000 / 2.55;
46
	}
47
}
48