From d9390ee235214e3d9ba09cd043a1f50909416352 Mon Sep 17 00:00:00 2001 From: Frank Weindel <6070611+frank-weindel@users.noreply.github.com> Date: Fri, 19 Jan 2024 12:19:40 -0500 Subject: [PATCH] Fix SDF text not moving with parent Fixes #126 --- examples/tests/text-overflow-suffix.ts | 6 +++--- examples/tests/text-vertical-align.ts | 6 +++--- src/core/lib/WebGlContextWrapper.ts | 9 +++++++-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/examples/tests/text-overflow-suffix.ts b/examples/tests/text-overflow-suffix.ts index d3a31ea3..7614c2ca 100644 --- a/examples/tests/text-overflow-suffix.ts +++ b/examples/tests/text-overflow-suffix.ts @@ -41,8 +41,8 @@ export default async function test(settings: ExampleSettings) { }); await paginateTestRows(pageContainer, [ - ...generateLineHeightTest(renderer, 'sdf'), - ...generateLineHeightTest(renderer, 'canvas'), + ...generateOverflowSuffixTest(renderer, 'sdf'), + ...generateOverflowSuffixTest(renderer, 'canvas'), ]); return pageContainer; @@ -61,7 +61,7 @@ const NODE_PROPS = { contain: 'width', } satisfies Partial; -function generateLineHeightTest( +function generateOverflowSuffixTest( renderer: RendererMain, textRenderer: 'canvas' | 'sdf', ): TestRow[] { diff --git a/examples/tests/text-vertical-align.ts b/examples/tests/text-vertical-align.ts index ab2c55bc..55dd16cb 100644 --- a/examples/tests/text-vertical-align.ts +++ b/examples/tests/text-vertical-align.ts @@ -41,8 +41,8 @@ export default async function test(settings: ExampleSettings) { }); await paginateTestRows(pageContainer, [ - ...generateLineHeightTest(renderer, 'sdf'), - ...generateLineHeightTest(renderer, 'canvas'), + ...generateVerticalAlignTest(renderer, 'sdf'), + ...generateVerticalAlignTest(renderer, 'canvas'), ]); return pageContainer; @@ -59,7 +59,7 @@ const NODE_PROPS = { lineHeight: 70, } satisfies Partial; -function generateLineHeightTest( +function generateVerticalAlignTest( renderer: RendererMain, textRenderer: 'canvas' | 'sdf', ): TestRow[] { diff --git a/src/core/lib/WebGlContextWrapper.ts b/src/core/lib/WebGlContextWrapper.ts index 3f37de60..209421fc 100644 --- a/src/core/lib/WebGlContextWrapper.ts +++ b/src/core/lib/WebGlContextWrapper.ts @@ -940,7 +940,11 @@ export type UniformMethodMap = { }; /** + * Compare two arrays for equality. * + * @remarks + * This function will not try to compare nested arrays or Float32Arrays and + * instead will always return false when they are encountered. * * @param a * @param b @@ -951,8 +955,9 @@ export function compareArrays(a: T[], b: T[]): boolean { return false; } return a.every((v, i) => { - if (Array.isArray(v)) { - return compareArrays(v, b[i] as any[]); + // Don't bother to compare nested arrays or Float32Arrays + if (Array.isArray(v) || v instanceof Float32Array) { + return false; } else { return v === b[i]; }