深度画布智能选区
This commit is contained in:
@@ -25,6 +25,7 @@ fabric.Object.prototype.toObject = function () {
|
||||
const object = this.toObject_(arr)
|
||||
if (object.info) {
|
||||
let lock = !!object.info.lock
|
||||
if (object.type === "group") lock = true
|
||||
object.evented = !lock
|
||||
object.selectable = !lock
|
||||
}
|
||||
@@ -214,7 +215,13 @@ export class CanvasManager {
|
||||
const obj = this.getObjectById(id)
|
||||
if (!obj) return
|
||||
if (obj.type === "group") {
|
||||
const objects = [];
|
||||
obj._originPosition = {
|
||||
top: obj.top,
|
||||
left: obj.left,
|
||||
cpTop: obj.clipPath.top,
|
||||
cpLeft: obj.clipPath.left,
|
||||
}
|
||||
const objects = [obj];
|
||||
this.getObjects().forEach((item: any) => {
|
||||
if (item?.info?.parentId === id) objects.push(item)
|
||||
})
|
||||
@@ -258,6 +265,9 @@ export class CanvasManager {
|
||||
getObjectById(id: string) {
|
||||
return this.getObjects().find((item: any) => item?.info?.id === id)
|
||||
}
|
||||
getChildObjectsById(id: string) {
|
||||
return this.getObjects().filter((item: any) => item?.info?.parentId === id)
|
||||
}
|
||||
/** 获取选中对象 */
|
||||
getSelectedObject() {
|
||||
return this.canvas.getActiveObject()
|
||||
@@ -285,6 +295,8 @@ export class CanvasManager {
|
||||
const currentTool = this.stateManager.toolManager.currentTool.value;
|
||||
if (currentTool === OperationType.DRAW) {
|
||||
this.handleDrawImage(fabricImage)
|
||||
} else if (currentTool === OperationType.AISELECT_DRAW) {
|
||||
this.stateManager.aiSelectboxToolManager.handleBrushDrawImage(fabricImage)
|
||||
}
|
||||
return true
|
||||
};
|
||||
@@ -293,7 +305,7 @@ export class CanvasManager {
|
||||
async handleDrawImage(fabricImage: fabric.Object) {
|
||||
const activeID = this.stateManager.layerManager.activeID.value
|
||||
const activeLayer = this.getObjectById(activeID)
|
||||
if (activeLayer && activeLayer.fill?.repeat !== "repeat") {
|
||||
if (activeLayer && activeLayer.fill?.repeat !== "repeat" && activeLayer.type !== "group") {
|
||||
this.layerManager.imageMergeToLayer(activeLayer, fabricImage)
|
||||
} else {
|
||||
const emptyLayer = await this.layerManager.createEmptyLayer(false);
|
||||
|
||||
Reference in New Issue
Block a user