File indexing completed on 2025-01-18 10:01:17
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #if !defined (Magick_Color_header)
0011 #define Magick_Color_header
0012
0013 #include "Magick++/Include.h"
0014 #include <string>
0015
0016 namespace Magick
0017 {
0018 class MagickPPExport Color;
0019
0020
0021 MagickPPExport int operator ==
0022 (const Magick::Color& left_,const Magick::Color& right_);
0023 MagickPPExport int operator !=
0024 (const Magick::Color& left_,const Magick::Color& right_);
0025 MagickPPExport int operator >
0026 (const Magick::Color& left_,const Magick::Color& right_);
0027 MagickPPExport int operator <
0028 (const Magick::Color& left_,const Magick::Color& right_);
0029 MagickPPExport int operator >=
0030 (const Magick::Color& left_,const Magick::Color& right_);
0031 MagickPPExport int operator <=
0032 (const Magick::Color& left_,const Magick::Color& right_);
0033
0034
0035
0036 class MagickPPExport Color
0037 {
0038 public:
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061 enum PixelType
0062 {
0063 CMYKPixel,
0064 CMYKAPixel,
0065 RGBPixel,
0066 RGBAPixel
0067 };
0068
0069
0070 Color(void);
0071
0072
0073 Color(const Magick::Quantum red_,const Magick::Quantum green_,
0074 const Magick::Quantum blue_);
0075
0076
0077 Color(const Magick::Quantum red_,const Magick::Quantum green_,
0078 const Magick::Quantum blue_,const Magick::Quantum alpha_);
0079
0080
0081 Color(const Magick::Quantum cyan_,const Magick::Quantum magenta_,
0082 const Magick::Quantum yellow_,const Magick::Quantum black_,
0083 const Magick::Quantum alpha_);
0084
0085
0086 Color(const char *color_);
0087
0088
0089 Color(const Color &color_);
0090
0091
0092 Color(const PixelInfo &color_);
0093
0094
0095 Color(const std::string &color_);
0096
0097
0098 virtual ~Color(void);
0099
0100
0101 Color& operator=(const Color &color_);
0102
0103
0104 const Color& operator=(const char *color);
0105
0106
0107 const Color& operator=(const PixelInfo &color_);
0108
0109
0110 const Color& operator=(const std::string &color);
0111
0112
0113 operator PixelInfo() const;
0114
0115
0116 operator std::string() const;
0117
0118
0119
0120 bool isFuzzyEquivalent(const Color &color_,const double fuzz_) const;
0121
0122
0123 void isValid(const bool valid_);
0124 bool isValid(void) const;
0125
0126
0127 Magick::Color::PixelType pixelType(void) const;
0128
0129
0130 void quantumAlpha(const Quantum alpha_);
0131 Quantum quantumAlpha(void) const;
0132
0133
0134 void quantumBlack(const Quantum black_);
0135 Quantum quantumBlack(void) const;
0136
0137
0138 void quantumBlue(const Quantum blue_);
0139 Quantum quantumBlue(void) const;
0140
0141
0142 void quantumGreen(const Quantum green_);
0143 Quantum quantumGreen(void) const;
0144
0145
0146 void quantumRed(const Quantum red_);
0147 Quantum quantumRed(void) const;
0148
0149 protected:
0150
0151
0152
0153 Color(PixelInfo *rep_,PixelType pixelType_);
0154
0155
0156 Color(PixelType pixelType_);
0157
0158
0159
0160 void pixel(PixelInfo *rep_,PixelType pixelType_);
0161
0162
0163 static Quantum scaleDoubleToQuantum(const double double_);
0164
0165
0166 static double scaleQuantumToDouble(const Quantum quantum_);
0167
0168
0169
0170
0171
0172
0173
0174 PixelInfo *_pixel;
0175
0176 private:
0177
0178 bool _isValid;
0179 bool _pixelOwn;
0180 PixelType _pixelType;
0181
0182
0183 void initPixel();
0184
0185 void setAlpha(const Magick::Quantum alpha_);
0186
0187
0188 void setPixelType(const PixelInfo &color_);
0189 };
0190
0191 class MagickPPExport ColorCMYK: public Color
0192 {
0193 public:
0194
0195
0196 ColorCMYK(void);
0197
0198
0199 ColorCMYK(const Color &color_);
0200
0201
0202 ColorCMYK(const double cyan_,const double magenta_,const double yellow_,
0203 const double black_);
0204
0205
0206 ColorCMYK(const double cyan_,const double magenta_,const double yellow_,
0207 const double black_,const double alpha_);
0208
0209
0210 ~ColorCMYK(void);
0211
0212
0213 ColorCMYK& operator=(const Color& color_);
0214
0215
0216 void alpha(const double alpha_);
0217 double alpha(void) const;
0218
0219
0220 void black(const double black_);
0221 double black(void) const;
0222
0223
0224 void cyan(const double cyan_);
0225 double cyan(void) const;
0226
0227
0228 void magenta(const double magenta_);
0229 double magenta(void) const;
0230
0231
0232 void yellow(const double yellow_);
0233 double yellow(void) const;
0234
0235 protected:
0236
0237
0238 ColorCMYK(PixelInfo *rep_,PixelType pixelType_);
0239 };
0240
0241
0242
0243
0244
0245
0246 class MagickPPExport ColorGray: public Color
0247 {
0248 public:
0249
0250
0251 ColorGray(void);
0252
0253
0254 ColorGray(const Color &color_);
0255
0256
0257 ColorGray(const double shade_);
0258
0259
0260 ~ColorGray();
0261
0262
0263 void shade(const double shade_);
0264 double shade(void) const;
0265
0266
0267 ColorGray& operator=(const Color& color_);
0268
0269 protected:
0270
0271
0272 ColorGray(PixelInfo *rep_,PixelType pixelType_);
0273 };
0274
0275
0276
0277
0278
0279 class MagickPPExport ColorHSL: public Color
0280 {
0281 public:
0282
0283
0284 ColorHSL(void);
0285
0286
0287 ColorHSL(const Color &color_);
0288
0289
0290 ColorHSL(const double hue_,const double saturation_,
0291 const double lightness_);
0292
0293
0294 ~ColorHSL();
0295
0296
0297 ColorHSL& operator=(const Color& color_);
0298
0299
0300 void hue(const double hue_);
0301 double hue(void) const;
0302
0303
0304 void lightness(const double lightness_);
0305 double lightness(void) const;
0306
0307
0308 void saturation(const double saturation_);
0309 double saturation(void) const;
0310
0311 protected:
0312
0313
0314 ColorHSL(PixelInfo *rep_,PixelType pixelType_);
0315 };
0316
0317
0318
0319
0320
0321
0322 class MagickPPExport ColorMono: public Color
0323 {
0324 public:
0325
0326
0327 ColorMono(void);
0328
0329
0330 ColorMono(const bool mono_);
0331
0332
0333 ColorMono(const Color &color_);
0334
0335
0336 ~ColorMono();
0337
0338
0339 ColorMono& operator=(const Color& color_);
0340
0341
0342 void mono(const bool mono_);
0343 bool mono(void) const;
0344
0345 protected:
0346
0347
0348 ColorMono(PixelInfo* rep_,PixelType pixelType_);
0349 };
0350
0351 class MagickPPExport ColorRGB: public Color
0352 {
0353 public:
0354
0355
0356 ColorRGB(void);
0357
0358
0359 ColorRGB(const Color &color_);
0360
0361
0362 ColorRGB(const double red_,const double green_,const double blue_);
0363
0364
0365 ColorRGB(const double red_,const double green_,const double blue_,
0366 const double alpha_);
0367
0368
0369 ~ColorRGB(void);
0370
0371
0372 ColorRGB& operator=(const Color& color_);
0373
0374
0375 void alpha(const double alpha_);
0376 double alpha(void) const;
0377
0378
0379 void blue(const double blue_);
0380 double blue(void) const;
0381
0382
0383 void green(const double green_);
0384 double green(void) const;
0385
0386
0387 void red(const double red_);
0388 double red(void) const;
0389
0390 protected:
0391
0392
0393 ColorRGB(PixelInfo *rep_,PixelType pixelType_);
0394 };
0395
0396
0397
0398
0399
0400
0401
0402
0403 class MagickPPExport ColorYUV: public Color
0404 {
0405 public:
0406
0407
0408 ColorYUV(void);
0409
0410
0411 ColorYUV(const Color &color_);
0412
0413
0414 ColorYUV(const double y_,const double u_,const double v_);
0415
0416
0417 ~ColorYUV(void);
0418
0419
0420 ColorYUV& operator=(const Color& color_);
0421
0422
0423 void u(const double u_);
0424 double u(void) const;
0425
0426
0427 void v(const double v_);
0428 double v(void) const;
0429
0430
0431 void y(const double y_);
0432 double y(void) const;
0433
0434 protected:
0435
0436
0437 ColorYUV(PixelInfo *rep_,PixelType pixelType_);
0438
0439 private:
0440
0441 void convert(const double y_,const double u_,const double v_);
0442
0443 };
0444 }
0445
0446 #endif