1
0
mirror of https://github.com/XProger/OpenLara.git synced 2025-01-29 10:38:04 +01:00

fix colors

This commit is contained in:
XProger 2020-03-01 04:58:58 +03:00
parent d27f9de1fd
commit 2a6d533b03

View File

@ -1448,17 +1448,28 @@ struct Color24 { // RGB888
};
union Color16 { // RGBA5551
struct { uint16 r:5, g:5, b:5, a:1; };
struct { uint16 b:5, g:5, r:5, a:1; };
uint16 value;
Color16() {}
Color16(uint16 value) : value(value) {}
Color32 getBGR() const { return Color32((b << 3) | (b >> 2), (g << 3) | (g >> 2), (r << 3) | (r >> 2), 255); }
operator Color24() const { return Color24((r << 3) | (r >> 2), (g << 3) | (g >> 2), (b << 3) | (b >> 2)); }
operator Color32() const { return Color32((r << 3) | (r >> 2), (g << 3) | (g >> 2), (b << 3) | (b >> 2), -a); }
};
union ColorCLUT { // RGBA5551
struct { uint16 r:5, g:5, b:5, a:1; };
uint16 value;
ColorCLUT() {}
ColorCLUT(uint16 value) : value(value) {}
operator Color24() const { return Color24((r << 3) | (r >> 2), (g << 3) | (g >> 2), (b << 3) | (b >> 2)); }
operator Color32() const { return Color32((r << 3) | (r >> 2), (g << 3) | (g >> 2), (b << 3) | (b >> 2), -a); }
};
struct ColorIndex4 {
uint8 a:4, b:4;
};
@ -1485,6 +1496,7 @@ union AtlasColor {
AtlasColor(const Color16 &value) : a(value.a), b(value.b), g(value.g), r(value.r) {}
AtlasColor(const Color24 &value) : a(1), b(value.b >> 3), g(value.g >> 3), r(value.r >> 3) {}
AtlasColor(const Color32 &value) : a(value.a ? 1 : 0), b(value.b >> 3), g(value.g >> 3), r(value.r >> 3) {}
AtlasColor(const ColorCLUT &value) : a(value.a), b(value.b), g(value.g), r(value.r) {}
};
#define ATLAS_FORMAT FMT_RGBA16
@ -1502,7 +1514,7 @@ struct Tile32 {
};
struct CLUT {
Color16 color[16];
ColorCLUT color[16];
};
namespace String {
@ -2123,6 +2135,14 @@ struct Array {
items = NULL;
}
int find(const T &item) {
for (int i = 0; i < length; i++) {
if (items[i] == item)
return i;
}
return -1;
}
void sort() {
::sort(items, length);
}