1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2002, 2003
//
// Test STL montageImages function
//
#include <Magick++.h>
#include <string>
#include <iostream>
#include <list>
#include <vector>
using namespace std;
using namespace Magick;
int main( int /*argc*/, char ** /*argv*/)
{
// Initialize ImageMagick install location for Windows
// InitializeMagick(*argv);
InitializeMagick("");
int failures=0;
try {
string srcdir("");
if(getenv("SRCDIR") != 0)
srcdir = getenv("SRCDIR");
//
// Test montageImages
//
list<Image> imageList;
readImages( &imageList, srcdir + "test_image_anim.miff" );
vector<Image> montage;
MontageFramed montageOpts;
// Default montage
montageImages( &montage, imageList.begin(), imageList.end(), montageOpts );
{
Geometry targetGeometry(128, 126 );
if ( montage[0].montageGeometry() != targetGeometry )
{
++failures;
cout << "Line: " << __LINE__
<< " Montage geometry ("
<< string(montage[0].montageGeometry())
<< ") is incorrect (expected "
<< string(targetGeometry)
<< ")"
<< endl;
}
}
if ( montage[0].columns() != 768 || montage[0].rows() != 504 )
{
++failures;
cout << "Line: " << __LINE__
<< " Montage columns/rows ("
<< montage[0].columns() << "x"
<< montage[0].rows()
<< ") incorrect. (expected 768x504)" << endl;
}
// Montage with options set
montage.clear();
montageOpts.borderColor( "green" );
montageOpts.borderWidth( 1 );
montageOpts.compose( OverCompositeOp );
montageOpts.fileName( "Montage" );
montageOpts.frameGeometry( "6x6+3+3" );
montageOpts.geometry("50x50+2+2>");
montageOpts.gravity( CenterGravity );
montageOpts.penColor( "yellow" );
montageOpts.shadow( true );
montageOpts.texture( "granite:" );
montageOpts.tile("2x1");
montageImages( &montage, imageList.begin(), imageList.end(), montageOpts );
if ( montage.size() != 3 )
{
++failures;
cout << "Line: " << __LINE__
<< " Montage images failed, number of montage frames is "
<< montage.size()
<< " rather than 3 as expected." << endl;
}
{
Geometry targetGeometry( 66, 70 );
if ( montage[0].montageGeometry() != targetGeometry )
{
++failures;
cout << "Line: " << __LINE__
<< " Montage geometry ("
<< string(montage[0].montageGeometry())
<< ") is incorrect (expected "
<< string(targetGeometry)
<< ")."
<< endl;
}
}
if ( montage[0].columns() != 136 || montage[0].rows() != 70 )
{
++failures;
cout << "Line: " << __LINE__
<< " Montage columns/rows ("
<< montage[0].columns() << "x"
<< montage[0].rows()
<< ") incorrect. (expected 136x70)" << 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;
}
|