Files
runelite/runescape-client/src/main/java/Rasterizer2D.java
2019-07-08 17:46:35 +02:00

833 lines
26 KiB
Java

import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("lf")
@Implements("Rasterizer2D")
public class Rasterizer2D extends DualNode {
@ObfuscatedName("aq")
@Export("Rasterizer2D_pixels")
public static int[] Rasterizer2D_pixels;
@ObfuscatedName("aj")
@Export("Rasterizer2D_width")
public static int Rasterizer2D_width;
@ObfuscatedName("av")
@Export("Rasterizer2D_height")
public static int Rasterizer2D_height;
@ObfuscatedName("ar")
@Export("Rasterizer2D_yClipStart")
public static int Rasterizer2D_yClipStart;
@ObfuscatedName("ac")
@Export("Rasterizer2D_yClipEnd")
public static int Rasterizer2D_yClipEnd;
@ObfuscatedName("ay")
@Export("Rasterizer2D_xClipStart")
public static int Rasterizer2D_xClipStart;
@ObfuscatedName("ah")
@Export("Rasterizer2D_xClipEnd")
public static int Rasterizer2D_xClipEnd;
@ObfuscatedName("dp")
@Export("Rasterizer2D_replace")
public static void Rasterizer2D_replace(int[] pixels, int width, int height) {
Rasterizer2D_pixels = pixels;
Rasterizer2D_width = width;
Rasterizer2D_height = height;
Rasterizer2D_setClip(0, 0, width, height);
}
@ObfuscatedName("ds")
@Export("Rasterizer2D_resetClip")
public static void Rasterizer2D_resetClip() {
Rasterizer2D_xClipStart = 0;
Rasterizer2D_yClipStart = 0;
Rasterizer2D_xClipEnd = Rasterizer2D_width;
Rasterizer2D_yClipEnd = Rasterizer2D_height;
}
@ObfuscatedName("di")
@Export("Rasterizer2D_setClip")
public static void Rasterizer2D_setClip(int xStart, int yStart, int xEnd, int yEnd) {
if (xStart < 0) {
xStart = 0;
}
if (yStart < 0) {
yStart = 0;
}
if (xEnd > Rasterizer2D_width) {
xEnd = Rasterizer2D_width;
}
if (yEnd > Rasterizer2D_height) {
yEnd = Rasterizer2D_height;
}
Rasterizer2D_xClipStart = xStart;
Rasterizer2D_yClipStart = yStart;
Rasterizer2D_xClipEnd = xEnd;
Rasterizer2D_yClipEnd = yEnd;
}
@ObfuscatedName("dc")
@Export("Rasterizer2D_expandClip")
public static void Rasterizer2D_expandClip(int xStart, int yStart, int xEnd, int yEnd) {
if (Rasterizer2D_xClipStart < xStart) {
Rasterizer2D_xClipStart = xStart;
}
if (Rasterizer2D_yClipStart < yStart) {
Rasterizer2D_yClipStart = yStart;
}
if (Rasterizer2D_xClipEnd > xEnd) {
Rasterizer2D_xClipEnd = xEnd;
}
if (Rasterizer2D_yClipEnd > yEnd) {
Rasterizer2D_yClipEnd = yEnd;
}
}
@ObfuscatedName("dg")
@Export("Rasterizer2D_getClipArray")
public static void Rasterizer2D_getClipArray(int[] dst) {
dst[0] = Rasterizer2D_xClipStart;
dst[1] = Rasterizer2D_yClipStart;
dst[2] = Rasterizer2D_xClipEnd;
dst[3] = Rasterizer2D_yClipEnd;
}
@ObfuscatedName("db")
@Export("Rasterizer2D_setClipArray")
public static void Rasterizer2D_setClipArray(int[] src) {
Rasterizer2D_xClipStart = src[0];
Rasterizer2D_yClipStart = src[1];
Rasterizer2D_xClipEnd = src[2];
Rasterizer2D_yClipEnd = src[3];
}
@ObfuscatedName("dd")
@Export("Rasterizer2D_clear")
public static void Rasterizer2D_clear() {
int var0 = 0;
int var1;
for (var1 = Rasterizer2D_width * Rasterizer2D_height - 7; var0 < var1; Rasterizer2D_pixels[var0++] = 0) {
Rasterizer2D_pixels[var0++] = 0;
Rasterizer2D_pixels[var0++] = 0;
Rasterizer2D_pixels[var0++] = 0;
Rasterizer2D_pixels[var0++] = 0;
Rasterizer2D_pixels[var0++] = 0;
Rasterizer2D_pixels[var0++] = 0;
Rasterizer2D_pixels[var0++] = 0;
}
for (var1 += 7; var0 < var1; Rasterizer2D_pixels[var0++] = 0) {
}
}
@Export("drawCircle")
@ObfuscatedName("dy")
static void drawCircle(int var0, int var1, int var2, int var3) {
if (var2 == 0) {
Rasterizer2D_setPixel(var0, var1, var3);
} else {
if (var2 < 0) {
var2 = -var2;
}
int var4 = var1 - var2;
if (var4 < Rasterizer2D_yClipStart) {
var4 = Rasterizer2D_yClipStart;
}
int var5 = var2 + var1 + 1;
if (var5 > Rasterizer2D_yClipEnd) {
var5 = Rasterizer2D_yClipEnd;
}
int var6 = var4;
int var7 = var2 * var2;
int var8 = 0;
int var9 = var1 - var4;
int var10 = var9 * var9;
int var11 = var10 - var9;
if (var1 > var5) {
var1 = var5;
}
int var12;
int var13;
int var14;
int var15;
while (var6 < var1) {
while (var11 <= var7 || var10 <= var7) {
var10 = var10 + var8 + var8;
var11 += var8++ + var8;
}
var12 = var0 - var8 + 1;
if (var12 < Rasterizer2D_xClipStart) {
var12 = Rasterizer2D_xClipStart;
}
var13 = var0 + var8;
if (var13 > Rasterizer2D_xClipEnd) {
var13 = Rasterizer2D_xClipEnd;
}
var14 = var12 + var6 * Rasterizer2D_width;
for (var15 = var12; var15 < var13; ++var15) {
Rasterizer2D_pixels[var14++] = var3;
}
++var6;
var10 -= var9-- + var9;
var11 -= var9 + var9;
}
var8 = var2;
var9 = var6 - var1;
var11 = var7 + var9 * var9;
var10 = var11 - var2;
for (var11 -= var9; var6 < var5; var10 += var9++ + var9) {
while (var11 > var7 && var10 > var7) {
var11 -= var8-- + var8;
var10 -= var8 + var8;
}
var12 = var0 - var8;
if (var12 < Rasterizer2D_xClipStart) {
var12 = Rasterizer2D_xClipStart;
}
var13 = var0 + var8;
if (var13 > Rasterizer2D_xClipEnd - 1) {
var13 = Rasterizer2D_xClipEnd - 1;
}
var14 = var12 + var6 * Rasterizer2D_width;
for (var15 = var12; var15 <= var13; ++var15) {
Rasterizer2D_pixels[var14++] = var3;
}
++var6;
var11 = var11 + var9 + var9;
}
}
}
@ObfuscatedName("dk")
@Export("Rasterizer2D_drawCircleAlpha")
public static void Rasterizer2D_drawCircleAlpha(int var0, int var1, int var2, int var3, int opacity) {
if (opacity != 0) {
if (opacity == 256) {
drawCircle(var0, var1, var2, var3);
} else {
if (var2 < 0) {
var2 = -var2;
}
int var5 = 256 - opacity;
int var6 = (var3 >> 16 & 255) * opacity;
int var7 = (var3 >> 8 & 255) * opacity;
int var8 = opacity * (var3 & 255);
int var9 = var1 - var2;
if (var9 < Rasterizer2D_yClipStart) {
var9 = Rasterizer2D_yClipStart;
}
int var10 = var2 + var1 + 1;
if (var10 > Rasterizer2D_yClipEnd) {
var10 = Rasterizer2D_yClipEnd;
}
int var11 = var9;
int var12 = var2 * var2;
int var13 = 0;
int var14 = var1 - var9;
int var15 = var14 * var14;
int var16 = var15 - var14;
if (var1 > var10) {
var1 = var10;
}
int var17;
int var18;
int var19;
int var20;
int var21;
int var22;
int var23;
int var24;
while (var11 < var1) {
while (var16 <= var12 || var15 <= var12) {
var15 = var15 + var13 + var13;
var16 += var13++ + var13;
}
var20 = var0 - var13 + 1;
if (var20 < Rasterizer2D_xClipStart) {
var20 = Rasterizer2D_xClipStart;
}
var21 = var0 + var13;
if (var21 > Rasterizer2D_xClipEnd) {
var21 = Rasterizer2D_xClipEnd;
}
var22 = var20 + var11 * Rasterizer2D_width;
for (var23 = var20; var23 < var21; ++var23) {
var17 = var5 * (Rasterizer2D_pixels[var22] >> 16 & 255);
var18 = (Rasterizer2D_pixels[var22] >> 8 & 255) * var5;
var19 = var5 * (Rasterizer2D_pixels[var22] & 255);
var24 = (var8 + var19 >> 8) + (var6 + var17 >> 8 << 16) + (var7 + var18 >> 8 << 8);
Rasterizer2D_pixels[var22++] = var24;
}
++var11;
var15 -= var14-- + var14;
var16 -= var14 + var14;
}
var13 = var2;
var14 = -var14;
var16 = var12 + var14 * var14;
var15 = var16 - var2;
for (var16 -= var14; var11 < var10; var15 += var14++ + var14) {
while (var16 > var12 && var15 > var12) {
var16 -= var13-- + var13;
var15 -= var13 + var13;
}
var20 = var0 - var13;
if (var20 < Rasterizer2D_xClipStart) {
var20 = Rasterizer2D_xClipStart;
}
var21 = var0 + var13;
if (var21 > Rasterizer2D_xClipEnd - 1) {
var21 = Rasterizer2D_xClipEnd - 1;
}
var22 = var20 + var11 * Rasterizer2D_width;
for (var23 = var20; var23 <= var21; ++var23) {
var17 = var5 * (Rasterizer2D_pixels[var22] >> 16 & 255);
var18 = (Rasterizer2D_pixels[var22] >> 8 & 255) * var5;
var19 = var5 * (Rasterizer2D_pixels[var22] & 255);
var24 = (var8 + var19 >> 8) + (var6 + var17 >> 8 << 16) + (var7 + var18 >> 8 << 8);
Rasterizer2D_pixels[var22++] = var24;
}
++var11;
var16 = var16 + var14 + var14;
}
}
}
}
@ObfuscatedName("dl")
@Export("Rasterizer2D_fillRectangleAlpha")
public static void Rasterizer2D_fillRectangleAlpha(int var0, int var1, int var2, int var3, int var4, int var5) {
if (var0 < Rasterizer2D_xClipStart) {
var2 -= Rasterizer2D_xClipStart - var0;
var0 = Rasterizer2D_xClipStart;
}
if (var1 < Rasterizer2D_yClipStart) {
var3 -= Rasterizer2D_yClipStart - var1;
var1 = Rasterizer2D_yClipStart;
}
if (var0 + var2 > Rasterizer2D_xClipEnd) {
var2 = Rasterizer2D_xClipEnd - var0;
}
if (var3 + var1 > Rasterizer2D_yClipEnd) {
var3 = Rasterizer2D_yClipEnd - var1;
}
var4 = (var5 * (var4 & 16711935) >> 8 & 16711935) + (var5 * (var4 & 65280) >> 8 & 65280);
int var6 = 256 - var5;
int var7 = Rasterizer2D_width - var2;
int var8 = var0 + Rasterizer2D_width * var1;
for (int var9 = 0; var9 < var3; ++var9) {
for (int var10 = -var2; var10 < 0; ++var10) {
int var11 = Rasterizer2D_pixels[var8];
var11 = ((var11 & 16711935) * var6 >> 8 & 16711935) + (var6 * (var11 & 65280) >> 8 & 65280);
Rasterizer2D_pixels[var8++] = var11 + var4;
}
var8 += var7;
}
}
@ObfuscatedName("dr")
@Export("Rasterizer2D_fillRectangle")
public static void Rasterizer2D_fillRectangle(int x, int y, int width, int height, int color) {
if (x < Rasterizer2D_xClipStart) {
width -= Rasterizer2D_xClipStart - x;
x = Rasterizer2D_xClipStart;
}
if (y < Rasterizer2D_yClipStart) {
height -= Rasterizer2D_yClipStart - y;
y = Rasterizer2D_yClipStart;
}
if (x + width > Rasterizer2D_xClipEnd) {
width = Rasterizer2D_xClipEnd - x;
}
if (height + y > Rasterizer2D_yClipEnd) {
height = Rasterizer2D_yClipEnd - y;
}
int var5 = Rasterizer2D_width - width;
int var6 = x + Rasterizer2D_width * y;
for (int var7 = -height; var7 < 0; ++var7) {
for (int var8 = -width; var8 < 0; ++var8) {
Rasterizer2D_pixels[var6++] = color;
}
var6 += var5;
}
}
@Export("Rasterizer2D_drawGradient")
@ObfuscatedName("dw")
public static void Rasterizer2D_drawGradient(int x, int y, int width, int height, int rgbTop, int rgbBot) {
if (width > 0 && height > 0) {
int var6 = 0;
int var7 = 65536 / height;
if (x < Rasterizer2D_xClipStart) {
width -= Rasterizer2D_xClipStart - x;
x = Rasterizer2D_xClipStart;
}
if (y < Rasterizer2D_yClipStart) {
var6 += (Rasterizer2D_yClipStart - y) * var7;
height -= Rasterizer2D_yClipStart - y;
y = Rasterizer2D_yClipStart;
}
if (x + width > Rasterizer2D_xClipEnd) {
width = Rasterizer2D_xClipEnd - x;
}
if (height + y > Rasterizer2D_yClipEnd) {
height = Rasterizer2D_yClipEnd - y;
}
int var8 = Rasterizer2D_width - width;
int var9 = x + Rasterizer2D_width * y;
for (int var10 = -height; var10 < 0; ++var10) {
int var11 = 65536 - var6 >> 8;
int var12 = var6 >> 8;
int var13 = (var12 * (rgbBot & 16711935) + var11 * (rgbTop & 16711935) & -16711936) + (var12 * (rgbBot & 65280) + var11 * (rgbTop & 65280) & 16711680) >>> 8;
for (int var14 = -width; var14 < 0; ++var14) {
Rasterizer2D_pixels[var9++] = var13;
}
var9 += var8;
var6 += var7;
}
}
}
@ObfuscatedName("dv")
@Export("drawGradientAlpha")
public static void drawGradientAlpha(int x, int y, int width, int height, int rgbTop, int rgbBot, int alphaTop, int alphaBot) {
if (width > 0 && height > 0) {
int var8 = 0;
int var9 = 65536 / height;
if (x < Rasterizer2D_xClipStart) {
width -= Rasterizer2D_xClipStart - x;
x = Rasterizer2D_xClipStart;
}
if (y < Rasterizer2D_yClipStart) {
var8 += (Rasterizer2D_yClipStart - y) * var9;
height -= Rasterizer2D_yClipStart - y;
y = Rasterizer2D_yClipStart;
}
if (x + width > Rasterizer2D_xClipEnd) {
width = Rasterizer2D_xClipEnd - x;
}
if (height + y > Rasterizer2D_yClipEnd) {
height = Rasterizer2D_yClipEnd - y;
}
int var10 = Rasterizer2D_width - width;
int var11 = x + Rasterizer2D_width * y;
for (int var12 = -height; var12 < 0; ++var12) {
int var13 = 65536 - var8 >> 8;
int var14 = var8 >> 8;
int var15 = (var13 * alphaTop + var14 * alphaBot & 65280) >>> 8;
if (var15 == 0) {
var11 += Rasterizer2D_width;
var8 += var9;
} else {
int var16 = (var14 * (rgbBot & 16711935) + var13 * (rgbTop & 16711935) & -16711936) + (var14 * (rgbBot & 65280) + var13 * (rgbTop & 65280) & 16711680) >>> 8;
int var17 = 255 - var15;
int var18 = ((var16 & 16711935) * var15 >> 8 & 16711935) + (var15 * (var16 & 65280) >> 8 & 65280);
for (int var19 = -width; var19 < 0; ++var19) {
int var20 = Rasterizer2D_pixels[var11];
if (var20 == 0) {
Rasterizer2D_pixels[var11++] = var18;
} else {
var20 = ((var20 & 16711935) * var17 >> 8 & 16711935) + (var17 * (var20 & 65280) >> 8 & 65280);
Rasterizer2D_pixels[var11++] = var18 + var20;
}
}
var11 += var10;
var8 += var9;
}
}
}
}
@ObfuscatedName("do")
@ObfuscatedSignature(
signature = "(IIIIII[BIZ)V",
garbageValue = "1"
)
@Export("raster2d7")
public static void raster2d7(int x, int y, int width, int height, int var4, int var5, byte[] var6, int var7) {
if (x + width >= 0 && height + y >= 0 && x < Rasterizer2D_width && y < Rasterizer2D_height) {
int var8 = 0;
int var9 = 0;
if (x < 0) {
var8 -= x;
width += x;
}
if (y < 0) {
var9 -= y;
height += y;
}
if (x + width > Rasterizer2D_width) {
width = Rasterizer2D_width - x;
}
if (height + y > Rasterizer2D_height) {
height = Rasterizer2D_height - y;
}
int var10 = var6.length / var7;
int var11 = Rasterizer2D_width - width;
int var12 = var4 >>> 24;
int var13 = var5 >>> 24;
int var14;
int var15;
int var16;
int var17;
int var18;
if (var12 == 255 && var13 == 255) {
var14 = x + var8 + (var9 + y) * Rasterizer2D_width;
for (var15 = var9 + y; var15 < height + var9 + y; ++var15) {
for (var16 = x + var8; var16 < x + var8 + width; ++var16) {
var17 = (var15 - y) % var10;
var18 = (var16 - x) % var7;
if (var6[var18 + var17 * var7] != 0) {
Rasterizer2D_pixels[var14++] = var5;
} else {
Rasterizer2D_pixels[var14++] = var4;
}
}
var14 += var11;
}
} else {
var14 = x + var8 + (var9 + y) * Rasterizer2D_width;
for (var15 = var9 + y; var15 < height + var9 + y; ++var15) {
for (var16 = x + var8; var16 < x + var8 + width; ++var16) {
var17 = (var15 - y) % var10;
var18 = (var16 - x) % var7;
int var19 = var4;
if (var6[var18 + var17 * var7] != 0) {
var19 = var5;
}
int var20 = var19 >>> 24;
int var21 = 255 - var20;
int var22 = Rasterizer2D_pixels[var14];
int var23 = ((var19 & 16711935) * var20 + (var22 & 16711935) * var21 & -16711936) + (var20 * (var19 & 65280) + var21 * (var22 & 65280) & 16711680) >> 8;
Rasterizer2D_pixels[var14++] = var23;
}
var14 += var11;
}
}
}
}
@ObfuscatedName("dh")
@Export("Rasterizer2D_drawRectangle")
public static void Rasterizer2D_drawRectangle(int x, int y, int width, int height, int color) {
Rasterizer2D_drawHorizontalLine(x, y, width, color);
Rasterizer2D_drawHorizontalLine(x, height + y - 1, width, color);
Rasterizer2D_drawVerticalLine(x, y, height, color);
Rasterizer2D_drawVerticalLine(x + width - 1, y, height, color);
}
@ObfuscatedName("dz")
@Export("Rasterizer2D_drawRectangleAlpha")
public static void Rasterizer2D_drawRectangleAlpha(int x, int y, int width, int height, int rgb, int alpha) {
Rasterizer2D_drawHorizontalLineAlpha(x, y, width, rgb, alpha);
Rasterizer2D_drawHorizontalLineAlpha(x, height + y - 1, width, rgb, alpha);
if (height >= 3) {
Rasterizer2D_drawVerticalLineAlpha(x, y + 1, height - 2, rgb, alpha);
Rasterizer2D_drawVerticalLineAlpha(x + width - 1, y + 1, height - 2, rgb, alpha);
}
}
@ObfuscatedName("dj")
@Export("Rasterizer2D_drawHorizontalLine")
public static void Rasterizer2D_drawHorizontalLine(int x, int y, int length, int color) {
if (y >= Rasterizer2D_yClipStart && y < Rasterizer2D_yClipEnd) {
if (x < Rasterizer2D_xClipStart) {
length -= Rasterizer2D_xClipStart - x;
x = Rasterizer2D_xClipStart;
}
if (x + length > Rasterizer2D_xClipEnd) {
length = Rasterizer2D_xClipEnd - x;
}
int var4 = x + Rasterizer2D_width * y;
for (int var5 = 0; var5 < length; ++var5) {
Rasterizer2D_pixels[var4 + var5] = color;
}
}
}
@ObfuscatedName("du")
@Export("Rasterizer2D_drawHorizontalLineAlpha")
static void Rasterizer2D_drawHorizontalLineAlpha(int x, int y, int length, int rgb, int alpha) {
if (y >= Rasterizer2D_yClipStart && y < Rasterizer2D_yClipEnd) {
if (x < Rasterizer2D_xClipStart) {
length -= Rasterizer2D_xClipStart - x;
x = Rasterizer2D_xClipStart;
}
if (x + length > Rasterizer2D_xClipEnd) {
length = Rasterizer2D_xClipEnd - x;
}
int var5 = 256 - alpha;
int var6 = (rgb >> 16 & 255) * alpha;
int var7 = (rgb >> 8 & 255) * alpha;
int var8 = alpha * (rgb & 255);
int var9 = x + Rasterizer2D_width * y;
for (int var10 = 0; var10 < length; ++var10) {
int var11 = var5 * (Rasterizer2D_pixels[var9] >> 16 & 255);
int var12 = (Rasterizer2D_pixels[var9] >> 8 & 255) * var5;
int var13 = var5 * (Rasterizer2D_pixels[var9] & 255);
int var14 = (var8 + var13 >> 8) + (var6 + var11 >> 8 << 16) + (var7 + var12 >> 8 << 8);
Rasterizer2D_pixels[var9++] = var14;
}
}
}
@ObfuscatedName("dm")
@Export("Rasterizer2D_drawVerticalLine")
public static void Rasterizer2D_drawVerticalLine(int x, int y, int length, int color) {
if (x >= Rasterizer2D_xClipStart && x < Rasterizer2D_xClipEnd) {
if (y < Rasterizer2D_yClipStart) {
length -= Rasterizer2D_yClipStart - y;
y = Rasterizer2D_yClipStart;
}
if (length + y > Rasterizer2D_yClipEnd) {
length = Rasterizer2D_yClipEnd - y;
}
int var4 = x + Rasterizer2D_width * y;
for (int var5 = 0; var5 < length; ++var5) {
Rasterizer2D_pixels[var4 + var5 * Rasterizer2D_width] = color;
}
}
}
@ObfuscatedName("dq")
@Export("Rasterizer2D_drawVerticalLineAlpha")
static void Rasterizer2D_drawVerticalLineAlpha(int x, int y, int length, int rgb, int alpha) {
if (x >= Rasterizer2D_xClipStart && x < Rasterizer2D_xClipEnd) {
if (y < Rasterizer2D_yClipStart) {
length -= Rasterizer2D_yClipStart - y;
y = Rasterizer2D_yClipStart;
}
if (length + y > Rasterizer2D_yClipEnd) {
length = Rasterizer2D_yClipEnd - y;
}
int var5 = 256 - alpha;
int var6 = (rgb >> 16 & 255) * alpha;
int var7 = (rgb >> 8 & 255) * alpha;
int var8 = alpha * (rgb & 255);
int var9 = x + Rasterizer2D_width * y;
for (int var10 = 0; var10 < length; ++var10) {
int var11 = var5 * (Rasterizer2D_pixels[var9] >> 16 & 255);
int var12 = (Rasterizer2D_pixels[var9] >> 8 & 255) * var5;
int var13 = var5 * (Rasterizer2D_pixels[var9] & 255);
int var14 = (var8 + var13 >> 8) + (var6 + var11 >> 8 << 16) + (var7 + var12 >> 8 << 8);
Rasterizer2D_pixels[var9] = var14;
var9 += Rasterizer2D_width;
}
}
}
@ObfuscatedName("et")
@Export("Rasterizer2D_drawLine")
public static void Rasterizer2D_drawLine(int x0, int y0, int x1, int y1, int color) {
x1 -= x0;
y1 -= y0;
if (y1 == 0) {
if (x1 >= 0) {
Rasterizer2D_drawHorizontalLine(x0, y0, x1 + 1, color);
} else {
Rasterizer2D_drawHorizontalLine(x0 + x1, y0, -x1 + 1, color);
}
} else if (x1 == 0) {
if (y1 >= 0) {
Rasterizer2D_drawVerticalLine(x0, y0, y1 + 1, color);
} else {
Rasterizer2D_drawVerticalLine(x0, y1 + y0, -y1 + 1, color);
}
} else {
if (y1 + x1 < 0) {
x0 += x1;
x1 = -x1;
y0 += y1;
y1 = -y1;
}
int var5;
int var6;
if (x1 > y1) {
y0 <<= 16;
y0 += 32768;
y1 <<= 16;
var5 = (int)Math.floor((double)y1 / (double)x1 + 0.5D);
x1 += x0;
if (x0 < Rasterizer2D_xClipStart) {
y0 += var5 * (Rasterizer2D_xClipStart - x0);
x0 = Rasterizer2D_xClipStart;
}
if (x1 >= Rasterizer2D_xClipEnd) {
x1 = Rasterizer2D_xClipEnd - 1;
}
while (x0 <= x1) {
var6 = y0 >> 16;
if (var6 >= Rasterizer2D_yClipStart && var6 < Rasterizer2D_yClipEnd) {
Rasterizer2D_pixels[x0 + var6 * Rasterizer2D_width] = color;
}
y0 += var5;
++x0;
}
} else {
x0 <<= 16;
x0 += 32768;
x1 <<= 16;
var5 = (int)Math.floor((double)x1 / (double)y1 + 0.5D);
y1 += y0;
if (y0 < Rasterizer2D_yClipStart) {
x0 += (Rasterizer2D_yClipStart - y0) * var5;
y0 = Rasterizer2D_yClipStart;
}
if (y1 >= Rasterizer2D_yClipEnd) {
y1 = Rasterizer2D_yClipEnd - 1;
}
while (y0 <= y1) {
var6 = x0 >> 16;
if (var6 >= Rasterizer2D_xClipStart && var6 < Rasterizer2D_xClipEnd) {
Rasterizer2D_pixels[var6 + Rasterizer2D_width * y0] = color;
}
x0 += var5;
++y0;
}
}
}
}
@ObfuscatedName("eb")
@Export("Rasterizer2D_setPixel")
static void Rasterizer2D_setPixel(int x, int y, int color) {
if (x >= Rasterizer2D_xClipStart && y >= Rasterizer2D_yClipStart && x < Rasterizer2D_xClipEnd && y < Rasterizer2D_yClipEnd) {
Rasterizer2D_pixels[x + Rasterizer2D_width * y] = color;
}
}
@ObfuscatedName("ek")
public static void method5948(int var0, int var1, int var2, int[] var3, int[] var4) {
int var5 = var0 + Rasterizer2D_width * var1;
for (var1 = 0; var1 < var3.length; ++var1) {
int var6 = var5 + var3[var1];
for (var0 = -var4[var1]; var0 < 0; ++var0) {
Rasterizer2D_pixels[var6++] = var2;
}
var5 += Rasterizer2D_width;
}
}
static {
Rasterizer2D_yClipStart = 0;
Rasterizer2D_yClipEnd = 0;
Rasterizer2D_xClipStart = 0;
Rasterizer2D_xClipEnd = 0;
}
}