On 5/19/22 8:12 PM, Chris Katko wrote:
On Thursday, 19 May 2022 at 10:35:30 UTC, ag0aep6g wrote:
On 19.05.22 12:15, Chris Katko wrote:
given
```D
struct COLOR
{
float r, g, b, a; // a is alpha (opposite of transparency)
}
auto red = COLOR(1,0,0,1);
auto green = COLOR(0,1,0,1);
auto blue = COLOR(0,0,1,1);
auto white = COLOR(1,1,1,1);
//etc
```
is there a way to do:
```D
auto myColor = GREY!(0.5);
// where GREY!(0.5) becomes COLOR(0.5, 0.5, 0.5, 1.0);
```
What's wrong with a simple plain function?
COLOR grey(float rgb)
{
return COLOR(rgb, rgb, rgb, 1);
}
auto myColor = grey(0.5);
Yeah that occurred to me as I was falling asleep. Though, do I have to a
specify
```D
static auto myColor = grey(0.5);
```
to ensure it's done at compile time? It's not the end of the world, but
ideally, these are static / hardcoded values that can be used thousands
of times a second.
Given a CTFE function it's very easy to wrap for ensuring compile-time
usage:
```d
enum ctGrey(float f) = grey(f);
auto myColor = ctGrey!(0.5);
```
-Steve