You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
9.3 KiB
JavaScript
1 line
9.3 KiB
JavaScript
|
1 month ago
|
"use strict";var ruler=function(a){this.api=this.builder(),this.api.constructRulers.call(this,a)};ruler.prototype.builder=function(){var a,b=1,c=2,d=0,e=0,f=1,g={},h=[],i=document.createElement("div"),j=[],k={rulerHeight:15,fontFamily:"arial",fontSize:"8px",strokeStyle:"gray",sides:["top","left"],cornerSides:["TL"],lineWidth:1,enableMouseTracking:!0,enableToolTip:!0},l=function(a,b){var c="rotate("+b+"deg)",d=ruler.prototype.utils.pixelize(Math.abs(parseInt(a.canvas.style.left)))+" 100%";a.canvas.style.webkitTransform=c,a.canvas.style.MozTransform=c,a.canvas.style.OTransform=c,a.canvas.style.msTransform=c,a.canvas.style.transform=c,a.canvas.style.webkitTransformOrigin=d,a.canvas.style.MozTransformOrigin=d,a.canvas.style.OTransformOrigin=d,a.canvas.style.msTransformOrigin=d,a.canvas.style.transformOrigin=d},m=function(a,b){switch(a.canvas.style.left=ruler.prototype.utils.pixelize(-(a.canvas.width/2-a.canvas.height)),b){case"top":a.orgPos=parseInt(a.canvas.style.left);break;case"left":a.canvas.style.top=ruler.prototype.utils.pixelize(-a.canvas.height-1),a.orgPos=parseInt(a.canvas.style.top),l(a,90)}},n=function(a,b){var c=function(a){o(b.dimension,a.clientX,a.clientY,a)};b.canvas.addEventListener("mousedown",c),b.clearListeners=function(){b.canvas.removeEventListener("mousedown",c)}},o=function(c,g,j,k,l){var m,n=function(c,d,e){var f=c.dimension===b?d:e;if(!c.assigned())return void(f>a.rulerHeight&&c.assigned(!0));f<a.rulerHeight&&(h.some(function(a,b){if(a.line===c)return m=b,!0}),c.destroy(),h.splice(m,1))},o=document.createElement("div"),p=c===b?"rul_lineVer":"rul_lineHor",q=c===b?d:e;o.title="Double click to delete",ruler.prototype.utils.addClasss(o,["rul_line",p]),o=i.appendChild(o),c===b?(o.style.left=ruler.prototype.utils.pixelize(g-a.container.getBoundingClientRect().left),l&&(o.style.left=ruler.prototype.utils.pixelize(Math.round(g/f)+a.rulerHeight))):(o.style.top=ruler.prototype.utils.pixelize(j-a.container.getBoundingClientRect().top),l&&(o.style.top=ruler.prototype.utils.pixelize(Math.round(j/f)+a.rulerHeight))),h.push({dimension:c,line:ruler.prototype.guideLine(o,a.container.querySelector(".rul_wrapper"),c,a,q,n,k)})},p=function(d,e){var f,h="left"===e||"right"===e?b:c,i=h===b?"rul_ruler_Vertical":"rul_ruler_Horizontal",j=document.createElement("canvas");ruler.prototype.utils.addClasss(j,["rul_ruler",i,"rul_align_"+e]),f=d.appendChild(j),g[e]=ruler.prototype.rulerConstructor(f,a,h),g[e].drawRuler(d.offsetWidth,a.rulerHeight),m(g[e],e),n(d,g[e])},q=function(){function b(b,c){var d=document.createElement("div"),e="rul_corner"+c.toUpperCase();return d.title="Clear Guide lines",ruler.prototype.utils.addClasss(d,["rul_corner",e]),d.style.width=ruler.prototype.utils.pixelize(a.rulerHeight+1),d.style.height=ruler.prototype.utils.pixelize(a.rulerHeight),b.appendChild(d)}function c(a){a.stopPropagation(),w()}return function(a,d){d.forEach(function(d){var e=b(a,d);e.addEventListener("mousedown",c),e.destroy=function(){e.removeEventListener("mousedown",c),e.parentNode.removeChild(e)},j.push(e)})}}(),r=function(a){h.forEach(function(a){a.line.stopDrag()})},s=function(b){i=ruler.prototype.utils.addClasss(i,"rul_wrapper"),a=ruler.prototype.utils.extend(k,b),i=a.container.appendChild(i),a.sides.forEach(function(a){p(i,a)}),q(i,a.cornerSides),a.container.addEventListener("mouseup",r)},t=function(a){var b=0;for(var c in g)g.hasOwnProperty(c)&&a(g[c],b++)},u=function(a){var f,g=0,i=0,j=0;t(function(c){c.dimension===b?(f=c.canvas.style.top,c.canvas.style.top=ruler.prototype.utils.pixelize(c.orgPos+parseInt(a.y)),j=parseInt(f)-parseInt(c.canvas.style.top)):(g=c.canvas.style.left,c.canvas.style.left=ruler.prototype.utils.pixelize(c.orgPos+parseInt(a.x)),i=parseInt(g)-parseInt(c.canvas.style.left))}),h.forEach(function(b){b.dimension===c?(b.line.guideLine.style.top=ruler.prototype.utils.pixelize(parseInt(b.line.guideLine.style.top)-j),b.line.curPosDelta(parseInt(a.y))):(b.line.guideLine.style.left=ruler.prototype.utils.pixelize(parseInt(b.line.guideLine.style.left)-i),b.line.curPosDelta(parseInt(a.x)))}),d=parseInt(a.x),e=parseIn
|