Advertisement
Guest User

Untitled

a guest
Feb 10th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 0.52 KB | None | 0 0
  1. f32 pack_color_cast(u8 r, u8 g, u8 b, u8 a = 255)
  2. {
  3.     u32 raw = (a << 24) | (b << 16) | (g << 8) | r;
  4.     return *cast(f32*)&raw;
  5. }
  6.  
  7. f32 pack_color_union(u8 r, u8 g, u8 b, u8 a = 255)
  8. {
  9.     union RawValue { f32 value; u32 raw; }
  10.     RawValue rv = void;
  11.     rv.raw = (a << 24) | (b << 16) | (g << 8) | r;
  12.     return rv.value;
  13. }
  14.  
  15. enum RED  = pack_color_cast(1.0, 0.0, 0.0, 1.0);    // OK
  16. enum BLUE = pack_color_union(1.0, 0.0, 0.0, 1.0);  // Error: reinterpretation through overlapped field value is not allowed in CTFE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement