7#if !defined (Magick_Color_header)
8#define Magick_Color_header
10#include "Magick++/Include.h"
15 class MagickPPExport
Color;
18 MagickPPExport
int operator ==
19 (
const Magick::Color &left_,
const Magick::Color &right_);
20 MagickPPExport
int operator !=
21 (
const Magick::Color &left_,
const Magick::Color &right_);
22 MagickPPExport
int operator >
23 (
const Magick::Color &left_,
const Magick::Color &right_);
24 MagickPPExport
int operator <
25 (
const Magick::Color &left_,
const Magick::Color &right_);
26 MagickPPExport
int operator >=
27 (
const Magick::Color &left_,
const Magick::Color &right_);
28 MagickPPExport
int operator <=
29 (
const Magick::Color &left_,
const Magick::Color &right_);
32 class MagickPPExport Color
40 Color(Magick::Quantum red_,Magick::Quantum green_,Magick::Quantum blue_);
43 Color(Magick::Quantum red_,Magick::Quantum green_,Magick::Quantum blue_,Magick::Quantum alpha_);
46 Color(
const char *x11color_);
49 Color(
const Color &color_);
52 Color(
const PixelPacket &color_);
55 Color(
const std::string &x11color_);
61 Color& operator=(
const Color& color_);
64 const Color& operator=(
const char *x11color);
67 const Color& operator=(
const std::string &x11color_);
70 const Color& operator=(
const PixelPacket &color_);
73 operator PixelPacket()
const;
76 operator std::string()
const;
80 void alpha(
double alpha_);
81 double alpha(
void)
const;
84 void alphaQuantum(Quantum alpha_);
85 Quantum alphaQuantum(
void)
const;
88 void blueQuantum(Quantum blue_);
89 Quantum blueQuantum (
void)
const;
92 void greenQuantum(Quantum green_);
93 Quantum greenQuantum(
void)
const;
96 void isValid(
bool valid_);
97 bool isValid(
void)
const;
100 void redQuantum(Quantum red_);
101 Quantum redQuantum (
void)
const;
108 double intensity(
void)
const
110 return (0.299*(_pixel->red)+0.587*(_pixel->green)+0.114*(_pixel->blue));
114 static Quantum scaleDoubleToQuantum(
const double double_)
116 return (
static_cast<Magick::Quantum
>(double_*QuantumRange));
120#if (MAGICKCORE_QUANTUM_DEPTH < 32) && (MAGICKCORE_SIZEOF_FLOAT_T != MAGICKCORE_SIZEOF_DOUBLE || !defined(MAGICKCORE_HDRI_SUPPORT))
121 static double scaleQuantumToDouble(
const Quantum quantum_)
123 return (
static_cast<double>(quantum_)/QuantumRange);
126 static double scaleQuantumToDouble(
const double quantum_)
128 return (quantum_/QuantumRange);
158 Color(PixelPacket *rep_,PixelType pixelType_);
162 void pixel(PixelPacket *rep_,PixelType pixelType_);
176 PixelType _pixelType;
187 class MagickPPExport ColorGray :
public Color
195 ColorGray(
const Color & color_);
198 ColorGray(
double shade_);
203 void shade(
double shade_);
204 double shade(
void)
const;
207 ColorGray& operator=(
const Color& color_);
212 ColorGray(PixelPacket *rep_,PixelType pixelType_);
218 class MagickPPExport ColorHSL:
public Color
226 ColorHSL(
const Color &color_);
229 ColorHSL(
double hue_,
double saturation_,
double luminosity_);
235 ColorHSL& operator=(
const Color& color_);
238 void hue(
double hue_);
239 double hue(
void)
const;
242 void luminosity(
double luminosity_);
243 double luminosity(
void)
const;
246 void saturation(
double saturation_);
247 double saturation(
void)
const;
252 ColorHSL(PixelPacket *rep_,PixelType pixelType_);
260 class MagickPPExport ColorMono :
public Color
268 ColorMono(
bool mono_);
271 ColorMono(
const Color & color_);
277 ColorMono& operator=(
const Color& color_);
280 void mono(
bool mono_);
281 bool mono(
void)
const;
285 ColorMono(PixelPacket *rep_,PixelType pixelType_);
292 class MagickPPExport ColorRGB:
public Color
300 ColorRGB(
const Color &color_);
303 ColorRGB(
double red_,
double green_,
double blue_);
309 ColorRGB& operator=(
const Color& color_);
312 void blue(
double blue_);
313 double blue(
void)
const;
316 void green(
double green_);
317 double green(
void)
const;
320 void red(
double red_);
321 double red(
void)
const;
326 ColorRGB(PixelPacket *rep_,PixelType pixelType_);
336 class MagickPPExport ColorYUV:
public Color
344 ColorYUV(
const Color &color_);
347 ColorYUV(
double y_,
double u_,
double v_);
353 ColorYUV& operator=(
const Color& color_);
357 double u(
void)
const;
361 double v(
void)
const;
365 double y(
void)
const;
370 ColorYUV(PixelPacket *rep_,PixelType pixelType_);
382inline void Magick::Color::alpha(
double alpha_)
384 alphaQuantum(scaleDoubleToQuantum(alpha_));
386inline double Magick::Color::alpha(
void)
const
388 return scaleQuantumToDouble(alphaQuantum());
391inline void Magick::Color::alphaQuantum(Magick::Quantum alpha_)
393 _pixel->opacity=alpha_;
397inline Magick::Quantum Magick::Color::alphaQuantum(
void)
const
399 return _pixel->opacity;
402inline void Magick::Color::blueQuantum(Magick::Quantum blue_)
408inline Magick::Quantum Magick::Color::blueQuantum(
void)
const
413inline void Magick::Color::greenQuantum(Magick::Quantum green_)
415 _pixel->green=green_;
419inline Magick::Quantum Magick::Color::greenQuantum(
void)
const
421 return _pixel->green;
424inline void Magick::Color::redQuantum(Magick::Quantum red_)
430inline Magick::Quantum Magick::Color::redQuantum(
void)
const
435inline void Magick::Color::initPixel()
440 _pixel->opacity=TransparentOpacity;
443inline Magick::Color::operator MagickCore::PixelPacket()
const
451inline Magick::ColorGray::ColorGray(Magick::PixelPacket *rep_,
452 Magick::Color::PixelType pixelType_)
453:
Color(rep_,pixelType_)
460inline Magick::ColorHSL::ColorHSL(Magick::PixelPacket *rep_,
461 Magick::Color::PixelType pixelType_)
462:
Color(rep_,pixelType_)
469inline Magick::ColorMono::ColorMono(Magick::PixelPacket *rep_,
470 Magick::Color::PixelType pixelType_)
471 :
Color(rep_,pixelType_)
478inline Magick::ColorRGB::ColorRGB(Magick::PixelPacket *rep_,
479 Magick::Color::PixelType pixelType_)
480 :
Color(rep_,pixelType_)
484inline void Magick::ColorRGB::blue(
double blue_)
486 blueQuantum(scaleDoubleToQuantum(blue_));
489inline double Magick::ColorRGB::blue(
void)
const
491 return scaleQuantumToDouble(blueQuantum());
494inline void Magick::ColorRGB::green(
double green_)
496 greenQuantum(scaleDoubleToQuantum(green_));
499inline double Magick::ColorRGB::green(
void)
const
501 return scaleQuantumToDouble(greenQuantum());
504inline void Magick::ColorRGB::red(
double red_)
506 redQuantum(scaleDoubleToQuantum(red_));
509inline double Magick::ColorRGB::red(
void)
const
511 return scaleQuantumToDouble(redQuantum());
518inline Magick::ColorYUV::ColorYUV(Magick::PixelPacket *rep_,
519 Magick::Color::PixelType pixelType_)
520 :
Color(rep_,pixelType_)