#include "snapshot.h" #include #include #include #include #include #include using namespace std; string numero4(int num) { string res=""; if (num<9999) { ostringstream o; o << num; res=o.str(); for(int i=0;i<4-o.str().size();i++) { res="0"+res; } } return res; } SnapShot::SnapShot() { pixel.resize(0); width=0;height=0; num=0; numgif=0; ilInit(); ilGenImages(1,&il_id); ilBindImage(il_id); requested=false; } SnapShot::SnapShot(int w,int h) { pixel.resize(3*w*h); width=w;height=h; num=0; numgif=0; ilInit(); ilGenImages(1,&il_id); ilBindImage(il_id); requested=false; } SnapShot::~SnapShot() { ilDeleteImages(1,&il_id); } void SnapShot::resize(int w,int h) { width=w;height=h; pixel.resize(w*h*3); } void SnapShot::shot() { string nom; bool find_num=false; ifstream f; while (!find_num) { nom="./snap/snapshot"+numero4(num)+".jpg"; f.open(nom.c_str()); if (f.is_open()) { num++;f.close(); } else find_num=true; } glReadPixels(0,0,width,height,GL_RGB,GL_UNSIGNED_BYTE, &(pixel.front())); ilTexImage(width,height,1,3,IL_RGB,IL_UNSIGNED_BYTE,&(pixel.front())); ilSaveImage(nom.c_str()); cout << "Image " << nom << " is saved" << endl; } void SnapShot::shotIfRequested() { if (requested) { shot(); requested=false; } } void SnapShot::request() { requested=true; }