FC18: Clean unicode renderer methods to just one renderer method

This commit is contained in:
Willem Cazander 2025-09-28 17:22:02 +02:00
parent 99bce14fd1
commit 5cfb4893db
21 changed files with 103 additions and 115 deletions

View file

@ -33,8 +33,6 @@ import java.util.function.Consumer;
import org.x4o.fc18.cake2.FourCornerDotCake;
import org.x4o.fc18.cake2.FourCornerX00PetitVide;
import org.x4o.fc18.cake2.FourCornerX06BaklavaPointSequence;
import org.x4o.fc18.cake2.FourCornerX18CakePointSequence;
import org.x4o.fc18.cake2.pie9d.FCDotPIE9DDash09;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
import org.x4o.fc18.zion7.FourCornerZion7Candlelier;
@ -95,35 +93,11 @@ public class FourCornerUnicodeDisplay {
return buf.toString();
}
@Deprecated
public String renderFromX06(List<FourCornerX06BaklavaPointSequence> chars) {
return buildString(v -> renderFromX06(chars, v));
public String render(List<Integer> chars) {
return buildString(v -> render(chars, v));
}
@Deprecated
public void renderFromX06(List<FourCornerX06BaklavaPointSequence> chars, StringBuilder buf) {
List<Integer> charPoints = new ArrayList<>(chars.size());
chars.forEach(v -> charPoints.addAll(v.baklavaPointSequence()));
renderFromInt18(charPoints, buf);
}
@Deprecated
public String renderFromX18(List<FourCornerX18CakePointSequence> chars) {
return buildString(v -> renderFromX18(chars, v));
}
@Deprecated
public void renderFromX18(List<FourCornerX18CakePointSequence> chars, StringBuilder buf) {
List<Integer> charPoints = new ArrayList<>(chars.size());
chars.forEach(v -> charPoints.addAll(v.cakePointSequence()));
renderFromInt18(charPoints, buf);
}
public String renderFromInt18(List<Integer> chars) {
return buildString(v -> renderFromInt18(chars, v));
}
public void renderFromInt18(List<Integer> chars, StringBuilder buf) {
public void render(List<Integer> chars, StringBuilder buf) {
StenoUnicodePrinter printer = new StenoUnicodePrinter(buf);
FourCornerZionStenoLexer lexer = new FourCornerZionStenoLexer(printer, handleEscape);
lexer.withSmokeSignals(printer).read(chars);
@ -262,7 +236,7 @@ public class FourCornerUnicodeDisplay {
public void strobeNumberBASE2Lego(FCFlameFremanLegoBase2 type, BigInteger value) {
List<Integer> numberCandy = new ArrayList<>();
FourCornerRecipe.toDecimalsX18(numberCandy, value);
renderFromInt18(numberCandy, output);
render(numberCandy, output);
}
@Override
@ -272,14 +246,14 @@ public class FourCornerUnicodeDisplay {
numberCandy.add(FCDotCDC1604DashP6.NY19_MINUS.ordinal()); // TODO: use name word symbols
}
FourCornerRecipe.toDecimalsX18(numberCandy, value);
renderFromInt18(numberCandy, output);
render(numberCandy, output);
}
@Override
public void strobeNumberBASE8Lego(FCFlameFremanLegoBase8 type, BigInteger value) {
List<Integer> numberCandy = new ArrayList<>();
FourCornerRecipe.toDecimalsX18(numberCandy, value);
renderFromInt18(numberCandy, output);
render(numberCandy, output);
}
@Override
@ -291,7 +265,7 @@ public class FourCornerUnicodeDisplay {
numberCandy.add(FCDotCDC1604DashP6.NX14_N.ordinal());
numberCandy.add(FCDotCDC1604DashP6.NY15_COLON.ordinal());
FourCornerRecipe.toDecimalsX18(numberCandy, taste.ordinal()); // fixme use HEX
renderFromInt18(numberCandy, output);
render(numberCandy, output);
return;
}
if (taste.statusSignNegative()) {
@ -307,7 +281,7 @@ public class FourCornerUnicodeDisplay {
} else {
FourCornerRecipe.toDecimalsX18(numberCandy, value);
}
renderFromInt18(numberCandy, output);
render(numberCandy, output);
}
@Override
@ -332,7 +306,7 @@ public class FourCornerUnicodeDisplay {
for (Integer num : values) {
FourCornerRecipe.toDecimalsX18(math, num);
}
renderFromInt18(math, output);
render(math, output);
}
@Override
@ -349,7 +323,7 @@ public class FourCornerUnicodeDisplay {
FourCornerRecipe.toScriptSuperX18(numberCandy, numerator);
numberCandy.add(FCDotCDC1604DashP6.NY02_BAR_V_RIGHT.ordinal());
FourCornerRecipe.toScriptSubX18(numberCandy, denominator);
renderFromInt18(numberCandy, output);
render(numberCandy, output);
}
@Override
@ -368,7 +342,7 @@ public class FourCornerUnicodeDisplay {
FourCornerRecipe.toScriptSuperX18(numberCandy, power);
numberCandy.add(FCDotCDC1604DashP6.NY18_ASTERISK.ordinal());
FourCornerRecipe.toDecimalsX18(numberCandy, coefficient);
renderFromInt18(numberCandy, output);
render(numberCandy, output);
}
@Override
@ -393,7 +367,7 @@ public class FourCornerUnicodeDisplay {
}
numberCandy.add(FCDotCDC1604DashP6.NY16_DOT.ordinal());
FourCornerRecipe.toDecimalsX18(numberCandy, mantissa);
renderFromInt18(numberCandy, output);
render(numberCandy, output);
}
@Override
@ -416,7 +390,7 @@ public class FourCornerUnicodeDisplay {
FourCornerRecipe.toDecimalsX18(numberCandy, quake);
numberCandy.add(FCDotCDC1604DashP6.NY16_DOT.ordinal());
FourCornerRecipe.toDecimalsX18(numberCandy, fraction);
renderFromInt18(numberCandy, output);
render(numberCandy, output);
}
@Override

View file

@ -22,6 +22,7 @@
*/
package org.x4o.fc18.cake2;
import java.util.ArrayList;
import java.util.List;
/// Number index retriever for four corner baklava points.
@ -32,4 +33,10 @@ public interface FourCornerX06BaklavaPointSequence extends FourCornerX00PetitVid
/// One baklava piece weights 52 gram
List<Integer> baklavaPointSequence();
static public List<Integer> toFC6(List<FourCornerX06BaklavaPointSequence> chars) {
List<Integer> cakePoints = new ArrayList<>(chars.size());
chars.forEach(v -> cakePoints.addAll(v.baklavaPointSequence()));
return cakePoints;
}
}

View file

@ -198,8 +198,8 @@ public class FourCornerZionStenoGrapher {
outFlush();
}
protected void outAddBankCake12(int cakeSel0, int cakeBank, int bankStart, BigInteger value, Function<Integer, Integer> overrideMsb) {
sliceBankCake(NCR_BANK12_BITS, BIG_BITS_12, cakeSel0, cakeBank, bankStart, value, out, overrideMsb);
protected void outAddBankCake12(FourCornerDotCake cakeSel0, FourCornerDotCake cakeBank, int bankStart, BigInteger value, Function<Integer, Integer> overrideMsb) {
sliceBankCake(NCR_BANK12_BITS, BIG_BITS_12, cakeSel0.getStart(), cakeBank.getStart(), bankStart, value, out, overrideMsb);
outFlush();
}
@ -480,7 +480,7 @@ public class FourCornerZionStenoGrapher {
requireBigMax(denominator, BIG_BITS_1148);
requireBigNoneZero(denominator);
BigInteger pig = numerator.shiftLeft(1152).add(denominator).add(BigInteger.valueOf(tasteFemale.ordinal()).shiftLeft(1148));
outAddBankCake12(FourCornerDotCake.FC_RATIONAL2304_SEL0.getStart(), FourCornerDotCake.FC_RATIONAL2304_BANK.getStart(), NCR_BANK_IDX_TOPPAGE_2304, pig, v -> {
outAddBankCake12(FourCornerDotCake.FC_RATIONAL2304_SEL0, FourCornerDotCake.FC_RATIONAL2304_BANK, NCR_BANK_IDX_TOPPAGE_2304, pig, v -> {
return (v & 0xFF) + (tasteFemale.ordinal() << 8);
});
}
@ -496,7 +496,7 @@ public class FourCornerZionStenoGrapher {
requireBigPositive(coefficient);
requireBigMax(coefficient, BIG_BITS_2016);
BigInteger pig = power.shiftLeft(2016).add(coefficient);
outAddBankCake12(FourCornerDotCake.FC_DECIMAL2304_SEL0.getStart(), FourCornerDotCake.FC_DECIMAL2304_BANK.getStart(), NCR_BANK_IDX_TOPPAGE_2304, pig, v -> {
outAddBankCake12(FourCornerDotCake.FC_DECIMAL2304_SEL0, FourCornerDotCake.FC_DECIMAL2304_BANK, NCR_BANK_IDX_TOPPAGE_2304, pig, v -> {
return (v & 0x7F) + (taste.ordinal() << 8) + (bias ? 1 << 7 : 0);
});
}
@ -512,7 +512,7 @@ public class FourCornerZionStenoGrapher {
requireBigPositive(mantissa);
requireBigMax(mantissa, BIG_BITS_2016);
BigInteger pig = exponent.shiftLeft(2016).add(mantissa);
outAddBankCake12(FourCornerDotCake.FC_FLOAT2304_SEL0.getStart(), FourCornerDotCake.FC_FLOAT2304_BANK.getStart(), NCR_BANK_IDX_TOPPAGE_2304, pig, v -> {
outAddBankCake12(FourCornerDotCake.FC_FLOAT2304_SEL0, FourCornerDotCake.FC_FLOAT2304_BANK, NCR_BANK_IDX_TOPPAGE_2304, pig, v -> {
return (v & 0x7F) + (taste.ordinal() << 8) + (bias ? 1 << 7 : 0);
});
}
@ -527,7 +527,7 @@ public class FourCornerZionStenoGrapher {
requireBigPositive(fraction);
requireBigMax(fraction, BIG_BITS_1152);
BigInteger pig = quake.shiftLeft(1152).add(fraction);
outAddBankCake12(FourCornerDotCake.FC_CHOPED2304_SEL0.getStart(), FourCornerDotCake.FC_CHOPED2304_BANK.getStart(), NCR_BANK_IDX_TOPPAGE_2304, pig, v -> {
outAddBankCake12(FourCornerDotCake.FC_CHOPED2304_SEL0, FourCornerDotCake.FC_CHOPED2304_BANK, NCR_BANK_IDX_TOPPAGE_2304, pig, v -> {
return (v & 0xFF) + (taste.ordinal() << 8);
});
}