mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-01 18:22:41 -08:00
refactor: extract jimaku, subtitle position, and render metric services
This commit is contained in:
57
src/core/services/mpv-render-metrics-service.ts
Normal file
57
src/core/services/mpv-render-metrics-service.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import { MpvSubtitleRenderMetrics } from "../../types";
|
||||
import { asBoolean, asFiniteNumber, asString } from "../utils/coerce";
|
||||
|
||||
export function updateMpvSubtitleRenderMetricsService(
|
||||
current: MpvSubtitleRenderMetrics,
|
||||
patch: Partial<MpvSubtitleRenderMetrics>,
|
||||
): MpvSubtitleRenderMetrics {
|
||||
const patchOsd = patch.osdDimensions;
|
||||
const nextOsdDimensions =
|
||||
patchOsd &&
|
||||
typeof patchOsd.w === "number" &&
|
||||
typeof patchOsd.h === "number" &&
|
||||
typeof patchOsd.ml === "number" &&
|
||||
typeof patchOsd.mr === "number" &&
|
||||
typeof patchOsd.mt === "number" &&
|
||||
typeof patchOsd.mb === "number"
|
||||
? {
|
||||
w: asFiniteNumber(patchOsd.w, 0, 1, 100000),
|
||||
h: asFiniteNumber(patchOsd.h, 0, 1, 100000),
|
||||
ml: asFiniteNumber(patchOsd.ml, 0, 0, 100000),
|
||||
mr: asFiniteNumber(patchOsd.mr, 0, 0, 100000),
|
||||
mt: asFiniteNumber(patchOsd.mt, 0, 0, 100000),
|
||||
mb: asFiniteNumber(patchOsd.mb, 0, 0, 100000),
|
||||
}
|
||||
: patchOsd === null
|
||||
? null
|
||||
: current.osdDimensions;
|
||||
|
||||
return {
|
||||
subPos: asFiniteNumber(patch.subPos, current.subPos, 0, 150),
|
||||
subFontSize: asFiniteNumber(patch.subFontSize, current.subFontSize, 1, 200),
|
||||
subScale: asFiniteNumber(patch.subScale, current.subScale, 0.1, 10),
|
||||
subMarginY: asFiniteNumber(patch.subMarginY, current.subMarginY, 0, 200),
|
||||
subMarginX: asFiniteNumber(patch.subMarginX, current.subMarginX, 0, 200),
|
||||
subFont: asString(patch.subFont, current.subFont),
|
||||
subSpacing: asFiniteNumber(patch.subSpacing, current.subSpacing, -100, 100),
|
||||
subBold: asBoolean(patch.subBold, current.subBold),
|
||||
subItalic: asBoolean(patch.subItalic, current.subItalic),
|
||||
subBorderSize: asFiniteNumber(
|
||||
patch.subBorderSize,
|
||||
current.subBorderSize,
|
||||
0,
|
||||
100,
|
||||
),
|
||||
subShadowOffset: asFiniteNumber(
|
||||
patch.subShadowOffset,
|
||||
current.subShadowOffset,
|
||||
0,
|
||||
100,
|
||||
),
|
||||
subAssOverride: asString(patch.subAssOverride, current.subAssOverride),
|
||||
subScaleByWindow: asBoolean(patch.subScaleByWindow, current.subScaleByWindow),
|
||||
subUseMargins: asBoolean(patch.subUseMargins, current.subUseMargins),
|
||||
osdHeight: asFiniteNumber(patch.osdHeight, current.osdHeight, 1, 10000),
|
||||
osdDimensions: nextOsdDimensions,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user