调整Q Scheme构造组件对于已记录值的获取和处理。

This commit is contained in:
徐涛 2025-02-07 09:01:26 +08:00
parent 853b9b6b75
commit f9f855e818

View File

@ -11,7 +11,7 @@ import { FloatColorPicker } from '../../../components/FloatcolorPicker';
import { ScrollArea } from '../../../components/ScrollArea'; import { ScrollArea } from '../../../components/ScrollArea';
import { VSegmentedControl } from '../../../components/VSegmentedControl'; import { VSegmentedControl } from '../../../components/VSegmentedControl';
import { SchemeContent } from '../../../models'; import { SchemeContent } from '../../../models';
import { QSchemeSource, QSchemeStorage } from '../../../q-scheme'; import { QSchemeSetting, QSchemeSource, QSchemeStorage } from '../../../q-scheme';
import { useUpdateScheme } from '../../../stores/schemes'; import { useUpdateScheme } from '../../../stores/schemes';
import { defaultEmptyFormData } from '../../../utls'; import { defaultEmptyFormData } from '../../../utls';
import styles from './Builder.module.css'; import styles from './Builder.module.css';
@ -28,50 +28,35 @@ export function QSchemeBuilder({ scheme, onBuildCompleted }: QSchemeBuilderProps
try { try {
if (!colorFn) throw 'Web Assembly functions is not available'; if (!colorFn) throw 'Web Assembly functions is not available';
const defaultValues = colorFn.q_scheme_default_settings(); const defaultValues = colorFn.q_scheme_default_settings();
if (!scheme.schemeStorage.source?.setting) if (scheme.schemeStorage.source?.setting)
return { return new SchemeSetting(
hover: { new ColorShifting(
chroma:
scheme.schemeStorage.source?.setting?.hover.chroma ?? defaultValues.hover.chroma, scheme.schemeStorage.source?.setting?.hover.chroma ?? defaultValues.hover.chroma,
lightness: scheme.schemeStorage.source?.setting?.hover.lightness ?? defaultValues.hover.lightness,
scheme.schemeStorage.source?.setting?.hover.lightness ?? ),
defaultValues.hover.lightness, new ColorShifting(
},
active: {
chroma:
scheme.schemeStorage.source?.setting?.active.chroma ?? defaultValues.active.chroma, scheme.schemeStorage.source?.setting?.active.chroma ?? defaultValues.active.chroma,
lightness:
scheme.schemeStorage.source?.setting?.active.lightness ?? scheme.schemeStorage.source?.setting?.active.lightness ??
defaultValues.active.lightness, defaultValues.active.lightness,
}, ),
focus: { new ColorShifting(
chroma:
scheme.schemeStorage.source?.setting?.focus.chroma ?? defaultValues.focus.chroma, scheme.schemeStorage.source?.setting?.focus.chroma ?? defaultValues.focus.chroma,
lightness: scheme.schemeStorage.source?.setting?.focus.lightness ?? defaultValues.focus.lightness,
scheme.schemeStorage.source?.setting?.focus.lightness ?? ),
defaultValues.focus.lightness, new ColorShifting(
}, scheme.schemeStorage.source?.setting?.disabled.chroma ?? defaultValues.disabled.chroma,
disabled: {
chroma:
scheme.schemeStorage.source?.setting?.disabled.chroma ??
defaultValues.disabled.chroma,
lightness:
scheme.schemeStorage.source?.setting?.disabled.lightness ?? scheme.schemeStorage.source?.setting?.disabled.lightness ??
defaultValues.disabled.lightness, defaultValues.disabled.lightness,
}, ),
dark_convert: { new ColorShifting(
chroma:
scheme.schemeStorage.source?.setting?.dark_convert.chroma ?? scheme.schemeStorage.source?.setting?.dark_convert.chroma ??
defaultValues.dark_convert.chroma, defaultValues.dark_convert.chroma,
lightness:
scheme.schemeStorage.source?.setting?.dark_convert.lightness ?? scheme.schemeStorage.source?.setting?.dark_convert.lightness ??
defaultValues.dark_convert.lightness, defaultValues.dark_convert.lightness,
}, ),
expand_method:
scheme.schemeStorage.source?.setting?.expand_method ?? defaultValues.expand_method, scheme.schemeStorage.source?.setting?.expand_method ?? defaultValues.expand_method,
wacg_follows:
scheme.schemeStorage.source?.setting?.wacg_follows ?? defaultValues.wacg_follows, scheme.schemeStorage.source?.setting?.wacg_follows ?? defaultValues.wacg_follows,
} as SchemeSetting; );
return defaultValues; return defaultValues;
} catch (e) { } catch (e) {
console.error('[Q scheme builder]', e); console.error('[Q scheme builder]', e);
@ -139,6 +124,7 @@ export function QSchemeBuilder({ scheme, onBuildCompleted }: QSchemeBuilderProps
Number(formData.get('expanding')) as ColorExpand, Number(formData.get('expanding')) as ColorExpand,
Number(formData.get('wacg')) as WACGSetting, Number(formData.get('wacg')) as WACGSetting,
); );
const dumpedSetting = schemeSetting.toJsValue() as QSchemeSetting;
const source: QSchemeSource = { const source: QSchemeSource = {
primary: defaultEmptyFormData(formData, 'primary', null), primary: defaultEmptyFormData(formData, 'primary', null),
@ -151,7 +137,7 @@ export function QSchemeBuilder({ scheme, onBuildCompleted }: QSchemeBuilderProps
info: defaultEmptyFormData(formData, 'info', null), info: defaultEmptyFormData(formData, 'info', null),
foreground: defaultEmptyFormData(formData, 'foreground', null), foreground: defaultEmptyFormData(formData, 'foreground', null),
background: defaultEmptyFormData(formData, 'background', null), background: defaultEmptyFormData(formData, 'background', null),
setting: schemeSetting, setting: dumpedSetting,
}; };
const generatedScheme = every([source.secondary, source.tertiary, source.accent], isNil) const generatedScheme = every([source.secondary, source.tertiary, source.accent], isNil)
? colorFn?.generate_q_scheme_automatically( ? colorFn?.generate_q_scheme_automatically(
@ -162,7 +148,7 @@ export function QSchemeBuilder({ scheme, onBuildCompleted }: QSchemeBuilderProps
source.info, source.info,
source.foreground, source.foreground,
source.background, source.background,
source.setting, schemeSetting,
) )
: colorFn?.generate_q_scheme_manually( : colorFn?.generate_q_scheme_manually(
source.primary, source.primary,
@ -175,7 +161,7 @@ export function QSchemeBuilder({ scheme, onBuildCompleted }: QSchemeBuilderProps
source.info, source.info,
source.foreground, source.foreground,
source.background, source.background,
source.setting, schemeSetting,
); );
updateScheme((prev) => { updateScheme((prev) => {
prev.schemeStorage.source = source; prev.schemeStorage.source = source;