mirror of
https://github.com/IgorTimofeev/MineOS.git
synced 2025-12-24 04:52:48 +01:00
Прости, брат! Мы обосрались!
This commit is contained in:
parent
c976fd9e2d
commit
72c942c5ca
@ -122,31 +122,57 @@ local palette = {
|
||||
0xFF92FF, 0xFFB600, 0xFFB640, 0xFFB680, 0xFFB6BF, 0xFFB6FF, 0xFFDB00, 0xFFDB40, 0xFFDB80, 0xFFDBBF, 0xFFDBFF, 0xFFFF00, 0xFFFF40, 0xFFFF80, 0xFFFFBF, 0xFFFFFF,
|
||||
}
|
||||
|
||||
local function searchClosestColor(startIndex, endIndex, requestedColor)
|
||||
local difference = endIndex - startIndex
|
||||
local centerIndex = math.floor(difference / 2 + startIndex)
|
||||
-- local function searchClosestColor(startIndex, endIndex, requestedColor)
|
||||
-- local difference = endIndex - startIndex
|
||||
-- local centerIndex = math.floor(difference / 2 + startIndex)
|
||||
|
||||
if difference > 1 then
|
||||
if requestedColor >= palette[centerIndex] then
|
||||
return searchClosestColor(centerIndex, endIndex, requestedColor)
|
||||
else
|
||||
return searchClosestColor(startIndex, centerIndex, requestedColor)
|
||||
end
|
||||
else
|
||||
if math.abs(requestedColor - palette[startIndex]) > math.abs(palette[endIndex] - requestedColor) then
|
||||
return endIndex - 1
|
||||
else
|
||||
return startIndex - 1
|
||||
end
|
||||
end
|
||||
end
|
||||
-- if difference > 1 then
|
||||
-- if requestedColor >= palette[centerIndex] then
|
||||
-- return searchClosestColor(centerIndex, endIndex, requestedColor)
|
||||
-- else
|
||||
-- return searchClosestColor(startIndex, centerIndex, requestedColor)
|
||||
-- end
|
||||
-- else
|
||||
-- if math.abs(requestedColor - palette[startIndex]) > math.abs(palette[endIndex] - requestedColor) then
|
||||
-- return endIndex - 1
|
||||
-- else
|
||||
-- return startIndex - 1
|
||||
-- end
|
||||
-- end
|
||||
-- end
|
||||
|
||||
function colorlib.convert24BitTo8Bit(hex24)
|
||||
return searchClosestColor(1, #palette, hex24)
|
||||
local encodedIndex = nil
|
||||
local colorMatchFactor = nil
|
||||
local colorMatchFactor_min = math.huge
|
||||
|
||||
local red24, green24, blue24 = colorlib.HEXtoRGB(hex24)
|
||||
|
||||
for colorIndex, colorPalette in ipairs(palette) do
|
||||
local redPalette, greenPalette, bluePalette = colorlib.HEXtoRGB(colorPalette)
|
||||
|
||||
colorMatchFactor = (redPalette-red24)^2 + (greenPalette-green24)^2 + (bluePalette-blue24)^2
|
||||
|
||||
if (colorMatchFactor < colorMatchFactor_min) then
|
||||
encodedIndex = colorIndex
|
||||
colorMatchFactor_min = colorMatchFactor
|
||||
end
|
||||
end
|
||||
|
||||
return encodedIndex - 1
|
||||
-- return searchClosestColor(1, #palette, hex24)
|
||||
end
|
||||
|
||||
function colorlib.convert8BitTo24Bit(hex8)
|
||||
return palette[hex8 + 1]
|
||||
end
|
||||
|
||||
function colorlib.debugColorCompression(color)
|
||||
local compressedColor = colorlib.convert24BitTo8Bit(color)
|
||||
local decompressedColor = colorlib.convert8BitTo24Bit(compressedColor)
|
||||
print("Исходный цвет: " .. string.format("0x%06X", color))
|
||||
print("Сжатый цвет: " .. string.format("0x%02X", compressedColor))
|
||||
print("Расжатый цвет: " .. string.format("0x%06X", decompressedColor))
|
||||
end
|
||||
|
||||
return colorlib
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user