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.

183 lines
5.1 KiB
JavaScript

var pxInd, stInd;
var dispW, dispH;
var xhReq, dispX;
var rqPrf, rqMsg;
function byteToStr(v) {
return String.fromCharCode((v & 0xF) + 97, ((v >> 4) & 0xF) + 97);
}
function wordToStr(v) {
return byteToStr(v & 0xFF) + byteToStr((v >> 8) & 0xFF);
}
function u_send(cmd, next) {
xhReq.open("POST", rqPrf + cmd, true);
xhReq.send("");
if (next) stInd++;
return 0;
}
function u_next() {
lnInd = 0;
pxInd = 0;
u_send("NEXT_", true);
}
function u_done() {
setInn("logTag", "Complete!");
return u_send("SHOW_", true);
}
function u_show(a, k1, k2) {
var x = "" + (k1 + k2 * pxInd / a.length);
if (x.length > 5) x = x.substring(0, 5);
setInn("logTag", "Progress: " + x + "%");
return u_send(rqMsg + wordToStr(rqMsg.length) + "LOAD_", pxInd >= a.length);
}
function u_data(a, c, k1, k2) {
rqMsg = "";
if (c == -1) {
while ((pxInd < a.length) && (rqMsg.length < 1000)) {
var v = 0;
for (var i = 0; i < 16; i += 2) {
if (pxInd < a.length) v |= a[pxInd++] << i;
}
rqMsg += wordToStr(v);
}
} else if (c == -2) {
while ((pxInd < a.length) && (rqMsg.length < 1000)) {
var v = 0;
for (var i = 0; i < 16; i += 4) {
if (pxInd < a.length) v |= a[pxInd++] << i;
}
rqMsg += wordToStr(v);
}
} else {
while ((pxInd < a.length) && (rqMsg.length < 1000)) {
var v = 0;
for (var i = 0; i < 8; i++) {
if ((pxInd < a.length) && (a[pxInd++] != c)) v |= 128 >> i;
}
rqMsg += byteToStr(v);
}
}
return u_show(a, k1, k2);
}
function u_line(a, c, k1, k2) {
var x;
rqMsg = "";
while (rqMsg.length < 1000) {
x = 0;
while (x < 122) {
var v = 0;
for (var i = 0; (i < 8) && (x < 122); i++, x++) {
if (a[pxInd++] != c) v |= 128 >> i;
}
rqMsg += byteToStr(v);
}
}
return u_show(a, k1, k2);
}
function uploadImage() {
var c = getElm("canvas");
var w = dispW = c.width;
var h = dispH = c.height;
var p = c.getContext("2d").getImageData(0, 0, w, h);
var a = new Array(w * h);
var i = 0;
for (var y = 0; y < h; y++) {
for (var x = 0; x < w; x++, i++) {
if (epdInd == 25 || epdInd == 37) {
a[i] = getVal_7color(p, i << 2);
} else {
a[i] = getVal(p, i << 2);
}
}
}
dispX = 0;
pxInd = 0;
stInd = 0;
xhReq = new XMLHttpRequest();
rqPrf = "http://" + getElm("ip_addr").value + "/";
if ((epdInd == 3) || (epdInd == 39)) {
xhReq.onload = xhReq.onerror = function () {
if (stInd == 0) return u_line(a, 0, 0, 100);
if (stInd == 1) return u_done();
};
if (epdInd > 25) {
return u_send(
"EPD" + String.fromCharCode(epdInd + -26 + 65) + "_",
false,
);
}
return u_send("EPD" + String.fromCharCode(epdInd + 97) + "_", false);
}
if ((epdInd == 40)) {
xhReq.onload = xhReq.onerror = function () {
if (stInd == 0) return u_line(a, 0, 0, 50);
if (stInd == 1) return u_next();
if (stInd == 2) return u_line(a, 3, 50, 50);
if (stInd == 3) return u_done();
};
if (epdInd > 25) {
return u_send(
"EPD" + String.fromCharCode(epdInd + -26 + 65) + "_",
false,
);
}
return u_send("EPD" + String.fromCharCode(epdInd + 97) + "_", false);
}
if (
(epdInd == 0) || (epdInd == 3) || (epdInd == 6) || (epdInd == 7) ||
(epdInd == 9) || (epdInd == 12) || (epdInd == 16) || (epdInd == 19) ||
(epdInd == 22) || (epdInd == 26) || (epdInd == 27) || (epdInd == 28)
) {
xhReq.onload = xhReq.onerror = function () {
if (stInd == 0) return u_data(a, 0, 0, 100);
if (stInd == 1) return u_done();
};
if (epdInd > 25) {
return u_send(
"EPD" + String.fromCharCode(epdInd + -26 + 65) + "_",
false,
);
}
return u_send("EPD" + String.fromCharCode(epdInd + 97) + "_", false);
}
if (epdInd > 15 && epdInd < 22) {
xhReq.onload = xhReq.onerror = function () {
if (stInd == 0) return u_data(a, -1, 0, 100);
if (stInd == 1) return u_done();
};
return u_send("EPD" + String.fromCharCode(epdInd + 97) + "_", false);
}
if (epdInd == 25 || epdInd == 37) {
xhReq.onload = xhReq.onerror = function () {
if (stInd == 0) return u_data(a, -2, 0, 100);
if (stInd == 1) return u_done();
};
if (epdInd > 25) {
return u_send(
"EPD" + String.fromCharCode(epdInd + -26 + 65) + "_",
false,
);
}
return u_send("EPD" + String.fromCharCode(epdInd + 97) + "_", false);
} else {
xhReq.onload = xhReq.onerror = function () {
console.log("*************");
console.log(stInd);
console.log("*************");
if (stInd == 0 && epdInd == 23) return u_data(a, 0, 0, 100);
if (stInd == 0) {
return u_data(a, ((epdInd == 1) || (epdInd == 12)) ? -1 : 0, 0, 50);
}
if (stInd == 1) return u_next();
if (stInd == 2) return u_data(a, 3, 50, 50);
if (stInd == 3) return u_done();
};
if (epdInd > 25) {
return u_send(
"EPD" + String.fromCharCode(epdInd + -26 + 65) + "_",
false,
);
}
return u_send("EPD" + String.fromCharCode(epdInd + 97) + "_", false);
}
}