1
1
Fork 0
mirror of https://github.com/boxgaming/qbjs.git synced 2024-06-10 09:06:45 +00:00

Refined Draw/M model, reduced all weirdness into var fudgeFactor.

This commit is contained in:
William Barnes 2022-04-30 23:01:44 -04:00
parent cb4bd49c1c
commit 02e598c17b

49
qb.js
View file

@ -691,7 +691,7 @@ var QB = new function() {
u = u.toUpperCase();
u = u.split("");
// Prime data prep loop.
// Prime data loop.
var ch;
var elem;
var flag;
@ -731,14 +731,15 @@ var QB = new function() {
v.push([elem,flag]);
// Draw-specific variables.
//var color;
var fudgeFactor = 1.30;
var cursX, cursY;
var cursX0, cursY0;
var cursXt, cursYt;
var ux, uy, ux0, uy0, uxx, uyy;
var sMFlag;
var cursReturn = false;
var cursSkipdraw = false;
var dx, dy, dlen;
var dx, dy, dlen, ang;
var multiplier = 1;
var tok, tok1, tok2;
var tmp = [[]];
@ -757,6 +758,7 @@ var QB = new function() {
cursX = screen.lastX;
cursY = screen.lastY;
// Main loop.
while (v.length) {
tok = v.shift();
if (tok[1] == 1) {
@ -783,7 +785,7 @@ var QB = new function() {
tmp = v[0];
if (tmp[1] == 0) {
tok1 = v.shift();
_strokeDrawLength = (tok1[0]) * 1.0;
_strokeDrawLength = (tok1[0]) * (fudgeFactor);
}
}
@ -835,7 +837,7 @@ var QB = new function() {
}
} else if (tok[0] == "M") {
var sFlag = false;
sMFlag = false;
multiplier = 1;
if (v.length) {
tmp = v[0];
@ -843,28 +845,28 @@ var QB = new function() {
tok1 = v.shift();
if (tok1[0] == "+") {
multiplier = 1;
sFlag = true;
sMFlag = true;
} else if (tok1[0] == "-") {
multiplier = -1;
sFlag = true;
sMFlag = true;
}
if (v.length) {
tmp = v[0];
if (tmp[1] == 0) {
tok2 = v.shift();
ux = multiplier * (_strokeDrawLength/4) * (tok2[0]);
ux = multiplier * (tok2[0]);
}
}
} else if (tmp[1] == 0) {
tok1 = v.shift();
ux = multiplier * (_strokeDrawLength/4) * (tok1[0]);
ux = multiplier * (tok1[0]);
}
if (sFlag == true) {
if (sMFlag == true) {
ux0 = cursX;
uy0 = cursY;
} else {
ux0 = 0;
uy0 = 0;
ux0 = 0.0;
uy0 = 0.0;
}
}
multiplier = 1;
@ -879,22 +881,25 @@ var QB = new function() {
if (tok1[0] == "+") {
multiplier = 1;
} else if (tok1[0] == "-") {
multiplier = 1;
multiplier = -1;
}
if (v.length) {
tmp = v[0];
if (tmp[1] == 0) {
tok2 = v.shift();
uy = multiplier * (_strokeDrawLength/4) * (tok2[0]);
uy = multiplier * (tok2[0]);
}
}
} else if (tmp[1] == 0) {
tok1 = v.shift();
uy = multiplier * (_strokeDrawLength/4) * (tok1[0]);
uy = multiplier * (tok1[0]);
}
if (sFlag == true) {
uxx = ux * Math.cos(_strokeDrawAngle + Math.PI/2) - uy * Math.sin(_strokeDrawAngle + Math.PI/2);
uyy = ux * Math.sin(_strokeDrawAngle + Math.PI/2) + uy * Math.cos(_strokeDrawAngle + Math.PI/2);
if (sMFlag == true) {
ang = (_strokeDrawAngle + Math.PI/2);
uxx = ux * Math.cos(ang) - uy * Math.sin(ang);
uyy = ux * Math.sin(ang) + uy * Math.cos(ang);
uxx *= (_strokeDrawLength/4) / (fudgeFactor);
uyy *= (_strokeDrawLength/4) / (fudgeFactor);
} else {
uxx = ux;
uyy = uy;
@ -904,8 +909,8 @@ var QB = new function() {
}
}
if (cursSkipdraw == false) {
ctx.beginPath();
ctx.strokeStyle = _color(_strokeDrawColor).rgba();
ctx.beginPath();
ctx.moveTo(cursX, cursY);
ctx.lineTo(cursXt, cursYt);
ctx.stroke();
@ -952,11 +957,11 @@ var QB = new function() {
}
dx = dlen * Math.cos(_strokeDrawAngle + lines[i][1]);
dy = dlen * Math.sin(_strokeDrawAngle + lines[i][1]);
cursXt = cursX*1.0 + dx;
cursYt = cursY*1.0 + dy;
cursXt = (cursX)*1.0 + dx;
cursYt = (cursY)*1.0 + dy;
if (cursSkipdraw == false) {
ctx.beginPath();
ctx.strokeStyle = _color(_strokeDrawColor).rgba();
ctx.beginPath();
ctx.moveTo(cursX, cursY);
ctx.lineTo(cursXt, cursYt);
ctx.stroke();