-

+
-

+
@@ -1153,312 +1436,10 @@
`,
btn: [language_str('output'), '打印'], //'导出'
btn1: function (index, layero) {
- let op = { frontColorPic: '', backColorPic: '', frontBlackPic: '', backBlackPic: '', frontData: [], backData: [], flag: 1, frontDisplayPic: url3, backDisplayPic: url4 }
- if ((objs1.length != 0) & (objs2.length == 0)) {
- op.flag = 2
- } else if ((objs1.length == 0) & (objs2.length != 0)) {
- op.flag = 3
- }
- op.frontColorPic = desEncrypt(url1)
- op.backColorPic = desEncrypt(url2)
- //op.frontBlPic = url5;
- //op.backBlPic = url6;
- op.frontBlackPic = desEncrypt(url5)
- op.backBlackPic = desEncrypt(url6)
- for (let item of _objs1) {
- let idx = getIndex(item, canvas1)
- if (idx == 0) continue //background-image
- let type = objs1[idx - 1].type
- if (type == 2) {
- //out_pic
- let xy = getAbsoluteXY(item)
- op.frontData.push({
- type: 1,
- name: objs1[idx - 1].name,
- FontColor: objs1[idx - 1].black ? '#000000' : '@',
- transparency: item.get('opacity'),
- x: parseInt((xy[0] - background_image1.left).toFixed(0)),
- y: parseInt((xy[1] - background_image1.top).toFixed(0)),
- h: parseInt((item.get('scaleY') * item.get('height')).toFixed(0)),
- w: parseInt((item.get('scaleX') * item.get('width')).toFixed(0)),
- rotate: parseInt(item.get('angle').toFixed(0))
- })
- } else if (type == 3) {
- //text
- if (item.get('fill') == '#000000') {
- //纯黑
- /*
- op.frontData.push({
- "type" : 2,
- "Text" : item.get("text"),
- "FontFamily" : item.get("fontFamily"),
- "FontSize" : parseInt(item.get("fontSize")),
- "FontColor" : "#000000",
- "FontBackgroudColor" : item.get("textBackgroundColor"),
- "Bold" : item.get("fontWeight") == "bold",
- "Underline" : item.get("underline"),
- "Italic" : item.get("fontStyle") == "italic",
- "Strikeout" : item.get("linethrough"),
- "x" : parseInt((item.get("left") - background_image1.left).toFixed(0)),
- "y" : parseInt((item.get("top") - background_image1.top).toFixed(0)),
- "h" : parseInt((item.get("scaleY") * item.get("height")).toFixed(0)),
- "w" : parseInt((item.get("scaleX") * item.get("width")).toFixed(0)),
- "rotate" : parseInt(item.get("angle").toFixed(0))
- });*/
- }
- } else if (type == 4) {
- //out_text
- let xy = getAbsoluteXY(item)
- console.log('out-text: ', item.get('text'), xy)
- console.log(background_image1.left, background_image1.top)
- op.frontData.push({
- type: 3,
- name: objs1[idx - 1].name,
- FontFamily: item.get('fontFamily'),
- DefaultText: item.get('text'),
- FontBackgroudColor: item.get('textBackgroundColor'),
- FontSize: parseInt(item.get('fontSize')),
- FontColor: item.get('fill'),
- Exceed: objs1[idx - 1].exceed,
- AutoWrap: objs1[idx - 1].autoWrap,
- FixSize: objs1[idx - 1].fixSize,
- Bold: item.get('fontWeight') == 'bold',
- Underline: item.get('underline'),
- Italic: item.get('fontStyle') == 'italic',
- Strikeout: item.get('linethrough'),
- x: parseInt((xy[0] - background_image1.left).toFixed(0)),
- y: parseInt((xy[1] - background_image1.top).toFixed(0)),
- h: parseInt((item.get('scaleY') * item.get('height')).toFixed(0)),
- w: parseInt((item.get('scaleX') * item.get('width')).toFixed(0)),
- rotate: parseInt(item.get('angle').toFixed(0))
- })
- } else if (type == 8) {
- //二维码
- let xy = getAbsoluteXY(item)
- op.frontData.push({
- type: 4,
- name: objs1[idx - 1].name,
- FontColor: objs1[idx - 1].color,
- DefaultText: objs1[idx - 1].val,
- x: parseInt((xy[0] - background_image1.left).toFixed(0)),
- y: parseInt((xy[1] - background_image1.top).toFixed(0)),
- h: parseInt((item.get('scaleY') * item.get('height')).toFixed(0)),
- w: parseInt((item.get('scaleX') * item.get('width')).toFixed(0)),
- rotate: parseInt(item.get('angle').toFixed(0))
- })
- } else if (type == 9) {
- //条形码
- let xy = getAbsoluteXY(item)
- op.frontData.push({
- type: 5,
- name: objs1[idx - 1].name,
- FontSize: parseInt(objs1[idx - 1].fontSize),
- HideText: objs1[idx - 1].show,
- FontFamily: objs1[idx - 1].font,
- DefaultText: objs1[idx - 1].val,
- FontColor: objs1[idx - 1].color,
- x: parseInt((xy[0] - background_image1.left).toFixed(0)),
- y: parseInt((xy[1] - background_image1.top).toFixed(0)),
- h: parseInt((item.get('scaleY') * item.get('height')).toFixed(0)),
- w: parseInt((item.get('scaleX') * item.get('width')).toFixed(0)),
- rotate: parseInt(item.get('angle').toFixed(0))
- })
- } else if (type == 10) {
- let xy = getAbsoluteXY(item)
- op.frontData.push({
- type: 6,
- name: objs1[idx - 1].name,
- FontFamily: item.get('fontFamily'),
- FontSize: parseInt(item.get('fontSize')),
- FontColor: item.get('fill'),
- start: objs1[idx - 1].start,
- add: parseInt(objs1[idx - 1].add),
- x: parseInt((xy[0] - background_image1.left).toFixed(0)),
- y: parseInt((xy[1] - background_image1.top).toFixed(0)),
- h: parseInt((item.get('scaleY') * item.get('height')).toFixed(0)),
- w: parseInt((item.get('scaleX') * item.get('width')).toFixed(0)),
- rotate: parseInt(item.get('angle').toFixed(0))
- })
- }
- }
- //obj2
-
- for (let item of _objs2) {
- let idx = getIndex(item, canvas2)
- if (idx == 0) continue //background-image
- let type = objs2[idx - 1].type
- if (type == 2) {
- //out_pic
- let xy = getAbsoluteXY(item)
- op.backData.push({
- type: 1,
- name: objs2[idx - 1].name,
- FontColor: objs2[idx - 1].black ? '#000000' : '@',
- transparency: item.get('opacity'),
- x: parseInt((xy[0] - background_image2.left).toFixed(0)),
- y: parseInt((xy[1] - background_image2.top).toFixed(0)),
- h: parseInt((item.get('scaleY') * item.get('height')).toFixed(0)),
- w: parseInt((item.get('scaleX') * item.get('width')).toFixed(0)),
- rotate: parseInt(item.get('angle').toFixed(0))
- })
- } else if (type == 3) {
- //text
- if (item.get('fill') == '#000000') {
- //纯黑
- /*
- op.backData.push({
- "type" : 2,
- "Text" : item.get("text"),
- "FontFamily" : item.get("fontFamily"),
- "FontSize" : parseInt(item.get("fontSize")),
- "FontColor" : "#000000",
- "FontBackgroudColor" : item.get("textBackgroundColor"),
- "Bold" : item.get("fontWeight") == "bold",
- "Underline" : item.get("underline"),
- "Italic" : item.get("fontStyle") == "italic",
- "Strikeout" : item.get("linethrough"),
- "x" : parseInt((item.get("left") - background_image2.left).toFixed(0)),
- "y" : parseInt((item.get("top") - background_image2.top).toFixed(0)),
- "h" : parseInt((item.get("scaleY") * item.get("height")).toFixed(0)),
- "w" : parseInt((item.get("scaleX") * item.get("width")).toFixed(0)),
- "rotate" : parseInt(item.get("angle").toFixed(0))
- });*/
- }
- } else if (type == 4) {
- let xy = getAbsoluteXY(item)
- op.backData.push({
- type: 3,
- name: objs2[idx - 1].name,
- FontFamily: item.get('fontFamily'),
- DefaultText: item.get('text'),
- FontSize: parseInt(item.get('fontSize')),
- FontBackgroudColor: item.get('textBackgroundColor'),
- FontColor: item.get('fill'),
- Exceed: objs2[idx - 1].exceed,
- AutoWrap: objs2[idx - 1].autoWrap,
- FixSize: objs2[idx - 1].fixSize,
- Bold: item.get('fontWeight') == 'bold',
- Underline: item.get('underline'),
- Italic: item.get('fontStyle') == 'italic',
- Strikeout: item.get('linethrough'),
- x: parseInt((xy[0] - background_image2.left).toFixed(0)),
- y: parseInt((xy[1] - background_image2.top).toFixed(0)),
- h: parseInt((item.get('scaleY') * item.get('height')).toFixed(0)),
- w: parseInt((item.get('scaleX') * item.get('width')).toFixed(0)),
- rotate: parseInt(item.get('angle').toFixed(0))
- })
- } else if (type == 8) {
- //二维码
- let xy = getAbsoluteXY(item)
- op.backData.push({
- type: 4,
- name: objs2[idx - 1].name,
- color: objs2[idx - 1].color,
- DefaultText: objs2[idx - 1].val,
- x: parseInt((xy[0] - background_image2.left).toFixed(0)),
- y: parseInt((xy[1] - background_image2.top).toFixed(0)),
- h: parseInt((item.get('scaleY') * item.get('height')).toFixed(0)),
- w: parseInt((item.get('scaleX') * item.get('width')).toFixed(0)),
- rotate: parseInt(item.get('angle').toFixed(0))
- })
- } else if (type == 9) {
- let xy = getAbsoluteXY(item)
- op.backData.push({
- type: 5,
- name: objs2[idx - 1].name,
- FontSize: parseInt(objs2[idx - 1].fontSize),
- HideText: objs1[idx - 1].show,
- FontFamily: objs2[idx - 1].font,
- DefaultText: objs1[idx - 1].val,
- color: objs2[idx - 1].color,
- x: parseInt((xy[0] - background_image2.left).toFixed(0)),
- y: parseInt((xy[1] - background_image2.top).toFixed(0)),
- h: parseInt((item.get('scaleY') * item.get('height')).toFixed(0)),
- w: parseInt((item.get('scaleX') * item.get('width')).toFixed(0)),
- rotate: parseInt(item.get('angle').toFixed(0))
- })
- } else if (type == 10) {
- let xy = getAbsoluteXY(item)
- op.backData.push({
- type: 6,
- name: objs2[idx - 1].name,
- FontFamily: item.get('fontFamily'),
- FontSize: parseInt(item.get('fontSize')),
- FontColor: item.get('fill'),
- start: parseInt(objs2[idx - 1].start),
- add: parseInt(objs2[idx - 1].add),
- x: parseInt((xy[0] - background_image2.left).toFixed(0)),
- y: parseInt((xy[1] - background_image2.top).toFixed(0)),
- h: parseInt((item.get('scaleY') * item.get('height')).toFixed(0)),
- w: parseInt((item.get('scaleX') * item.get('width')).toFixed(0)),
- rotate: parseInt(item.get('angle').toFixed(0))
- })
- }
- }
- save(op)
- /*
- dialog.showSaveDialog({
- title:language_str("saveFile"),
- filters: [
- { name: 'CS File Type', extensions: ['cs'] },
- ]
- }).then(result=>{
- if(result.filePath.substring(result.filePath.length-5).indexOf('.') == -1){
- result.filePath += '.cs';
- }
- let fs = require('fs')
- fs.writeFileSync(result.filePath,JSON.stringify(op))
- }).catch(err=>{
- console.log()
- })
- */
- //return false 开启该代码可禁止点击该按钮关闭
+ savePdf(Buffer.from(pdfBuffer))
},
btn2: function () {
- var pdf = jspdf.jsPDF({
- orientation: 'landscape',
- unit: 'px',
- format: [1012, 648]
- })
-
- if ((objs1.length != 0) & (objs2.length == 0)) {
- //只有正面
- let img = new Image()
- img.src = url3
-
- pdf.addImage(img, 'JPEG', 0, 0, 1012, 648)
- } else if ((objs1.length == 0) & (objs2.length != 0)) {
- //只有背面
- let img = new Image()
- img.src = url3
-
- pdf.addImage(img, 'JPEG', 0, 0, 1012, 648)
- } else {
- let img = new Image()
- img.src = url3
-
- pdf.addImage(img, 'JPEG', 0, 0, 1012, 648)
-
- pdf.addPage()
- let img2 = new Image()
- img2.src = url4
- pdf.addImage(img2, 'JPEG', 0, 0, 1012, 648)
- }
-
- var pdfDataUri = pdf.output('datauristring').replace('data:application/pdf;filename=generated.pdf;base64,', '')
-
- // 使用 printJS 打印 PDF
- //ipcRenderer.send('print-pdf', pdfDataUri);
- //return;
- // var pdfDataUrl = pdf.output('dataurlstring').replace("data:application/pdf;filename=generated.pdf;base64,", "");
- // console.log(pdfDataUrl)
- // 使用printJS打印PDF
- // printJS({
- // printable: pdfDataUrl,
- // type: 'pdf',
- // base64: true
- // });
- printJS({ printable: pdfDataUri, type: 'pdf', base64: true })
+ printJS({ printable: URL.createObjectURL(pdfBlob), type: 'pdf', onPrintDialogClose: () => URL.revokeObjectURL(pdfBlob) })
}
})
}
@@ -1476,6 +1457,7 @@
$('#base_control').hide()
$('#line_control').hide()
$('#pic_control').hide()
+ $("#set_bg").hide();
$('#out_pic_control').hide()
$('#text_control').hide()
$('#out_text_control').hide()
@@ -1525,6 +1507,12 @@
if (
idx != 0 &&
((objs1[idx - 1].type == 3 && item.get('fill') == '#000000') ||
+ (
+ objs1[idx - 1].type == 11
+ &&
+ item.get("fill") == "#000000"
+ //圆形文字 && 黑色
+ ) ||
//文字 && 黑色
(objs1[idx - 1].type == 5 && //矩形
(((item.get('fill') == '#000000' || item.get('fill') == '#ffffff') && item.get('stroke') == '') || //黑填充 透明边框
@@ -1615,6 +1603,12 @@
if (
idx != 0 &&
((objs2[idx - 1].type == 3 && (item.get('fill') == '#000000' || (item.get('fill') == '#ffffff' && false))) ||
+ (
+ objs2[idx - 1].type ==11
+ &&
+ (item.get("fill") == "#000000" || (item.get("fill") == "#ffffff" && false))
+ //圆形文字 && 黑色
+ ) ||
//文字 && 黑色
(objs2[idx - 1].type == 5 && //矩形
(((item.get('fill') == '#000000' || item.get('fill') == '#ffffff') && item.get('stroke') == '') || //黑填充 透明边框
@@ -1955,6 +1949,7 @@
$('#base_control').hide()
$('#line_control').hide()
$('#pic_control').hide()
+ $("#set_bg").hide();
$('#out_pic_control').hide()
$('#text_control').hide()
$('#out_text_control').hide()
@@ -2004,6 +1999,12 @@
if (
idx != 0 &&
((objs1[idx - 1].type == 3 && (item.get('fill') == '#000000' || (item.get('fill') == '#ffffff' && false))) ||
+ (
+ objs2[idx - 1].type ==11
+ &&
+ (item.get("fill") == "#000000" || (item.get("fill") == "#ffffff" && false))
+ //圆形文字 && 黑色
+ ) ||
//文字 && 黑色
(objs1[idx - 1].type == 5 && //矩形
(((item.get('fill') == '#000000' || item.get('fill') == '#ffffff') && item.get('stroke') == '') || //黑填充 透明边框
@@ -2093,6 +2094,12 @@
if (
idx != 0 &&
((objs2[idx - 1].type == 3 && (item.get('fill') == '#000000' || (item.get('fill') == '#ffffff' && false))) ||
+ (
+ objs2[idx - 1].type ==11
+ &&
+ (item.get("fill") == "#000000" || (item.get("fill") == "#ffffff" && false))
+ //圆形文字 && 黑色
+ ) ||
//文字 && 黑色
(objs2[idx - 1].type == 5 && //矩形
(((item.get('fill') == '#000000' || item.get('fill') == '#ffffff') && item.get('stroke') == '') || //黑填充 透明边框
@@ -2558,7 +2565,7 @@
.showOpenDialog({
title: language_str('selectPic'), //请选择图片
buttonLabel: language_str('comf'), //"确认"
- filters: [{ name: 'Image File Type', extensions: ['png', 'jpg'] }]
+ filters: [{ name: 'Image File Type', extensions: ['png', 'jpg', 'jpeg'] }]
})
.then((result) => {
if (result.canceled) return
@@ -2573,6 +2580,7 @@
$('#addOutPic').css('background-color', '')
$('#addText').css('background-color', '')
+ $("#addCircleText").css("background-color", "");
$('#addOutText').css('background-color', '')
$('#addRect').css('background-color', '')
$('#addCircle').css('background-color', '')
@@ -2600,6 +2608,7 @@
$('#addPic').css('background-color', '')
$('#addText').css('background-color', '')
+ $("#addCircleText").css("background-color", "");
$('#addOutText').css('background-color', '')
$('#addRect').css('background-color', '')
$('#addCircle').css('background-color', '')
@@ -2615,6 +2624,7 @@
$('#addPic').css('background-color', '')
$('#addOutPic').css('background-color', '')
+ $("#addCircleText").css("background-color", "");
$('#addOutText').css('background-color', '')
$('#addRect').css('background-color', '')
$('#addCircle').css('background-color', '')
@@ -2624,6 +2634,22 @@
$('#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')
@@ -2631,6 +2657,7 @@
$('#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', '')
@@ -2646,6 +2673,7 @@
$('#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', '')
@@ -2661,6 +2689,7 @@
$('#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', '')
@@ -2676,6 +2705,7 @@
$('#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', '')
@@ -2691,6 +2721,7 @@
$('#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', '')
@@ -2706,6 +2737,7 @@
$('#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', '')
@@ -2721,6 +2753,7 @@
$('#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', '')
@@ -2762,6 +2795,7 @@
$('#line_control').hide()
$('#base_control').hide()
$('#pic_control').hide()
+ $("#set_bg").hide();
$('#out_pic_control').hide()
$('#text_control').hide()
$('#out_text_control').hide()
@@ -2791,6 +2825,7 @@
$('#line_control').hide()
$('#base_control').hide()
$('#pic_control').hide()
+ $("#set_bg").hide();
$('#out_pic_control').hide()
$('#text_control').hide()
$('#out_text_control').hide()
@@ -3118,6 +3153,7 @@
$('#base_control').hide()
$('#line_control').hide()
$('#pic_control').hide()
+ $("#set_bg").hide();
$('#out_pic_control').hide()
$('#text_control').hide()
$('#out_text_control').hide()
@@ -3151,6 +3187,7 @@
$('#base_control').hide()
$('#line_control').hide()
$('#pic_control').hide()
+ $("#set_bg").hide();
$('#out_pic_control').hide()
$('#text_control').hide()
$('#out_text_control').hide()
@@ -3233,6 +3270,32 @@
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_text_italics').click(function () {
if ($(this).hasClass('ui-radio-acitve')) {
//已选
@@ -3764,7 +3827,7 @@
let j = JSON.parse(fsData.toString())
let type = j.soonType ? j.soonType : j.backBlackPic ? 2 : 1;
if (type == 1) {
- ipcRenderer.send('open-design-page', $(this).attr("data"), type);
+ ipcRenderer.send('open-design-page', openAs.name, type);
return
}
let left = background_image.left
@@ -4109,6 +4172,7 @@
//透明度
$('#pic_control').show()
+ $("#set_bg").show();
pic_op.setValue(100 - canvas.getActiveObject().get('opacity') * 100)
let idx = getIndex(canvas.getActiveObject())
@@ -4152,6 +4216,7 @@
// $("#out_pic_black").prop("checked", objs[idx-1].black ? 'checked' : '');
$('#pic_control').hide()
+ $("#set_bg").hide();
$('#text_control').hide()
$('#out_text_control').hide()
$('#rect_control').hide()
@@ -4190,7 +4255,9 @@
$('#text_control').show()
$('#text_color').val(canvas.getActiveObject().get('fill'))
$('#text_back_color').val(canvas.getActiveObject().get('textBackgroundColor') == '' ? '#ffffff' : canvas.getActiveObject().get('textBackgroundColor'))
- $('#text_size').val(canvas.getActiveObject().get('fontSize'))
+ 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'))
@@ -4215,6 +4282,7 @@
$('#text_linethrough').removeClass('ui-radio-acitve')
}
$('#pic_control').hide()
+ $("#set_bg").hide();
$('#out_pic_control').hide()
$('#out_text_control').hide()
$('#rect_control').hide()
@@ -4224,6 +4292,108 @@
$('#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.set({diameter: distance*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 });
+ canvas.renderAll();
+ updateList();
+ recordState();
+ }
+ function selectCircleText() {
+ console.log(canvas.getActiveObject().get("text"))
+ $("#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"));
+ circle_text_size.setValue(canvas.getActiveObject().get("fontSize") - 10);
+ circle_text_diameter.setValue(canvas.getActiveObject().get("diameter")-500);
+ $("#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', {
@@ -4270,7 +4440,9 @@
$('#out_text_control').show()
$('#out_text_color').val(canvas.getActiveObject().get('fill'))
$('#out_text_text').val(canvas.getActiveObject().get('text'))
- $('#out_text_size').val(canvas.getActiveObject().get('fontSize'))
+ 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)
@@ -4300,6 +4472,7 @@
}
$('#pic_control').hide()
+ $("#set_bg").hide();
$('#out_pic_control').hide()
$('#text_control').hide()
$('#rect_control').hide()
@@ -4313,9 +4486,9 @@
let rect = new fabric.Rect({
left: pointer.x,
top: pointer.y,
- fill: '#006834',
- stroke: '#416666',
- strokeWidth: 0,
+ fill: '',
+ stroke: "#ff0000",
+ strokeWidth: 3,
width: 100,
height: 100
})
@@ -4336,6 +4509,7 @@
let a = canvas.getActiveObject().getCoords()
console.log(getCoordsMinX(a))
$('#pic_control').hide()
+ $("#set_bg").hide();
$('#out_pic_control').hide()
$('#text_control').hide()
$('#out_text_control').hide()
@@ -4350,9 +4524,9 @@
left: pointer.x,
top: pointer.y,
fill: '',
- stroke: '#006834',
+ stroke: '#ff0000',
strokeWidth: 3,
- radius: 50,
+ radius: 100,
strokeUniform: true
})
canvas.add(circle)
@@ -4370,6 +4544,7 @@
$('#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()
$('#out_text_control').hide()
@@ -4385,7 +4560,7 @@
top: pointer.y,
stroke: '#ff0000',
strokeWidth: 3,
- strokeDashArray: [0, 0]
+ strokeDashArray: [0, 0],
})
line.setControlVisible('tl', false)
@@ -4411,6 +4586,7 @@
$('#text_h').val(canvas.getActiveObject().get('strokeWidth'))
$('#pic_control').hide()
+ $("#set_bg").hide();
$('#out_pic_control').hide()
$('#text_control').hide()
$('#out_text_control').hide()
@@ -4474,7 +4650,9 @@
let idx = getIndex(canvas.getActiveObject())
$('#barcode_field_name').val(objs[idx - 1].name)
$('#barcode_font_family').val(objs[idx - 1].font)
- $('#barcode_size').val(objs[idx - 1].fontSize)
+ 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()
@@ -4511,7 +4689,9 @@
$('#counter_add').val(objs[idx - 1].add)
$('#counter_color').val(canvas.getActiveObject().get('fill'))
$('#count_font_family').val(canvas.getActiveObject().get('fontFamily'))
- $('#count_size').val(canvas.getActiveObject().get('fontSize'))
+ 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()
@@ -4586,6 +4766,9 @@
case 10:
str = '

COUNTER_" + i + '
' + str
break
+ case 11:
+ str = "

" + "CIRCLE_TEXT_" + i + "
" + str;
+ break;
}
i++
}
@@ -4791,11 +4974,17 @@
recordState()
})
})
- $('#qrcode_val').bind('input propertychange', function () {
- let item = canvas.getActiveObject()
- let idx = getIndex(item)
- objs[idx - 1].val = $(this).val()
- })
+ $("#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)
@@ -4830,27 +5019,72 @@
canvas.renderAll()
recordState()
})
- $('#text_size').bind('input propertychange', function () {
- canvas.getActiveObject().set('fontSize', $('#text_size').val())
- $('#text_h').val(canvas.getActiveObject().get('height').toFixed(0))
- $('#text_w').val(canvas.getActiveObject().get('width').toFixed(0))
- 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_size').bind('input propertychange', function () {
- canvas.getActiveObject().set('fontSize', $('#out_text_size').val())
- $('#text_h').val(canvas.getActiveObject().get('height').toFixed(0))
- $('#text_w').val(canvas.getActiveObject().get('width').toFixed(0))
- 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').bind('input propertychange', function () {
- canvas.getActiveObject().set('text', $('#out_text_text').val())
+ let val = $("#out_text_text").val().trim()
+ canvas.getActiveObject().set("text", ` ${val} `);
canvas.renderAll()
updateList()
recordState()
@@ -4930,12 +5164,25 @@
canvas.renderAll()
recordState()
})
- $('#count_size').bind('input propertychange', function () {
- canvas.getActiveObject().set('fontSize', $('#count_size').val())
- $('#text_h').val(canvas.getActiveObject().get('height').toFixed(0))
- $('#text_w').val(canvas.getActiveObject().get('width').toFixed(0))
- 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())
@@ -4951,7 +5198,8 @@
recordState()
})
$('#text_text').bind('input propertychange', function () {
- canvas.getActiveObject().set('text', $('#text_text').val())
+ let val = $("#text_text").val().trim()
+ canvas.getActiveObject().set("text", ` ${val} `);
canvas.renderAll()
updateList()
recordState()
@@ -4969,27 +5217,49 @@
recordState()
})
})
- $('#barcode_show').click(function () {
- let idx = getIndex(canvas.getActiveObject())
- if ($(this).prop('checked')) {
- objs[idx - 1].show = true
+ $("#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
+ objs[idx - 1].show = false;
}
- recordState()
- })
- $('#barcode_size').bind('input propertychange', function () {
- let item = canvas.getActiveObject()
- let idx = getIndex(item)
- objs[idx - 1].fontSize = $(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')
+ 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()
- })
+ 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())
@@ -5001,6 +5271,12 @@
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 () {
//语言选择
@@ -5202,6 +5478,13 @@
selectObject(select_obj, i)
selectCounter(select_obj, i)
break
+ case 11:
+
+ $("#component_type").text(language_str("ctext"));//"圆形文字"
+ //console.log("圆形文字");
+ selectObject(select_obj, i);
+ selectCircleText(select_obj, i);
+ break;
}
} else {
//背景,收起对象属性
@@ -5227,9 +5510,24 @@
'X: ' + (e.pointer.x - (width / 2 - (width / 2 - background_image.left) * zoom)).toFixed(0) + ' Y: ' + (e.pointer.y - (height / 2 - (height / 2 - background_image.top) * zoom)).toFixed(0)
)
})
- canvas1.on('object:moving', function (e) {
- updateControls()
- })
+ canvas1.on("object:moving", function (e) {
+ let obj = canvas.getActiveObject()
+ if (objs[getIndex(e.target) - 1].type ===11) {
+ let pointer = {
+ x: obj.left,
+ y: obj.top > canvas.height/2 ? obj.top + obj.height/2 : obj.top - obj.height/2
+ }
+ console.log(obj)
+ let distance = getDisdance(pointer.x, pointer.y, canvas.width/2,canvas.height/2)
+ let angleDeg = getDeg(pointer)
+ let flipped = pointer.y > canvas.height/2 ? true : false
+ obj.set("diameter", distance*2);
+ // obj.set("angle", angleDeg);
+ obj.set("flipped", flipped);
+ // canvas.renderAll();
+ }
+ updateControls();
+ });
canvas1.on('object:scaling', function (event) {
//if(objs[getIndex(event.target) - 1].type == 5 || objs[getIndex(event.target) - 1].type == 6){
// //canvas.getActiveObject().set("width", canvas.getActiveObject().get("width") * canvas.getActiveObject().get("scaleX"));
@@ -5333,6 +5631,13 @@
selectObject(select_obj, i)
selectCounter(select_obj, i)
break
+ case 11:
+
+ $("#component_type").text(language_str("ctext"));//"圆形文字"
+ //console.log("圆形文字");
+ selectObject(select_obj, i);
+ selectCircleText(select_obj, i);
+ break;
}
selectObj(i, true) //如果是点击画布中,则相应列表
} else {
@@ -5368,7 +5673,7 @@
event.target.scaleX = 1
event.target.scaleY = 1
event.target._clearCache()
- $('#text_size').val(event.target.fontSize)
+ // $('#text_size').val(event.target.fontSize)
canvas1.renderAll()
updateControls()
} else if (objs[getIndex(event.target) - 1].type == 4) {
@@ -5377,7 +5682,7 @@
event.target.scaleX = 1
event.target.scaleY = 1
event.target._clearCache()
- $('#out_text_size').val(event.target.fontSize)
+ // $('#out_text_size').val(event.target.fontSize)
canvas1.renderAll()
} else if (objs[getIndex(event.target) - 1].type == 10) {
event.target.fontSize *= event.target.scaleX
@@ -5385,7 +5690,7 @@
event.target.scaleX = 1
event.target.scaleY = 1
event.target._clearCache()
- $('#count_size').val(event.target.fontSize)
+ // $('#count_size').val(event.target.fontSize)
canvas1.renderAll()
} else if (objs[getIndex(event.target) - 1].type == 5) {
canvas1.getActiveObject().set('width', canvas1.getActiveObject().get('width') * canvas1.getActiveObject().get('scaleX'))
@@ -5468,6 +5773,13 @@
background_image.hoverCursor = 'default'
$('#addCounter').css('background-color', '')
break
+ case 11:
+ addCircleText(e.pointer);
+ addState = 0;
+ background_image.hoverCursor = "default";
+ canvas1.renderAll();
+ $("#addCircleText").css("background-color", "");
+ break;
}
})
canvas1.on('text:changed', (e) => {
@@ -5499,9 +5811,24 @@
canvas2.on('mouse:move', (e) => {
$('#posText').text('X: ' + (e.pointer.x - background_image.left).toFixed(0) + ' Y: ' + (e.pointer.y - background_image.top).toFixed(0))
})
- canvas2.on('object:moving', function (e) {
- updateControls()
- })
+ canvas2.on("object:moving", function (e) {
+ let obj = canvas.getActiveObject()
+ if (objs[getIndex(e.target) - 1].type ===11) {
+ let pointer = {
+ x: obj.left,
+ y: obj.top > canvas.height/2 ? obj.top + obj.height/2 : obj.top - obj.height/2
+ }
+ console.log(obj)
+ let distance = getDisdance(pointer.x, pointer.y, canvas.width/2,canvas.height/2)
+ let angleDeg = getDeg(pointer)
+ let flipped = pointer.y > canvas.height/2 ? true : false
+ obj.set("diameter", distance*2);
+ // obj.set("angle", angleDeg);
+ obj.set("flipped", flipped);
+ // canvas.renderAll();
+ }
+ updateControls();
+ });
canvas2.on('object:scaling', function (e) {
updateControls()
})
@@ -5594,6 +5921,13 @@
selectObject(select_obj, i)
selectCounter(select_obj, i)
break
+ case 11:
+
+ $("#component_type").text(language_str("ctext"));//"圆形文字"
+ //console.log("圆形文字");
+ selectObject(select_obj, i);
+ selectCircleText(select_obj, i);
+ break;
}
selectObj(i, true) //如果是点击画布中,则相应列表
} else {
@@ -5623,7 +5957,7 @@
event.target.scaleX = 1
event.target.scaleY = 1
event.target._clearCache()
- $('#text_size').val(event.target.fontSize)
+ // $('#text_size').val(event.target.fontSize)
canvas2.renderAll()
} else if (objs[getIndex(event.target) - 1].type == 4) {
event.target.fontSize *= event.target.scaleX
@@ -5631,7 +5965,7 @@
event.target.scaleX = 1
event.target.scaleY = 1
event.target._clearCache()
- $('#out_text_size').val(event.target.fontSize)
+ // $('#out_text_size').val(event.target.fontSize)
canvas2.renderAll()
} else if (objs[getIndex(event.target) - 1].type == 10) {
event.target.fontSize *= event.target.scaleX
@@ -5639,7 +5973,7 @@
event.target.scaleX = 1
event.target.scaleY = 1
event.target._clearCache()
- $('#count_size').val(event.target.fontSize)
+ // $('#count_size').val(event.target.fontSize)
canvas2.renderAll()
} else if (objs[getIndex(event.target) - 1].type == 5) {
canvas2.getActiveObject().set('width', canvas2.getActiveObject().get('width') * canvas2.getActiveObject().get('scaleX'))
@@ -5724,9 +6058,33 @@
canvas2.renderAll()
$('#addCounter').css('background-color', '')
break
+ case 11:
+ addCircleText(e.pointer);
+ addState = 0;
+ background_image.hoverCursor = "default";
+ canvas2.renderAll();
+ $("#addCircleText").css("background-color", "");
+ break;
}
})
-
+ var circle_text_size = slider.render({
+ elem: '#circle_text_size',
+ min: 10,
+ max: 120
+ , change: function (value) {
+ canvas.getActiveObject().set("fontSize", value);
+ canvas.renderAll();
+ }
+ });
+ var circle_text_diameter = slider.render({
+ elem: '#circle_text_diameter',
+ min: 500,
+ max: 4000
+ , change: function (value) {
+ canvas.getActiveObject().set("diameter", value);
+ canvas.renderAll();
+ }
+ });
var out_pic_op = slider.render({
elem: '#out_pic_op',
change: function (value) {
diff --git a/output.pdf b/output.pdf
new file mode 100644
index 0000000..f0f56b0
Binary files /dev/null and b/output.pdf differ
diff --git a/print.png b/print.png
index 7f95903..37ab2ed 100644
Binary files a/print.png and b/print.png differ
diff --git a/print3.png b/print3.png
new file mode 100644
index 0000000..37ab2ed
Binary files /dev/null and b/print3.png differ
diff --git a/print4.png b/print4.png
new file mode 100644
index 0000000..37ab2ed
Binary files /dev/null and b/print4.png differ