var _keyctrl = false, _keyc = false, _textEdit = false, _inputEdit = false $('input').focus(function () { _inputEdit = true }) $('input').blur(function () { _inputEdit = false }) $('textarea').focus(function () { _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 - 清空 if (isModifierKey && event.shiftKey && event.keyCode == 46) { event.preventDefault(); $('#clean').click(); return; } // CTRL/CMD+DEL - 删除 if (isModifierKey && !event.shiftKey && event.keyCode == 46) { 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 } if (canvas.getActiveObject()) { 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 } if (canvas.getActiveObject()) { 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 } if (canvas.getActiveObject()) { 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 } if (canvas.getActiveObject()) { 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, canvas) //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 已在 design2.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) => { }) } }) $('#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 + '_2.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() 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() $("#set_bg").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() $("#set_bg").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() let idx = getIndex(canvas.getActiveObject()) const scaleX = 1012 / obj.width const scaleY = 648 / obj.height obj.set({ scaleX: scaleX, scaleY: scaleY, left: ($('#canvas1').width() - 1012) / 2, top: ($('#canvas1').height() - 648) / 2 }) $('#text_w').val(1012) $('#text_h').val(648) $('#text_x').val(0) $('#text_y').val(0) canvas.sendToBack(canvas.getActiveObject()) canvas.bringForward(canvas.getActiveObject()) canvas.renderAll() let objItem = objs.splice(idx - 1, 1)[0] objs.unshift(objItem) recordState() updateList() selectObj(0) }) $('#previous').click(function () { //撤销一次操作 if (step.val == 0) { return } step.val-- canvas.loadFromJSON(recordJson[step.val]) if ($('#front_side').hasClass('ui-button-active')) { //objs = JSON.parse(recordObjs[step.val]); objs1 = JSON.parse(recordObjs[step.val]) objs = objs1 } else if ($('#back_side').hasClass('ui-button-active')) { //objs = JSON.parse(recordObjs[step.val]); objs2 = JSON.parse(recordObjs[step.val]) objs = objs2 } background_image = canvas.getObjects()[0] canvas.renderAll() //recordState(); updateList() selectObj(-1) $('#base_control').hide() $('#line_control').hide() $('#pic_control').hide() $("#set_bg").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() }) $('#next').click(function () { //撤销一次撤销操作 if (step.val >= recordObjs.length - 1) { return } ++step.val canvas.loadFromJSON(recordJson[step.val]) if ($('#front_side').hasClass('ui-button-active')) { //objs = JSON.parse(recordObjs[step.val]); objs1 = JSON.parse(recordObjs[step.val]) objs = objs1 } else if ($('#back_side').hasClass('ui-button-active')) { //objs = JSON.parse(recordObjs[step.val]); objs2 = JSON.parse(recordObjs[step.val]) objs = objs2 } background_image = canvas.getObjects()[0] canvas.renderAll() selectObj(-1) $('#base_control').hide() $('#line_control').hide() $('#pic_control').hide() $("#set_bg").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() updateList() }) $('#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() }) // 清理不需要的 src 字段(保留自定义图片的 src) // cleanupSrcFields 函数已在 output.js 中定义 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 字段(调用 output.js 中的 cleanupSrcFields) cleanupSrcFields(j.objects, objs1); cleanupSrcFields(b.objects, objs2); let o = { f: j, b: 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 = 2 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) => { }) } // save 函数已在 output.js 中定义 // 复制 $("#copy").click(function () { copySelection(); }) // 粘贴 $("#paste").click(function () { pasteFromClipboard(); }) // 保存按钮事件绑定 $('#save').click(function () { output(); // 调用 output 函数 return; }) function getDate() { let date = new Date() return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() } function getAbsoluteXY(_obj) { let coord = _obj.get('lineCoords') //let xs = [], ys = []; return [_obj.get('left'), _obj.get('top')] } // fullPath, saveHistory 和 open 函数已在 output.js 中定义 $('#open').click(function () { if (step.val == 0) { OpenDialog(); return; } layer.confirm( '' + language_str('whetherSave') + '', function (index) { 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 == 1) { 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\":1012,\"height\":648,\"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\":1012,\"height\":648,\"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() } $('#new').click(function () { if (step.val == 0) { ipcRenderer.send('open-first-page'); return; } layer.confirm( '' + language_str('whetherSave') + '', function (index) { output(() => ipcRenderer.send('open-first-page')); layer.close(index); }, function (index) { ipcRenderer.send('open-first-page'); } ) }) function chagneTitle() { } function addBackground() { // 类型改变 fabric.Image.fromURL('./public/images/bg_front_2.png', function (image) { //image.set("scaleX",$("#canvas-div").width() / 1200 < 1 ? $("#canvas-div").width() / 1200 : 1) image.left = ($('#canvas1').width() - image.width * image.get('scaleX')) / 2 image.top = ($('#canvas1').height() - image.height * image.get('scaleY')) / 2 image.selectable = false image.hoverable = false image.hoverCursor = 'default' image.setSrc(image.toDataURL(), function (image) { background_image1 = image background_image = background_image1 canvas.add(image) canvas.renderAll() //pre_objs1.push(JSON.stringify(objs1)); recordObjs1.push(JSON.stringify(objs1)) recordJson1.push(canvas1.toJSON(['selectable', 'hoverable', 'hoverCursor', 'text', 'fontStyle', 'fontWeight', 'underline'])) }) // 类型改变 fabric.Image.fromURL('./public/images/bg_back_2.png', function (image) { image.left = ($('#canvas2').width() - image.width) / 2 image.top = ($('#canvas2').height() - image.height) / 2 image.selectable = false image.hoverable = false image.hoverCursor = 'default' image.setSrc(image.toDataURL(), function (image) { background_image2 = image canvas2.add(image) canvas2.renderAll() //pre_objs2.push(JSON.stringify(objs2)); recordObjs2.push(JSON.stringify(objs2)) recordJson2.push(canvas2.toJSON(['selectable', 'hoverable', 'hoverCursor', 'text', 'fontStyle', 'fontWeight', 'underline'])) let file = GetFile().get('file') if (file && file != 'empty') { open(file) } }) }) is_bgi_add = true }) } function selectObject(target, index) { updateControls() $('#base_control').show() //$("#text_x").val((target.left - background_image.left).toFixed(1)); } function updateControls() { $('#text_r').val(canvas.getActiveObject().get('angle').toFixed(0)) $('#text_x').val((canvas.getActiveObject().get('left') - background_image.left).toFixed(0)) $('#text_y').val((canvas.getActiveObject().get('top') - background_image.top).toFixed(0)) $('#text_h').val((canvas.getActiveObject().get('scaleY') * canvas.getActiveObject().get('height')).toFixed(0)) $('#text_w').val((canvas.getActiveObject().get('scaleX') * canvas.getActiveObject().get('width')).toFixed(0)) if (canvas.getActiveObject().get('selectable')) { $('#lock_img').attr('src', 'public/images/unlock20.png') //已经上锁,需要解锁 } else { $('#lock_img').attr('src', 'public/images/lock20.png') //没上锁,可以上锁 } } function checkName(name) { //检查字段名是否重复了 for (let item of objs1) { if (item.name == name) { return false } } for (let item of objs2) { if (item.name == name) { return false } } return true } function resName(pre_name) { //返回的是不重复的字段名 let num = objs1.length + objs2.length - 1 do { num++ } while (!checkName(pre_name + num)) //重复了就再加1 return pre_name + num } function addPic(pointer) { pre_add_image.left = pointer.x pre_add_image.top = pointer.y canvas.add(pre_add_image) objs.push({ type: 1, black: false }) canvas.renderAll() updateList() recordState() //OpenDialog(); } function selectPic(target, index) { //透明度 $('#pic_control').show() $("#set_bg").show(); pic_op.setValue(100 - canvas.getActiveObject().get('opacity') * 100) let idx = getIndex(canvas.getActiveObject()) // $("#pic_black").prop("checked", objs[idx-1].black ? 'checked' : ''); $('#out_pic_control').hide() $('#text_control').hide() $("#circle_text_control").hide(); $('#out_text_control').hide() $('#rect_control').hide() $('#circle_control').hide() $('#line_control').hide() $('#counter_control').hide() $('#qrcode_Controll').hide() $('#barcode_controll').hide() } function addOutPic(pointer) { fabric.Image.fromURL('./public/images/outpic_extra.png', function (image) { let width = canvas.getWidth() let height = canvas.getHeight() image.left = pointer.x image.top = pointer.y image.opacity = 1 //image.on("selected",function(){//test well image.setSrc(image.toDataURL(), function (image) { canvas.add(image) objs.push({ type: 2, name: resName('OUT_PIC_'), black: false }) canvas.renderAll() updateList() recordState() }) }) } function selectOutPic(target, index) { //字段名 $('#out_pic_control').show() out_pic_op.setValue(100 - canvas.getActiveObject().get('opacity') * 100) let idx = getIndex(canvas.getActiveObject()) $('#out_pic_field_name').val(objs[idx - 1].name) // $("#out_pic_black").prop("checked", objs[idx-1].black ? 'checked' : ''); $('#pic_control').hide() $("#set_bg").hide(); $('#text_control').hide() $("#circle_text_control").hide(); $('#out_text_control').hide() $('#rect_control').hide() $('#circle_control').hide() $('#line_control').hide() $('#counter_control').hide() $('#qrcode_Controll').hide() $('#barcode_controll').hide() } function addText(pointer) { let text = new fabric.IText('TEXT', { //源:文本 left: pointer.x, top: pointer.y, fill: '#000000', textBackgroundColor: '', fontStyle: 'normal', fontWeight: 'normal', underline: false, linethrough: false, fontFamily: 'Arial' }) text.setControlVisible('ml', false) text.setControlVisible('mt', false) text.setControlVisible('mr', false) text.setControlVisible('mb', false) canvas.add(text) objs.push({ type: 3, black: false }) canvas.renderAll() updateList() recordState() } function selectText() { //console.log(canvas.getActiveObject().get("fontFamily")); $('#text_control').show() $('#text_color').val(canvas.getActiveObject().get('fill')) $('#text_back_color').val(canvas.getActiveObject().get('textBackgroundColor') == '' ? '#ffffff' : canvas.getActiveObject().get('textBackgroundColor')) let val = parseFloat(canvas.getActiveObject().get("fontSize")) * 72 / dpi if (val % 0.5 !== 0) val = Math.round(val * 2) / 2 $("#text_size").val(val); $('#text_text').val(canvas.getActiveObject().get('text')) $('#text_font_family').val(canvas.getActiveObject().get('fontFamily')) if (canvas.getActiveObject().get('underline') == true) { $('#text_underline').addClass('ui-radio-acitve') } else { $('#text_underline').removeClass('ui-radio-acitve') } if (canvas.getActiveObject().get('fontWeight') == 'bold') { $('#text_bold').addClass('ui-radio-acitve') } else { $('#text_bold').removeClass('ui-radio-acitve') } if (canvas.getActiveObject().get('fontStyle') == 'italic') { $('#text_italics').addClass('ui-radio-acitve') } else { $('#text_italics').removeClass('ui-radio-acitve') } if (canvas.getActiveObject().get('linethrough') == true) { $('#text_linethrough').addClass('ui-radio-acitve') } else { $('#text_linethrough').removeClass('ui-radio-acitve') } $('#pic_control').hide() $("#set_bg").hide(); $('#out_pic_control').hide() $("#circle_text_control").hide(); $('#out_text_control').hide() $('#rect_control').hide() $('#circle_control').hide() $('#line_control').hide() $('#counter_control').hide() $('#qrcode_Controll').hide() $('#barcode_controll').hide() } function getDisdance(x1, y1, x2, y2) { var dx = Math.abs(x2 - x1); // 计算x轴上的距离差,并取绝对值 var dy = Math.abs(y2 - y1); // 计算y轴上的距离差,并取绝对值 var distance = Math.sqrt(dx * dx + dy * dy); // 应用勾股定理计算距离 return distance; } function getDeg(pointer) { // 计算点击位置与画布中心的坐标差 var centerX = canvas.width / 2; var centerY = canvas.height / 2; var mouseX = pointer.x; var mouseY = pointer.y; var dx = mouseX - centerX; var dy = mouseY - centerY; // 计算旋转角度(弧度) var angleRad = Math.atan2(dy, dx); // 将角度转换为度数 var angleDeg = angleRad * (180 / Math.PI); if (angleDeg < 0) { angleDeg += 360; } angleDeg += 90 return angleDeg } function addCircleText(pointer) { let distance = getDisdance(pointer.x, pointer.y, canvas.width / 2, canvas.height / 2) let angleDeg = getDeg(pointer) let text = new fabric.CurvedText('Circle TEXT', {//源:圆形文本 left: pointer.x, top: pointer.y, fill: "#000000", textBackgroundColor: "", fontStyle: "normal", fontWeight: "normal", diameter: distance * 2, fontSize: 30, underline: false, linethrough: false, lockScalingX: true, lockScalingY: true, fontFamily: 'Arial', originX: 'center', originY: 'center', angle: angleDeg, flipped: pointer.y > canvas.height / 2 ? true : false }); // distance = getDisdance(pointer.x+text.width/2, pointer.y, canvas.width/2,canvas.height/2) text.setControlVisible("ml", false); text.setControlVisible("mt", false); text.setControlVisible("mr", false); text.setControlVisible("mb", false); canvas.add(text); objs.push({ type: 11, black: false, circleCenter: 0 }); canvas.renderAll(); updateList(); recordState(); } function selectCircleText() { let idx = getIndex(canvas.getActiveObject()); $("#circle_text_control").show(); $("#circle_text_color").val(canvas.getActiveObject().get("fill")); $("#circle_text_back_color").val(canvas.getActiveObject().get("textBackgroundColor") == "" ? '#ffffff' : canvas.getActiveObject().get("textBackgroundColor")); if (typeof circle_text_size_updating !== 'undefined') { circle_text_size_updating = true; } circle_text_size.setValue(canvas.getActiveObject().get("fontSize")); if (typeof circle_text_size_updating !== 'undefined') { circle_text_size_updating = false; } circle_text_diameter.setValue(canvas.getActiveObject().get("diameter")); $("#circle_text_center").prop("checked", objs[idx - 1].circleCenter ? 'checked' : ''); $("#circle_text_text").val(canvas.getActiveObject().get("text")); $("#circle_text_font_family").val(canvas.getActiveObject().get("fontFamily")); if (canvas.getActiveObject().get("underline") == true) { $("#circle_text_underline").addClass("ui-radio-acitve") } else { $("#circle_text_underline").removeClass("ui-radio-acitve") } if (canvas.getActiveObject().get("fontWeight") == "bold") { $("#circle_text_bold").addClass("ui-radio-acitve") } else { $("#circle_text_bold").removeClass("ui-radio-acitve") } if (canvas.getActiveObject().get("fontStyle") == "italic") { $("#circle_text_italics").addClass("ui-radio-acitve") } else { $("#circle_text_italics").removeClass("ui-radio-acitve") } if (canvas.getActiveObject().get("linethrough") == true) { $("#circle_text_linethrough").addClass("ui-radio-acitve") } else { $("#circle_text_linethrough").removeClass("ui-radio-acitve") } $("#pic_control").hide(); $("#set_bg").hide(); $("#rotate").hide(); $("#out_pic_control").hide(); $("#text_control").hide(); $("#out_text_control").hide(); $("#rect_control").hide(); $("#circle_control").hide(); $("#line_control").hide(); $("#counter_control").hide(); $("#qrcode_Controll").hide(); $("#barcode_controll").hide(); } function addOutText(pointer) { //MERGE_TEXT_1 let text = new fabric.Text('MERGE TEXT', { //源:合成文本 left: pointer.x, top: pointer.y, fill: '#000000', fontStyle: 'normal', fontWeight: 'normal', textBackgroundColor: '', underline: false, linethrough: false, fontFamily: 'Arial', textAlign: 'center' }) //text.on({ text.setControlVisible('ml', false) text.setControlVisible('mt', false) text.setControlVisible('mr', false) text.setControlVisible('mb', false) canvas.add(text) objs.push({ type: 4, name: resName('OUT_TEXT_'), exceed: false, autoWrap: false, fixSize: false, black: false, align: 'center' }) canvas.renderAll() updateList() recordState() } function selectOutText() { //color const align = canvas.getActiveObject().get('textAlign') if (align === 'left') { $('#out_left_alignment').parent().addClass('tool1') } else if (align === 'right') { $('#out_right_alignment').parent().addClass('tool1') } else { $('#out_center_alignment').parent().addClass('tool1') } $('#out_text_control').show() $('#out_text_color').val(canvas.getActiveObject().get('fill')) $('#out_text_text').val(canvas.getActiveObject().get('text')) let val = parseFloat(canvas.getActiveObject().get("fontSize")) * 72 / dpi if (val % 0.5 !== 0) val = Math.round(val * 2) / 2 $("#out_text_size").val(val); $('#out_text_back_color').val(canvas.getActiveObject().get('textBackgroundColor') == '' ? '#ffffff' : canvas.getActiveObject().get('textBackgroundColor')) let idx = getIndex(canvas.getActiveObject()) $('#out_text_field_name').val(objs[idx - 1].name) $('#out_text_font_family').val(canvas.getActiveObject().get('fontFamily')) $('#exceed').prop('checked', objs[idx - 1].exceed ? 'checked' : '') $('#autoWrap').prop('checked', objs[idx - 1].autoWrap ? 'checked' : '') $('#fixSize').prop('checked', objs[idx - 1].fixSize ? 'checked' : '') if (canvas.getActiveObject().get('underline') == true) { $('#out_text_underline').addClass('ui-radio-acitve') } else { $('#out_text_underline').removeClass('ui-radio-acitve') } if (canvas.getActiveObject().get('fontWeight') == 'bold') { $('#out_text_bold').addClass('ui-radio-acitve') } else { $('#out_text_bold').removeClass('ui-radio-acitve') } if (canvas.getActiveObject().get('fontStyle') == 'italic') { $('#out_text_italics').addClass('ui-radio-acitve') } else { $('#out_text_italics').removeClass('ui-radio-acitve') } if (canvas.getActiveObject().get('linethrough') == true) { $('#out_text_linethrough').addClass('ui-radio-acitve') } else { $('#out_text_linethrough').removeClass('ui-radio-acitve') } $('#pic_control').hide() $("#set_bg").hide(); $('#out_pic_control').hide() $('#text_control').hide() $("#circle_text_control").hide(); $('#rect_control').hide() $('#circle_control').hide() $('#line_control').hide() $('#counter_control').hide() $('#qrcode_Controll').hide() $('#barcode_controll').hide() } function addRect(pointer) { let rect = new fabric.Rect({ left: pointer.x, top: pointer.y, fill: '', stroke: "#ff0000", strokeWidth: 3, width: 100, height: 100 }) canvas.add(rect) objs.push({ type: 5, black: false }) canvas.renderAll() updateList() recordState() } function selectRect() { //color $('#rect_control').show() $('#rect_color').val(canvas.getActiveObject().get('fill') == '' ? '#ffffff' : canvas.getActiveObject().get('fill')) $('#rect_stroke').val(canvas.getActiveObject().get('stroke') == '' ? '#ffffff' : canvas.getActiveObject().get('stroke')) $('#rect_stroke_width').val(canvas.getActiveObject().get('strokeWidth')) $('#rect_radius').val(canvas.getActiveObject().get('rx')) rect_op.setValue(100 - canvas.getActiveObject().get('opacity') * 100) let a = canvas.getActiveObject().getCoords() $('#pic_control').hide() $("#set_bg").hide(); $('#out_pic_control').hide() $('#text_control').hide() $("#circle_text_control").hide(); $('#out_text_control').hide() $('#circle_control').hide() $('#line_control').hide() $('#counter_control').hide() $('#qrcode_Controll').hide() $('#barcode_controll').hide() } function addCircle(pointer) { let circle = new fabric.Circle({ left: pointer.x, top: pointer.y, fill: '', stroke: '#ff0000', strokeWidth: 3, radius: 100, strokeUniform: true }) canvas.add(circle) objs.push({ type: 6, black: false }) canvas.renderAll() updateList() recordState() } function selectCircle() { //border-color $('#circle_control').show() $('#circle_color').val(canvas.getActiveObject().get('fill') == '' ? '#ffffff' : canvas.getActiveObject().get('fill')) $('#circle_stroke').val(canvas.getActiveObject().get('stroke') == '' ? '#ffffff' : canvas.getActiveObject().get('stroke')) $('#circle_stroke_width').val(canvas.getActiveObject().get('strokeWidth')) circle_op.setValue(100 - canvas.getActiveObject().get('opacity') * 100) $('#pic_control').hide() $("#set_bg").hide(); $('#out_pic_control').hide() $('#text_control').hide() $("#circle_text_control").hide(); $('#out_text_control').hide() $('#rect_control').hide() $('#line_control').hide() $('#counter_control').hide() $('#qrcode_Controll').hide() $('#barcode_controll').hide() } function addLine(pointer) { let line = new fabric.Line([50, 100, 200, 100], { left: pointer.x, top: pointer.y, stroke: '#ff0000', strokeWidth: 3, strokeDashArray: [0, 0], }) line.setControlVisible('tl', false) line.setControlVisible('tr', false) line.setControlVisible('br', false) line.setControlVisible('bl', false) line.setControlVisible('mt', false) line.setControlVisible('mb', false) canvas.add(line) objs.push({ type: 7, black: false }) canvas.renderAll() updateList() recordState() } function selectLine() { //color $('#line_control').show() let idx = getIndex(canvas.getActiveObject()) $('#line_color').val(canvas.getActiveObject().get('stroke')) $('#line_dist').val(canvas.getActiveObject().get('strokeDashArray')[0]) $('#text_h').val(canvas.getActiveObject().get('strokeWidth')) $('#pic_control').hide() $("#set_bg").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() } function addQrCode(pointer) { let qr = jrQrcode.getQrBase64('https://www.cardsoon.com', { padding: 0 }) fabric.Image.fromURL(qr, function (image) { image.left = pointer.x image.top = pointer.y canvas.add(image) objs.push({ type: 8, name: resName('QR_CODE_'), color: '#000000', val: 'http://www.cardsoon.com', black: false }) canvas.renderAll() updateList() recordState() }) } function selectQrCode() { //字段名 $('#qrcode_Controll').show() let idx = getIndex(canvas.getActiveObject()) $('#qrcode_field_name').val(objs[idx - 1].name) $('#qrcode_color').val(objs[idx - 1].color) $('#qrcode_val').val(objs[idx - 1].val) $('#line_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() $('#barcode_controll').hide() } function addBarCode(pointer) { JsBarcode('#barcode', '123456789', { margin: 0, lineColor: '#000000', fontSize: 18, font: 'Arial' }) let barcode = document.getElementById('barcode') let bar = barcode.toDataURL('image/png') fabric.Image.fromURL(bar, function (image) { image.left = pointer.x image.top = pointer.y canvas.add(image) objs.push({ type: 9, name: resName('BAR_CODE_'), val: '123456789', color: '#000000', fontSize: 18, font: 'Arial', show: false, black: false }) //show是取消文字显示 canvas.renderAll() updateList() recordState() }) } function selectBarCode() { //字段名 $('#barcode_controll').show() let idx = getIndex(canvas.getActiveObject()) $('#barcode_field_name').val(objs[idx - 1].name) $('#barcode_font_family').val(objs[idx - 1].font) let val = parseFloat(objs[idx - 1].fontSize) * 72 / dpi if (val % 0.5 !== 0) val = Math.round(val * 2) / 2 $("#barcode_size").val(val); $('#barcode_val').val(objs[idx - 1].val) $('#barcode_show').prop('checked', objs[idx - 1].show ? 'checked' : '') $('#line_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() } function addCounter(pointer) { let text = new fabric.Text('0', { left: pointer.x, top: pointer.y, fill: '#000000' }) canvas.add(text) objs.push({ type: 10, name: resName('COUNTER_'), start: 0, add: 1, black: false }) canvas.renderAll() updateList() recordState() } function selectCounter() { //起始 $('#counter_control').show() let idx = getIndex(canvas.getActiveObject()) $('#counter_start').val(objs[idx - 1].start) $('#counter_add').val(objs[idx - 1].add) $('#counter_color').val(canvas.getActiveObject().get('fill')) $('#count_font_family').val(canvas.getActiveObject().get('fontFamily')) let val = parseFloat(canvas.getActiveObject().get("fontSize")) * 72 / dpi if (val % 0.5 !== 0) val = Math.round(val * 2) / 2 $("#count_size").val(val); $('#line_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() $('#qrcode_Controll').hide() $('#barcode_controll').hide() } function getIndex(target, _canvas = null) { let temp_objs if (_canvas == null) { temp_objs = canvas.getObjects() } else { temp_objs = _canvas.getObjects() } let i = 0 for (let res of temp_objs) { if (target == res) { return i } i++ } return 0 } function getType(target) { let temp_objs = canvas.getObjects() let i = 0 for (let res of temp_objs) { if (target == res) { return objs[i].type } i++ } } function updateList() { let str = '' let i = 0 for (let item of objs) { switch (item.type) { case 1 /* 2022-06-14修改*/: str = '