int main(int ac,char *av[]) { png.Decode(av[1]); png.Flip(); // Need to flip upside down because glDrawPixels draws y=0 bottom. auxInitDisplayMode(AUX_DOUBLE|AUX_RGB); auxInitPosition(0,0,png.wid+2,png.hei+2); auxInitWindow(NULL); winWid=png.wid; winHei=png.hei; glViewport(0,0,png.wid,png.hei); int viewport[4]; glGetIntegerv(GL_VIEWPORT,viewport); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0,(double)viewport[2],(double)viewport[3],0.0,-1.0,1.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glDisable(GL_DEPTH_TEST); auxReshapeFunc(ReshapeFunc); auxMainLoop(DisplayFunc); return 0; }
void makegif::copyRGBA(YsRawPngDecoder &image1,YsRawPngDecoder &image2,TextString &str) { dat=new unsigned char[48*picHeight*picWidth]; unsigned char *dat2; dat2=new unsigned char[4*image1.wid*image1.hei]; int position1[4]; int position2[4]; position1[0]=image1HeadLTx; position1[1]=image1HeadLTy; position1[2]=image1HeadRBx; position1[3]=image1HeadRBy; position2[0]=headLTx; position2[1]=headLTy; position2[2]=headRBx; position2[3]=headRBy; for(int y=0; y<image1.hei; ++y) { for(int x=0; x<image1.wid; ++x) { unsigned char *pix1=image1.rgba+(image1.wid*y+x)*4; dat2[(image1.wid*y+x)*4]=pix1[0]; dat2[(image1.wid*y+x)*4+1]=pix1[1]; dat2[(image1.wid*y+x)*4+2]=pix1[2]; dat2[(image1.wid*y+x)*4+3]=pix1[3]; pix1=NULL; delete pix1; } } for(int i=0; i<12; i++) { choose(image2,str); warpImage(image1,image2,position1,position2,0.0); image2.Flip(); for(int y=0; y<picHeight; ++y) { for(int x=0; x<picWidth; ++x) { unsigned char *pix=image2.rgba+(picWidth*y+x)*4; dat[4*picWidth*picHeight*timeCounter+(picWidth*y+x)*4]=pix[0]; dat[4*picWidth*picHeight*timeCounter+(picWidth*y+x)*4+1]=pix[1]; dat[4*picWidth*picHeight*timeCounter+(picWidth*y+x)*4+2]=pix[2]; dat[4*picWidth*picHeight*timeCounter+(picWidth*y+x)*4+3]=pix[3]; } } for(int y=0; y<image1.hei; ++y) { for(int x=0; x<image1.wid; ++x) { unsigned char *pix3=dat2+(image1.wid*y+x)*4; image1.rgba[(image1.wid*y+x)*4]=pix3[0]; image1.rgba[(image1.wid*y+x)*4+1]=pix3[1]; image1.rgba[(image1.wid*y+x)*4+2]=pix3[2]; image1.rgba[(image1.wid*y+x)*4+3]=pix3[3]; pix3=NULL; delete pix3; } } image2.Flip(); timerFired(); } delete [] dat2; }