// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved
//
// Contents: Drawing effect that holds a single color.
//
//----------------------------------------------------------------------------
#pragma once
class DECLSPEC_UUID("1CD7C44F-526B-492a-B780-EF9C4159B653") DrawingEffect
: public ComBase<QiList<IUnknown> >
{
public:
DrawingEffect(UINT32 color)
: color_(color)
{ }
inline UINT32 GetColor() const throw()
{
// Returns the BGRA value for D2D.
return color_;
}
inline COLORREF GetColorRef() const throw()
{
// Returns color as COLORREF.
return GetColorRef(color_);
}
static inline COLORREF GetColorRef(UINT32 bgra) throw()
{
// Swaps color order (bgra <-> rgba) from D2D/GDI+'s to a COLORREF.
// This also leaves the top byte 0, since alpha is ignored anyway.
return RGB(GetBValue(bgra), GetGValue(bgra), GetRValue(bgra));
}
static inline COLORREF GetBgra(COLORREF rgb) throw()
{
// Swaps color order (bgra <-> rgba) from COLORREF to D2D/GDI+'s.
// Sets alpha to full opacity.
return RGB(GetBValue(rgb), GetGValue(rgb), GetRValue(rgb)) | 0xFF000000;
}
protected:
// The color is stored as BGRA, with blue in the lowest byte,
// then green, red, alpha; which is what D2D, GDI+, and GDI DIBs use.
// GDI's COLORREF stores red as the lowest byte.
UINT32 color_;
};