GdiPlusColor.h
资源名称:GDIUSE.rar [点击查看]
上传用户:jinlangri
上传日期:2022-07-17
资源大小:10774k
文件大小:4k
源码类别:
GDI/图象编程
开发平台:
Visual C++
- /**************************************************************************
- *
- * Copyright (c) 1998-2000, Microsoft Corp. All Rights Reserved.
- *
- * Module Name:
- *
- * GdiplusColor.h
- *
- * Abstract:
- *
- * Represents a GDI+ color.
- *
- **************************************************************************/
- #ifndef _GDIPLUSCOLOR_H
- #define _GDIPLUSCOLOR_H
- //----------------------------------------------------------------------------
- // Color mode
- //----------------------------------------------------------------------------
- enum ColorMode
- {
- ColorModeARGB32 = 0,
- ColorModeARGB64 = 1
- };
- //----------------------------------------------------------------------------
- // Color Channel flags
- //----------------------------------------------------------------------------
- enum ColorChannelFlags
- {
- ColorChannelFlagsC = 0,
- ColorChannelFlagsM,
- ColorChannelFlagsY,
- ColorChannelFlagsK,
- ColorChannelFlagsLast
- };
- //----------------------------------------------------------------------------
- // Color
- //----------------------------------------------------------------------------
- class Color
- {
- public:
- Color()
- {
- Argb = (ARGB)Color::Black;
- }
- // Construct an opaque Color object with
- // the specified R, G, B values.
- Color(IN BYTE r,
- IN BYTE g,
- IN BYTE b)
- {
- Argb = MakeARGB(255, r, g, b);
- }
- // Construct a Color object with
- // the specified A, R, G, B values.
- //
- // NOTE: R, G, B color values are not premultiplied.
- Color(IN BYTE a,
- IN BYTE r,
- IN BYTE g,
- IN BYTE b)
- {
- Argb = MakeARGB(a, r, g, b);
- }
- // Construct a Color object with
- // the specified ARGB values.
- //
- // NOTE: R, G, B color components are not premultiplied.
- Color(IN ARGB argb)
- {
- Argb = argb;
- }
- // Extract A, R, G, B components
- BYTE GetAlpha() const
- {
- return (BYTE) (Argb >> AlphaShift);
- }
- BYTE GetA() const
- {
- return GetAlpha();
- }
- BYTE GetRed() const
- {
- return (BYTE) (Argb >> RedShift);
- }
- BYTE GetR() const
- {
- return GetRed();
- }
- BYTE GetGreen() const
- {
- return (BYTE) (Argb >> GreenShift);
- }
- BYTE GetG() const
- {
- return GetGreen();
- }
- BYTE GetBlue() const
- {
- return (BYTE) (Argb >> BlueShift);
- }
- BYTE GetB() const
- {
- return GetBlue();
- }
- // Retrieve ARGB values
- ARGB GetValue() const
- {
- return Argb;
- }
- VOID SetValue(IN ARGB argb)
- {
- Argb = argb;
- }
- VOID SetFromCOLORREF(IN COLORREF rgb)
- {
- Argb = MakeARGB(255, GetRValue(rgb), GetGValue(rgb), GetBValue(rgb));
- }
- COLORREF ToCOLORREF() const
- {
- return RGB(GetRed(), GetGreen(), GetBlue());
- }
- public:
- // Standard color constants
- enum
- {
- Black = 0xff000000,
- Silver = 0xffc0c0c0,
- Gray = 0xff808080,
- White = 0xffffffff,
- Maroon = 0xff800000,
- Red = 0xffff0000,
- Purple = 0xff800080,
- Fuchsia = 0xffff00ff,
- Green = 0xff008000,
- Lime = 0xff00ff00,
- Olive = 0xff808000,
- Yellow = 0xffffff00,
- Navy = 0xff000080,
- Blue = 0xff0000ff,
- Teal = 0xff008080,
- Aqua = 0xff00ffff
- };
- // Shift count and bit mask for A, R, G, B components
- enum
- {
- AlphaShift = 24,
- RedShift = 16,
- GreenShift = 8,
- BlueShift = 0
- };
- enum
- {
- AlphaMask = 0xff000000,
- RedMask = 0x00ff0000,
- GreenMask = 0x0000ff00,
- BlueMask = 0x000000ff
- };
- // Assemble A, R, G, B values into a 32-bit integer
- static ARGB MakeARGB(IN BYTE a,
- IN BYTE r,
- IN BYTE g,
- IN BYTE b)
- {
- return (((ARGB) (b) << BlueShift) |
- ((ARGB) (g) << GreenShift) |
- ((ARGB) (r) << RedShift) |
- ((ARGB) (a) << AlphaShift));
- }
- protected:
- ARGB Argb;
- };
- #endif