导出印花等所有信息
This commit is contained in:
@@ -80,6 +80,8 @@ export class FillRepeatCommand extends Command {
|
||||
source: FillSourceToBase64(img),
|
||||
gapX: 0,
|
||||
gapY: 0,
|
||||
width: img.width,
|
||||
height: img.height,
|
||||
};
|
||||
const bgObject = this.canvasManager.getBackgroundLayerObject();
|
||||
const pattern = new fabric.Pattern({
|
||||
@@ -275,6 +277,8 @@ export class FillRepeatGapChangeCommand extends Command {
|
||||
const image = new Image();
|
||||
image.src = object.fill_.source;
|
||||
await image.decode();
|
||||
object.fill_.width = image.width;
|
||||
object.fill_.height = image.height;
|
||||
// 创建透明 Canvas
|
||||
const tcanvas = document.createElement('canvas');
|
||||
tcanvas.width = image.width + object.fill_.gapX;
|
||||
|
||||
@@ -524,6 +524,7 @@ export class RemoveLayerCommand extends Command {
|
||||
this.layerId = options.layerId;
|
||||
this.activeLayerId = options.activeLayerId;
|
||||
this.layerManager = options.layerManager || null;
|
||||
this.IsOnlyLayer = this.layers.value.filter((v => !v.isFixed && !v.isFixedOther && !v.isBackground)).length <= 1
|
||||
|
||||
// 查找要删除的图层
|
||||
this.layerIndex = this.layers.value.findIndex(
|
||||
@@ -600,7 +601,9 @@ export class RemoveLayerCommand extends Command {
|
||||
);
|
||||
// 从图层列表中删除
|
||||
this.layers.value.splice(this.layerIndex, 1);
|
||||
|
||||
if(this.IsOnlyLayer){
|
||||
this.addCmd = await this.layerManager?.createLayer?.(null, LayerType.EMPTY, {}, false);
|
||||
}
|
||||
// 如果删除的是当前活动图层,需要更新活动图层
|
||||
if (this.isActiveLayer) {
|
||||
// 查找最近的非背景层作为新的活动图层
|
||||
@@ -633,6 +636,9 @@ export class RemoveLayerCommand extends Command {
|
||||
async undo() {
|
||||
// 恢复图层到原位置
|
||||
if (this.layerIndex !== -1 && this.removedLayer) {
|
||||
if(this.IsOnlyLayer && this.addCmd){
|
||||
this.addCmd?.undo?.();
|
||||
}
|
||||
this.layers.value.splice(this.layerIndex, 0, this.removedLayer);
|
||||
|
||||
// 使用优化渲染批处理恢复真实对象到画布
|
||||
@@ -650,7 +656,6 @@ export class RemoveLayerCommand extends Command {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
await this.layerManager?.updateLayersObjectsInteractivity?.();
|
||||
this.canvas.renderAll();
|
||||
|
||||
@@ -4286,24 +4291,28 @@ export class RemoveChildLayerCommand extends Command {
|
||||
}
|
||||
// 恢复子图层到原位置
|
||||
this.parentLayer.children.splice(this.childIndex, 0, this.removedChild);
|
||||
optimizeCanvasRendering(this.canvas, async () => {
|
||||
this.originalObjects.forEach((obj) => {
|
||||
// 恢复对象到画布
|
||||
this.canvas.add(obj);
|
||||
// 恢复对象的图层信息
|
||||
obj.layerId = this.layerId;
|
||||
obj.layerName = this.removedChild.name;
|
||||
obj.setCoords(); // 更新坐标
|
||||
});
|
||||
await new Promise((resolve) => {
|
||||
optimizeCanvasRendering(this.canvas, async () => {
|
||||
this.originalObjects.forEach((obj) => {
|
||||
// 恢复对象到画布
|
||||
this.canvas.add(obj);
|
||||
// 恢复对象的图层信息
|
||||
obj.layerId = this.layerId;
|
||||
obj.layerName = this.removedChild.name;
|
||||
obj.setCoords(); // 更新坐标
|
||||
});
|
||||
|
||||
// 如果是原活动图层,恢复活动图层
|
||||
if (this.isActiveLayer) {
|
||||
this.activeLayerId.value = this.layerId;
|
||||
}
|
||||
// 如果是原活动图层,恢复活动图层
|
||||
if (this.isActiveLayer) {
|
||||
this.activeLayerId.value = this.layerId;
|
||||
}
|
||||
|
||||
// 重新渲染画布
|
||||
await this.layerManager?.updateLayersObjectsInteractivity(false);
|
||||
// 重新渲染画布
|
||||
await this.layerManager?.updateLayersObjectsInteractivity(false);
|
||||
resolve(true);
|
||||
});
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
getInfo() {
|
||||
@@ -4501,6 +4510,7 @@ export class SetColorLayerFillCommand extends Command {
|
||||
this.oldFill = JSON.parse(JSON.stringify(this.object.fill));
|
||||
this.layer.blendMode = "multiply";
|
||||
this.object.set("globalCompositeOperation", "multiply");
|
||||
this.object.set("originColor", options.originColor);
|
||||
}
|
||||
|
||||
async execute(isUndo = false) {
|
||||
|
||||
Reference in New Issue
Block a user