// // Program to demonstrate the visual effect of APT compression. // // Usage: apttest inpic // // John Robinson // 2004 #include "picture.h" #include "usage.h" int filesize(const char *filename) { // Returns size in bytes of given file ifstream f(filename,ios::binary); f.seekg(0,istream::end); int retval = f.tellg(); f.close(); return retval; } int main(int argc, char *argv[]) { usage("apttest inpic"); colour_picture in(argv[1]); colour_picture out(in); int origbits = filesize(argv[1]) * 8; const int numpels(in.nrows()*in.ncols()); char caption[256]; sprintf(caption,"Input at %f bits per pel",(double)origbits/numpels); in.show(caption); int quality = 85; parampic qualitycontrol(0,100,85,"Quality parameter"); in.aptwrite("temppic",quality); out.read("temppic"); int compbits = filesize("temppic") * 8; sprintf(caption,"Output at %f bits per pel",(double)compbits/numpels); out.show(caption); while(!in.closerequested() && !out.closerequested()) { // Let the user adjust the quality parameter and see the result double dq; if (!qualitycontrol.X(dq)) continue; quality = (int) dq; in.aptwrite("temppic",quality); out.read("temppic"); compbits = filesize("temppic") * 8; sprintf(caption,"Output at %f bits per pel",(double)compbits/numpels); out.reshow(caption); } return 1; }