| // This may look like C code, but it is really -*- C++ -*- |
| // |
| // Copyright Bob Friesenhahn, 1999, 2000, 2003 |
| // Copyright Dirk Lemstra 2014 |
| // |
| // Test STL readImages and writeImages functions and test |
| // image format when reading/writing. |
| // |
| |
| #include <Magick++.h> |
| #include <string> |
| #include <iostream> |
| #include <list> |
| #include <vector> |
| |
| using namespace std; |
| |
| using namespace Magick; |
| |
| int main(int,char ** argv) |
| { |
| int |
| failures=0; |
| |
| string |
| srcdir(""); |
| |
| |
| // Initialize ImageMagick install location for Windows |
| InitializeMagick(*argv); |
| |
| try |
| { |
| if (getenv("SRCDIR") != 0) |
| srcdir=getenv("SRCDIR"); |
| |
| // |
| // Test readImages and writeImages |
| // |
| list<Image> first; |
| readImages(&first,srcdir + "test_image_anim.miff"); |
| |
| if (first.size() != 6) |
| { |
| ++failures; |
| cout << "Line: " << __LINE__ |
| << " Read images failed, number of frames is " |
| << first.size() |
| << " rather than 6 as expected." << endl; |
| } |
| |
| writeImages(first.begin(),first.end(),"testmagick_anim_out.miff"); |
| |
| list<Image> second; |
| readImages(&second,"testmagick_anim_out.miff"); |
| |
| list<Image>::iterator firstIter = first.begin(); |
| list<Image>::iterator secondIter = second.begin(); |
| while (firstIter != first.end() && secondIter != second.end()) |
| { |
| if (firstIter->scene() != secondIter->scene()) |
| { |
| ++failures; |
| cout << "Line: " << __LINE__ |
| << " Image scene: " << secondIter->scene() |
| << " is not equal to original " |
| << firstIter->scene() |
| << endl; |
| } |
| |
| if (firstIter->rows() != secondIter->rows()) |
| { |
| ++failures; |
| cout << "Line: " << __LINE__ |
| << " Image rows " << secondIter->rows() |
| << " are not equal to original " |
| << firstIter->rows() |
| << endl; |
| } |
| |
| if (firstIter->columns() != secondIter->columns()) |
| { |
| ++failures; |
| cout << "Line: " << __LINE__ |
| << " Image columns " << secondIter->columns() |
| << " are not equal to original " |
| << firstIter->rows() |
| << endl; |
| } |
| |
| firstIter++; |
| secondIter++; |
| } |
| |
| Image third(*first.begin()); |
| third.write("testmagick_anim_out"); |
| |
| Image fourth; |
| fourth.read("testmagick_anim_out"); |
| |
| if (fourth.magick() != "MIFF") |
| { |
| ++failures; |
| cout << "Line: " << __LINE__ |
| << " Image magick: " << fourth.magick() |
| << " is not equal to MIFF" |
| << endl; |
| } |
| |
| third.write("testmagick_anim_out.ico"); |
| fourth.read("testmagick_anim_out.ico"); |
| |
| if (fourth.magick() != "ICO") |
| { |
| ++failures; |
| cout << "Line: " << __LINE__ |
| << " Image magick: " << fourth.magick() |
| << " is not equal to ICO" |
| << endl; |
| } |
| |
| third.magick("BMP"); |
| third.write("testmagick_anim_out.ico"); |
| fourth.read("testmagick_anim_out.ico"); |
| |
| if (fourth.magick() != "BMP") |
| { |
| ++failures; |
| cout << "Line: " << __LINE__ |
| << " Image magick: " << fourth.magick() |
| << " is not equal to BMP" |
| << endl; |
| } |
| |
| third.write("PDB:testmagick_anim_out.ico"); |
| fourth.read("testmagick_anim_out.ico"); |
| |
| if (fourth.magick() != "PDB") |
| { |
| ++failures; |
| cout << "Line: " << __LINE__ |
| << " Image magick: " << fourth.magick() |
| << " is not equal to PDB" |
| << endl; |
| } |
| |
| third.magick(""); |
| third.write("testmagick_anim_out.ico"); |
| fourth.read("testmagick_anim_out.ico"); |
| |
| if (fourth.magick() != "ICO") |
| { |
| ++failures; |
| cout << "Line: " << __LINE__ |
| << " Image magick: " << fourth.magick() |
| << " is not equal to ICO" |
| << endl; |
| } |
| } |
| catch(Exception &error_) |
| { |
| cout << "Caught exception: " << error_.what() << endl; |
| return 1; |
| } |
| catch(exception &error_) |
| { |
| cout << "Caught exception: " << error_.what() << endl; |
| return 1; |
| } |
| |
| if (failures) |
| { |
| cout << failures << " failures" << endl; |
| return 1; |
| } |
| |
| return 0; |
| } |
| |