fix: align psd template layer ordering
This commit is contained in:
parent
800eb10ba4
commit
b12d61b371
@ -1644,8 +1644,8 @@ function getAssignedImageMaskStyle(
|
||||
? layers.find((item) => item.id === layer.clipMaskLayerId)
|
||||
: null;
|
||||
const fallbackMaskUrl =
|
||||
layer.forceClipMask && clipMaskLayer
|
||||
? getPsdLayerPreviewSourceUrl(clipMaskLayer)
|
||||
layer.forceClipMask
|
||||
? getPsdLayerPreviewSourceUrl(clipMaskLayer || layer)
|
||||
: "";
|
||||
const normalizedMaskUrl = String(
|
||||
layer.maskUrl || fallbackMaskUrl || ""
|
||||
@ -2247,8 +2247,8 @@ export function AgentPsdTemplateEditorDialog({
|
||||
);
|
||||
const orderedUserManageablePreviewLayers = useMemo(
|
||||
() =>
|
||||
orderedPreviewLayers.filter((layer) => !isAgentPsdLayerSuperLocked(layer)),
|
||||
[orderedPreviewLayers]
|
||||
orderedTemplateLayers.filter((layer) => !isAgentPsdLayerSuperLocked(layer)),
|
||||
[orderedTemplateLayers]
|
||||
);
|
||||
const orderedEditableImageLayers = useMemo(
|
||||
() =>
|
||||
@ -3417,13 +3417,13 @@ export function AgentPsdTemplateEditorDialog({
|
||||
}
|
||||
|
||||
if (direction === "front") {
|
||||
nextOrder.push(removed);
|
||||
} else if (direction === "back") {
|
||||
nextOrder.unshift(removed);
|
||||
} else if (direction === "back") {
|
||||
nextOrder.push(removed);
|
||||
} else if (direction === "forward") {
|
||||
nextOrder.splice(Math.min(baseOrder.length - 1, currentIndex + 1), 0, removed);
|
||||
} else {
|
||||
nextOrder.splice(Math.max(0, currentIndex - 1), 0, removed);
|
||||
} else {
|
||||
nextOrder.splice(Math.min(baseOrder.length - 1, currentIndex + 1), 0, removed);
|
||||
}
|
||||
|
||||
return nextOrder;
|
||||
|
||||
@ -602,6 +602,12 @@ export async function renderAgentPsdTemplate(params: {
|
||||
"PSD 剪切蒙版目标资源",
|
||||
true
|
||||
);
|
||||
} else if (layer.forceClipMask) {
|
||||
pushAsset(
|
||||
getStoredLayerSourceUrl(layer),
|
||||
"PSD 自身剪切蒙版资源",
|
||||
true
|
||||
);
|
||||
}
|
||||
} else {
|
||||
pushAsset(
|
||||
@ -938,6 +944,7 @@ export async function renderAgentPsdTemplate(params: {
|
||||
return;
|
||||
}
|
||||
const renderFrameLayer = clipMaskLayer || layer;
|
||||
const maskSourceLayer = clipMaskLayer || (layer.forceClipMask ? layer : null);
|
||||
const renderFrameContentBounds =
|
||||
clipMaskLayer && isAgentPsdImageLayerSlot(clipMaskLayer)
|
||||
? clipMaskLayer.contentBounds
|
||||
@ -990,7 +997,7 @@ export async function renderAgentPsdTemplate(params: {
|
||||
}
|
||||
|
||||
const layerPositionOffset = getLayerPositionOffset(renderFrameLayer.id);
|
||||
const shouldApplyMask = Boolean(layer.maskUrl || clipMaskLayer);
|
||||
const shouldApplyMask = Boolean(layer.maskUrl || maskSourceLayer);
|
||||
if (!shouldApplyMask) {
|
||||
if (isDefaultSourceImageLayer) {
|
||||
await appendRenderBaseOverlay();
|
||||
@ -1025,7 +1032,7 @@ export async function renderAgentPsdTemplate(params: {
|
||||
try {
|
||||
const rawMaskBuffer = layer.maskUrl
|
||||
? await readCachedBuffer(layer.maskUrl, "PSD 蒙版资源")
|
||||
: await readReusableLayerBuffer(clipMaskLayer!);
|
||||
: await readReusableLayerBuffer(maskSourceLayer!);
|
||||
if (!rawMaskBuffer) {
|
||||
throw new Error("Missing PSD layer mask source");
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user