// 8
A js (Part 2) that allows you to draw lines, polygon, circles, fills, and other functions at Will on the page)
Function mkov2d (left, top, width, height)
{
VaR S = This. Stroke;
Width + = s-1;
Height + = s-1;
VaR A = width> 1, B = height> 1,
Wod = width & 1, Hod = (Height & 1) + 1,
Cx = left + A, Cy = Top + B,
X = 0, y = B,
AA = (A * A) <1, BB = (B * B) <1,
St = (AA> 1) * (1-(B <1) + BB,
Tt = (BB> 1)-aa * (B <1)-1 );
If (S-4 <0 &&(! (S-2) | width-51> 0 & height-51> 0 ))
{
VaR ox = 0, oy = B,
W, H,
Pxl, PXR, pxt, pxb, pxw;
While (Y> 0)
{
If (ST <0)
{
St + = BB * (x <1) + 3 );
Tt + = (BB <1) * (++ X );
}
Else if (TT <0)
{
St + = BB * (x <1) + 3)-(AA <1) * (Y-1 );
Tt + = (BB <1) * (++ X)-aa * (y --) <1)-3 );
W = x-ox;
H = Oy-y;
If (W-1)
{
Pxw = W + 1 + (S & 1 );
H = s;
}
Else if (h-1)
{
Pxw = s;
H + = 1 + (S & 1 );
}
Else pxw = H = s;
This. mkovqds (CX, Cy,-x + 1, ox-pxw + W + wod,-Oy,-H + Oy + Hod, pxw, H );
Ox = X;
Oy = y;
}
Else
{
TT-= AA * (Y <1)-3 );
St-= (AA <1) * (-- y );
}
}
This. mkdiv (CX-a, cy-Oy, S, (Oy <1) + hod );
This. mkdiv (cx + A + wod-S + 1, cy-Oy, S, (Oy <1) + hod );
}
Else
{
VaR _ A = (width-(S-1) <1)> 1,
_ B = (height-(S-1) <1)> 1,
_ X = 0, _ y = _ B,
_ AA = (_ A * _ A) <1, _ BB = (_ B * _ B) <1,
_ ST = (_ AA> 1) * (1-(_ B <1) + _ BB,
_ TT = (_ BB> 1)-_ AA * (_ B <1)-1 ),
Pxl = new array (),
Pxt = new array (),
_ Pxb = new array ();
Pxl [0] = 0;
Pxt [0] = B;
_ Pxb [0] = _ B-1;
While (Y> 0)
{
If (ST <0)
{
St + = BB * (x <1) + 3 );
Tt + = (BB <1) * (++ X );
Pxl [pxl. Length] = X;
Pxt [pxt. Length] = y;
}
Else if (TT <0)
{
St + = BB * (x <1) + 3)-(AA <1) * (Y-1 );
Tt + = (BB <1) * (++ X)-aa * (y --) <1)-3 );
Pxl [pxl. Length] = X;
Pxt [pxt. Length] = y;
}
Else
{
TT-= AA * (Y <1)-3 );
St-= (AA <1) * (-- y );
}
If (_ y> 0)
{
If (_ st <0)
{
_ St + = _ BB * (_ x <1) + 3 );
_ Tt + = (_ BB <1) * (++ _ x );
_ Pxb [_ pxb. Length] = _ Y-1;
}
Else if (_ TT <0)
{
_ St + = _ BB * (_ x <1) + 3)-(_ AA <1) * (_ Y-1 );
_ Tt + = (_ BB <1) * (++ _ x)-_ AA * (_ y --) <1)-3 );
_ Pxb [_ pxb. Length] = _ Y-1;
}
Else
{
_ Tt-= _ AA * (_ y <1)-3 );
_ St-= (_ AA <1) * (-- _ y );
_ Pxb [_ pxb. Length-1] --;
}
}
}
VaR ox = 0, oy = B,
_ Oy = _ pxb [0],
L = pxl. length,
W, h;
For (VAR I = 0; I <L; I ++)
{
If (typeof _ pxb [I]! = "Undefined ")
{
If (_ pxb [I] <_ Oy | pxt [I] <Oy)
{
X = pxl [I];
Thi, S. mkovqds (CX, Cy,-x + 1, Ox + wod,-Oy, _ Oy + Hod, X-ox, oy-_ Oy );
Ox = X;
Oy = pxt [I];
_ Oy = _ pxb [I];
}
}
Else
{
X = pxl [I];
This. mkdiv (CX-x + 1, cy-Oy, 1, (Oy <1) + hod );
This. mkdiv (cx + ox + wod, cy-Oy, 1, (Oy <1) + hod );
Ox = X;
Oy = pxt [I];
}
}
This. mkdiv (CX-a, cy-Oy, 1, (Oy <1) + hod );
This. mkdiv (cx + ox + wod, cy-Oy, 1, (Oy <1) + hod );
}
}
Function mkovdott (left, top, width, height)
{
VaR A = width> 1, B = height> 1,
Wod = width & 1, Hod = height & 1,
Cx = left + A, Cy = Top + B,
X = 0, y = B,
Aa2 = (A * A) <1, aa4 = Aa2 <1, BB = (B * B) <1,
St = (Aa2> 1) * (1-(B <1) + BB,
Tt = (BB> 1)-Aa2 * (B <1)-1 ),
Drw = true;
While (Y> 0)
{
If (ST <0)
{
St + = BB * (x <1) + 3 );
Tt + = (BB <1) * (++ X );
}
Else if (TT <0)
{
St + = BB * (x <1) + 3)-aa4*(Y-1 );
Tt + = (BB <1) * (++ X)-Aa2 * (y --) <1)-3 );
}
Else
{
TT-= Aa2 * (Y <1)-3 );
St-= aa4 * (-- y );
}
If (drw) This. mkovqds (CX, Cy,-x, x + wod,-y, Y + Hod, 1, 1 );
Drw =! Drw;
}
}