/*
ChibiPaint
Copyright (c) 2006-2008 Marc Schefer
This file is part of ChibiPaint.
ChibiPaint is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ChibiPaint is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with ChibiPaint. If not, see <http://www.gnu.org/licenses/>.
*/
package com.chibipaint.util;
public class CPColorFloat implements Cloneable {
public float r, g, b;
public CPColorFloat() {
r = g = b = 0f;
}
public CPColorFloat(float r, float g, float b) {
this.r = r;
this.g = g;
this.b = b;
}
public CPColorFloat(int color) {
r = (color >>> 16 & 0xff) / 255f;
g = (color >>> 8 & 0xff) / 255f;
b = (color & 0xff) / 255f;
}
public int toInt() {
return Math.max(0, Math.min(255, (int) (r * 255f))) << 16
| Math.max(0, Math.min(255, (int) (g * 255f))) << 8
| Math.max(0, Math.min(255, (int) (b * 255f)));
}
public void mixWith(CPColorFloat color, float alpha) {
r = r * (1f - alpha) + color.r * alpha;
g = g * (1f - alpha) + color.g * alpha;
b = b * (1f - alpha) + color.b * alpha;
}
@Override
public Object clone() {
try {
return super.clone();
} catch (Exception ignored) {
throw new Error("Uh oh");
}
}
}