diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-03-02 16:36:10 +0100 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-03-02 16:36:10 +0100 |
| commit | a526066b61f18b082adf6faeaf3e19f3d13cd77d (patch) | |
| tree | d4a67b7f6177080eae32787967d7a3c166c703b9 /apps/web/src/lib/preview/element-bounds.ts | |
| parent | b0165da764971b8e7f37c9657d0aa81f9bc2dcc9 (diff) | |
| download | opencut-a526066b61f18b082adf6faeaf3e19f3d13cd77d.tar.gz | |
feat: wire ui to have keyframes for: opacity, text color, and all background properties
Diffstat (limited to 'apps/web/src/lib/preview/element-bounds.ts')
| -rw-r--r-- | apps/web/src/lib/preview/element-bounds.ts | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/apps/web/src/lib/preview/element-bounds.ts b/apps/web/src/lib/preview/element-bounds.ts index 5b1f301d..08ffbfa8 100644 --- a/apps/web/src/lib/preview/element-bounds.ts +++ b/apps/web/src/lib/preview/element-bounds.ts @@ -4,10 +4,15 @@ import { isMainTrack } from "@/lib/timeline"; import { DEFAULT_TEXT_ELEMENT, DEFAULT_LINE_HEIGHT, + DEFAULT_TEXT_BACKGROUND, FONT_SIZE_SCALE_REFERENCE, } from "@/constants/text-constants"; import { getTextVisualRect, measureTextBlock } from "@/lib/text/layout"; -import { getElementLocalTime, resolveTransformAtTime } from "@/lib/animation"; +import { + getElementLocalTime, + resolveTransformAtTime, + resolveNumberAtTime, +} from "@/lib/animation"; export interface ElementBounds { cx: number; @@ -147,10 +152,41 @@ export function getElementBounds({ fallbackFontSize: scaledFontSize, }); const fontSizeRatio = element.fontSize / DEFAULT_TEXT_ELEMENT.fontSize; + const resolvedBackground = { + ...element.background, + paddingX: resolveNumberAtTime({ + baseValue: + element.background.paddingX ?? DEFAULT_TEXT_BACKGROUND.paddingX, + animations: element.animations, + propertyPath: "background.paddingX", + localTime, + }), + paddingY: resolveNumberAtTime({ + baseValue: + element.background.paddingY ?? DEFAULT_TEXT_BACKGROUND.paddingY, + animations: element.animations, + propertyPath: "background.paddingY", + localTime, + }), + offsetX: resolveNumberAtTime({ + baseValue: + element.background.offsetX ?? DEFAULT_TEXT_BACKGROUND.offsetX, + animations: element.animations, + propertyPath: "background.offsetX", + localTime, + }), + offsetY: resolveNumberAtTime({ + baseValue: + element.background.offsetY ?? DEFAULT_TEXT_BACKGROUND.offsetY, + animations: element.animations, + propertyPath: "background.offsetY", + localTime, + }), + }; const visualRect = getTextVisualRect({ textAlign: element.textAlign, block, - background: element.background, + background: resolvedBackground, fontSizeRatio, }); measuredWidth = visualRect.width; |
