/*
* Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
package javax.swing.colorchooser;
import java.awt.
Component;
import javax.swing.
UIManager;
class
ColorModel {
private final
String prefix;
private final
String[]
labels;
ColorModel(
String name,
String...
labels) {
this.
prefix = "ColorChooser." +
name; // NON-NLS: default prefix
this.
labels =
labels;
}
ColorModel() {
this("rgb", "Red", "Green", "Blue", "Alpha"); // NON-NLS: components
}
void
setColor(int
color, float[]
model) {
model[0] =
normalize(
color >> 16);
model[1] =
normalize(
color >> 8);
model[2] =
normalize(
color);
model[3] =
normalize(
color >> 24);
}
int
getColor(float[]
model) {
return
to8bit(
model[2]) | (
to8bit(
model[1]) << 8) | (
to8bit(
model[0]) << 16) | (
to8bit(
model[3]) << 24);
}
int
getCount() {
return this.
labels.length;
}
int
getMinimum(int
index) {
return 0;
}
int
getMaximum(int
index) {
return 255;
}
float
getDefault(int
index) {
return 0.0f;
}
final
String getLabel(
Component component, int
index) {
return
getText(
component, this.
labels[
index]);
}
private static float
normalize(int
value) {
return (float) (
value & 0xFF) / 255.0f;
}
private static int
to8bit(float
value) {
return (int) (255.0f *
value);
}
final
String getText(
Component component,
String suffix) {
return
UIManager.
getString(this.
prefix +
suffix + "Text",
component.
getLocale()); // NON-NLS: default postfix
}
final int
getInteger(
Component component,
String suffix) {
Object value =
UIManager.
get(this.
prefix +
suffix,
component.
getLocale());
if (
value instanceof
Integer) {
return (
Integer)
value;
}
if (
value instanceof
String) {
try {
return
Integer.
parseInt((
String)
value);
}
catch (
NumberFormatException exception) {
}
}
return -1;
}
}