⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rgbtools.java

📁 Sony Ericsson手机上的Facebook客户端全套代码
💻 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 + -