123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- (function (root, doc, factory) {
- if (typeof define === "function" && define.amd) {
- define( ["jquery"], function ($) {
- return factory($);
- });
- } else {
- factory(root.jQuery);
- }
- }(this, document, function($) {
- $.fn.esign = function(canvasEdit, sign_show, sign_clear, sign_ok) {
- var domMap = domInit(canvasEdit, sign_show, sign_clear, sign_ok);
- var canvas = domMap.canvasEdit[0];
- if (typeof document.ontouchstart != "undefined") {
- canvas.addEventListener('touchmove', onMouseMove, false);
- canvas.addEventListener('touchstart', onMouseDown, false);
- canvas.addEventListener('touchend', onMouseUp, false);
- } else {
- canvas.addEventListener('mousemove', onMouseMove, false);
- canvas.addEventListener('mousedown', onMouseDown, false);
- canvas.addEventListener('mouseup', onMouseUp, false);
- canvas.addEventListener('mouseleave', onMouseUp, false);
- }
- var context = canvas.getContext('2d');
- var linex = new Array();
- var liney = new Array();
- var linen = new Array();
- var lastX = 1;
- var lastY = 30;
- var flag = 0;
- domMap.sign_ok.on("click",function(){
- preview();
- rewrite();
- });
- domMap.sign_clear.click(function(){
- clearImg();
- rewrite();
- });
- function domInit(canvasEdit, sign_show, sign_clear, sign_ok){
- var domMap = {};
- if(!canvasEdit){
- domMap.canvasEdit = $("#canvasEdit");
- } else{
- domMap.canvasEdit = $("#" + canvasEdit);
- }
- if(!sign_show){
- domMap.sign_show = $("#sign_show");
- } else{
- domMap.sign_show = $("#" + sign_show);
- }
- if(!sign_clear){
- domMap.sign_clear = $("#sign_clear");
- } else{
- domMap.sign_clear = $("#" + sign_clear);
- }
- if(!sign_ok){
- domMap.sign_ok = $("#sign_ok");
- } else{
- domMap.sign_ok = $("#" + sign_ok);
- }
- return domMap;
- }
- function getCanvasPos(canvas, evt) {
- var rect = canvas.getBoundingClientRect();
- var x, y;
- if (evt.targetTouches) {
- x = evt.targetTouches[0].clientX;
- y = evt.targetTouches[0].clientY;
- } else {
- x = evt.clientX;
- y = evt.clientY;
- }
- return {
- x: (x - rect.left) * (canvas.width / rect.width),
- y: (y - rect.top) * (canvas.height / rect.height)
- }
- }
- function onMouseMove(evt)
- {
- var x = getCanvasPos(canvas, evt).x,
- y = getCanvasPos(canvas, evt).y;
- if (flag == 1) {
- linex.push(x);
- liney.push(y);
- linen.push(1);
- context.save();
- context.translate(context.canvas.width / 2, context.canvas.height / 2);
- context.translate(-context.canvas.width / 2 , -context.canvas.height/2);
- context.beginPath();
- context.lineWidth = 2;
- for (var i = 1; i < linex.length; i++) {
- lastX = linex[i];
- lastY = liney[i];
- if (linen[i] == 0)
- context.moveTo(lastX, lastY);
- else
- context.lineTo(lastX, lastY);
- }
- context.shadowBlur = 10;
- context.stroke();
- context.restore();
- }
- evt.preventDefault();
- }
- function onMouseDown(evt) {
- var x = getCanvasPos(canvas, evt).x,
- y = getCanvasPos(canvas, evt).y;
- flag = 1;
- linex.push(x);
- liney.push(y);
- linen.push(0);
- }
- function onMouseUp() {
- flag = 0;
- }
- function rewrite(){
- linex = new Array();
- liney = new Array();
- linen = new Array();
- context.clearRect(0, 0, canvas.width, canvas.height);
- }
- function clearImg(){
- domMap.sign_show[0].innerHTML = "";
- }
- function preview(){
- var show = domMap.sign_show[0];
- show.innerHTML = "";
- show.appendChild(convertCanvasToImage(canvas));
- $("#sign_dir").val(canvas.toDataURL("i/png"));
- }
- function convertCanvasToImage(canvas){
- var image = new Image();
- image.width = 80;
- image.height = 50;
- image.src = canvas.toDataURL("i/png");
- return image;
- }
- };
- return $.fn.esign;
- }));
|