|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
package com.fr.design.style.color; |
|
|
|
|
|
|
|
|
|
import com.fr.base.FineColor; |
|
|
|
|
import com.fr.base.theme.FineColorDeriveState; |
|
|
|
|
import com.fr.base.theme.TemplateTheme; |
|
|
|
|
import com.fr.design.DesignerEnvManager; |
|
|
|
|
import com.fr.design.border.UIRoundedBorder; |
|
|
|
@ -37,10 +38,11 @@ import java.util.List;
|
|
|
|
|
*/ |
|
|
|
|
public class NewColorSelectPane extends BasicPane implements ColorSelectable { |
|
|
|
|
private static final long serialVersionUID = -8634152305687249392L; |
|
|
|
|
private static final float BRIGHTNESS_VALUE = 0.15F; |
|
|
|
|
private static final float PURITY_VALUE = 0.1F; |
|
|
|
|
|
|
|
|
|
private static final int WIDTH = 197; |
|
|
|
|
private static final int HEIGHT = 250; |
|
|
|
|
//颜色衍生的数量
|
|
|
|
|
private static final int DEFAULT_DERIVE_COUNT = 5; |
|
|
|
|
|
|
|
|
|
private FineColor color = null; // color
|
|
|
|
|
// color setting action.
|
|
|
|
@ -165,22 +167,20 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
|
|
|
|
|
Color.decode("#CCCCCC"), |
|
|
|
|
|
|
|
|
|
// 2列灰度色
|
|
|
|
|
Color.decode("#808080"), |
|
|
|
|
Color.decode("#B3B3B3"), |
|
|
|
|
Color.decode("#333333"), |
|
|
|
|
Color.decode("#FFFFFF"), |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
if (themeColorCellGrid == null) { |
|
|
|
|
themeColorCellGrid = new ColorCell[colorArray.length][5]; |
|
|
|
|
themeColorCellGrid = new ColorCell[colorArray.length][DEFAULT_DERIVE_COUNT]; |
|
|
|
|
for (int i = 0; i < colorArray.length; i++) { |
|
|
|
|
ColorCell[] colorCellColumn = new ColorCell[5]; |
|
|
|
|
ColorCell[] colorCellColumn = new ColorCell[DEFAULT_DERIVE_COUNT]; |
|
|
|
|
boolean isDefaultColor = (i == colorArray.length - 1 || i == colorArray.length - 2); |
|
|
|
|
Color color = colorArray[i]; |
|
|
|
|
colorCellColumn[0] = createFineColorCell(color, isDefaultColor, i, 2); |
|
|
|
|
colorCellColumn[2] = createFineColorCell(color = saturationDown(color, isDefaultColor, true), isDefaultColor, i, 1); |
|
|
|
|
colorCellColumn[1] = createFineColorCell(saturationDown(color, isDefaultColor, true), isDefaultColor, i, 0); |
|
|
|
|
color = colorArray[i]; |
|
|
|
|
colorCellColumn[3] = createFineColorCell(color = saturationDown(color, isDefaultColor, false), isDefaultColor, i, 3); |
|
|
|
|
colorCellColumn[4] = createFineColorCell(saturationDown(color, isDefaultColor, false), isDefaultColor, i, 4); |
|
|
|
|
Color[] deriveColorArr = FineColorDeriveState.getDeriveColorArr(color, isDefaultColor, DEFAULT_DERIVE_COUNT); |
|
|
|
|
for (int j = 0; j < deriveColorArr.length; j++) { |
|
|
|
|
colorCellColumn[j] = createFineColorCell(deriveColorArr[j], isDefaultColor, i, j); |
|
|
|
|
} |
|
|
|
|
themeColorCellGrid[i] = colorCellColumn; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -189,11 +189,10 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
|
|
|
|
|
northPane.add(themeColorCellGrid[i][0]); |
|
|
|
|
} |
|
|
|
|
for (int i = 0; i < colorArray.length; i++) { |
|
|
|
|
JPanel columnPane = new JPanel(new GridLayout(4, 1, 0, 3)); |
|
|
|
|
columnPane.add(themeColorCellGrid[i][1]); |
|
|
|
|
columnPane.add(themeColorCellGrid[i][2]); |
|
|
|
|
columnPane.add(themeColorCellGrid[i][3]); |
|
|
|
|
columnPane.add(themeColorCellGrid[i][4]); |
|
|
|
|
JPanel columnPane = new JPanel(new GridLayout(DEFAULT_DERIVE_COUNT - 1, 1, 0, 3)); |
|
|
|
|
for (int j = 1; j < DEFAULT_DERIVE_COUNT; j++) { |
|
|
|
|
columnPane.add(themeColorCellGrid[i][j]); |
|
|
|
|
} |
|
|
|
|
centerPane.add(columnPane); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -220,14 +219,10 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < themeColorCellGrid.length - 2; i++) { |
|
|
|
|
Color color = standardColors.get(i); |
|
|
|
|
|
|
|
|
|
themeColorCellGrid[i][0].setColor(color); |
|
|
|
|
themeColorCellGrid[i][2].setColor(color = saturationDown(color, false, true)); |
|
|
|
|
themeColorCellGrid[i][1].setColor(saturationDown(color, false, true)); |
|
|
|
|
|
|
|
|
|
color = standardColors.get(i); |
|
|
|
|
themeColorCellGrid[i][3].setColor(color = saturationDown(color, false, false)); |
|
|
|
|
themeColorCellGrid[i][4].setColor(saturationDown(color, false, false)); |
|
|
|
|
Color[] deriveColorArr = FineColorDeriveState.getDeriveColorArr(color, false, DEFAULT_DERIVE_COUNT); |
|
|
|
|
for (int j = 0; j < deriveColorArr.length; j++) { |
|
|
|
|
themeColorCellGrid[i][j].setColor(deriveColorArr[j]); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -236,21 +231,6 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
|
|
|
|
|
return isDefaultColor ? new FineColorCell(color, this) : new FineColorCell(color, this, x, y); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 调整明度和纯度,默认色只调整明度 |
|
|
|
|
* @param color |
|
|
|
|
* @param isDefaultColor |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
public static Color saturationDown(Color color, boolean isDefaultColor, boolean isLight) { |
|
|
|
|
float[] hsb = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), new float[3]); |
|
|
|
|
if (!isDefaultColor) { |
|
|
|
|
hsb[1] = isLight ? Math.max(0, hsb[1] - PURITY_VALUE) : Math.min(1, hsb[1] + PURITY_VALUE); |
|
|
|
|
} |
|
|
|
|
hsb[2] = isLight ? Math.min(1, hsb[2] + BRIGHTNESS_VALUE) : Math.max(0, hsb[2] - BRIGHTNESS_VALUE); |
|
|
|
|
Color color1 = Color.getHSBColor(hsb[0], hsb[1], hsb[2]); |
|
|
|
|
return color1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void initMenuColorPane() { |
|
|
|
|
menuColorPane.setLayout(new GridLayout(5, 8, 3, 3)); |
|
|
|
@ -288,6 +268,7 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 添加监听 |
|
|
|
|
* |
|
|
|
|
* @param changeListener 监听 |
|
|
|
|
*/ |
|
|
|
|
public void addChangeListener(ChangeListener changeListener) { |
|
|
|
@ -351,7 +332,9 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
|
|
|
|
|
changeListener.stateChanged(evt); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
DesignerEnvManager.getEnvManager().getColorConfigManager().addToColorQueue(color); |
|
|
|
|
if (color != null) { |
|
|
|
|
DesignerEnvManager.getEnvManager().getColorConfigManager().addToColorQueue(color.getColor()); |
|
|
|
|
} |
|
|
|
|
this.repaint(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -464,4 +447,5 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|