You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
180 lines
4.1 KiB
180 lines
4.1 KiB
// 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;
|
|
}
|
|
|