1 using Microsoft.Xna.Framework;
5 public static class ColorExtensions
7 public static Color Multiply(
this Color color,
float value,
bool onlyAlpha =
false)
10 new Color(color.R, color.G, color.B, (
byte)(color.A * value)) :
11 new Color((
byte)(color.R * value), (
byte)(color.G * value), (
byte)(color.B * value), (
byte)(color.A * value));
14 public static Color Multiply(
this Color thisColor, Color color)
16 return new Color((
byte)(thisColor.R * color.R / 255f), (
byte)(thisColor.G * color.G / 255f), (
byte)(thisColor.B * color.B / 255f), (
byte)(thisColor.A * color.A / 255f));
19 public static Color
Opaque(
this Color color)
21 return new Color(color.R, color.G, color.B, (
byte)255);
24 private static bool IsFirstColorChannelDominant(
byte first,
byte second,
byte third,
float minimumRatio = 2)
25 => first > second * minimumRatio && first > third * minimumRatio;
30 public static bool IsRedDominant(Color color,
float minimumRatio = 2,
byte minimumAlpha = 0)
31 => color.A > minimumAlpha &&
32 IsFirstColorChannelDominant(
34 color.G, color.B, minimumRatio);
39 public static bool IsGreenDominant(Color color,
float minimumRatio = 2,
byte minimumAlpha = 0)
40 => color.A > minimumAlpha &&
41 IsFirstColorChannelDominant(
43 color.R, color.B, minimumRatio);
48 public static bool IsBlueDominant(Color color,
float minimumRatio = 2,
byte minimumAlpha = 0)
49 => color.A > minimumAlpha &&
50 IsFirstColorChannelDominant(
52 color.G, color.R, minimumRatio);