Skip to content

Commit

Permalink
Add contrastRatio method
Browse files Browse the repository at this point in the history
  • Loading branch information
kevnk committed Apr 12, 2021
1 parent 1da100f commit 6a24b0d
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/Color.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ public function blue();

public function luminance(): float;

public function contrastRatio(): float;

public function toHex(): Hex;

public function toHsl(): Hsl;
Expand Down
16 changes: 16 additions & 0 deletions src/Hex.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,22 @@ public function luminance(): float
return Convert::rgbValueToLuminance($rgb->red(), $rgb->green(), $rgb->blue());
}

public function contrastRatio(): float
{
$luminance = $this->luminance();
$black = new Rgb(0, 0, 0);
$blackLuminance = $black->luminance();

$contrastRatio = 0;
if ($luminance > $blackLuminance) {
$contrastRatio = (int) (($luminance + 0.05) / ($blackLuminance + 0.05));
} else {
$contrastRatio = (int) (($blackLuminance + 0.05) / ($luminance + 0.05));
}

return $contrastRatio;
}

public function toHex(): self
{
return new self($this->red, $this->green, $this->blue);
Expand Down
16 changes: 16 additions & 0 deletions src/Hsl.php
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,22 @@ public function luminance(): float
return Convert::rgbValueToLuminance($rgb->red(), $rgb->green(), $rgb->blue());
}

public function contrastRatio(): float
{
$luminance = $this->luminance();
$black = new Rgb(0, 0, 0);
$blackLuminance = $black->luminance();

$contrastRatio = 0;
if ($luminance > $blackLuminance) {
$contrastRatio = (int) (($luminance + 0.05) / ($blackLuminance + 0.05));
} else {
$contrastRatio = (int) (($blackLuminance + 0.05) / ($luminance + 0.05));
}

return $contrastRatio;
}

public function toHex(): Hex
{
return new Hex(
Expand Down
16 changes: 16 additions & 0 deletions src/Hsla.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,22 @@ public function luminance(): float
return Convert::rgbValueToLuminance($rgb->red(), $rgb->green(), $rgb->blue());
}

public function contrastRatio(): float
{
$luminance = $this->luminance();
$black = new Rgb(0, 0, 0);
$blackLuminance = $black->luminance();

$contrastRatio = 0;
if ($luminance > $blackLuminance) {
$contrastRatio = (int) (($luminance + 0.05) / ($blackLuminance + 0.05));
} else {
$contrastRatio = (int) (($blackLuminance + 0.05) / ($luminance + 0.05));
}

return $contrastRatio;
}

public function toHex(): Hex
{
return new Hex(
Expand Down
16 changes: 16 additions & 0 deletions src/Rgb.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,22 @@ public function luminance(): float
return Convert::rgbValueToLuminance($this->red, $this->green, $this->blue);
}

public function contrastRatio(): float
{
$luminance = $this->luminance();
$black = new self(0, 0, 0);
$blackLuminance = $black->luminance();

$contrastRatio = 0;
if ($luminance > $blackLuminance) {
$contrastRatio = (int) (($luminance + 0.05) / ($blackLuminance + 0.05));
} else {
$contrastRatio = (int) (($blackLuminance + 0.05) / ($luminance + 0.05));
}

return $contrastRatio;
}

public function toHex(): Hex
{
return new Hex(
Expand Down
16 changes: 16 additions & 0 deletions src/Rgba.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,22 @@ public function luminance(): float
return Convert::rgbValueToLuminance($this->red, $this->green, $this->blue);
}

public function contrastRatio(): float
{
$luminance = $this->luminance();
$black = new self(0, 0, 0);
$blackLuminance = $black->luminance();

$contrastRatio = 0;
if ($luminance > $blackLuminance) {
$contrastRatio = (int) (($luminance + 0.05) / ($blackLuminance + 0.05));
} else {
$contrastRatio = (int) (($blackLuminance + 0.05) / ($luminance + 0.05));
}

return $contrastRatio;
}

public function toHex(): Hex
{
return $this->toRgb()->toHex();
Expand Down

0 comments on commit 6a24b0d

Please sign in to comment.