Subversion Repositories freemyipod

Rev

Rev 493 | Rev 504 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 493 Rev 498
Line 52... Line 52...
52
        in1 += (in1stride - width) * 3;
52
        in1 += (in1stride - width) * 3;
53
        in2 += (in2stride - width) * 4;
53
        in2 += (in2stride - width) * 4;
54
        out += (outstride - width) * 3;
54
        out += (outstride - width) * 3;
55
    }
55
    }
56
}
56
}
-
 
57
 
-
 
58
void blendcolor(int width, int height, uint32_t color,
-
 
59
                void* outbuf, int outx, int outy, int outstride,
-
 
60
                void* inbuf, int inx, int iny, int instride)
-
 
61
{
-
 
62
    char* in = (char*)inbuf + (inx + iny * instride) * 3;
-
 
63
    char* out = (char*)outbuf + (outx + outy * outstride) * 3;
-
 
64
    int r = (color >> 0) & 0xff;
-
 
65
    int g = (color >> 8) & 0xff;
-
 
66
    int b = (color >> 16) & 0xff;
-
 
67
    int a = (color >> 24) & 0xff;
-
 
68
    int x, y;
-
 
69
    for (y = 0; y < height; y++)
-
 
70
    {
-
 
71
        for (x = 0; x < width; x++)
-
 
72
        {
-
 
73
            *out++ = (a * r + (255 - a) * *in++) >> 8;
-
 
74
            *out++ = (a * g + (255 - a) * *in++) >> 8;
-
 
75
            *out++ = (a * b + (255 - a) * *in++) >> 8;
-
 
76
        }
-
 
77
        in += (instride - width) * 3;
-
 
78
        out += (outstride - width) * 3;
-
 
79
    }
-
 
80
}
-
 
81
 
-
 
82
void mattecolor(int width, int height, uint32_t color,
-
 
83
                void* outbuf, int outx, int outy, int outstride,
-
 
84
                void* inbuf, int inx, int iny, int instride)
-
 
85
{
-
 
86
    char* in = (char*)inbuf + (inx + iny * instride) * 4;
-
 
87
    char* out = (char*)outbuf + (outx + outy * outstride) * 3;
-
 
88
    int mr = (color >> 0) & 0xff;
-
 
89
    int mg = (color >> 8) & 0xff;
-
 
90
    int mb = (color >> 16) & 0xff;
-
 
91
    int x, y;
-
 
92
    for (y = 0; y < height; y++)
-
 
93
    {
-
 
94
        for (x = 0; x < width; x++)
-
 
95
        {
-
 
96
            int r = *in++;
-
 
97
            int g = *in++;
-
 
98
            int b = *in++;
-
 
99
            int a = *in++;
-
 
100
            *out++ = (a * r + (255 - a) * mr) >> 8;
-
 
101
            *out++ = (a * g + (255 - a) * mg) >> 8;
-
 
102
            *out++ = (a * b + (255 - a) * mb) >> 8;
-
 
103
        }
-
 
104
        in += (instride - width) * 4;
-
 
105
        out += (outstride - width) * 3;
-
 
106
    }
-
 
107
}