Browse Source

Pull request #15910: REPORT-144782【主题二期-取色器优化】【设计变动】衍生规则改变,后台适配

Merge in DESIGN/design from ~KERRY/design_10.0:feature/x to feature/x

* commit '562d3fc7231432d2f40fccef44e81e2d15f6c9b9':
  开放接口给插件注册
  代码修改
  REPORT-144782【主题二期-取色器优化】【设计变动】衍生规则改变,后台适配
feature/x
kerry-王周勇 3 months ago
parent
commit
1009d4608b
  1. 10
      designer-base/src/main/java/com/fr/design/fun/DefaultValueAdjustProvider.java
  2. 32
      designer-base/src/main/java/com/fr/design/style/color/ColorConfig.java
  3. 10
      designer-base/src/main/java/com/fr/design/style/color/ColorSelectorStyle.java
  4. 28
      designer-base/src/main/java/com/fr/design/style/color/DeriveAlgorithm.java
  5. 34
      designer-base/src/main/java/com/fr/design/style/color/FRColorSelectorStyle.java
  6. 121
      designer-base/src/main/java/com/fr/design/style/color/NewColorSelectPane.java

10
designer-base/src/main/java/com/fr/design/fun/DefaultValueAdjustProvider.java

@ -3,6 +3,8 @@ package com.fr.design.fun;
import com.fr.base.Utils;
import com.fr.base.chart.BaseChartCollection;
import com.fr.chartx.attr.ChartProvider;
import com.fr.design.style.color.ColorSelectorStyle;
import com.fr.design.style.color.FRColorSelectorStyle;
import com.fr.general.FRFont;
import com.fr.report.cell.CellElement;
import com.fr.stable.collections.combination.Pair;
@ -73,4 +75,12 @@ public interface DefaultValueAdjustProvider extends Selectable {
return new Pair<>(new Color[0], new Color[0]);
}
/**
* 支持插件自定义主题色选择器风格
* @return ColorSelectorStyle
*/
default ColorSelectorStyle getColorSelector(){
return FRColorSelectorStyle.getInstance();
}
}

32
designer-base/src/main/java/com/fr/design/style/color/ColorConfig.java

@ -0,0 +1,32 @@
package com.fr.design.style.color;
import java.awt.Color;
/**
* 颜色选择器中单元颜色具体配置
*/
public class ColorConfig {
private boolean supportTheme;
private DeriveAlgorithm algorithm;
private ColorConfig(boolean supportTheme, DeriveAlgorithm algorithm) {
this.supportTheme = supportTheme;
this.algorithm = algorithm;
}
public static ColorConfig createThemeColorConfig(DeriveAlgorithm deriveAlgorithm) {
return new ColorConfig(true, deriveAlgorithm);
}
public static ColorConfig createThemeColorConfig(boolean supportTheme, DeriveAlgorithm deriveAlgorithm) {
return new ColorConfig(supportTheme, deriveAlgorithm);
}
public boolean isSupportTheme() {
return supportTheme;
}
public Color[] getDeriveColorArr(Color color, int defaultDeriveCount) {
return algorithm.getDeriveColorArr(color, defaultDeriveCount);
}
}

10
designer-base/src/main/java/com/fr/design/style/color/ColorSelectorStyle.java

@ -0,0 +1,10 @@
package com.fr.design.style.color;
import java.util.List;
/**
* 颜色选择器风格
*/
public interface ColorSelectorStyle {
List<ColorConfig> getColorConfigs();
}

28
designer-base/src/main/java/com/fr/design/style/color/DeriveAlgorithm.java

