Initial commit: Proyecto Portal ePromos completo con documentación unificada y seguridad base
This commit is contained in:
Vendored
+255
@@ -0,0 +1,255 @@
|
||||
/*! wScratchPad - v2.1.0 - 2014-04-14 */ !(function (a) {
|
||||
"use strict";
|
||||
function b(b, c) {
|
||||
(this.$el = a(b)),
|
||||
(this.options = c),
|
||||
(this.init = !1),
|
||||
(this.enabled = !0),
|
||||
this._generate();
|
||||
}
|
||||
(b.prototype = {
|
||||
_generate: function () {
|
||||
return a.support.canvas
|
||||
? ((this.canvas = document.createElement("canvas")),
|
||||
(this.ctx = this.canvas.getContext("2d")),
|
||||
"static" === this.$el.css("position") &&
|
||||
this.$el.css("position", "relative"),
|
||||
(this.$img = a('<img src=""/>')
|
||||
.attr("crossOrigin", "")
|
||||
.css({ position: "absolute", width: "100%", height: "100%" })),
|
||||
(this.$scratchpad = a(this.canvas).css({
|
||||
position: "absolute",
|
||||
width: "100%",
|
||||
height: "100%",
|
||||
})),
|
||||
this.$scratchpad.bindMobileEvents(),
|
||||
this.$scratchpad
|
||||
.mousedown(
|
||||
a.proxy(function (b) {
|
||||
return this.enabled
|
||||
? ((this.canvasOffset = a(this.canvas).offset()),
|
||||
(this.scratch = !0),
|
||||
void this._scratchFunc(b, "Down"))
|
||||
: !0;
|
||||
}, this)
|
||||
)
|
||||
.mousemove(
|
||||
a.proxy(function (a) {
|
||||
this.scratch && this._scratchFunc(a, "Move");
|
||||
}, this)
|
||||
)
|
||||
.mouseup(
|
||||
a.proxy(function (a) {
|
||||
this.scratch &&
|
||||
((this.scratch = !1), this._scratchFunc(a, "Up"));
|
||||
}, this)
|
||||
),
|
||||
this._setOptions(),
|
||||
this.$el.append(this.$img).append(this.$scratchpad),
|
||||
(this.init = !0),
|
||||
void this.reset())
|
||||
: (this.$el.append("Canvas is not supported in this browser."), !0);
|
||||
},
|
||||
reset: function () {
|
||||
var b = this,
|
||||
c = Math.ceil(this.$el.innerWidth()),
|
||||
d = Math.ceil(this.$el.innerHeight()),
|
||||
e = window.devicePixelRatio || 1;
|
||||
(this.pixels = c * d),
|
||||
this.$scratchpad.attr("width", c).attr("height", d),
|
||||
this.canvas.setAttribute("width", c * e),
|
||||
this.canvas.setAttribute("height", d * e),
|
||||
this.ctx.scale(e, e),
|
||||
(this.pixels = c * e * d * e),
|
||||
this.$img.hide(),
|
||||
this.options.bg &&
|
||||
("#" === this.options.bg.charAt(0)
|
||||
? this.$el.css("backgroundColor", this.options.bg)
|
||||
: (this.$el.css("backgroundColor", ""),
|
||||
this.$img.attr("src", this.options.bg))),
|
||||
this.options.fg &&
|
||||
("#" === this.options.fg.charAt(0)
|
||||
? ((this.ctx.fillStyle = this.options.fg),
|
||||
this.ctx.beginPath(),
|
||||
this.ctx.rect(0, 0, c, d),
|
||||
this.ctx.fill(),
|
||||
this.$img.show())
|
||||
: a(new Image())
|
||||
.attr("src", this.options.fg)
|
||||
.load(function () {
|
||||
b.ctx.drawImage(this, 0, 0, c, d), b.$img.show();
|
||||
}));
|
||||
},
|
||||
clear: function () {
|
||||
this.ctx.clearRect(
|
||||
0,
|
||||
0,
|
||||
Math.ceil(this.$el.innerWidth()),
|
||||
Math.ceil(this.$el.innerHeight())
|
||||
);
|
||||
},
|
||||
enable: function (a) {
|
||||
this.enabled = a === !0 ? !0 : !1;
|
||||
},
|
||||
destroy: function () {
|
||||
this.$el.children().remove(), a.removeData(this.$el, "wScratchPad");
|
||||
},
|
||||
_setOptions: function () {
|
||||
var a, b;
|
||||
for (a in this.options)
|
||||
(this.options[a] = this.$el.attr("data-" + a) || this.options[a]),
|
||||
(b = "set" + a.charAt(0).toUpperCase() + a.substring(1)),
|
||||
this[b] && this[b](this.options[a]);
|
||||
},
|
||||
setBg: function () {
|
||||
this.init && this.reset();
|
||||
},
|
||||
setFg: function () {
|
||||
this.setBg();
|
||||
},
|
||||
setCursor: function (a) {
|
||||
this.$el.css("cursor", a);
|
||||
},
|
||||
_scratchFunc: function (a, b) {
|
||||
(a.pageX = Math.floor(a.pageX - this.canvasOffset.left)),
|
||||
(a.pageY = Math.floor(a.pageY - this.canvasOffset.top)),
|
||||
this["_scratch" + b](a),
|
||||
(this.options.realtime || "Up" === b) &&
|
||||
this.options["scratch" + b] &&
|
||||
this.options["scratch" + b].apply(this, [a, this._scratchPercent()]);
|
||||
},
|
||||
_scratchPercent: function () {
|
||||
for (
|
||||
var a = 0,
|
||||
b = this.ctx.getImageData(
|
||||
0,
|
||||
0,
|
||||
this.canvas.width,
|
||||
this.canvas.height
|
||||
),
|
||||
c = 0,
|
||||
d = b.data.length;
|
||||
d > c;
|
||||
c += 4
|
||||
)
|
||||
0 === b.data[c] &&
|
||||
0 === b.data[c + 1] &&
|
||||
0 === b.data[c + 2] &&
|
||||
0 === b.data[c + 3] &&
|
||||
a++;
|
||||
return (a / this.pixels) * 100;
|
||||
},
|
||||
_scratchDown: function (a) {
|
||||
(this.ctx.globalCompositeOperation = "destination-out"),
|
||||
(this.ctx.lineJoin = "round"),
|
||||
(this.ctx.lineCap = "round"),
|
||||
(this.ctx.strokeStyle = this.options.color),
|
||||
(this.ctx.lineWidth = this.options.size),
|
||||
this.ctx.beginPath(),
|
||||
this.ctx.arc(
|
||||
a.pageX,
|
||||
a.pageY,
|
||||
this.options.size / 2,
|
||||
0,
|
||||
2 * Math.PI,
|
||||
!0
|
||||
),
|
||||
this.ctx.closePath(),
|
||||
this.ctx.fill(),
|
||||
this.ctx.beginPath(),
|
||||
this.ctx.moveTo(a.pageX, a.pageY);
|
||||
},
|
||||
_scratchMove: function (a) {
|
||||
this.ctx.lineTo(a.pageX, a.pageY), this.ctx.stroke();
|
||||
},
|
||||
_scratchUp: function () {
|
||||
this.ctx.closePath();
|
||||
},
|
||||
}),
|
||||
(a.support.canvas = document.createElement("canvas").getContext),
|
||||
(a.fn.wScratchPad = function (c, d) {
|
||||
function e() {
|
||||
var d = a.data(this, "wScratchPad");
|
||||
return (
|
||||
d ||
|
||||
((d = new b(this, a.extend(!0, {}, c))),
|
||||
a.data(this, "wScratchPad", d)),
|
||||
d
|
||||
);
|
||||
}
|
||||
if ("string" == typeof c) {
|
||||
var f,
|
||||
g = [],
|
||||
h =
|
||||
(void 0 !== d ? "set" : "get") +
|
||||
c.charAt(0).toUpperCase() +
|
||||
c.substring(1),
|
||||
i = function () {
|
||||
f.options[c] && (f.options[c] = d), f[h] && f[h].apply(f, [d]);
|
||||
},
|
||||
j = function () {
|
||||
return f[h]
|
||||
? f[h].apply(f, [d])
|
||||
: f.options[c]
|
||||
? f.options[c]
|
||||
: void 0;
|
||||
},
|
||||
k = function () {
|
||||
(f = a.data(this, "wScratchPad")),
|
||||
f &&
|
||||
(f[c] ? f[c].apply(f, [d]) : void 0 !== d ? i() : g.push(j()));
|
||||
};
|
||||
return this.each(k), g.length ? (1 === g.length ? g[0] : g) : this;
|
||||
}
|
||||
return (c = a.extend({}, a.fn.wScratchPad.defaults, c)), this.each(e);
|
||||
}),
|
||||
(a.fn.wScratchPad.defaults = {
|
||||
size: 5,
|
||||
bg: "#cacaca",
|
||||
fg: "#6699ff",
|
||||
realtime: !0,
|
||||
scratchDown: null,
|
||||
scratchUp: null,
|
||||
scratchMove: null,
|
||||
cursor: "crosshair",
|
||||
}),
|
||||
(a.fn.bindMobileEvents = function () {
|
||||
a(this).on("touchstart touchmove touchend touchcancel", function (a) {
|
||||
var b = a.changedTouches || a.originalEvent.targetTouches,
|
||||
c = b[0],
|
||||
d = "";
|
||||
switch (a.type) {
|
||||
case "touchstart":
|
||||
d = "mousedown";
|
||||
break;
|
||||
case "touchmove":
|
||||
(d = "mousemove"), a.preventDefault();
|
||||
break;
|
||||
case "touchend":
|
||||
d = "mouseup";
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
var e = document.createEvent("MouseEvent");
|
||||
e.initMouseEvent(
|
||||
d,
|
||||
!0,
|
||||
!0,
|
||||
window,
|
||||
1,
|
||||
c.screenX,
|
||||
c.screenY,
|
||||
c.clientX,
|
||||
c.clientY,
|
||||
!1,
|
||||
!1,
|
||||
!1,
|
||||
!1,
|
||||
0,
|
||||
null
|
||||
),
|
||||
c.target.dispatchEvent(e);
|
||||
});
|
||||
});
|
||||
})(jQuery);
|
||||
Reference in New Issue
Block a user