Color 是 Magick++ 中的基本顏色類別。它是一個簡單的容器類別,用於儲存像素的紅、綠、藍和 Alpha 值,這些值會縮放到適合 ImageMagick 的 Quantum 大小。通常使用者會實例化從 Color 衍生的類別,這些類別支援符合應用程式需求的色彩模型。Color 類別可以直接從 SVG 風格的色彩字串建構。
QuantumDepth 值的影響
QuantumDepth |
Quantum 類型定義 |
Quantum 大小 |
8 |
unsigned char |
32 位元 |
16 |
unsigned short |
64 位元 |
32 |
unsigned int |
128 位元 |
Color 基礎類別不打算直接使用。通常,使用者會建構衍生類別或從此類別繼承。色彩參數必須縮放到適合 Quantum 大小。Color 類別包含指向 Quantum 的指標,該指標可以由 Color 類別分配,也可以引用影像中的現有像素。
建構類別的另一種方法是透過與 SVG 相容的色彩規範字串(例如 Color("red") 或 Color ("#FF0000"))。由於可以從字串建構類別,因此可以在接受 Color 參考的方法中傳遞方便的字串來代替明確的 Color 物件。為了方便使用者介面以及將設定儲存到文字檔中,也可以將 Color 轉換為 std::string。
Color 衍生類別
以紅色、綠色和藍色指定為比率 (0 到 1) 的 RGB 顏色表示法 | |
以比率 (0 到 1) 指定的灰階 sRGB 顏色(紅色、綠色和藍色比例相等)表示法 | |
黑白顏色(真/假)的表示法 | |
YUV 色彩空間中顏色的表示法 |
sRGB 顏色的表示法。所有顏色參數的有效範圍為 0.0 - 1.0。
class ColorRGB : public Color { public: ColorRGB ( double red_, double green_, double blue_ ); ColorRGB ( void ); ColorRGB ( const Color & color_ ); /* virtual */ ~ColorRGB ( void ); void red ( double red_ ); double red ( void ) const; void green ( double green_ ); double green ( void ) const; void blue ( double blue_ ); double blue ( void ) const; // Assignment operator from base class ColorRGB& operator= ( const Color& color_ ); };
灰階顏色(線性色彩空間中)的表示法。灰階僅僅是 RGB 中紅色、綠色和藍色比例相等的顏色。所有雙精度浮點數參數的有效範圍為 0.0 - 1.0。
class ColorGray : public Color { public: ColorGray ( double shade_ ); ColorGray ( void ); ColorGray ( const Color & color_ ); /* virtual */ ~ColorGray (); void shade ( double shade_ ); double shade ( void ) const; // Assignment operator from base class ColorGray& operator= ( const Color& color_ ); };
黑白像素(RGB 色彩空間中)的表示法。顏色參數限制為「假」(黑色像素)和「真」(白色像素)。
class ColorMono : public Color { public: ColorMono ( bool mono_ ); ColorMono ( void ); ColorMono ( const Color & color_ ); /* virtual */ ~ColorMono (); void mono ( bool mono_ ); bool mono ( void ) const; // Assignment operator from base class ColorMono& operator= ( const Color& color_ ); };
色彩在色相/飽和度/亮度 (HSL) 色彩空間中的表示法。
class ColorHSL : public Color { public: ColorHSL ( double hue_, double saturation_, double luminosity_ ); ColorHSL ( void ); ColorHSL ( const Color & color_ ); /* virtual */ ~ColorHSL ( ); void hue ( double hue_ ); double hue ( void ) const; void saturation ( double saturation_ ); double saturation ( void ) const; void luminosity ( double luminosity_ ); double luminosity ( void ) const; // Assignment operator from base class ColorHSL& operator= ( const Color& color_ ); };
YUV 色彩空間中顏色的表示法(用於編碼電視傳輸的顏色)。
參數範圍
class ColorYUV : public Color { public: ColorYUV ( double y_, double u_, double v_ ); ColorYUV ( void ); ColorYUV ( const Color & color_ ); /* virtual */ ~ColorYUV ( void ); void u ( double u_ ); double u ( void ) const; void v ( double v_ ); double v ( void ) const; void y ( double y_ ); double y ( void ) const; // Assignment operator from base class ColorYUV& operator= ( const Color& color_ ); };