@ -0,0 +1,28 @@
package com.fr.design.style.color;
import com.fr.base.theme.FineColorDeriveState;
import java.awt.Color;
public interface DeriveAlgorithm {
/**
* 通用的衍生规则
*/
DeriveAlgorithm PLAIN_ALGORITHM = new DeriveAlgorithm() {
@Override
public Color[] getDeriveColorArr(Color color, int defaultDeriveCount) {
return FineColorDeriveState.getDeriveColorArr(color, false, defaultDeriveCount);
}
};
/**
* 默认的衍生规则主要针对字体和背景
*/
DeriveAlgorithm DEFAULT_DERIVE_ALGORITHM = new DeriveAlgorithm() {
public Color[] getDeriveColorArr(Color color, int defaultDeriveCount) {
return FineColorDeriveState.getDeriveColorArr(color, true, defaultDeriveCount);
}
};
Color[] getDeriveColorArr(Color color, int defaultDeriveCount);
}

34
designer-base/src/main/java/com/fr/design/style/color/FRColorSelectorStyle.java

@ -0,0 +1,34 @@
package com.fr.design.style.color;
import java.util.ArrayList;
import java.util.List;
public class FRColorSelectorStyle implements ColorSelectorStyle {
private static class Holder {
private static final FRColorSelectorStyle INSTANCE = new FRColorSelectorStyle();
}
public static FRColorSelectorStyle getInstance() {
return FRColorSelectorStyle.Holder.INSTANCE;
}
private FRColorSelectorStyle() {
}
public List<ColorConfig> getColorConfigs() {
ArrayList<ColorConfig> colorConfigs = new ArrayList<>();
// 8列主题色
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
// 2列灰度色
colorConfigs.add(ColorConfig.createThemeColorConfig(false, DeriveAlgorithm.DEFAULT_DERIVE_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(false, DeriveAlgorithm.DEFAULT_DERIVE_ALGORITHM));
return colorConfigs;
}
}

121
designer-base/src/main/java/com/fr/design/style/color/NewColorSelectPane.java

@ -1,14 +1,13 @@
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.base.mode.DesignModeContext;
import com.fr.design.border.UIRoundedBorder;
import com.fr.design.constants.UIConstants;
import com.fr.design.dialog.BasicPane;
import com.fr.design.file.HistoryTemplateListCache;
import com.fr.design.fun.DefaultValueAdjustProvider;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.i18n.Toolkit;
@ -16,6 +15,7 @@ import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.JTemplate;
import com.fr.design.mainframe.theme.dialog.TemplateThemeProfileDialog;
import com.fr.design.utils.DesignUtils;
import javax.swing.BorderFactory;
import javax.swing.JButton;
@ -61,7 +61,7 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
private final JPanel menuColorPane;
private ColorCell[][] themeColorCellGrid;
private ColorSelectorStyle colorSelector;
private ColorSelectorStyle colorSelector ;
public static NewColorSelectPane createColorSelectPaneWithTheme(boolean supportTheme) {
return new NewColorSelectPane(true, supportTheme);
@ -159,8 +159,11 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
JPanel centerPane = new JPanel(new GridLayout(1, 8, DEFAULT_COLOR_HOR_INTERVAL, 0));
menuColorPane.add(northPane, BorderLayout.NORTH);
menuColorPane.add(centerPane, BorderLayout.CENTER);
this.colorSelector = DesignModeContext.isDuchampMode() ? ColorSelectorStyle.FVS : ColorSelectorStyle.FR;
this.colorSelector = FRColorSelectorStyle.getInstance();
DefaultValueAdjustProvider valueAdjust = DesignUtils.getValueAdjust();
if (valueAdjust != null) {
this.colorSelector = valueAdjust.getColorSelector();
}
Color[] colorArray = new Color[]{
// 8列主题色
Color.decode("#FFFFFF"),
@ -181,11 +184,11 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
themeColorCellGrid = new ColorCell[colorArray.length][DEFAULT_DERIVE_COUNT];
for (int i = 0; i < colorArray.length; i++) {
ColorCell[] colorCellColumn = new ColorCell[DEFAULT_DERIVE_COUNT];
ColorConfig colorConfig = colorSelector.getColorConfig(i);
ColorConfig colorConfig = getColorConfig(colorSelector, i);
Color color = colorArray[i];
Color[] deriveColorArr = colorConfig.getDeriveColorArr(color, DEFAULT_DERIVE_COUNT);
for (int j = 0; j < deriveColorArr.length; j++) {
colorCellColumn[j] = createFineColorCell(deriveColorArr[j], !colorConfig.supportTheme, i, j);
colorCellColumn[j] = createFineColorCell(deriveColorArr[j], !colorConfig.isSupportTheme(), i, j);
}
themeColorCellGrid[i] = colorCellColumn;
}
@ -224,7 +227,7 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
}
for (int i = 0; i < standardColors.size(); i++) {
Color standardColor = standardColors.get(i);
ColorConfig colorConfig = colorSelector.getColorConfig(i);
ColorConfig colorConfig = getColorConfig(colorSelector, i);
Color[] deriveColorArr = colorConfig.getDeriveColorArr(standardColor, DEFAULT_DERIVE_COUNT);
for (int j = 0; j < deriveColorArr.length; j++) {
themeColorCellGrid[i][j].setColor(deriveColorArr[j]);
@ -451,105 +454,13 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable {
}
}
/**
* 颜色衍生算法
*/
private enum DeriveAlgorithm {
/**
* 调整明度和纯度
*/
PLAIN_ALGORITHM {
public Color[] getDeriveColorArr(Color color, int defaultDeriveCount) {
return FineColorDeriveState.getDeriveColorArr(color, false, defaultDeriveCount);
}
},
/**
* 只调整明度
*/
DEFAULT_DERIVE_ALGORITHM {
public Color[] getDeriveColorArr(Color color, int defaultDeriveCount) {
return FineColorDeriveState.getDeriveColorArr(color, true, defaultDeriveCount);
}
};
public abstract Color[] getDeriveColorArr(Color color, int defaultDeriveCount);
}
/**
* 每个主题色的具体配置
*/
private static class ColorConfig {
private boolean supportTheme;
private DeriveAlgorithm algorithm;
private ColorConfig(boolean supportTheme, DeriveAlgorithm algorithm) {
this.supportTheme = supportTheme;
this.algorithm = algorithm;
}
public static ColorConfig createThemeColorConfig(DeriveAlgorithm deriveAlgorithm) {
return new ColorConfig(true, deriveAlgorithm);
public ColorConfig getColorConfig(ColorSelectorStyle colorSelector, int i) {
List<ColorConfig> colorConfigs = colorSelector.getColorConfigs();
if (i < 0 || i >= colorConfigs.size()) {
return colorConfigs.get(0);
}
public static ColorConfig createThemeColorConfig(boolean supportTheme, DeriveAlgorithm deriveAlgorithm) {
return new ColorConfig(supportTheme, deriveAlgorithm);
}
public Color[] getDeriveColorArr(Color color, int defaultDeriveCount){
return algorithm.getDeriveColorArr(color, defaultDeriveCount);
}
}
/**
* 支持不同风格的主题色选择面板
*/
private enum ColorSelectorStyle {
FR,
FVS {
public List<ColorConfig> getColorConfigs() {
ArrayList<ColorConfig> colorConfigs = new ArrayList<>();
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.DEFAULT_DERIVE_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.DEFAULT_DERIVE_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
return colorConfigs;
}
};
public List<ColorConfig> getColorConfigs() {
ArrayList<ColorConfig> colorConfigs = new ArrayList<>();
// 8列主题色
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(DeriveAlgorithm.PLAIN_ALGORITHM));
// 2列灰度色
colorConfigs.add(ColorConfig.createThemeColorConfig(false, DeriveAlgorithm.DEFAULT_DERIVE_ALGORITHM));
colorConfigs.add(ColorConfig.createThemeColorConfig(false, DeriveAlgorithm.DEFAULT_DERIVE_ALGORITHM));
return colorConfigs;
}
public ColorConfig getColorConfig(int i) {
List<ColorConfig> colorConfigs = getColorConfigs();
if (i < 0 || i >= colorConfigs.size()) {
return colorConfigs.get(0);
}
return colorConfigs.get(i);
}
return colorConfigs.get(i);
}
}

Loading…
Cancel
Save