gctGenerator/site/.vuepress/components/codes/qfst/codegen.js

66 lines
1.3 KiB
JavaScript

import { parseJSON } from '../codegen.js';
import { insts2hex, getDrawTextOpt, getFillRectParams } from '../asm';
import { measureText } from '../text.js';
export const lskey = 'config/qfst';
export const defaultConfig = {
x: 533,
y: 150,
fontSize: 13,
fgRGB: 0xffffff,
fgA: 0xff,
fgRGB2: null,
fgA2: null,
bgRGB: 0x000000,
bgA: 0x40,
bgLeft: 4,
bgRight: 3,
bgTop: 4,
bgBot: 2,
};
export const getPreviewText = () => ` 0.426
0.427
0.428
1.515
3.117
39.000
9.999
11.111
22.222
33.333
44.444
55.555
66.666
77.777
88.888
99.999`;
/** @returns {typeof defaultConfig} */
export function getConfig() {
const config =
(typeof localStorage !== 'undefined' && parseJSON(localStorage.getItem(lskey))) || {};
return {
...defaultConfig,
...config,
text: getPreviewText(),
};
}
/**
* @param {keyof typeof import('../addrs.js').ctxSpOff} version
* @param {string=} baseCode
*/
export default function codegen(version, baseCode) {
if (!baseCode) return '';
const config = getConfig();
let code = baseCode;
code += '077F039C 0000002C';
code += insts2hex(getFillRectParams(config, measureText(getPreviewText(), version)));
code += insts2hex(getDrawTextOpt(config));
code += '2532642E 25303364 00000000'; // fmt = "%2d.%03d"
return code.replace(/\s/g, '');
}