优化AnsiColorWrapper

This commit is contained in:
TomXin
2022-08-28 20:30:57 +08:00
parent d9506196de
commit 146abd3e26
4 changed files with 26 additions and 27 deletions

View File

@@ -60,21 +60,6 @@ public class AnsiColorWrapper {
return Ansi8BitColor.background(code);
}
/**
* 区分前景还是背景
*/
public enum ForeOrBack{
/**
* 前景
*/
FORE,
/**
* 背景
*/
BACK,
}
@Override
public boolean equals(Object o) {
if (this == o) {

View File

@@ -0,0 +1,16 @@
package cn.hutool.core.lang.ansi;
/**
* 区分前景还是背景
*/
public enum ForeOrBack{
/**
* 前景
*/
FORE,
/**
* 背景
*/
BACK,
}

View File

@@ -30,10 +30,11 @@ public class AnsiEncoderTest {
Color.RED, Color.WHITE,
Color.YELLOW
};
for (Color foreColor : colorArray) {
AnsiElement foreElement = ansiColors.findClosest(foreColor).toAnsiElement(AnsiColorWrapper.ForeOrBack.FORE);
for (int i = 0; i < colorArray.length; i++) {
Color foreColor = colorArray[i];
AnsiElement foreElement = ansiColors.findClosest(foreColor).toAnsiElement(ForeOrBack.FORE);
Color backColor = new Color(255 - foreColor.getRed(), 255 - foreColor.getGreen(), 255 - foreColor.getBlue());
AnsiElement backElement = ansiColors.findClosest(backColor).toAnsiElement(AnsiColorWrapper.ForeOrBack.BACK);
AnsiElement backElement = ansiColors.findClosest(backColor).toAnsiElement(ForeOrBack.BACK);
String encode = AnsiEncoder.encode(foreElement, backElement, text);
//Console.print( i%2==1?encode+"\n":encode);
}
@@ -56,8 +57,8 @@ public class AnsiEncoderTest {
count++;
if (count<from)continue;
if (count>until)break;
AnsiElement backElement4bit = ansiColors4Bit.findClosest(new Color(r,g,b)).toAnsiElement(AnsiColorWrapper.ForeOrBack.BACK);
AnsiElement backElement8bit = ansiColors8Bit.findClosest(new Color(r,g,b)).toAnsiElement(AnsiColorWrapper.ForeOrBack.BACK);
AnsiElement backElement4bit = ansiColors4Bit.findClosest(new Color(r,g,b)).toAnsiElement(ForeOrBack.BACK);
AnsiElement backElement8bit = ansiColors8Bit.findClosest(new Color(r,g,b)).toAnsiElement(ForeOrBack.BACK);
String encode4 = AnsiEncoder.encode( backElement4bit,text4);
String encode8 = AnsiEncoder.encode( backElement8bit,text8);
//Console.log(StrUtil.format(encode4,r,g,b)+StrUtil.format(encode8,r,g,b));