📄 rgbtools.java
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3)
// Source File Name: RGBTools.java
package se.southend.drops.pixelfilter;
public class RGBTools
{
public RGBTools()
{
}
public static final int blend16(int bg, int fg, int alpha)
{
if(alpha > 8)
{
alpha = 16 - alpha;
int temp = bg;
bg = fg;
fg = temp;
}
switch(alpha)
{
case 0: // '\0'
return bg;
case 1: // '\001'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 2 & 0x3f3f3f3f) + (bg >> 3 & 0x1f1f1f1f) + (bg >> 4 & 0xf0f0f0f) + (fg >> 4 & 0xf0f0f0f);
case 2: // '\002'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 2 & 0x3f3f3f3f) + (bg >> 3 & 0x1f1f1f1f) + (fg >> 3 & 0x1f1f1f1f);
case 3: // '\003'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 2 & 0x3f3f3f3f) + (bg >> 4 & 0xf0f0f0f) + (fg >> 3 & 0x1f1f1f1f) + (fg >> 4 & 0xf0f0f0f);
case 4: // '\004'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 2 & 0x3f3f3f3f) + (fg >> 2 & 0x3f3f3f3f);
case 5: // '\005'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 3 & 0x1f1f1f1f) + (bg >> 4 & 0xf0f0f0f) + (fg >> 2 & 0x3f3f3f3f) + (fg >> 4 & 0xf0f0f0f);
case 6: // '\006'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 3 & 0x1f1f1f1f) + (fg >> 2 & 0x3f3f3f3f) + (fg >> 3 & 0x1f1f1f1f);
case 7: // '\007'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 4 & 0xf0f0f0f) + (fg >> 2 & 0x3f3f3f3f) + (fg >> 3 & 0x1f1f1f1f) + (fg >> 4 & 0xf0f0f0f);
}
return (bg >> 1 & 0x7f7f7f7f) + (fg >> 1 & 0x7f7f7f7f);
}
public static final int blend32(int bg, int fg, int alpha)
{
if(alpha > 16)
{
alpha = 32 - alpha;
int temp = fg;
fg = bg;
bg = temp;
}
switch(alpha)
{
case 0: // '\0'
return bg;
case 1: // '\001'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 2 & 0x3f3f3f3f) + (bg >> 3 & 0x1f1f1f1f) + (bg >> 4 & 0xf0f0f0f) + (bg >> 5 & 0x7070707) + (fg >> 5 & 0x7070707);
case 2: // '\002'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 2 & 0x3f3f3f3f) + (bg >> 3 & 0x1f1f1f1f) + (bg >> 4 & 0xf0f0f0f) + (fg >> 4 & 0xf0f0f0f);
case 3: // '\003'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 2 & 0x3f3f3f3f) + (bg >> 3 & 0x1f1f1f1f) + (bg >> 5 & 0x7070707) + (fg >> 4 & 0xf0f0f0f) + (fg >> 5 & 0x7070707);
case 4: // '\004'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 2 & 0x3f3f3f3f) + (bg >> 3 & 0x1f1f1f1f) + (fg >> 3 & 0x1f1f1f1f);
case 5: // '\005'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 2 & 0x3f3f3f3f) + (bg >> 4 & 0xf0f0f0f) + (bg >> 5 & 0x7070707) + (fg >> 3 & 0x1f1f1f1f) + (fg >> 5 & 0x7070707);
case 6: // '\006'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 2 & 0x3f3f3f3f) + (bg >> 4 & 0xf0f0f0f) + (fg >> 3 & 0x1f1f1f1f) + (fg >> 4 & 0xf0f0f0f);
case 7: // '\007'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 2 & 0x3f3f3f3f) + (bg >> 5 & 0x7070707) + (fg >> 3 & 0x1f1f1f1f) + (fg >> 4 & 0xf0f0f0f) + (fg >> 5 & 0x7070707);
case 8: // '\b'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 2 & 0x3f3f3f3f) + (fg >> 2 & 0x3f3f3f3f);
case 9: // '\t'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 3 & 0x1f1f1f1f) + (bg >> 4 & 0xf0f0f0f) + (bg >> 5 & 0x7070707) + (fg >> 2 & 0x3f3f3f3f) + (fg >> 5 & 0x7070707);
case 10: // '\n'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 3 & 0x1f1f1f1f) + (bg >> 4 & 0xf0f0f0f) + (fg >> 2 & 0x3f3f3f3f) + (fg >> 4 & 0xf0f0f0f);
case 11: // '\013'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 3 & 0x1f1f1f1f) + (bg >> 5 & 0x7070707) + (fg >> 2 & 0x3f3f3f3f) + (fg >> 4 & 0xf0f0f0f) + (fg >> 5 & 0x7070707);
case 12: // '\f'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 3 & 0x1f1f1f1f) + (fg >> 2 & 0x3f3f3f3f) + (fg >> 3 & 0x1f1f1f1f);
case 13: // '\r'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 4 & 0xf0f0f0f) + (bg >> 5 & 0x7070707) + (fg >> 2 & 0x3f3f3f3f) + (fg >> 3 & 0x1f1f1f1f) + (fg >> 5 & 0x7070707);
case 14: // '\016'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 4 & 0xf0f0f0f) + (fg >> 2 & 0x3f3f3f3f) + (fg >> 3 & 0x1f1f1f1f) + (fg >> 4 & 0xf0f0f0f);
case 15: // '\017'
return (bg >> 1 & 0x7f7f7f7f) + (bg >> 5 & 0x7070707) + (fg >> 2 & 0x3f3f3f3f) + (fg >> 3 & 0x1f1f1f1f) + (fg >> 4 & 0xf0f0f0f) + (fg >> 5 & 0x7070707);
}
return (bg >> 1 & 0x7f7f7f7f) + (fg >> 1 & 0x7f7f7f7f);
}
public static final int blend(int bg, int fg)
{
int fgalpha = fg >>> 24;
int bgalpha = bg >>> 24;
if(bgalpha == 0 || fgalpha == 255)
return fg;
if(fgalpha == 0)
return bg;
int total = fgalpha + bgalpha;
if(total > 255)
total = 255;
int fgpart = (fgalpha << 8) / (total + 1);
int bgpart = 0xff ^ fgpart;
int a = 255 - ((0xff ^ fgalpha) * (0xff ^ bgalpha) >>> 8);
int r = (bg >>> 16 & 0xff) * bgpart + (fg >>> 16 & 0xff) * fgpart >>> 8;
int g = (bg >>> 8 & 0xff) * bgpart + (fg >>> 8 & 0xff) * fgpart >>> 8;
int b = (bg & 0xff) * bgpart + (fg & 0xff) * fgpart >>> 8;
return a << 24 | r << 16 | g << 8 | b;
}
public static final int blendRGB(int bg, int fg, int alpha)
{
int remainder = 256 - alpha;
int r = (bg >>> 16 & 0xff) * remainder + (fg >>> 16 & 0xff) * alpha >>> 8;
int g = (bg >>> 8 & 0xff) * remainder + (fg >>> 8 & 0xff) * alpha >>> 8;
int b = (bg & 0xff) * remainder + (fg & 0xff) * alpha >>> 8;
return r << 16 | g << 8 | b;
}
public static final int blendARGB(int bg, int fg, int alpha)
{
int remainder = 256 - alpha;
int a = (bg >>> 24) * remainder + (fg >>> 24) * alpha >>> 8;
int r = (bg >>> 16 & 0xff) * remainder + (fg >>> 16 & 0xff) * alpha >>> 8;
int g = (bg >>> 8 & 0xff) * remainder + (fg >>> 8 & 0xff) * alpha >>> 8;
int b = (bg & 0xff) * remainder + (fg & 0xff) * alpha >>> 8;
return a << 24 | r << 16 | g << 8 | b;
}
public static final int dither444(int rgb, int x, int y)
{
switch((x & 0x3) + ((y & 0x3) << 2) & 0x15)
{
case 0: // '\0'
rgb -= 0xbfa0c;
break;
case 4: // '\004'
rgb += 0x7fc08;
break;
case 5: // '\005'
rgb -= 0x5fd06;
break;
}
return (rgb & 0xf00000) >>> 12 | (rgb & 0xf000) >>> 8 | (rgb & 0xf0) >>> 4;
}
public static final int dither565(int rgb, int x, int y)
{
switch((x & 0x3) + ((y & 0x3) << 2) & 0x15)
{
case 0: // '\0'
rgb -= 0x5fd06;
break;
case 4: // '\004'
rgb += 0x3fe04;
break;
case 5: // '\005'
rgb -= 0x2ff03;
break;
}
return rgb;
}
public static final int dither666(int rgb, int x, int y)
{
switch((x & 0x3) + ((y & 0x3) << 2) & 0x15)
{
case 0: // '\0'
rgb -= 0x2fe03;
break;
case 4: // '\004'
rgb += 0x1ff02;
break;
case 5: // '\005'
rgb -= 0x10001;
break;
}
return rgb;
}
private static final int D2 = 0x7f7f7f7f;
private static final int D4 = 0x3f3f3f3f;
private static final int D8 = 0x1f1f1f1f;
private static final int D16 = 0xf0f0f0f;
private static final int D32 = 0x7070707;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -