2093 lines
112 KiB
JavaScript
2093 lines
112 KiB
JavaScript
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('<font style="color:black">' + language_str("whetherSave") + '</font>', 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('<font style="color:black">' + language_str("whetherSave") + '</font>', 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: '<div style="padding-top:20px;padding-bottom:30px;background-color: #32363A; color: #fff; font-weight: 300;text-align:center;">' +
|
|
'<div style="width: 120px;margin: 0 auto;"><img style="width: 120px;" src="./public/images/IconA.png"></div>' +
|
|
'<div style="font-size:24px;">Soon Design</div>' +
|
|
// 【修改点】这里使用了刚才获取到的 version 变量
|
|
'<div style="font-size:14px;">' + language_str("vers") + ' ' + version + '</div>' +
|
|
'<div style="font-size:14px;">' + language_str("copyright") + '</div>' +
|
|
'</div>'
|
|
});
|
|
})
|
|
$("#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中定义)
|
|
});
|