1//
2// Magick++ demo to generate a simple text button
3//
4// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2003
5//
6
7#include <Magick++.h>
8#include <string>
9#include <iostream>
10
11using namespace std;
12
13using namespace Magick;
14
15int main( int /*argc*/, char ** argv)
16{
17
18  // Initialize ImageMagick install location for Windows
19  InitializeMagick(*argv);
20
21  try {
22
23    string srcdir("");
24    if(getenv("SRCDIR") != 0)
25      srcdir = getenv("SRCDIR");
26
27    //
28    // Options
29    //
30
31    string backGround = "xc:#CCCCCC"; // A solid color
32
33    // Color to use for decorative border
34    Color border = "#D4DCF3";
35
36    // Button size
37    string buttonSize = "120x20";
38
39    // Button background texture
40    string buttonTexture = "granite:";
41
42    // Button text
43    string text = "Button Text";
44
45    // Button text color
46    string textColor = "red";
47
48    // Font point size
49    int fontPointSize = 16;
50
51    //
52    // Magick++ operations
53    //
54
55    Image button;
56
57    // Set button size
58    button.size( buttonSize );
59
60    // Read background image
61    button.read( backGround );
62
63    // Set background to buttonTexture
64    Image backgroundTexture( buttonTexture );
65    button.texture( backgroundTexture );
66
67    // Add some text
68    button.fillColor( textColor );
69    button.fontPointsize( fontPointSize );
70    button.annotate( text, CenterGravity );
71
72    // Add a decorative frame
73    button.borderColor( border );
74    button.frame( "6x6+3+3" );
75
76    button.depth( 8 );
77
78    // Quantize to desired colors
79    // button.quantizeTreeDepth(8);
80    button.quantizeDither(false);
81    button.quantizeColors(64);
82    button.quantize();
83
84    // Save to file
85    cout << "Writing to \"button_out.miff\" ..." << endl;
86    button.compressType( RLECompression );
87    button.write("button_out.miff");
88
89    // Display on screen
90    // button.display();
91
92  }
93  catch( exception &error_ )
94    {
95      cout << "Caught exception: " << error_.what() << endl;
96      return 1;
97    }
98
99  return 0;
100}
101