1 package com.bitwig.extension.api;
10 private Color(
final double red,
final double green,
final double blue,
final double alpha)
18 public static Color fromRGB(
double red,
double green,
double blue)
20 return new Color(red, green, blue, 1);
23 public static Color fromRGBA(
double red,
double green,
double blue,
double alpha)
25 return new Color(red, green, blue, alpha);
28 public static Color fromRGB255(
final int red,
final int green,
final int blue)
30 return new Color(red / 255.0, green / 255.0, blue / 255.0, 1);
33 public static Color fromRGBA255(
final int red,
final int green,
final int blue,
final int alpha)
35 return new Color(red / 255.0, green / 255.0, blue / 255.0, alpha / 255.0);
38 public static Color fromHex(String hex)
44 if (hex.charAt(0) ==
'#')
45 hex = hex.substring(1);
48 for (
int i = 0; i < hex.length(); ++i)
50 char c = hex.charAt(i);
51 if ((
'0' <= c && c <=
'9') ||
52 (
'a' <= c && c <=
'f') ||
53 (
'A' <= c && c <=
'F'))
63 int r = Integer.parseInt(hex.substring(0, 1), 16);
64 int g = Integer.parseInt(hex.substring(1, 2), 16);
65 int b = Integer.parseInt(hex.substring(2, 3), 16);
66 return fromRGB(r / 15.0, g / 15.0, b / 15.0);
71 int r = Integer.parseInt(hex.substring(0, 1), 16);
72 int g = Integer.parseInt(hex.substring(1, 2), 16);
73 int b = Integer.parseInt(hex.substring(2, 3), 16);
74 int a = Integer.parseInt(hex.substring(2, 3), 16);
75 return fromRGBA(r / 15.0, g / 15.0, b / 15.0, a / 15.0);
80 int r = Integer.parseInt(hex.substring(0, 2), 16);
81 int g = Integer.parseInt(hex.substring(2, 4), 16);
82 int b = Integer.parseInt(hex.substring(4, 6), 16);
83 return fromRGB255(r, g, b);
88 int r = Integer.parseInt(hex.substring(0, 2), 16);
89 int g = Integer.parseInt(hex.substring(2, 4), 16);
90 int b = Integer.parseInt(hex.substring(4, 6), 16);
91 int a = Integer.parseInt(hex.substring(6, 8), 16);
92 return fromRGBA255(r, g, b, a);
105 final double b1 = blend;
106 final double b2 = 1 - blend;
109 c1.getRed() * b1 + c2.getRed() * b2,
110 c1.getGreen() * b1 + c2.getGreen() * b2,
111 c1.getBlue() * b1 + c2.getBlue() * b2,
112 c1.getAlpha() * b1 + c2.getAlpha() * b2);
116 public String toHex()
118 int red = getRed255();
119 int green = getGreen255();
120 int blue = getBlue255();
121 int alpha = getAlpha255();
124 StringBuilder sb =
new StringBuilder(9);
126 addHex2Number(sb, red);
127 addHex2Number(sb, green);
128 addHex2Number(sb, blue);
131 addHex2Number(sb, alpha);
133 return sb.toString();
136 private void addHex2Number(StringBuilder sb,
int x)
138 String hex = Integer.toHexString(x & 0xff);
139 if (hex.length() == 1) sb.append(0);
143 public static Color nullColor()
145 return fromRGBA(0, 0, 0, 0);
147 public static Color blackColor()
149 return fromRGBA(0, 0, 0, 1);
151 public static Color whiteColor()
153 return fromRGBA(1, 1, 1, 1);
156 public double getRed() {
return mRed; }
157 public double getGreen() {
return mGreen; }
158 public double getBlue() {
return mBlue; }
159 public double getAlpha() {
return mAlpha; }
161 public int getRed255() {
return (
int) (mRed * 255); }
162 public int getGreen255() {
return (
int) (mGreen * 255); }
163 public int getBlue255() {
return (
int) (mBlue * 255); }
164 public int getAlpha255() {
return (
int) (mAlpha * 255); }
166 private final double mRed;
167 private final double mGreen;
168 private final double mBlue;
169 private final double mAlpha;
static Color mix(final Color c1, final Color c2, double blend)