예제 #1
0
파일: palette.cpp 프로젝트: KranX/Vangers
int PaletteTransform::quant(void)
{
    if(!inProgress) return 0;

    uchar* pf = from + 3*n0;
    uchar* pt = to + 3*n0;
    char* pd = delta + 3*n0;
    int max = 3*sz;
    int log = 0;
    while(max--) {
        if(*pd) {
            log = 1;
            if(abs((int)*pf - (int)*pt) <= abs(*pd))
                *pf = *pt, *pd = 0;
            else
                *pf += *pd;
        }
        pf++;
        pt++;
        pd++;
    }
    if(!log) {
        inProgress = 0;
        if(event) *event = 0;
    }
    XGR_SetPal(from,n0,sz);

    if(DIBLog) XGR_Flush(0,0,XGR_MAXX,XGR_MAXY);
    return 1;
}
예제 #2
0
파일: palette.cpp 프로젝트: KranX/Vangers
void PalEvidence(char* tpal,char* pal)
{
    const int SPEED = 4;
    int log = 1,i;
    int t;
    while(log) {
        t = CLOCK();
        while(CLOCK() < t + 1);
        log = 0;
        for(i = 0; i < 256; i++) {
            tpal[3*i + 0] += SPEED;
            tpal[3*i + 1] += SPEED;
            tpal[3*i + 2] += SPEED;
            if(tpal[3*i + 0] >= pal[3*i + 0]) tpal[3*i + 0] = pal[3*i + 0];
            else log = 1;
            if(tpal[3*i + 1] >= pal[3*i + 1]) tpal[3*i + 1] = pal[3*i + 1];
            else log = 1;
            if(tpal[3*i + 2] >= pal[3*i + 2]) tpal[3*i + 2] = pal[3*i + 2];
            else log = 1;
        }
        XGR_SetPal(tpal,0,255);
        XGR_Flush(0,0,XGR_MAXX,XGR_MAXY);
        xtClearMessageQueue();
    }
}
예제 #3
0
파일: palette.cpp 프로젝트: KranX/Vangers
void PalSlake(char* pal)
{
    const int SPEED = 4;

    int log = 1,i;
    int t;
    while(log) {
        t = CLOCK();
        while(CLOCK() < t + 1);
        log = 0;
        for(i = 0; i < 256; i++) {
            if(pal[3*i + 0] <= SPEED) pal[3*i + 0] = 0;
            else pal[3*i + 0] -= SPEED, log = 1;
            if(pal[3*i + 1] <= SPEED) pal[3*i + 1] = 0;
            else pal[3*i + 1] -= SPEED, log = 1;
            if(pal[3*i + 2] <= SPEED) pal[3*i + 2] = 0;
            else pal[3*i + 2] -= SPEED, log = 1;
        }
        XGR_SetPal(pal,0,255);
        XGR_Flush(0,0,XGR_MAXX,XGR_MAXY);
        xtClearMessageQueue();
    }
}
예제 #4
0
파일: i_chat.cpp 프로젝트: AMDmi3/Vangers
void iChatScreenObject::flush(void)
{
	XGR_Flush(PosX,PosY,SizeX,SizeY);
}