DISTRHO Plugin Framework
dgl
Color.hpp
1
/*
2
* DISTRHO Plugin Framework (DPF)
3
* Copyright (C) 2012-2021 Filipe Coelho <falktx@falktx.com>
4
*
5
* Permission to use, copy, modify, and/or distribute this software for any purpose with
6
* or without fee is hereby granted, provided that the above copyright notice and this
7
* permission notice appear in all copies.
8
*
9
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
10
* TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
11
* NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
12
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
13
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
*/
16
17
#ifndef DGL_COLOR_HPP_INCLUDED
18
#define DGL_COLOR_HPP_INCLUDED
19
20
#include "Base.hpp"
21
22
struct
NVGcolor;
23
24
START_NAMESPACE_DGL
25
26
// --------------------------------------------------------------------------------------------------------------------
27
28
/**
29
A color made from red, green, blue and alpha floating-point values in [0..1] range.
30
*/
31
struct
Color
{
32
/**
33
Direct access to the color values.
34
*/
35
union
{
36
float
rgba[4];
37
struct
{
float
red, green, blue, alpha; };
38
};
39
40
/**
41
Create solid black color.
42
*/
43
Color
() noexcept;
44
45
/**
46
Create a color from red, green, blue and alpha numeric values.
47
All values except alpha must be in [0..255] range, with alpha in [0..1] range.
48
*/
49
Color
(
int
red,
int
green,
int
blue,
float
alpha = 1.0f) noexcept;
50
51
/**
52
Create a color from red, green, blue and alpha floating-point values.
53
All values must in [0..1] range.
54
*/
55
Color
(
float
red,
float
green,
float
blue,
float
alpha = 1.0f) noexcept;
56
57
/**
58
Create a color by copying another color.
59
*/
60
Color
(
const
Color
& color) noexcept;
61
Color
& operator=(
const
Color
& color) noexcept;
62
63
/**
64
Create a color by linearly interpolating two other colors.
65
*/
66
Color
(
const
Color
& color1,
const
Color
& color2,
float
u) noexcept;
67
68
/**
69
Create a color specified by hue, saturation and lightness.
70
Values must in [0..1] range.
71
*/
72
static
Color
fromHSL
(
float
hue,
float
saturation,
float
lightness,
float
alpha = 1.0f);
73
74
/**
75
Create a color from a HTML string like "#333" or "#112233".
76
*/
77
static
Color
fromHTML
(
const
char
* rgb,
float
alpha = 1.0f) noexcept;
78
79
/**
80
Linearly interpolate this color against another.
81
*/
82
void
interpolate
(
const
Color
& other,
float
u) noexcept;
83
84
/**
85
Check if this color matches another.
86
@note Comparison is done within 8-bit color space.
87
*/
88
bool
isEqual
(
const
Color
& color,
bool
withAlpha =
true
) noexcept;
89
bool
isNotEqual(
const
Color
& color,
bool
withAlpha =
true
) noexcept;
90
bool
operator==(
const
Color
& color) noexcept;
91
bool
operator!=(
const
Color
& color) noexcept;
92
93
/**
94
Fix color bounds if needed.
95
*/
96
void
fixBounds
() noexcept;
97
98
/**
99
Set this color for use in the next drawing operation for the provided context.
100
*/
101
void
setFor
(
const
GraphicsContext
& context,
bool
includeAlpha =
false
);
102
103
/**
104
@internal
105
Needed for NanoVG compatibility.
106
*/
107
Color
(
const
NVGcolor&) noexcept;
108
operator
NVGcolor()
const
noexcept;
109
};
110
111
// --------------------------------------------------------------------------------------------------------------------
112
113
END_NAMESPACE_DGL
114
115
#endif // DGL_COLOR_HPP_INCLUDED
Color::fromHSL
static Color fromHSL(float hue, float saturation, float lightness, float alpha=1.0f)
GraphicsContext
Definition:
Base.hpp:154
Color::interpolate
void interpolate(const Color &other, float u) noexcept
Color::setFor
void setFor(const GraphicsContext &context, bool includeAlpha=false)
Color::fromHTML
static Color fromHTML(const char *rgb, float alpha=1.0f) noexcept
Color::Color
Color() noexcept
Color::isEqual
bool isEqual(const Color &color, bool withAlpha=true) noexcept
Color::fixBounds
void fixBounds() noexcept
Color
Definition:
Color.hpp:31
Generated on Tue Jun 15 2021 12:29:15 for DISTRHO Plugin Framework by
1.8.17