[mimgui] hex to ImVec4

Tema05

Известный
Автор темы
1,474
444
Версия MoonLoader
.026-beta
У меня есть цвет 0x007CC7 и мне его нужно конвертировать в mimgui'шный формат ImVec4.

Я нашёл imgui.ColorConvertU32ToFloat4() но он требует цвет AABBGGRR что оч странно. Приходится конвертировать 0x007CC7 в 0xFFC77C00. Есть более интересные способы решения?
 
Решение
а можно функцию чтобы из 0x007CC7 в 0xFFC77C00 конвертировать. У меня прост drawlist такие кушает
Lua:
function Convert(color)
    r = bit.rshift(color, 16)
    g = bit.band(bit.rshift(color, 8), 0xFF)
    b = bit.band(color, 0xFF)
    fullcolor = bit.bor(bit.bor(bit.lshift(b, 16), bit.lshift(g, 8)), r)
    return bit.bor(fullcolor, 0xFF000000)
end

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,748
4,849
У меня есть цвет 0x007CC7 и мне его нужно конвертировать в mimgui'шный формат ImVec4.

Я нашёл imgui.ColorConvertU32ToFloat4() но он требует цвет AABBGGRR что оч странно. Приходится конвертировать 0x007CC7 в 0xFFC77C00. Есть более интересные способы решения?
По идее вот так. Возможно придется 1.0 сделать первым параметром. Не помню точный порядок
Lua:
function U32ToImVec4(color)
    r = bit.rshift(color, 16)
    g = bit.band(bit.rshift(color, 8), 0xFF)
    b = bit.band(color, 0xFF)
    return imgui.ImVec4(r / 255, g / 255, b / 255, 1.0)
end
UPD:
Поправил синий цвет
 
  • Нравится
Реакции: Tema05

Tema05

Известный
Автор темы
1,474
444
По идее вот так. Возможно придется 1.0 сделать первым параметром. Не помню точный порядок
Lua:
function U32ToImVec4(color)
    r = bit.rshift(color, 16)
    g = bit.band(bit.rshift(color, 8), 0xFF)
    b = bit.band(color, 0xFF)
    return imgui.ImVec4(r / 255, g / 255, b / 255, 1.0)
end
UPD:
Поправил синий цвет
а можно функцию чтобы из 0x007CC7 в 0xFFC77C00 конвертировать. У меня прост drawlist такие кушает
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,748
4,849
а можно функцию чтобы из 0x007CC7 в 0xFFC77C00 конвертировать. У меня прост drawlist такие кушает
Lua:
function Convert(color)
    r = bit.rshift(color, 16)
    g = bit.band(bit.rshift(color, 8), 0xFF)
    b = bit.band(color, 0xFF)
    fullcolor = bit.bor(bit.bor(bit.lshift(b, 16), bit.lshift(g, 8)), r)
    return bit.bor(fullcolor, 0xFF000000)
end
 

Tema05

Известный
Автор темы
1,474
444
Lua:
function Convert(color)
    r = bit.rshift(color, 16)
    g = bit.band(bit.rshift(color, 8), 0xFF)
    b = bit.band(color, 0xFF)
    fullcolor = bit.bor(bit.bor(bit.lshift(b, 16), bit.lshift(g, 8)), r)
    return bit.bor(fullcolor, 0xFF000000)
end
А есть норм объяснение что эти функции делают?