From 2aeb97745890cc27f837ce647804a48747efe9d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Wed, 12 Aug 2026 18:01:19 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E9=BD=90=E5=BF=AB=E9=80=9F=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E9=87=8D=E7=BB=98=E5=A5=91=E7=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 恢复快速编辑面板的模式与重绘产物状态字段 补回快速编辑结果图层工厂 --- .../image-editor/ImageCanvasEditorTypes.ts | 2 + .../ImageCanvasGenerationLayerModel.ts | 71 +++++++++++++++++++ 2 files changed, 73 insertions(+) diff --git a/src/components/image-editor/ImageCanvasEditorTypes.ts b/src/components/image-editor/ImageCanvasEditorTypes.ts index 9e1664d77..4fcc5077f 100644 --- a/src/components/image-editor/ImageCanvasEditorTypes.ts +++ b/src/components/image-editor/ImageCanvasEditorTypes.ts @@ -265,6 +265,7 @@ export type GenerateDialogState = { assetLabel?: string; status: 'idle' | 'generating' | 'pending-confirmation' | 'failed'; composerOpen?: boolean; + isRedrawAsNewArtifact?: boolean; sourceLayerId?: string; generatedLayerId?: string; specType?: SpecGenerationType; @@ -444,6 +445,7 @@ export type CanvasContextMenuState = export type QuickEditPanelState = { referenceUploadContextId?: string; + mode?: 'quick-edit' | 'redraw'; sourceLayerId: string; prompt: string; assetLabel?: string; diff --git a/src/components/image-editor/ImageCanvasGenerationLayerModel.ts b/src/components/image-editor/ImageCanvasGenerationLayerModel.ts index 5dc1e1a31..ee0806117 100644 --- a/src/components/image-editor/ImageCanvasGenerationLayerModel.ts +++ b/src/components/image-editor/ImageCanvasGenerationLayerModel.ts @@ -32,6 +32,16 @@ type GeneratedResultLayerOptions = { generationInputs?: CanvasGenerationInputs; }; +type QuickEditResultLayerOptions = { + generated: EditorImageGenerationResult; + generatedIndex: number; + sourceLayer: CanvasLayer; + generationInputs: CanvasGenerationInputs; + mode?: 'quick-edit' | 'redraw'; + frame?: GenerateDialogState['placeholder']; + title?: string; +}; + type IconSpritesheetResultLayerOptions = { generated: EditorIconSpritesheetGenerationResult; iconResults?: EditorIconSpritesheetIconResult[] | null; @@ -173,6 +183,67 @@ export function createGeneratedResultLayer({ ); } +export function createQuickEditResultLayer({ + generated, + generatedIndex, + sourceLayer, + generationInputs, + mode = 'quick-edit', + frame, + title, +}: QuickEditResultLayerOptions): CanvasLayer { + const originalWidth = + frame?.originalWidth || + generated.width || + sourceLayer.originalWidth || + 1024; + const originalHeight = + frame?.originalHeight || + generated.height || + sourceLayer.originalHeight || + 1024; + const { width, height } = resolveLayerResolutionSize( + originalWidth, + originalHeight, + { + width: sourceLayer.width, + height: sourceLayer.height, + }, + ); + const frameX = + frame && frame.width > 0 + ? frame.x + frame.width / 2 - width / 2 + : undefined; + const frameY = + frame && frame.height > 0 + ? frame.y + frame.height / 2 - height / 2 + : undefined; + + return applyGeneratedMetadata( + { + id: `layer-quick-edit-${generatedIndex}`, + resourceId: `local-resource-quick-edit-${generatedIndex}`, + title: + title ?? + `${sourceLayer.title} ${mode === 'redraw' ? '重绘' : '快速编辑'}`, + src: generated.imageSrc, + x: frameX ?? sourceLayer.x + sourceLayer.width + 32, + y: frameY ?? sourceLayer.y, + width, + height, + originalWidth, + originalHeight, + zIndex: generatedIndex + 10, + sourceType: generated.sourceType, + sourceResourceId: sourceLayer.resourceId, + groupId: sourceLayer.groupId, + assetKind: sourceLayer.assetKind, + }, + generated, + generationInputs, + ); +} + export function applyImageEditResultToSourceLayer({ generated, sourceLayer,