diff --git a/src/assets/icons/clipAdd.svg b/src/assets/icons/clipAdd.svg new file mode 100644 index 0000000..d7b4773 --- /dev/null +++ b/src/assets/icons/clipAdd.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/clipMinus.svg b/src/assets/icons/clipMinus.svg new file mode 100644 index 0000000..dec342c --- /dev/null +++ b/src/assets/icons/clipMinus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/dc/create.svg b/src/assets/icons/dc/create.svg new file mode 100644 index 0000000..a3aa896 --- /dev/null +++ b/src/assets/icons/dc/create.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/dc/reset.svg b/src/assets/icons/dc/reset.svg new file mode 100644 index 0000000..eae205a --- /dev/null +++ b/src/assets/icons/dc/reset.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/Assistant/assistant.vue b/src/components/Assistant/assistant.vue index 64a8193..502b225 100644 --- a/src/components/Assistant/assistant.vue +++ b/src/components/Assistant/assistant.vue @@ -86,7 +86,7 @@ width: 46.69rem; height: 56.6rem; flex-shrink: 0; - // background-color: #fff; + background-color: #fff; box-shadow: 0px 19.44px 27.22px 0px #0000000d; border: 1px solid; border-image-source: linear-gradient( diff --git a/src/components/Canvas/DepthCanvas/components/ai-selectbox-panel.vue b/src/components/Canvas/DepthCanvas/components/ai-selectbox-panel.vue index eb8d3e9..879e978 100644 --- a/src/components/Canvas/DepthCanvas/components/ai-selectbox-panel.vue +++ b/src/components/Canvas/DepthCanvas/components/ai-selectbox-panel.vue @@ -10,8 +10,14 @@ {{ item.label }} - - + + @@ -114,5 +120,22 @@ background: rgba(235, 235, 235, 0.9); } } + > button { + cursor: pointer; + border: none; + display: flex; + align-items: center; + justify-content: center; + height: 2.5rem; + background-color: rgba(13, 13, 13, 1); + color: #fff; + font-size: 1.2rem; + border-radius: 0.4rem; + padding: 0 0.8rem; + gap: 0.8rem; + &:active { + opacity: 0.8; + } + } } diff --git a/src/components/Canvas/DepthCanvas/components/tools/depth-input.vue b/src/components/Canvas/DepthCanvas/components/tools/depth-input.vue index 53cc57f..6cbb258 100644 --- a/src/components/Canvas/DepthCanvas/components/tools/depth-input.vue +++ b/src/components/Canvas/DepthCanvas/components/tools/depth-input.vue @@ -5,7 +5,9 @@ {{ before }} + - - diff --git a/src/components/Canvas/DepthCanvas/manager/AISelectboxToolManager.ts b/src/components/Canvas/DepthCanvas/manager/AISelectboxToolManager.ts index 7ac7371..a08ce87 100644 --- a/src/components/Canvas/DepthCanvas/manager/AISelectboxToolManager.ts +++ b/src/components/Canvas/DepthCanvas/manager/AISelectboxToolManager.ts @@ -221,12 +221,13 @@ export class AISelectboxToolManager { if (!this.demoObject) return const fobject = this.demoObject this.clearDemoObject() - const canvas = getObjectAlphaToCanvas(fobject, null, 0, { r: 255, g: 0, b: 0, a: 255 }); + const tcanvas = await this.createStaticCanvas(fobject) + const canvas = getObjectAlphaToCanvas(tcanvas, null, 0, { r: 255, g: 0, b: 0, a: 255 }); + const arr = traceImageContour(canvas); const scaleY = fobject.scaleY const scaleX = fobject.scaleX const top = fobject.top const left = fobject.left - const arr = traceImageContour(canvas); let minX = fobject.width; let minY = fobject.height; const str = arr.map((v) => { diff --git a/src/components/Canvas/DepthCanvas/manager/LayerManager.ts b/src/components/Canvas/DepthCanvas/manager/LayerManager.ts index 2955341..d3471a2 100644 --- a/src/components/Canvas/DepthCanvas/manager/LayerManager.ts +++ b/src/components/Canvas/DepthCanvas/manager/LayerManager.ts @@ -136,10 +136,11 @@ export class LayerManager { copyLayerById(id) { const object = this.canvasManager.getObjectById(id) if (!object) return console.warn('复制图层失败,对象不存在ID:', id) + this.canvasManager.discardActiveObject() cloneObjects([object]).then(objects => { const newObject = objects[0] const info = JSON.parse(JSON.stringify(newObject.info)) - info.id = createId("image") + info.id = createId("copylayer") // info.name = info.name newObject.set({ top: newObject.top + 15, diff --git a/src/components/Canvas/DepthCanvas/manager/events/CanvasEventManager.js b/src/components/Canvas/DepthCanvas/manager/events/CanvasEventManager.js index c94c2a2..bdd0d42 100644 --- a/src/components/Canvas/DepthCanvas/manager/events/CanvasEventManager.js +++ b/src/components/Canvas/DepthCanvas/manager/events/CanvasEventManager.js @@ -753,6 +753,23 @@ export class CanvasEventManager { this.canvas.on("object:removed", (e) => { // updateLayers(e); }); + this.canvas.on("erasing:start", (e) => { + // console.log("erasing:start", e); + }); + this.canvas.on("erasing:end", async (e) => { + // console.log("erasing:end", e); + const targets = e.targets; + var isRecord = false; + for (let i = 0; i < targets.length; i++) { + const target = targets[i]; + const id = target?.info?.id; + if (id) { + isRecord = true; + await this.layerManager.updateLayerThumbnailsById(id) + } + } + if (isRecord) this.stateManager.recordState(); + }); } setupDoubleClickEvents() { // 双击处理 diff --git a/src/components/Canvas/FlowCanvas/components/tools/my-select.vue b/src/components/Canvas/FlowCanvas/components/tools/my-select.vue index ff9d156..66493af 100644 --- a/src/components/Canvas/FlowCanvas/components/tools/my-select.vue +++ b/src/components/Canvas/FlowCanvas/components/tools/my-select.vue @@ -1,7 +1,12 @@ diff --git a/src/components/Canvas/FlowCanvas/components/tools/my-textTools.vue b/src/components/Canvas/FlowCanvas/components/tools/my-textTools.vue index f95ee47..5c92f70 100644 --- a/src/components/Canvas/FlowCanvas/components/tools/my-textTools.vue +++ b/src/components/Canvas/FlowCanvas/components/tools/my-textTools.vue @@ -3,7 +3,11 @@
- + + +
diff --git a/src/components/Canvas/FlowCanvas/flow-canvas.vue b/src/components/Canvas/FlowCanvas/flow-canvas.vue index e8bc2d2..3b11ab2 100644 --- a/src/components/Canvas/FlowCanvas/flow-canvas.vue +++ b/src/components/Canvas/FlowCanvas/flow-canvas.vue @@ -62,6 +62,7 @@ + + + diff --git a/src/lang/en.ts b/src/lang/en.ts index 05ffb1e..291813d 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -204,45 +204,52 @@ export default { download: 'Download' }, DepthCanvas: { - layer: 'Layer', - editDetails: 'Edit Details', - export: 'Export', - save: 'Save', - workbench: 'Workbench', - position: 'Position', - size: 'Size', - appearance: 'Appearance', - opacity: 'Opacity', - cornerRadius: 'Cor Radius', - strokeWidth: 'Stroke Width', - color: 'Color', - image: 'Image', - settings: 'Settings', - rotation: 'Rotation', - scale: 'Scale', - gapX: 'Gap X', - gapY: 'Gap Y', - offset: 'Offset', - emptyLayer: 'Empty Layer', - aiGroupLayer: 'AI Group Layer', - textLayer: 'Text Layer', - rectLayer: 'Rect Layer', - lineLayer: 'Line Layer', - ellipseLayer: 'Ellipse Layer', - triangleLayer: 'Triangle Layer', - starLayer: 'Star Layer', - arrowLayer: 'Arrow Layer', - imageLayer: 'Image Layer', - mergeLayer: 'Merge Layer', - rectangle: 'Rectangle', - line: 'Line', - arrow: 'Arrow', - ellipse: 'Ellipse', - triangle: 'Triangle', - star: 'Star', - add: 'Add', - remove: 'Remove', - brush: 'Brush', - erase: 'Erase' + layer: "Layer", + editDetails: "Edit Details", + export: "Export", + save: "Save", + workbench: "Workbench", + position: "Position", + size: "Size", + appearance: "Appearance", + opacity: "Opacity", + cornerRadius: "Cor Radius", + strokeWidth: "Stroke Width", + color: "Color", + image: "Image", + settings: "Settings", + rotation: "Rotation", + scale: "Scale", + gapX: "Gap X", + gapY: "Gap Y", + offset: "Offset", + emptyLayer: "Empty Layer", + aiGroupLayer: "AI Group Layer", + textLayer: "Text Layer", + rectLayer: "Rect Layer", + lineLayer: "Line Layer", + ellipseLayer: "Ellipse Layer", + triangleLayer: "Triangle Layer", + starLayer: "Star Layer", + arrowLayer: "Arrow Layer", + imageLayer: "Image Layer", + mergeLayer: "Merge Layer", + rectangle: "Rectangle", + line: "Line", + arrow: "Arrow", + ellipse: "Ellipse", + triangle: "Triangle", + star: "Star", + add: "Add", + remove: "Remove", + brush: "Brush", + erase: "Erase", + create: "Create", + reset: "Reset" + }, + clipDialog: { + title: 'Upload your profile photo', + cancel: 'Cancel', + confirm: 'Save' } } diff --git a/src/lang/zh-cn.ts b/src/lang/zh-cn.ts index 9d5ba0d..397ef81 100644 --- a/src/lang/zh-cn.ts +++ b/src/lang/zh-cn.ts @@ -200,45 +200,52 @@ export default { download: '下载' }, DepthCanvas: { - layer: '图层', - editDetails: '编辑详情', - export: '导出', - save: '保存', - workbench: '工作台', - position: '位置', - size: '大小', - appearance: '外观', - opacity: '透明度', - cornerRadius: '圆角半径', - strokeWidth: '边框宽度', - color: '颜色', - image: '图片', - settings: '设置', - rotation: '旋转角度', - scale: '缩放', - gapX: '水平间距', - gapY: '垂直间距', - offset: '偏移量', - emptyLayer: '空图层', - aiGroupLayer: '智能选区组', - textLayer: '文本图层', - rectLayer: '矩形图层', - lineLayer: '直线图层', - ellipseLayer: '椭圆图层', - triangleLayer: '三角形图层', - starLayer: '五角星图层', - arrowLayer: '箭头图层', - imageLayer: '图片图层', - mergeLayer: '合并图层', - rectangle: '矩形', - line: '直线', - arrow: '箭头', - ellipse: '椭圆', - triangle: '三角形', - star: '五角星', - add: '添加', - remove: '删除', - brush: '画笔', - erase: '擦除' + layer: "图层", + editDetails: "编辑详情", + export: "导出", + save: "保存", + workbench: "工作台", + position: "位置", + size: "大小", + appearance: "外观", + opacity: "透明度", + cornerRadius: "圆角半径", + strokeWidth: "边框宽度", + color: "颜色", + image: "图片", + settings: "设置", + rotation: "旋转角度", + scale: "缩放", + gapX: "水平间距", + gapY: "垂直间距", + offset: "偏移量", + emptyLayer: "空图层", + aiGroupLayer: "智能选区组", + textLayer: "文本图层", + rectLayer: "矩形图层", + lineLayer: "直线图层", + ellipseLayer: "椭圆图层", + triangleLayer: "三角形图层", + starLayer: "五角星图层", + arrowLayer: "箭头图层", + imageLayer: "图片图层", + mergeLayer: "合并图层", + rectangle: "矩形", + line: "直线", + arrow: "箭头", + ellipse: "椭圆", + triangle: "三角形", + star: "五角星", + add: "添加", + remove: "删除", + brush: "画笔", + erase: "擦除", + create: "创建", + reset: "重置" + }, + clipDialog: { + title: '上传您的个人资料照片', + cancel: '取消', + confirm: '保存' } } diff --git a/src/views/home/setting/General.vue b/src/views/home/setting/General.vue index a6e754a..6d872db 100644 --- a/src/views/home/setting/General.vue +++ b/src/views/home/setting/General.vue @@ -31,6 +31,7 @@
{{ $t('Home.logoutDevice') }}
+