static void windowDisplay(void) { glClear(GL_COLOR_BUFFER_BIT); glRasterPos2i(0,0); glPixelStorei(GL_UNPACK_ALIGNMENT,1); glDrawPixels(img.width(), img.height(), GL_RGB, GL_UNSIGNED_BYTE, img.raw_data()); glFlush(); }
void animation() { char filename[1024]; int totalPic = 120; float blkSize = 2; int pid = 0; RGBImage sImg = imgs[0]; RGBImage fadeInImg = halftone(imgs[0], 2); RGBImage fadeOutImg = halftone(imgs[1], 2); float fadeInL = 10.0f, fadeOutL = 10.0f; for(int i=0;i<fadeInL;i++,pid++) { float ratio = 1.0 - i / (fadeInL-1.0); sImg = ImageUtils::blend(imgs[0], fadeInImg, ratio); img = ImageUtils::flip(sImg); sprintf(filename, "img%d.png", pid); saveImage(sImg, filename); glClear(GL_COLOR_BUFFER_BIT); glRasterPos2i(0,0); glPixelStorei(GL_UNPACK_ALIGNMENT,1); glDrawPixels(img.width(), img.height(), GL_RGB, GL_UNSIGNED_BYTE, img.raw_data()); glFlush(); } float transitionL = 10.0f; int tstartId = (totalPic-transitionL)/2; float ratio=1.0; for(int i=0;i<totalPic/2;i++, pid++) { blkSize += 2; currentBlkSize = Utils::clamp<int>(blkSize, 2, 1280); ratio = 1.0 - Utils::clamp((pid - tstartId) / transitionL, 0.0f, 1.0f); sImg = ImageUtils::blend(imgs[0], imgs[1], ratio); RGBImage hImg = halftone(sImg, currentBlkSize); img = ImageUtils::flip(hImg); sprintf(filename, "img%d.png", pid); saveImage(hImg, filename); glClear(GL_COLOR_BUFFER_BIT); glRasterPos2i(0,0); glPixelStorei(GL_UNPACK_ALIGNMENT,1); glDrawPixels(img.width(), img.height(), GL_RGB, GL_UNSIGNED_BYTE, img.raw_data()); glFlush(); } for(int i=0;i<totalPic/2;i++, pid++) { blkSize -= 2; currentBlkSize = Utils::clamp<int>(blkSize, 2, 1280); ratio = 1.0 - Utils::clamp((pid - tstartId) / transitionL, 0.0f, 1.0f); sImg = ImageUtils::blend(imgs[0], imgs[1], ratio); RGBImage hImg = halftone(sImg, currentBlkSize); img = ImageUtils::flip(hImg); sprintf(filename, "img%d.png", pid); saveImage(hImg, filename); glClear(GL_COLOR_BUFFER_BIT); glRasterPos2i(0,0); glPixelStorei(GL_UNPACK_ALIGNMENT,1); glDrawPixels(img.width(), img.height(), GL_RGB, GL_UNSIGNED_BYTE, img.raw_data()); glFlush(); } for(int i=0;i<fadeOutL;i++,pid++) { float ratio = i / (fadeOutL-1.0); sImg = ImageUtils::blend(imgs[1], fadeOutImg, ratio); img = ImageUtils::flip(sImg); sprintf(filename, "img%d.png", pid); saveImage(sImg, filename); glClear(GL_COLOR_BUFFER_BIT); glRasterPos2i(0,0); glPixelStorei(GL_UNPACK_ALIGNMENT,1); glDrawPixels(img.width(), img.height(), GL_RGB, GL_UNSIGNED_BYTE, img.raw_data()); glFlush(); } }