Beispiel #1
0
static void drawSprite16_fromData15(agsurface_t *dib, cgdata *cg, int dx, int dy, int w, int h) {
    int  x, y;
    WORD pic16;
    WORD *pic_src   = (WORD *)(cg->pic + cg->data_offset);
    BYTE *pic_dst   = GETOFFSET_PIXEL(dib, dx, dy);
    BYTE *pic_dst_a = GETOFFSET_ALPHA(dib, dx, dy);
    WORD *yl, pic15;
    BYTE *ya;

    for (y = 0; y < h; y++) {
        yl = (WORD *)(pic_dst   + y * dib->bytes_per_line);
        ya = (BYTE *)(pic_dst_a + y * dib->width);
        for (x = 0; x < w; x++) {
            pic16 = *pic_src;
            pic15 = PIX15(RGB_PIXR16(pic16),RGB_PIXG16(pic16),RGB_PIXB16(pic16));
            if (*ya == 255) {
                *yl = pic15;
            } else if (*ya > 0) {
                *yl= ALPHABLEND15(pic15, *yl, *ya);
            }
            yl ++;
            ya++;
            pic_src++;
        }
        pic_src += (cg->width - w);
    }
}
Beispiel #2
0
static void image_copyAreaSP16_alphaBlend15(agsurface_t *dib, BYTE *sdata, BYTE *ddata, int w, int h, int lv) {
	int x, y;
	WORD *yls, *yld;
	
	for (y = 0; y < h; y++) {
		yls = (WORD *)(sdata + y * dib->bytes_per_line);
		yld = (WORD *)(ddata + y * dib->bytes_per_line);
		for (x = 0; x < w; x++) {
			*yld = ALPHABLEND15(*yls, *yld, lv);
			yls++; yld++;
		}
	}
}
Beispiel #3
0
static void image_wrapColor15(agsurface_t *dib, BYTE *dst, int w, int h, int col, int rate) {
    int x, y;
    WORD *yls, yld;

    yld = trans_index2pixel(dib->depth, col);

    for (y = 0; y < h; y++) {
        yls = (WORD *)(dst + y * dib->bytes_per_line);
        for (x = 0; x < w; x++) {
            *yls = ALPHABLEND15(yld, *yls, rate);
            yls++;
        }
    }
}
Beispiel #4
0
static void image_copyAreaSP16_shadow15(agsurface_t *dib, BYTE *sdata, BYTE *ddata, int w, int h, BYTE *adata, int lv) {
	int x, y;
	WORD *yls, *yld;
	BYTE *yla;

	for (y = 0; y < h; y++) {
		yls = (WORD *)(sdata + y * dib->bytes_per_line);
		yld = (WORD *)(ddata + y * dib->bytes_per_line);
		yla = (BYTE *)(adata + y * dib->width);
		for (x = 0; x < w; x++) {
			*yld = ALPHABLEND15(*yls, *yld, (*yla * lv) / 255);
			yls++; yld++; yla++;
		}
	}
}
Beispiel #5
0
void image_draw_antialiased_pattern15(agsurface_t *dib, agsurface_t *pattern, int dx, int dy, int dw, int dh, int col) {
	int   x, y;
	BYTE *dst = GETOFFSET_PIXEL(dib, dx, dy);
	BYTE *src = (BYTE *)pattern->pixel;
	WORD *yd;
	BYTE *ys;
	
	for (y = 0; y < dh; y++) {
		ys = (BYTE *)(src + y * pattern->bytes_per_line);
		yd = (WORD *)(dst + y * dib->bytes_per_line);
		for (x = 0; x < dw; x++) {
			if (*ys != 0) {
				*yd = ALPHABLEND15(col, *yd, (BYTE)*ys);
			}
			ys++; yd++;
		}
	}
}