Magick++
7.1.2-29
Convert, Edit, Or Compose Bitmap Images
Toggle main menu visibility
Loading...
Searching...
No Matches
color.cpp
1
// This may look like C code, but it is really -*- C++ -*-
2
//
3
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
4
//
5
// Test Magick::Color classes
6
//
7
8
#include <Magick++.h>
9
#include <string>
10
#include <iostream>
11
12
using namespace
std;
13
14
using namespace
Magick;
15
16
int
main(
int
/*argc*/
,
char
**argv)
17
{
18
19
// Initialize ImageMagick install location for Windows
20
MagickPlusPlusGenesis
genesis(*argv);
21
22
int
failures=0;
23
24
try
{
25
26
//
27
// Verify conversion from named colors as well as ColorRGB constructor
28
//
29
30
{
31
struct
colorStr
32
{
33
const
char
* color;
34
double
red;
35
double
green;
36
double
blue;
37
};
38
39
// Convert ratios from rgb.txt via value/255
40
struct
colorStr colorMap [] =
41
{
42
{
"red"
, 1,0,0 },
43
{
"lime"
, 0,1,0 },
44
{
"blue"
, 0,0,1 },
45
{
"black"
, 0,0,0 },
46
{
"white"
, 1,1,1 },
47
{
"cyan"
, 0,1,1 },
48
{
"magenta"
, 1,0,1 },
49
{
"yellow"
, 1,1,0 },
50
{ NULL, 0,0,0 }
51
};
52
53
for
(
int
i = 0; colorMap[i].color != NULL; i++ )
54
{
55
{
56
Color
color( colorMap[i].color );
57
ColorRGB
colorMatch( colorMap[i].red,
58
colorMap[i].green,
59
colorMap[i].blue );
60
if
( color != colorMatch )
61
{
62
++failures;
63
cout <<
"Line: "
<< __LINE__ <<
" Color(\""
64
<< colorMap[i].color <<
"\") is "
65
<< string(color)
66
<<
" rather than "
67
<< string(colorMatch)
68
<< endl;
69
// printf ("Green: %10.16f\n", color.green());
70
}
71
}
72
}
73
}
74
75
// Test conversion to/from X11-style color specifications
76
{
77
const
char
* colorStrings[] =
78
{
79
"#ABC"
,
80
"#AABBCC"
,
81
"#AAAABBBBCCCC"
,
82
NULL
83
};
84
85
#if MAGICKCORE_QUANTUM_DEPTH == 8
86
string
expectedString =
"#AABBCC"
;
87
#elif MAGICKCORE_QUANTUM_DEPTH == 16
88
string
expectedString =
"#AAAABBBBCCCC"
;
89
#elif MAGICKCORE_QUANTUM_DEPTH == 32
90
string
expectedString =
"#AAAAAAAABBBBBBBBCCCCCCCC"
;
91
#elif MAGICKCORE_QUANTUM_DEPTH == 64
92
string
expectedString =
"#AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCC"
;
93
#else
94
# error Quantum depth not supported!
95
#endif
96
97
for
(
int
i = 0; colorStrings[i] != NULL; ++i )
98
{
99
if
(
string
(
Color
(colorStrings[i])) != expectedString )
100
{
101
++failures;
102
cout <<
"Line: "
<< __LINE__
103
<<
" Conversion from "
<< colorStrings[i]
104
<<
" is "
105
<< string(
Color
(colorStrings[i])) <<
" rather than "
106
<< expectedString
107
<< endl;
108
}
109
}
110
}
111
112
// Test ColorGray
113
{
114
double
resolution = 1.0/QuantumRange;
115
if
( resolution < 0.0000001 )
116
resolution = 0.0000001;
117
double
max_error = resolution + MagickEpsilon;
118
119
for
(
double
value = 0; value < 1.0 + MagickEpsilon; value += resolution )
120
{
121
ColorGray
gray(value);
122
if
( gray.shade() < value - max_error || gray.shade() > value + max_error )
123
{
124
++failures;
125
cout <<
"Line: "
<< __LINE__
126
<<
" shade is "
127
<< gray.shade()
128
<<
" rather than nominal "
129
<< value
130
<< endl;
131
}
132
}
133
}
134
135
}
136
catch
(
Exception
&error_ )
137
{
138
cout <<
"Caught exception: "
<< error_.what() << endl;
139
return
1;
140
}
141
catch
( exception &error_ )
142
{
143
cout <<
"Caught exception: "
<< error_.what() << endl;
144
return
1;
145
}
146
147
if
( failures )
148
{
149
cout << failures <<
" failures"
<< endl;
150
return
1;
151
}
152
153
return
0;
154
}
Magick::ColorGray
Definition
Color.h:247
Magick::ColorRGB
Definition
Color.h:352
Magick::Color
Definition
Color.h:37
Magick::Exception
Definition
Exception.h:25
Magick::MagickPlusPlusGenesis
Definition
Functions.h:44
Magick++
tests
color.cpp
Generated by
1.17.0