Fix renderer overlay loading and modularize renderer

This commit is contained in:
2026-02-11 18:27:29 -08:00
parent ee21c77fd0
commit 8a82a1b5f9
29 changed files with 3150 additions and 2741 deletions

View File

@@ -64,7 +64,11 @@ export {
updateVisibleOverlayVisibilityService,
} from "./overlay-visibility-service";
export { MpvIpcClient, MPV_REQUEST_ID_SECONDARY_SUB_VISIBILITY } from "./mpv-service";
export { applyMpvSubtitleRenderMetricsPatchService } from "./mpv-render-metrics-service";
export {
applyMpvSubtitleRenderMetricsPatchService,
DEFAULT_MPV_SUBTITLE_RENDER_METRICS,
sanitizeMpvSubtitleRenderMetrics,
} from "./mpv-render-metrics-service";
export { handleMpvCommandFromIpcService } from "./ipc-command-service";
export { createFieldGroupingOverlayRuntimeService } from "./field-grouping-overlay-service";
export { createNumericShortcutRuntimeService } from "./numeric-shortcut-service";

View File

@@ -1,25 +1,13 @@
import test from "node:test";
import assert from "node:assert/strict";
import { MpvSubtitleRenderMetrics } from "../../types";
import { applyMpvSubtitleRenderMetricsPatchService } from "./mpv-render-metrics-service";
import {
applyMpvSubtitleRenderMetricsPatchService,
DEFAULT_MPV_SUBTITLE_RENDER_METRICS,
} from "./mpv-render-metrics-service";
const BASE: MpvSubtitleRenderMetrics = {
subPos: 100,
subFontSize: 38,
subScale: 1,
subMarginY: 34,
subMarginX: 19,
subFont: "sans-serif",
subSpacing: 0,
subBold: false,
subItalic: false,
subBorderSize: 2.5,
subShadowOffset: 0,
subAssOverride: "yes",
subScaleByWindow: true,
subUseMargins: true,
osdHeight: 720,
osdDimensions: null,
...DEFAULT_MPV_SUBTITLE_RENDER_METRICS,
};
test("applyMpvSubtitleRenderMetricsPatchService returns unchanged on empty patch", () => {

View File

@@ -1,6 +1,33 @@
import { MpvSubtitleRenderMetrics } from "../../types";
import { asBoolean, asFiniteNumber, asString } from "../utils/coerce";
export const DEFAULT_MPV_SUBTITLE_RENDER_METRICS: MpvSubtitleRenderMetrics = {
subPos: 100,
subFontSize: 38,
subScale: 1,
subMarginY: 34,
subMarginX: 19,
subFont: "sans-serif",
subSpacing: 0,
subBold: false,
subItalic: false,
subBorderSize: 2.5,
subShadowOffset: 0,
subAssOverride: "yes",
subScaleByWindow: true,
subUseMargins: true,
osdHeight: 720,
osdDimensions: null,
};
export function sanitizeMpvSubtitleRenderMetrics(
current: MpvSubtitleRenderMetrics,
patch: Partial<MpvSubtitleRenderMetrics> | null | undefined,
): MpvSubtitleRenderMetrics {
if (!patch) return current;
return updateMpvSubtitleRenderMetricsService(current, patch);
}
export function updateMpvSubtitleRenderMetricsService(
current: MpvSubtitleRenderMetrics,
patch: Partial<MpvSubtitleRenderMetrics>,