var _keyctrl = false, _keyc = false, _textEdit = false, _inputEdit = false; $("input").focus(function () { console.log(1) _inputEdit = true }) $("input").blur(function () { _inputEdit = false }) $("textarea").focus(function () { console.log(1) _inputEdit = true }) $("textarea").blur(function () { _inputEdit = false }) $("body").keyup(function (event) { // 兼容三端�?modifier key 检测(Windows/Linux: Ctrl, Mac: Cmd/Meta�? if (event.keyCode == 17 || event.keyCode == 91 || event.keyCode == 93) { // Ctrl 键或 Meta 键(Mac Cmd)释�? _keyctrl = false; }; if (event.keyCode == 67) { _keyc = false; }; }) $("body").keydown(function (event) { // 统一的快捷键处理(兼�?Windows/Linux: Ctrl, Mac: Cmd/Meta�? const isModifierKey = event.ctrlKey || event.metaKey; // 兼容三端 // 快捷键处理(在输入框或文本区域中时不触发,除了删除相关的�? if (!_inputEdit && !_textEdit) { // CTRL/CMD+N - 新建 if (isModifierKey && event.keyCode == 78) { event.preventDefault(); $("#new").click(); return; } // CTRL/CMD+O - 打开 if (isModifierKey && event.keyCode == 79) { event.preventDefault(); $("#open").click(); return; } // CTRL/CMD+S - 保存 if (isModifierKey && !event.shiftKey && event.keyCode == 83) { event.preventDefault(); $("#save").click(); return; } // CTRL/CMD+SHIFT+S - 保存副本 if (isModifierKey && event.shiftKey && event.keyCode == 83) { event.preventDefault(); output(null, saveAs); return; } // CTRL/CMD+Z - 还原 if (isModifierKey && !event.shiftKey && event.keyCode == 90) { event.preventDefault(); $("#previous").click(); return; } // CTRL/CMD+Y - 重做 if (isModifierKey && !event.shiftKey && event.keyCode == 89) { event.preventDefault(); $("#next").click(); return; } // CTRL/CMD+C - 复制 if (isModifierKey && event.keyCode == 67 && event.target.nodeName == 'BODY') { event.preventDefault(); copySelection(); return; } // CTRL/CMD+V - 粘贴 if (isModifierKey && event.keyCode == 86 && event.target.nodeName == 'BODY') { event.preventDefault(); pasteFromClipboard(); return; } // CTRL/CMD + SHIFT + DEL (Windows) �?CMD + SHIFT + Backspace (Mac) - 清空 if (isModifierKey && event.shiftKey && (event.keyCode == 46 || event.keyCode == 8)) { event.preventDefault(); $("#clean").click(); return; } // CTRL/CMD + DEL (Windows) �?CMD + Backspace (Mac) - 删除 if (isModifierKey && !event.shiftKey && (event.keyCode == 46 || event.keyCode == 8)) { event.preventDefault(); $("#delete").click(); return; } } // 兼容三端�?modifier key 检测(Windows/Linux: Ctrl, Mac: Cmd/Meta�? if (event.keyCode == 17 || event.metaKey) { // Ctrl 键或 Meta 键(Mac Cmd�? _keyctrl = true; if (_keyc && _textEdit) { //同时按下且在编辑状�? setTimeout("clipboard.writeText( (clipboard.readText()+' ') );", 1) //clipboard.writeText((clipboard.readText()+' ')) } } if (event.keyCode == 67) { _keyc = true; if (_keyctrl & _textEdit) { //同时按下且在编辑状�? setTimeout("clipboard.writeText( (clipboard.readText()+' ') );", 1) //clipboard.writeText((clipboard.readText()+' ')) } } if (event.keyCode == 37) { //left let v = -1; if (_keyctrl || event.ctrlKey || event.metaKey) { v = -5; } let x = canvas.getActiveObject().get("left"); x += v; canvas.getActiveObject().set("left", x); canvas.renderAll(); recordState(); updateControls(); } if (event.keyCode == 38) { //up let v = -1; if (_keyctrl || event.ctrlKey || event.metaKey) { v = -5; } let y = canvas.getActiveObject().get("top"); y += v; canvas.getActiveObject().set("top", y); canvas.renderAll(); recordState(); updateControls(); } if (event.keyCode == 39) { //right let v = 1; if (_keyctrl || event.ctrlKey || event.metaKey) { v = 5; } let x = canvas.getActiveObject().get("left"); x += v; canvas.getActiveObject().set("left", x); canvas.renderAll(); recordState(); updateControls(); } if (event.keyCode == 40) { //down let v = +1; if (_keyctrl || event.ctrlKey || event.metaKey) { v = 5; } let y = canvas.getActiveObject().get("top"); y += v; canvas.getActiveObject().set("top", y); canvas.renderAll(); recordState(); updateControls(); } // 普通删除键(DEL键,没有按CTRL/CMD�? if (event.keyCode == 46 && !isModifierKey && !_inputEdit && !_textEdit) { let actObjs = canvas.getActiveObjects(); let allObjs = canvas.getObjects(); let flag = 0; for (let item of actObjs) { if (item != allObjs[0]) { let i = getIndex(item);//0是背景,所以从1开始,但objs不包含背景图片,故要-1 objs.splice(i - 1, 1); canvas.remove(item); flag = 1; } } updateList(); canvas.discardActiveObject(); if (flag == 1) { recordState(); canvas.renderAll(); handleObjectSelected() } } }); // pre_add_image 已在 design1.js 中定义为全局变量 $("#addPic").click(function () { OpenDialog(); function OpenDialog() { dialog.showOpenDialog({ title: language_str("selectPic"),//请选择图片 buttonLabel: language_str("comf"),//"确认" filters: [ { name: 'Image File Type', extensions: ['png', 'jpg', 'jpeg'] }, ] }).then(result => { if (result.canceled) return; //console.log(result.filePaths) fabric.Image.fromURL(result.filePaths[0], function (image) { //image.left = pointer.x; image.setSrc(image.toDataURL(), function (image) { pre_add_image = image; background_image.hoverCursor = "crosshair"; $(this).css("background-color", "#646E76"); $("#addOutPic").css("background-color", ""); $("#addText").css("background-color", ""); $("#addCircleText").css("background-color", ""); $("#addOutText").css("background-color", ""); $("#addRect").css("background-color", ""); $("#addCircle").css("background-color", ""); $("#addLine").css("background-color", ""); $("#addQrCode").css("background-color", ""); $("#addBarCode").css("background-color", ""); $("#addCounter").css("background-color", ""); addState = 1; }); //canvas.add(image); }); }).catch(err => { console.log(err) }) } }); $("#addOutPic").click(function () { background_image.hoverCursor = "crosshair"; $(this).css("background-color", "#646E76"); $("#addPic").css("background-color", ""); $("#addText").css("background-color", ""); $("#addCircleText").css("background-color", ""); $("#addOutText").css("background-color", ""); $("#addRect").css("background-color", ""); $("#addCircle").css("background-color", ""); $("#addLine").css("background-color", ""); $("#addQrCode").css("background-color", ""); $("#addBarCode").css("background-color", ""); $("#addCounter").css("background-color", ""); addState = 2; }); $("#addText").click(function () { background_image.hoverCursor = "crosshair"; $(this).css("background-color", "#646E76"); $("#addPic").css("background-color", ""); $("#addOutPic").css("background-color", ""); $("#addCircleText").css("background-color", ""); $("#addOutText").css("background-color", ""); $("#addRect").css("background-color", ""); $("#addCircle").css("background-color", ""); $("#addLine").css("background-color", ""); $("#addQrCode").css("background-color", ""); $("#addBarCode").css("background-color", ""); $("#addCounter").css("background-color", ""); addState = 3; }); $("#addCircleText").click(function () { background_image.hoverCursor = "crosshair"; $(this).css("background-color", "#646E76"); $("#addPic").css("background-color", ""); $("#addOutPic").css("background-color", ""); $("#addText").css("background-color", ""); $("#addOutText").css("background-color", ""); $("#addRect").css("background-color", ""); $("#addCircle").css("background-color", ""); $("#addLine").css("background-color", ""); $("#addQrCode").css("background-color", ""); $("#addBarCode").css("background-color", ""); $("#addCounter").css("background-color", ""); addState = 11; }); $("#addOutText").click(function () { background_image.hoverCursor = "crosshair"; $(this).css("background-color", "#646E76"); $("#addPic").css("background-color", ""); $("#addOutPic").css("background-color", ""); $("#addText").css("background-color", ""); $("#addCircleText").css("background-color", ""); $("#addRect").css("background-color", ""); $("#addCircle").css("background-color", ""); $("#addLine").css("background-color", ""); $("#addQrCode").css("background-color", ""); $("#addBarCode").css("background-color", ""); $("#addCounter").css("background-color", ""); addState = 4; }); $("#addRect").click(function () { background_image.hoverCursor = "crosshair"; $(this).css("background-color", "#646E76"); $("#addPic").css("background-color", ""); $("#addOutPic").css("background-color", ""); $("#addText").css("background-color", ""); $("#addCircleText").css("background-color", ""); $("#addOutText").css("background-color", ""); $("#addCircle").css("background-color", ""); $("#addLine").css("background-color", ""); $("#addQrCode").css("background-color", ""); $("#addBarCode").css("background-color", ""); $("#addCounter").css("background-color", ""); addState = 5; }); $("#addCircle").click(function () { background_image.hoverCursor = "crosshair"; $(this).css("background-color", "#646E76"); $("#addPic").css("background-color", ""); $("#addOutPic").css("background-color", ""); $("#addText").css("background-color", ""); $("#addCircleText").css("background-color", ""); $("#addOutText").css("background-color", ""); $("#addRect").css("background-color", ""); $("#addLine").css("background-color", ""); $("#addQrCode").css("background-color", ""); $("#addBarCode").css("background-color", ""); $("#addCounter").css("background-color", ""); addState = 6; }); $("#addLine").click(function () { background_image.hoverCursor = "crosshair"; $(this).css("background-color", "#646E76"); $("#addPic").css("background-color", ""); $("#addOutPic").css("background-color", ""); $("#addText").css("background-color", ""); $("#addCircleText").css("background-color", ""); $("#addOutText").css("background-color", ""); $("#addRect").css("background-color", ""); $("#addCircle").css("background-color", ""); $("#addQrCode").css("background-color", ""); $("#addBarCode").css("background-color", ""); $("#addCounter").css("background-color", ""); addState = 7; }); $("#addQrCode").click(function () { background_image.hoverCursor = "crosshair"; $(this).css("background-color", "#646E76"); $("#addPic").css("background-color", ""); $("#addOutPic").css("background-color", ""); $("#addText").css("background-color", ""); $("#addCircleText").css("background-color", ""); $("#addOutText").css("background-color", ""); $("#addRect").css("background-color", ""); $("#addCircle").css("background-color", ""); $("#addLine").css("background-color", ""); $("#addBarCode").css("background-color", ""); $("#addCounter").css("background-color", ""); addState = 8; }); $("#addBarCode").click(function () { background_image.hoverCursor = "crosshair"; $(this).css("background-color", "#646E76"); $("#addPic").css("background-color", ""); $("#addOutPic").css("background-color", ""); $("#addText").css("background-color", ""); $("#addCircleText").css("background-color", ""); $("#addOutText").css("background-color", ""); $("#addRect").css("background-color", ""); $("#addCircle").css("background-color", ""); $("#addLine").css("background-color", ""); $("#addQrCode").css("background-color", ""); $("#addCounter").css("background-color", ""); addState = 9; }); $("#addCounter").click(function () { background_image.hoverCursor = "crosshair"; $(this).css("background-color", "#646E76"); $("#addPic").css("background-color", ""); $("#addOutPic").css("background-color", ""); $("#addText").css("background-color", ""); $("#addCircleText").css("background-color", ""); $("#addOutText").css("background-color", ""); $("#addRect").css("background-color", ""); $("#addCircle").css("background-color", ""); $("#addLine").css("background-color", ""); $("#addQrCode").css("background-color", ""); $("#addBarCode").css("background-color", ""); addState = 10; }); $("#version_change").click(function () { if (bg_version == 1) { bg_version = 2; } else { bg_version = 1; } // 类型改变 $("#source_front").attr("src", "./public/images/front_bg" + bg_version + "_1.png"); canvas.renderAll(); }); $("#front_side").click(function () { $(this).addClass("ui-button-active"); $("#back_side").removeClass("ui-button-active"); $(".canvas-container:eq(0)").show(); $(".canvas-container:eq(1)").hide(); console.log("------"); console.log(recordObjs1); console.log("------"); canvas = canvas1; objs = objs1; background_image = background_image1; next_objs = next_objs1; pre_objs = pre_objs1; next_json = next_json1; pre_json = pre_json1; recordObjs = recordObjs1; recordJson = recordJson1; step = step1; updateList(); $("#line_control").hide(); $("#base_control").hide(); $("#pic_control").hide(); $("#out_pic_control").hide(); $("#text_control").hide(); $("#circle_text_control").hide(); $("#out_text_control").hide(); $("#rect_control").hide(); $("#circle_control").hide(); $("#counter_control").hide(); $("#qrcode_Controll").hide(); $("#barcode_controll").hide(); $("#component_type").text(language_str("bg"));//背景 }); $("#back_side").click(function () { $(this).addClass("ui-button-active"); $("#front_side").removeClass("ui-button-active"); $(".canvas-container:eq(0)").hide(); $(".canvas-container:eq(1)").show(); canvas = canvas2; objs = objs2; background_image = background_image2; next_objs = next_objs2; pre_objs = pre_objs2; next_json = next_json2; pre_json = pre_json2; recordObjs = recordObjs2; recordJson = recordJson2; step = step2; updateList(); $("#line_control").hide(); $("#base_control").hide(); $("#pic_control").hide(); $("#out_pic_control").hide(); $("#text_control").hide(); $("#circle_text_control").hide(); $("#out_text_control").hide(); $("#rect_control").hide(); $("#circle_control").hide(); $("#counter_control").hide(); $("#qrcode_Controll").hide(); $("#barcode_controll").hide(); $("#component_type").text(language_str("bg"));//"背景" }); $("#top_alignment").click(function () { let _objs = canvas.getActiveObjects(); if (_objs.length == 1) { //只选中了一�? _objs[0].set("top", background_image.get("top")); canvas.renderAll(); return; } let top = 0; for (let item of _objs) { let t_top = item.get("top"); if (t_top < top) { top = t_top; } } groupItems = []; for (let item of _objs) { item.set("top", top); groupItems.push(item); } canvas.discardActiveObject(); let sel = new fabric.ActiveSelection(groupItems, { canvas: canvas, }); canvas.setActiveObject(sel); canvas.requestRenderAll(); canvas.renderAll(); }); $("#bottom_alignment").click(function () { let _objs = canvas.getActiveObjects(); if (_objs.length == 1) { //只选中了一�? let idx = getIndex(_objs[0]); let type = objs[idx - 1].type; let other = 0;//strokeWidth if (type == 5 || type == 6 || type == 7) { other = _objs[0].get("strokeWidth") } _objs[0].set("top", background_image.get("top") + background_image.get("height") - _objs[0].get("height") * _objs[0].get("scaleY") - other); canvas.renderAll(); return; } let bottom = 0; for (let item of _objs) { let idx = getIndex(item); let type = objs[idx - 1].type; let other = 0;//strokeWidth if (type == 5 || type == 6 || type == 7) { other = item.get("strokeWidth") } let t_b = item.get("top") + item.get("height") * item.get("scaleY") + other; if (t_b > bottom) { bottom = t_b; } } groupItems = [] for (let item of _objs) { let idx = getIndex(item); let type = objs[idx - 1].type; let other = 0;//strokeWidth if (type == 5 || type == 6 || type == 7) { other = item.get("strokeWidth") } item.set("top", bottom - item.get("height") * item.get("scaleY") - other); groupItems.push(item) } canvas.discardActiveObject(); let sel = new fabric.ActiveSelection(groupItems, { canvas: canvas, }); canvas.setActiveObject(sel); canvas.requestRenderAll(); canvas.renderAll(); }); $("#center_y_alignment").click(function () { let _objs = canvas.getActiveObjects(); if (_objs.length == 1) { //只选中了一�? let idx = getIndex(_objs[0]); let type = objs[idx - 1].type; let other = 0;//strokeWidth if (type == 5 || type == 6 || type == 7) { other = _objs[0].get("strokeWidth") } _objs[0].set("top", background_image.get("top") + (background_image.get("height") - (_objs[0].get("height") + other) * _objs[0].get("scaleY")) / 2); canvas.renderAll(); return; } let top = 0; for (let item of _objs) { let t_top = item.get("top"); if (t_top < top) { top = t_top; } } groupItems = [] for (let item of _objs) { let idx = getIndex(item); let type = objs[idx - 1].type; let other = 0;//strokeWidth if (type == 5 || type == 6 || type == 7) { other = item.get("strokeWidth") } item.set("top", top + (item.group.height - (item.get("height") + other) * item.get("scaleY")) / 2); groupItems.push(item) } canvas.discardActiveObject(); let sel = new fabric.ActiveSelection(groupItems, { canvas: canvas, }); canvas.setActiveObject(sel); canvas.requestRenderAll(); canvas.renderAll(); }); $("#left_alignment").click(function () { let _objs = canvas.getActiveObjects(); if (_objs.length == 1) { //只选中了一�? _objs[0].set("left", background_image.get("left")); canvas.renderAll(); return; } let left = 0; for (let item of _objs) { let t_left = item.get("left"); if (t_left < left) { left = t_left; } } groupItems = [] for (let item of _objs) { item.set("left", left); groupItems.push(item) } canvas.discardActiveObject(); let sel = new fabric.ActiveSelection(groupItems, { canvas: canvas, }); canvas.setActiveObject(sel); canvas.requestRenderAll(); canvas.renderAll(); }); $("#right_alignment").click(function () { let _objs = canvas.getActiveObjects(); if (_objs.length == 1) { //只选中了一�? let idx = getIndex(_objs[0]); let type = objs[idx - 1].type; let other = 0;//strokeWidth if (type == 5 || type == 6 || type == 7) { other = item.get("strokeWidth") } _objs[0].set("left", background_image.get("left") + background_image.get("width") - _objs[0].get("width") * _objs[0].get("scaleX") - other); canvas.renderAll(); return; } let right = 0; for (let item of _objs) { let idx = getIndex(item); let type = objs[idx - 1].type; let other = 0;//strokeWidth if (type == 5 || type == 6 || type == 7) { other = item.get("strokeWidth") } let t_r = item.get("left") + item.get("width") * item.get("scaleX") + other; if (t_r > right) { right = t_r; } } let groupItems = [] for (let item of _objs) { let idx = getIndex(item); let type = objs[idx - 1].type; let other = 0;//strokeWidth if (type == 5 || type == 6 || type == 7) { other = item.get("strokeWidth") } item.set("left", right - item.get("width") * item.get("scaleX") - other); groupItems.push(item) } //BUG1 canvas.discardActiveObject(); let sel = new fabric.ActiveSelection(groupItems, { canvas: canvas, }); canvas.setActiveObject(sel); canvas.requestRenderAll(); canvas.renderAll(); }); $("#center_x_alignment").click(function () { let _objs = canvas.getActiveObjects(); if (_objs.length == 1) { //只选中了一�? let idx = getIndex(_objs[0]); let type = objs[idx - 1].type; let other = 0;//strokeWidth if (type == 5 || type == 6 || type == 7) { other = _objs[0].get("strokeWidth") } _objs[0].set("left", background_image.get("left") + (background_image.get("width") - (_objs[0].get("width") + other) * _objs[0].get("scaleX")) / 2); canvas.renderAll(); return; } let left = 0; for (let item of _objs) { let t_left = item.get("left"); if (t_left < left) { left = t_left; } } groupItems = [] for (let item of _objs) { let idx = getIndex(item); let type = objs[idx - 1].type; let other = 0;//strokeWidth if (type == 5 || type == 6 || type == 7) { other = item.get("strokeWidth") } item.set("left", left + (item.group.width - (item.get("width") + other) * item.get("scaleX")) / 2); groupItems.push(item) } canvas.discardActiveObject(); let sel = new fabric.ActiveSelection(groupItems, { canvas: canvas, }); canvas.setActiveObject(sel); canvas.requestRenderAll(); canvas.renderAll(); }); $("#up_obj").click(function () {//上移,放到前�?数组中在后面 let idx = getIndex(canvas.getActiveObject()); if (idx + 1 != canvas.getObjects().length) { canvas.bringForward(canvas.getActiveObject()); canvas.renderAll(); let temp = objs[idx - 1]; objs[idx - 1] = objs[idx]; objs[idx] = temp; //console.log(objs); recordState(); updateList(); selectObj(idx); } }); $("#down_obj").click(function () {//下移,放到后�?数组中在前面 let idx = getIndex(canvas.getActiveObject()); if (idx != 1) { canvas.sendBackwards(canvas.getActiveObject()); canvas.renderAll(); //[objs[idx-2],objs[idx-1]] = [objs[idx-1],objs[idx-2]]; let temp = objs[idx - 1]; objs[idx - 1] = objs[idx - 2]; objs[idx - 2] = temp; recordState(); updateList(); selectObj(idx - 2); } }); $("#set_bg").click(function () {//设置为背�? let obj = canvas.getActiveObject(); console.log(obj, obj.get("selectable")) let idx = getIndex(obj); const scaleX = 2787 / obj.width const scaleY = 2787 / obj.height obj.set({ scaleX: scaleX, scaleY: scaleY, left: ($('#canvas1').width() - 2787) / 2, top: ($('#canvas1').height() - 2787) / 2, }); $('#text_w').val(2787) $('#text_h').val(2787) $('#text_x').val(0) $('#text_y').val(0) if (obj.get("selectable")) { obj.set("selectable", false); $("#lock_img").attr("src", "public/images/lock20.png") } canvas.sendToBack(obj); canvas.bringForward(obj); canvas.renderAll(); let objItem = objs.splice(idx - 1, 1)[0] objs.unshift(objItem) recordState(); updateList(); selectObj(0); }); // ========================================== function onStateRestored() { // 1. 重新获取背景图引�?(因为旧对象被销毁了) if (canvas.getObjects().length > 0) { background_image = canvas.getObjects()[0]; background_image.selectable = false; // 确保背景不可�? background_image.evented = false; } // 2. 渲染画布 canvas.requestRenderAll(); // 3. 取消选中状�? selectObj(-1); // 4. 隐藏所有属性面�? $("#base_control, #line_control, #pic_control, #out_pic_control, #text_control, #circle_text_control, #out_text_control, #rect_control, #circle_control, #counter_control, #qrcode_Controll, #barcode_controll").hide(); // 5. 刷新左侧列表 updateList(); } // ========================================== $("#previous").click(function () { if (step.val == 0) return; step.val--; // 判断当前是正面还是背�? if ($("#front_side").hasClass("ui-button-active")) { // 1. 恢复业务数据 objs1 = JSON.parse(recordObjs1[step.val]); objs = objs1; // 2. 恢复画布 (使用回调函数�? canvas.loadFromJSON(recordJson1[step.val], function () { onStateRestored(); // 图片加载完才执行这一�? }); } else { // 背面逻辑 objs2 = JSON.parse(recordObjs2[step.val]); objs = objs2; canvas.loadFromJSON(recordJson2[step.val], function () { onStateRestored(); }); } }); // ========================================== $("#next").click(function () { // 获取当前历史记录的最大长�? let maxLen = $("#front_side").hasClass("ui-button-active") ? recordObjs1.length : recordObjs2.length; if (step.val >= maxLen - 1) return; step.val++; if ($("#front_side").hasClass("ui-button-active")) { objs1 = JSON.parse(recordObjs1[step.val]); objs = objs1; canvas.loadFromJSON(recordJson1[step.val], function () { onStateRestored(); // 图片加载完才执行这一�? }); } else { objs2 = JSON.parse(recordObjs2[step.val]); objs = objs2; canvas.loadFromJSON(recordJson2[step.val], function () { onStateRestored(); }); } }); $("#clean").click(function () { objs.splice(0, objs.length); let allObjs = canvas.getObjects(); for (let item of allObjs) { if (item != allObjs[0]) { canvas.remove(item); } } updateList(); recordState(); }); $("#rotate").click(function () { let obj = canvas.getActiveObject(); obj.rotate(Math.round((obj.get("angle") + 90) % 360)); $("#text_r").val(obj.get("angle")); canvas.renderAll(); updateControls(); recordState(); }); $('#vertical_obj').click(function () { let obj = canvas.getActiveObject(); obj.set("flipY", !obj.get("flipY")); canvas.renderAll(); updateControls(); recordState(); }); $('#align_obj').click(function () { let obj = canvas.getActiveObject(); obj.set("flipX", !obj.get("flipX")); canvas.renderAll(); updateControls(); recordState(); }); $("#text_italics").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已�? canvas.getActiveObject().set("fontStyle", "normal") $(this).removeClass("ui-radio-acitve") } else { //未�? canvas.getActiveObject().set("fontStyle", "italic") $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#text_bold").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已�?恢复正常 canvas.getActiveObject().set("fontWeight", "normal") $(this).removeClass("ui-radio-acitve") } else { //未�? canvas.getActiveObject().set("fontWeight", "bold") $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#text_underline").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已�? canvas.getActiveObject().set("underline", false) $(this).removeClass("ui-radio-acitve") } else { //未�? canvas.getActiveObject().set("underline", true) $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#text_linethrough").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已�? canvas.getActiveObject().set("linethrough", false) $(this).removeClass("ui-radio-acitve") } else { //未�? canvas.getActiveObject().set("linethrough", true) $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#circle_text_italics").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已�? canvas.getActiveObject().set("fontStyle", "normal") $(this).removeClass("ui-radio-acitve") } else { //未�? canvas.getActiveObject().set("fontStyle", "italic") $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#circle_text_bold").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已�?恢复正常 canvas.getActiveObject().set("fontWeight", "normal") $(this).removeClass("ui-radio-acitve") } else { //未�? canvas.getActiveObject().set("fontWeight", "bold") $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $('#out_left_alignment').click(function () { $('#out_left_alignment').parent().removeClass('tool1') $('#out_right_alignment').parent().removeClass('tool1') $('#out_center_alignment').parent().removeClass('tool1') setTimeout(() => { $('#out_left_alignment').parent().addClass('tool1') }); canvas.getActiveObject().set('textAlign', 'left') let idx = getIndex(canvas.getActiveObject()) objs[idx - 1].align = 'left' recordState() canvas.renderAll() }) $('#out_right_alignment').click(function () { $('#out_left_alignment').parent().removeClass('tool1') $('#out_right_alignment').parent().removeClass('tool1') $('#out_center_alignment').parent().removeClass('tool1') setTimeout(() => { $('#out_right_alignment').parent().addClass('tool1') }); canvas.getActiveObject().set('textAlign', 'right') let idx = getIndex(canvas.getActiveObject()) objs[idx - 1].align = 'right' recordState() canvas.renderAll() }) $('#out_center_alignment').click(function () { $('#out_left_alignment').parent().removeClass('tool1') $('#out_right_alignment').parent().removeClass('tool1') $('#out_center_alignment').parent().removeClass('tool1') setTimeout(() => { $('#out_center_alignment').parent().addClass('tool1') }); canvas.getActiveObject().set('textAlign', 'center') let idx = getIndex(canvas.getActiveObject()) objs[idx - 1].align = 'center' recordState() canvas.renderAll() }) $("#out_text_italics").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已�? canvas.getActiveObject().set("fontStyle", "normal") $(this).removeClass("ui-radio-acitve") } else { //未�? canvas.getActiveObject().set("fontStyle", "italic") $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#out_text_bold").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已�?恢复正常 canvas.getActiveObject().set("fontWeight", "normal") $(this).removeClass("ui-radio-acitve") } else { //未�? canvas.getActiveObject().set("fontWeight", "bold") $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#out_text_underline").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已�? canvas.getActiveObject().set("underline", false) $(this).removeClass("ui-radio-acitve") } else { //未�? canvas.getActiveObject().set("underline", true) $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#out_text_linethrough").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已�? canvas.getActiveObject().set("linethrough", false) $(this).removeClass("ui-radio-acitve") } else { //未�? canvas.getActiveObject().set("linethrough", true) $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#lock").click(function () { canvas.getActiveObject().set("selectable", !canvas.getActiveObject().get("selectable")); if (canvas.getActiveObject().get("selectable")) { $("#lock_img").attr("src", "public/images/unlock20.png")//已经上锁,需要解�? } else { $("#lock_img").attr("src", "public/images/lock20.png")//没上锁,可以上锁 } recordState(); canvas.renderAll(); }); $("#text_back_transparent").click(function () { canvas.getActiveObject().set("textBackgroundColor", ""); $("#text_back_color").val("#ffffff"); canvas.renderAll(); }); $("#circle_text_back_transparent").click(function () { canvas.getActiveObject().set("textBackgroundColor", ""); $("#circle_text_back_color").val("#ffffff"); canvas.renderAll(); }); $("#out_text_back_transparent").click(function () { canvas.getActiveObject().set("textBackgroundColor", ""); $("#out_text_back_color").val("#ffffff"); canvas.renderAll(); }); $("#rect_transparent").click(function () { canvas.getActiveObject().set("fill", ""); $("#rect_color").val("#ffffff"); canvas.renderAll(); }); $("#rect_stroke_transparent").click(function () { canvas.getActiveObject().set("stroke", ""); $("#rect_stroke").val("#ffffff"); canvas.renderAll(); }); $("#circle_transparent").click(function () { canvas.getActiveObject().set("fill", ""); $("#circle_color").val("#ffffff"); canvas.renderAll(); }); $("#circle_stroke_transparent").click(function () { canvas.getActiveObject().set("stroke", ""); $("#circle_stroke").val("#ffffff"); canvas.renderAll(); }); // saveAs 函数保留,因为它被作为回调传递给 output 函数(第52行) function saveAs(op1, callback) { let j = canvas1.toJSON(["selectable", "hoverable", "hoverCursor", "text", "fontStyle", "fontWeight", "underline"]); let b = canvas2.toJSON(["selectable", "hoverable", "hoverCursor", "text", "fontStyle", "fontWeight", "underline"]); // 清理不需要的 src 字段 cleanupSrcFields(j.objects, objs1); cleanupSrcFields(b.objects, objs2); let o = { f: j, b: {}, fo: objs1, bo: objs2 }; let con_o = Object.assign(o, op1); dialog.showSaveDialog({ title: language_str("saveFile"),//'保存文件' filters: [ { name: 'Soon File Type', extensions: ['soon'] }, ] }).then(result => { if (result.filePath == "") { return; } if (result.filePath.substring(result.filePath.length - 5).indexOf('.') == -1) { result.filePath += '.soon'; } let fs = require('fs') con_o.soonType = 1 fs.writeFileSync(result.filePath, JSON.stringify(con_o)) openAs.name = result.filePath; layer.msg(language_str("saveSucc") + openAs.name);//'保存成功�? saveHistory(); if (callback && typeof callback === 'function') { callback(); } }).catch(err => { console.log() }) } // save 函数已在 output.js 中定义 $("#copy").click(function () { copySelection(); }) // 粘贴 $("#paste").click(function () { pasteFromClipboard(); }) // 保存 (保持你原有的保存逻辑不变) $("#save").click(function () { output(); // 这里调用你的 output 函数 return; // ... (下面是你原有的被 return 截断的代码,建议以后清理掉,但这里我按要求保�? let j = canvas1.toJSON(["selectable", "hoverable", "hoverCursor", "text", "fontStyle", "fontWeight", "underline"]); // ... (省略你原来那段很长的保存代码) ... }); function getDate() { let date = new Date(); return date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate(); } function getAbsoluteXY(_obj) { let coord = _obj.get("lineCoords"); return [_obj.get("left"), _obj.get("top")] } // fullPath 和 saveHistory 已在 output.js 中定义 $("#open").click(function () { if (step.val == 0) { OpenDialog(); return; } layer.confirm('' + language_str("whetherSave") + '', function (index) {//confirm 是否保存当前文件�? output(OpenDialog); layer.close(index); }, function (index) { OpenDialog(); }); function OpenDialog() { dialog.showOpenDialog({ title: "请选择文件", buttonLabel: language_str("comf"), filters: [ { name: 'Soon File Type', extensions: ['soon'] }, ] }).then(result => { if (result.canceled) return; let filePath = result.filePaths[0]; let fs = require('fs'); let fsData = fs.readFileSync(filePath); let j = JSON.parse(fsData.toString()); let type = j.soonType ? j.soonType : j.backBlackPic ? 2 : 1; if (type == 2) { ipcRenderer.send('open-design-page', filePath, type); return; } // 调用 output.js 中的 open 函数 open(filePath); }).catch(err => { console.log(err) }) } }); function clearAll() { //let blank = "{\"f\":{\"version\":\"4.6.0\",\"objects\":[{\"type\":\"image\",\"version\":\"4.6.0\",\"originX\":\"left\",\"originY\":\"top\",\"left\":253.5,\"top\":121.5,\"width\":2787,\"height\":2787,\"fill\":\"#000000\",\"stroke\":null,\"strokeWidth\":0,\"strokeDashArray\":null,\"strokeLineCap\":\"butt\",\"strokeDashOffset\":0,\"strokeLineJoin\":\"miter\",\"strokeUniform\":false,\"strokeMiterLimit\":4,\"scaleX\":1,\"scaleY\":1,\"angle\":0,\"flipX\":false,\"flipY\":false,\"opacity\":1,\"shadow\":null,\"visible\":true,\"backgroundColor\":\"\",\"fillRule\":\"nonzero\",\"paintFirst\":\"fill\",\"globalCompositeOperation\":\"source-over\",\"skewX\":0,\"skewY\":0,\"cropX\":0,\"cropY\":0,\"selectable\":false,\"hoverable\":false,\"hoverCursor\":\"default\",\"src\":\"data:image/png;base64,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YFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIEDpfCiFAAAcY0lEQVSAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMT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\",\"crossOrigin\":null,\"filters\":[]}],\"hoverCursor\":\"move\"},\"b\":{\"version\":\"4.6.0\",\"objects\":[{\"type\":\"image\",\"version\":\"4.6.0\",\"originX\":\"left\",\"originY\":\"top\",\"left\":253.5,\"top\":121.5,\"width\":2787,\"height\":2787,\"fill\":\"rgb(0,0,0)\",\"stroke\":null,\"strokeWidth\":0,\"strokeDashArray\":null,\"strokeLineCap\":\"butt\",\"strokeDashOffset\":0,\"strokeLineJoin\":\"miter\",\"strokeUniform\":false,\"strokeMiterLimit\":4,\"scaleX\":1,\"scaleY\":1,\"angle\":0,\"flipX\":false,\"flipY\":false,\"opacity\":1,\"shadow\":null,\"visible\":true,\"backgroundColor\":\"\",\"fillRule\":\"nonzero\",\"paintFirst\":\"fill\",\"globalCompositeOperation\":\"source-over\",\"skewX\":0,\"skewY\":0,\"cropX\":0,\"cropY\":0,\"selectable\":false,\"hoverable\":false,\"hoverCursor\":\"default\",\"src\":\"data:image/png;base64,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YFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIEDpfCiFAAAcY0lEQVSAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMTBAgQIECAAAECBAgQIECgTkAwqDu5hQkQIECAAAECBAgQIECAQBYQDLKRCQIECBAgQIAAAQIECBAgUCcgGNSd3MIECBAgQIAAAQIECBAgQCALCAbZyAQBAgQIECBAgAABAgQIEKgTEAzqTm5hAgQIECBAgAABAgQIECCQBQSDbGSCAAECBAgQIECAAAECBAjUCQgGdSe3MAECBAgQIECAAAECBAgQyAKCQTYyQYAAAQIECBAgQIAAAQIE6gQEg7qTW5gAAQIECBAgQIAAAQIECGQBwSAbmSBAgAABAgQIECBAgAABAnUCgkHdyS1MgAABAgQIECBAgAABAgSygGCQjUwQIECAAAECBAgQIECAAIE6AcGg7uQWJkCAAAECBAgQIECAAAECWUAwyEYmCBAgQIAAAQIECBAgQIBAnYBgUHdyCxMgQIAAAQIECBAgQIAAgSwgGGQjEwQIECBAgAABAgQIECBAoE5AMKg7uYUJECBAgAABAgQIECBAgEAWEAyykQkCBAgQIECAAAECBAgQIFAnIBjUndzCBAgQIECAAAECBAgQIEAgCwgG2cgEAQIECBAgQIAAAQIECBCoExAM6k5uYQIECBAgQIAAAQIECBAgkAUEg2xkggABAgQIECBAgAABAgQI1AkIBnUntzABAgQIECBAgAABAgQIEMgCgkE2MkGAAAECBAgQIECAAAECBOoEBIO6k1uYAAECBAgQIECAAAECBAhkAcEgG5kgQIAAAQIECBAgQIAAAQJ1AoJB3cktTIAAAQIECBAgQIAAAQIEsoBgkI1MECBAgAABAgQIECBAgACBOgHBoO7kFiZAgAABAgQIECBAgAABAllAMMhGJggQIECAAAECBAgQIECAQJ2AYFB3cgsTIECAAAECBAgQIECAAIEsIBhkIxMECBAgQIAAAQIECBAgQKBOQDCoO7mFCRAgQIAAAQIECBAgQIBAFhAMspEJAgQIECBAgAABAgQIECBQJyAY1J3cwgQIECBAgAABAgQIECBAIAsIBtnIBAECBAgQIECAAAECBAgQqBMQDOpObmECBAgQIECAAAECBAgQIJAFBINsZIIAAQIECBAgQIAAAQIECNQJCAZ1J7cwAQIECBAgQIAAAQIECBDIAoJBNjJBgAABAgQIECBAgAABAgTqBASDupNbmAABAgQIECBAgAABAgQIZAHBIBuZIECAAAECBAgQIECAAAECdQKCQd3JLUyAAAECBAgQIECAAAECBLKAYJCNTBAgQIAAAQIECBAgQIAAgToBwaDu5BYmQIAAAQIECBAgQIAAAQJZQDDIRiYIECBAgAABAgQIECBAgECdgGBQd3ILEyBAgAABAgQIECBAgACBLCAYZCMT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\",\"crossOrigin\":null,\"filters\":[]}],\"hoverCursor\":\"move\"},\"fo\":[],\"bo\":[]}"; let t_objs1 = canvas1.getObjects(); let t_objs2 = canvas2.getObjects(); for (let i = 1; i < t_objs1.length; i++) { canvas1.remove(t_objs1[i]); } for (let i = 1; i < t_objs2.length; i++) { canvas2.remove(t_objs2[i]); } objs2 = []; objs1 = []; step1.val = 0; step2.val = 0; recordJson1 = []; recordJson2 = []; recordObjs1 = []; recordObjs2 = []; if ($("#front_side").hasClass("ui-button-active")) { objs = objs1; recordObjs = recordObjs1; recordJson = recordJson1; step = step1; } else if ($("#back_side").hasClass("ui-button-active")) { objs = objs2; recordObjs = recordObjs2; recordJson = recordJson2; step = step2; } openAs.name = ""; canvas1.renderAll(); canvas2.renderAll(); updateList(); console.log(); } $("#new").click(function () { if (step.val == 0) { ipcRenderer.send('open-first-page'); return; } layer.confirm('' + language_str("whetherSave") + '', function (index) {//confirm 是否保存当前文件�? output(() => ipcRenderer.send('open-first-page')); }, function (index) { ipcRenderer.send('open-first-page'); }); }); // =========================================================== $("#text_y").bind('input propertychange', function () { if (!canvas.getActiveObject()) return; if ($("#text_y").val() == "") { $("#text_y").val(0) } let val = background_image.top; if ($("#text_y").val() != "") { val = background_image.top + parseInt($("#text_y").val()); } canvas.getActiveObject().set("top", val) canvas.renderAll(); recordState(); }) $("#text_x").bind('input propertychange', function () { if (!canvas.getActiveObject()) return; if ($("#text_x").val() == "") { $("#text_x").val(0) } let val = background_image.left; if ($("#text_x").val() != "") { val = background_image.left + parseInt($("#text_x").val()); } canvas.getActiveObject().set("left", val) canvas.renderAll(); recordState(); }) $("#text_w").bind('input propertychange', function () { if (!canvas.getActiveObject()) return; let val = "0"; if ($("#text_w").val() != "") { val = $("#text_w").val(); } let idx = getIndex(canvas.getActiveObject()); if (idx <= 0 || !objs[idx - 1]) return; let type = objs[idx - 1].type; if (type == 3 || type == 4) { canvas.getActiveObject().set("width", parseInt(val)) } else { canvas.getActiveObject().set("scaleX", parseInt(val) / canvas.getActiveObject().get("width")) } canvas.renderAll(); recordState(); }) $("#text_h").bind('input propertychange', function () { if (!canvas.getActiveObject()) return; let idx = getIndex(canvas.getActiveObject()); if (idx <= 0 || !objs[idx - 1]) return; if (objs[idx - 1].type == 7) { if ($("#text_h").val() == "") { $("#text_h").val(canvas.getActiveObject().get("strokeWidth")); } canvas.getActiveObject().set("strokeWidth", parseInt($("#text_h").val())); canvas.renderAll(); return; } let val = "0"; if ($("#text_h").val() != "") { val = $("#text_h").val(); } let type = objs[idx - 1].type; if (type == 3 || type == 4) { canvas.getActiveObject().set("height", parseInt(val)) } else { canvas.getActiveObject().set("scaleY", parseInt(val) / canvas.getActiveObject().get("height")) } canvas.renderAll(); recordState(); }) $("#text_r").bind('input propertychange', function () { if (!canvas.getActiveObject()) return; if ($("#text_r").val() == "") { $("#text_r").val("0") } $("#text_r").val(parseInt($("#text_r").val()) % 360) //canvas.getActiveObject().set("rotate", val) canvas.getActiveObject().rotate(parseInt($("#text_r").val())) canvas.renderAll(); recordState(); }) $("#out_pic_field_name").bind('input propertychange', function () { let idx = getIndex(canvas.getActiveObject()); objs[idx - 1].name = $("#out_pic_field_name").val(); updateList(); recordState(); }) $("#text_black").click(function () { let idx = getIndex(canvas.getActiveObject()); if ($(this).prop("checked")) { objs[idx - 1].black = true; } else { objs[idx - 1].black = false; } recordState(); }); $("#out_text_field_name").bind('input propertychange', function () { let idx = getIndex(canvas.getActiveObject()); objs[idx - 1].name = $("#out_text_field_name").val(); updateList(); recordState(); }) $("#qrcode_field_name").bind('input propertychange', function () { let idx = getIndex(canvas.getActiveObject()); objs[idx - 1].name = $("#qrcode_field_name").val(); updateList(); recordState(); }) $("#qrcode_color").bind('input propertychange', function () { let item = canvas.getActiveObject(); let qr = jrQrcode.getQrBase64($("#qrcode_val").val(), { padding: 0, foreground: $(this).val() }); let idx = getIndex(item); objs[idx - 1].color = $(this).val(); item.setSrc(qr, function (img) { canvas.renderAll(); recordState(); }); }); $("#qrcode_val").bind('change', function () { let val = $(this).val() ? $(this).val() : 'https://www.cardsoon.com' let item = canvas.getActiveObject(); let qr = jrQrcode.getQrBase64(val, { padding: 0, foreground: $("#qrcode_color").val() }); let idx = getIndex(item); objs[idx - 1].val = val; item.setSrc(qr, function (img) { canvas.renderAll(); recordState(); }); }); $("#barcode_color").bind('input propertychange', function () { let item = canvas.getActiveObject(); let idx = getIndex(item); objs[idx - 1].color = $(this).val(); JsBarcode("#barcode", objs[idx - 1].val, { margin: 0, lineColor: objs[idx - 1].color, fontSize: objs[idx - 1].fontSize, font: objs[idx - 1].font }); let barcode = document.getElementById('barcode'); let bar = barcode.toDataURL("image/png"); item.setSrc(bar, function (img) { canvas.renderAll(); recordState(); }); }); $("#barcode_field_name").bind('input propertychange', function () { let idx = getIndex(canvas.getActiveObject()); objs[idx - 1].name = $("#barcode_field_name").val(); updateList(); recordState(); }) $("#text_color").bind('input propertychange', function () { canvas.getActiveObject().set("fill", $("#text_color").val()); canvas.renderAll(); recordState(); }) $("#text_back_color").bind('input propertychange', function () { canvas.getActiveObject().set("textBackgroundColor", $("#text_back_color").val()); canvas.renderAll(); recordState(); }) $("#text_size").bind('input propertychange', function () { let val = 1 if (parseFloat($("#text_size").val())) { val = parseFloat($("#text_size").val()) if (val < 1) { val = 1 } else if (val > dpi) { val = dpi } else if (val % 0.5 !== 0) { val = Math.round(val * 2) / 2 } } $("#text_size").val(val) canvas.getActiveObject().set("fontSize", val * dpi / 72); $("#text_h").val((canvas.getActiveObject().get("height")).toFixed(0)); $("#text_w").val((canvas.getActiveObject().get("width")).toFixed(0)); canvas.renderAll(); recordState(); }) $("#circle_text_color").bind('input propertychange', function () { canvas.getActiveObject().set("fill", $("#circle_text_color").val()); canvas.renderAll(); recordState(); }) $("#circle_text_back_color").bind('input propertychange', function () { canvas.getActiveObject().set("textBackgroundColor", $("#circle_text_back_color").val()); canvas.renderAll(); recordState(); }) $("#circle_text_text").bind('input propertychange', function () { let val = $("#circle_text_text").val().trim() canvas.getActiveObject().set("text", ` ${val} `); canvas.renderAll(); updateList(); recordState(); }) $("#out_text_color").bind('input propertychange', function () { canvas.getActiveObject().set("fill", $("#out_text_color").val()); canvas.renderAll(); recordState(); }) $("#out_text_back_color").bind('input propertychange', function () { canvas.getActiveObject().set("textBackgroundColor", $("#out_text_back_color").val()); canvas.renderAll(); recordState(); }) $("#out_text_size").bind('input propertychange', function () { let val = 1 if (parseFloat($("#out_text_size").val())) { val = parseFloat($("#out_text_size").val()) if (val < 1) { val = 1 } else if (val > dpi) { val = dpi } else if (val % 0.5 !== 0) { val = Math.round(val * 2) / 2 } } $("#out_text_size").val(val) canvas.getActiveObject().set("fontSize", val * dpi / 72); $("#text_h").val((canvas.getActiveObject().get("height")).toFixed(0)); $("#text_w").val((canvas.getActiveObject().get("width")).toFixed(0)); canvas.renderAll(); recordState(); }) // 监听合成文本输入框 (占位符) $("#out_text_text").on('input propertychange', function () { let val = $(this).val(); // 【核心修改】如果值为空,强制给 2 个空格 if (val === "") { val = " "; } let obj = canvas.getActiveObject(); if (obj) { obj.set("text", val); obj.setCoords(); canvas.requestRenderAll(); updateList(); recordState(); } }); $("#rect_color").bind('input propertychange', function () { canvas.getActiveObject().set("fill", $("#rect_color").val()); canvas.renderAll(); recordState(); }) $("#rect_stroke").bind('input propertychange', function () { canvas.getActiveObject().set("stroke", $("#rect_stroke").val()); canvas.renderAll(); recordState(); }) $("#rect_stroke_width").bind('input propertychange', function () { if ($("#rect_stroke_width").val() == "") { $("#rect_stroke_width").val("0") } else { $("#rect_stroke_width").val(parseInt($("#rect_stroke_width").val())) } canvas.getActiveObject().set("strokeWidth", parseInt($("#rect_stroke_width").val())); canvas.renderAll(); recordState(); }) $("#rect_radius").bind('input propertychange', function () { if ($("#rect_radius").val() == "") { $("#rect_radius").val("0") } else { $("#rect_radius").val(parseInt($("#rect_radius").val())) } canvas.getActiveObject().set("rx", parseInt($("#rect_radius").val())); canvas.getActiveObject().set("ry", parseInt($("#rect_radius").val())); canvas.renderAll(); recordState(); }) $("#circle_color").bind('input propertychange', function () { canvas.getActiveObject().set("fill", $("#circle_color").val()); canvas.renderAll(); recordState(); }) $("#circle_stroke").bind('input propertychange', function () { canvas.getActiveObject().set("stroke", $("#circle_stroke").val()); canvas.renderAll(); recordState(); }) $("#circle_stroke_width").bind('input propertychange', function () { if ($("#circle_stroke_width").val() == "") { $("#circle_stroke_width").val("0") } else { $(this).val(parseInt($(this).val())) } canvas.getActiveObject().set("strokeWidth", parseInt($("#circle_stroke_width").val())); canvas.renderAll(); recordState(); }) $("#counter_start").bind('input propertychange', function () { canvas.getActiveObject().set("text", $("#counter_start").val()); let item = canvas.getActiveObject(); let idx = getIndex(item); objs[idx - 1].start = $(this).val(); canvas.renderAll(); recordState(); }) $("#counter_add").bind('input propertychange', function () { let item = canvas.getActiveObject(); let idx = getIndex(item); objs[idx - 1].add = $(this).val(); canvas.renderAll(); recordState(); }) $("#counter_color").bind('input propertychange', function () { canvas.getActiveObject().set("fill", $("#counter_color").val()); canvas.renderAll(); recordState(); }) $("#count_size").bind('input propertychange', function () { let val = 1 if (parseFloat($("#count_size").val())) { val = parseFloat($("#count_size").val()) if (val < 1) { val = 1 } else if (val > dpi) { val = dpi } else if (val % 0.5 !== 0) { val = Math.round(val * 2) / 2 } } $("#count_size").val(val) canvas.getActiveObject().set("fontSize", val * dpi / 72); $("#text_h").val((canvas.getActiveObject().get("height")).toFixed(0)); $("#text_w").val((canvas.getActiveObject().get("width")).toFixed(0)); canvas.renderAll(); recordState(); }) $("#line_color").bind('input propertychange', function () { canvas.getActiveObject().set("stroke", $("#line_color").val()); canvas.renderAll(); recordState(); }) $("#line_dist").bind('input propertychange', function () { if ($("#line_dist").val() == "") { $("#line_dist").val(0) } canvas.getActiveObject().set("strokeDashArray", [parseInt($("#line_dist").val()), parseInt($("#line_dist").val())]) canvas.renderAll(); recordState(); }) // 监听普通文本输入 (占位符) $("#text_text").on('input propertychange', function () { // 1. 获取输入框的值,不要用 trim(),否则无法输入空格 let val = $(this).val(); // 2. 核心修改:只有当删光时,才给 4 个空格作为占位符 if (val === "") { val = " "; // 4个空格,比原来的2个更宽,更好点 } // 3. 更新对象 canvas.getActiveObject().set("text", val); canvas.requestRenderAll(); // 使用 requestRenderAll 性能更好 updateList(); recordState(); }); $("#barcode_val").bind('input propertychange', function () { let item = canvas.getActiveObject(); let idx = getIndex(item); objs[idx - 1].val = $(this).val(); JsBarcode("#barcode", objs[idx - 1].val, { margin: 0, lineColor: objs[idx - 1].color, fontSize: objs[idx - 1].fontSize, font: objs[idx - 1].font }); let barcode = document.getElementById('barcode'); let bar = barcode.toDataURL("image/png"); item.setSrc(bar, function (img) { canvas.renderAll(); recordState(); }); }) $("#barcode_show").click(function () { let item = canvas.getActiveObject(); let idx = getIndex(canvas.getActiveObject()); let val = $("#barcode_size").val() if ($(this).prop("checked")) { objs[idx - 1].show = true; val = 0 } else { objs[idx - 1].show = false; } JsBarcode("#barcode", objs[idx - 1].val, { margin: 0, lineColor: objs[idx - 1].color, fontSize: val * dpi / 72, font: objs[idx - 1].font }); let barcode = document.getElementById('barcode'); let bar = barcode.toDataURL("image/png"); item.setSrc(bar, function (img) { canvas.renderAll(); recordState(); }); }); $("#barcode_size").bind('input propertychange', function () { let item = canvas.getActiveObject(); let idx = getIndex(item); let val = 1 if (parseFloat($(this).val())) { val = parseFloat($(this).val()) if (val < 1) { val = 1 } else if (val > dpi) { val = dpi } else if (val % 0.5 !== 0) { val = Math.round(val * 2) / 2 } } $("#barcode_size").val(val) objs[idx - 1].fontSize = val * dpi / 72; JsBarcode("#barcode", objs[idx - 1].val, { margin: 0, lineColor: objs[idx - 1].color, fontSize: objs[idx - 1].fontSize, font: objs[idx - 1].font }); let barcode = document.getElementById('barcode'); let bar = barcode.toDataURL("image/png"); item.setSrc(bar, function (img) { canvas.renderAll(); recordState(); }); }) $('#count_font_family').on('change', function () { canvas.getActiveObject().set("fontFamily", $(this).find('option:selected').text()) canvas.renderAll() recordState(); }); $('#text_font_family').on('change', function () { canvas.getActiveObject().set("fontFamily", $(this).find('option:selected').text()) canvas.renderAll() recordState(); }); $('#circle_text_font_family').on('change', function () { canvas.getActiveObject().set("fontFamily", $(this).find('option:selected').text()) canvas.renderAll() recordState(); }); $('#language_select').on('change', function () {//语言选择 langua_ge($(this).find('option:selected').val()); s_lan = $(this).find('option:selected').val(); localStorage.setItem("lang", s_lan); }); $('#barcode_font_family').on('change', function () { let item = canvas.getActiveObject(); let idx = getIndex(item); objs[idx - 1].font = $(this).find('option:selected').text(); JsBarcode("#barcode", objs[idx - 1].val, { margin: 0, lineColor: objs[idx - 1].color, fontSize: objs[idx - 1].fontSize, font: objs[idx - 1].font }); let barcode = document.getElementById('barcode'); let bar = barcode.toDataURL("image/png"); item.setSrc(bar, function (img) { canvas.renderAll(); recordState(); }); //recordState(); }); $('#out_text_font_family').on('change', function () { canvas.getActiveObject().set("fontFamily", $(this).find('option:selected').text()) canvas.renderAll() recordState(); }); $(".obj_list").on("click", "div", function () { let idx = objs.length - 1 - $(this).index(); selectObj(idx); }); $("#exceed").click(function () { let idx = getIndex(canvas.getActiveObject()); if ($(this).prop("checked")) { objs[idx - 1].exceed = true; } else { objs[idx - 1].exceed = false; } recordState(); }); $("#autoWrap").click(function () { let idx = getIndex(canvas.getActiveObject()); if ($(this).prop("checked")) { objs[idx - 1].autoWrap = true; } else { objs[idx - 1].autoWrap = false; } recordState(); }); $("#fixSize").click(function () { let idx = getIndex(canvas.getActiveObject()); if ($(this).prop("checked")) { objs[idx - 1].fixSize = true; } else { objs[idx - 1].fixSize = false; } recordState(); }); $("#circle_text_center").click(function () { let idx = getIndex(canvas.getActiveObject()); if ($(this).prop("checked")) { objs[idx - 1].circleCenter = 1; } else { objs[idx - 1].circleCenter = 0; } recordState(); }); // =========================================================== $("#text_italics").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已选 canvas.getActiveObject().set("fontStyle", "normal") $(this).removeClass("ui-radio-acitve") } else { //未选 canvas.getActiveObject().set("fontStyle", "italic") $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#text_bold").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已选,恢复正常 canvas.getActiveObject().set("fontWeight", "normal") $(this).removeClass("ui-radio-acitve") } else { //未选 canvas.getActiveObject().set("fontWeight", "bold") $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#text_underline").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已选 canvas.getActiveObject().set("underline", false) $(this).removeClass("ui-radio-acitve") } else { //未选 canvas.getActiveObject().set("underline", true) $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#text_linethrough").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已选 canvas.getActiveObject().set("linethrough", false) $(this).removeClass("ui-radio-acitve") } else { //未选 canvas.getActiveObject().set("linethrough", true) $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#circle_text_italics").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已选 canvas.getActiveObject().set("fontStyle", "normal") $(this).removeClass("ui-radio-acitve") } else { //未选 canvas.getActiveObject().set("fontStyle", "italic") $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#circle_text_bold").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已选,恢复正常 canvas.getActiveObject().set("fontWeight", "normal") $(this).removeClass("ui-radio-acitve") } else { //未选 canvas.getActiveObject().set("fontWeight", "bold") $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $('#out_left_alignment').click(function () { $('#out_left_alignment').parent().removeClass('tool1') $('#out_right_alignment').parent().removeClass('tool1') $('#out_center_alignment').parent().removeClass('tool1') setTimeout(() => { $('#out_left_alignment').parent().addClass('tool1') }); canvas.getActiveObject().set('textAlign', 'left') let idx = getIndex(canvas.getActiveObject()) objs[idx - 1].align = 'left' recordState() canvas.renderAll() }) $('#out_right_alignment').click(function () { $('#out_left_alignment').parent().removeClass('tool1') $('#out_right_alignment').parent().removeClass('tool1') $('#out_center_alignment').parent().removeClass('tool1') setTimeout(() => { $('#out_right_alignment').parent().addClass('tool1') }); canvas.getActiveObject().set('textAlign', 'right') let idx = getIndex(canvas.getActiveObject()) objs[idx - 1].align = 'right' recordState() canvas.renderAll() }) $('#out_center_alignment').click(function () { $('#out_left_alignment').parent().removeClass('tool1') $('#out_right_alignment').parent().removeClass('tool1') $('#out_center_alignment').parent().removeClass('tool1') setTimeout(() => { $('#out_center_alignment').parent().addClass('tool1') }); canvas.getActiveObject().set('textAlign', 'center') let idx = getIndex(canvas.getActiveObject()) objs[idx - 1].align = 'center' recordState() canvas.renderAll() }) $("#out_text_italics").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已选 canvas.getActiveObject().set("fontStyle", "normal") $(this).removeClass("ui-radio-acitve") } else { //未选 canvas.getActiveObject().set("fontStyle", "italic") $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#out_text_bold").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已选,恢复正常 canvas.getActiveObject().set("fontWeight", "normal") $(this).removeClass("ui-radio-acitve") } else { //未选 canvas.getActiveObject().set("fontWeight", "bold") $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#out_text_underline").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已选 canvas.getActiveObject().set("underline", false) $(this).removeClass("ui-radio-acitve") } else { //未选 canvas.getActiveObject().set("underline", true) $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); $("#out_text_linethrough").click(function () { if ($(this).hasClass("ui-radio-acitve")) { //已选 canvas.getActiveObject().set("linethrough", false) $(this).removeClass("ui-radio-acitve") } else { //未选 canvas.getActiveObject().set("linethrough", true) $(this).addClass("ui-radio-acitve") } recordState(); canvas.renderAll(); }); // =========================================================== $("#delete").click(function () { let actObjs = canvas.getActiveObjects(); let allObjs = canvas.getObjects(); let flag = 0; for (let item of actObjs) { if (item != allObjs[0]) { let i = getIndex(item);//0是背景,所以从1开始,但objs不包含背景图片,故要-1 objs.splice(i - 1, 1); canvas.remove(item); flag = 1; } } updateList(); canvas.discardActiveObject(); if (flag == 1) { recordState(); canvas.renderAll(); } }); $("#up_obj").click(function () {//上移,放到前面 数组中在后面 let idx = getIndex(canvas.getActiveObject()); if (idx + 1 != canvas.getObjects().length) { canvas.bringForward(canvas.getActiveObject()); canvas.renderAll(); let temp = objs[idx - 1]; objs[idx - 1] = objs[idx]; objs[idx] = temp; //console.log(objs); recordState(); updateList(); selectObj(idx); } }); $("#down_obj").click(function () {//下移,放到后面 数组中在前面 let idx = getIndex(canvas.getActiveObject()); if (idx != 1) { canvas.sendBackwards(canvas.getActiveObject()); canvas.renderAll(); //[objs[idx-2],objs[idx-1]] = [objs[idx-1],objs[idx-2]]; let temp = objs[idx - 1]; objs[idx - 1] = objs[idx - 2]; objs[idx - 2] = temp; recordState(); updateList(); selectObj(idx - 2); } }); $("#set_bg").click(function () {//设置为背景 let obj = canvas.getActiveObject(); console.log(obj, obj.get("selectable")) let idx = getIndex(obj); const scaleX = 2787 / obj.width const scaleY = 2787 / obj.height obj.set({ scaleX: scaleX, scaleY: scaleY, left: ($('#canvas1').width() - 2787) / 2, top: ($('#canvas1').height() - 2787) / 2, }); $('#text_w').val(2787) $('#text_h').val(2787) $('#text_x').val(0) $('#text_y').val(0) if (obj.get("selectable")) { obj.set("selectable", false); $("#lock_img").attr("src", "public/images/lock20.png") } canvas.sendToBack(obj); canvas.bringForward(obj); canvas.renderAll(); let objItem = objs.splice(idx - 1, 1)[0] objs.unshift(objItem) recordState(); updateList(); selectObj(0); }); $("#lock").click(function () { canvas.getActiveObject().set("selectable", !canvas.getActiveObject().get("selectable")); if (canvas.getActiveObject().get("selectable")) { $("#lock_img").attr("src", "public/images/unlock20.png")//已经上锁,需要解锁 } else { $("#lock_img").attr("src", "public/images/lock20.png")//没上锁,可以上锁 } recordState(); canvas.renderAll(); }); $("#text_back_transparent").click(function () { canvas.getActiveObject().set("textBackgroundColor", ""); $("#text_back_color").val("#ffffff"); canvas.renderAll(); }); $("#circle_text_back_transparent").click(function () { canvas.getActiveObject().set("textBackgroundColor", ""); $("#circle_text_back_color").val("#ffffff"); canvas.renderAll(); }); $("#out_text_back_transparent").click(function () { canvas.getActiveObject().set("textBackgroundColor", ""); $("#out_text_back_color").val("#ffffff"); canvas.renderAll(); }); $("#rect_transparent").click(function () { canvas.getActiveObject().set("fill", ""); $("#rect_color").val("#ffffff"); canvas.renderAll(); }); $("#rect_stroke_transparent").click(function () { canvas.getActiveObject().set("stroke", ""); $("#rect_stroke").val("#ffffff"); canvas.renderAll(); }); $("#circle_transparent").click(function () { canvas.getActiveObject().set("fill", ""); $("#circle_color").val("#ffffff"); canvas.renderAll(); }); $("#circle_stroke_transparent").click(function () { canvas.getActiveObject().set("stroke", ""); $("#circle_stroke").val("#ffffff"); canvas.renderAll(); }); // =========================================================== $("#about").click(async function () { // 1. 先异步获取版本号 let version = "0.0.0"; // 默认值,防止获取失败 try { if (window.sysAPI && window.sysAPI.getAppVersion) { const v = await window.sysAPI.getAppVersion(); version = "v" + v; // 拼接一个 v,变成 v2.3.017 } } catch (e) { console.error("获取版本号失败", e); } // 2. 获取成功后再弹出窗口 layer.open({ type: 1 , title: language_str("about") , area: '450px;' , id: 'LAY_layuipro' , moveType: 1 , content: '
' + '
' + '
Soon Design
' + // 【修改点】这里使用了刚才获取到的 version 变量 '
' + language_str("vers") + ' ' + version + '
' + '
' + language_str("copyright") + '
' + '
' }); }) $("#help").click(() => { ipcRenderer.send('open-help-file'); }); // =========================================================== $('#display').on('click', function () { // 类型改变 fabric.Image.fromURL('./public/images/front_bg' + bg_version + '_1.png', function (i1) { i1.left = background_image.left; i1.top = background_image.top; let img1 = i1; fabric.Image.fromURL('./public/images/back_bg_1.png', function (i2) { i2.left = background_image.left; i2.top = background_image.top; let img2 = i2; fabric.Image.fromURL('./public/images/op_1.png', function (i3) { i2.left = background_image.left; i2.top = background_image.top; let img3 = i3; display_func(img1, img2, img3); }) }) }) }); $("#output").click(function () { output(); // 调用output函数(在output.js中定义) });