54 lines
1.2 KiB
C
54 lines
1.2 KiB
C
#include "color32.h"
|
|
|
|
sw_color32 sw_color32_from_rgb(u8 r, u8 g, u8 b) {
|
|
return (u32)r | ((u32)g << 8) | ((u32)b << 16) | ((u32)255 << 24);
|
|
}
|
|
|
|
sw_color32 sw_color32_from_rgba(u8 r, u8 g, u8 b, u8 a) {
|
|
return (u32)r | ((u32)g << 8) | ((u32)b << 16) | ((u32)a << 24);
|
|
}
|
|
|
|
u8 sw_color32_get_r(sw_color32 col) {
|
|
return col & 0xFF;
|
|
}
|
|
|
|
u8 sw_color32_get_g(sw_color32 col) {
|
|
return (col >> 8) & 0xFF;
|
|
}
|
|
|
|
u8 sw_color32_get_b(sw_color32 col) {
|
|
return (col >> 16) & 0xFF;
|
|
}
|
|
|
|
u8 sw_color32_get_a(sw_color32 col) {
|
|
return (col >> 24) & 0xFF;
|
|
}
|
|
|
|
f32 sw_color32_get_rf(sw_color32 col) {
|
|
return (f32)sw_color32_get_r(col) / 255.f;
|
|
}
|
|
|
|
f32 sw_color32_get_gf(sw_color32 col) {
|
|
return (f32)sw_color32_get_g(col) / 255.f;
|
|
}
|
|
|
|
f32 sw_color32_get_bf(sw_color32 col) {
|
|
return (f32)sw_color32_get_b(col) / 255.f;
|
|
}
|
|
|
|
f32 sw_color32_get_af(sw_color32 col) {
|
|
return (f32)sw_color32_get_a(col) / 255.f;
|
|
}
|
|
|
|
sw_color32 sw_color32_mix(sw_color32 a, sw_color32 b, f32 mix) {
|
|
f32 imix;
|
|
imix = 1.f - mix;
|
|
|
|
return sw_color32_from_rgba(
|
|
sw_color32_get_r(a) * imix + sw_color32_get_r(b) * mix,
|
|
sw_color32_get_g(a) * imix + sw_color32_get_g(b) * mix,
|
|
sw_color32_get_b(a) * imix + sw_color32_get_b(b) * mix,
|
|
sw_color32_get_a(a) * imix + sw_color32_get_a(b) * mix
|
|
);
|
|
}
|