Crossfire LUA add missing support for PREC3 values (#7322)

This commit is contained in:
Carsten W
2020-01-22 11:59:23 +01:00
committed by 3djc
parent 36d098d22d
commit 8390cbc705
3 changed files with 30 additions and 38 deletions
@@ -72,7 +72,7 @@ local function incrField(step)
end
else
local min, max = 0, 0
if field.type <= 5 then
if ((field.type <= 5) or (field.type == 8)) then
min = field.min
max = field.max
step = field.step * step
@@ -239,25 +239,21 @@ local function fieldFloatLoad(field, data, offset)
field.default = fieldGetValue(data, offset+12, 4)
fieldUnsignedToSigned(field, 4)
field.prec = data[offset+16]
if field.prec > 2 then
field.prec = 2
if field.prec > 3 then
field.prec = 3
end
field.step = fieldGetValue(data, offset+17, 4)
field.unit, offset = fieldGetString(data, offset+21)
end
local function formatFloat(num, decimals)
local mult = 10^(decimals or 0)
local val = num / mult
return string.format("%." .. decimals .. "f", val)
end
local function fieldFloatDisplay(field, y, attr)
local attrnum
if field.prec == 1 then
attrnum = LEFT + attr + PREC1
elseif field.prec == 2 then
attrnum = LEFT + attr + PREC2
else
attrnum = LEFT + attr
end
-- lcd.drawNumber(140, y, field.value, attrnum) -- NOTE: original code getLastPos not available in Horus
-- lcd.drawText(lcd.getLastPos(), y, field.unit, attr) -- NOTE: original code getLastPos not available in Horus
lcd.drawText(140, y, field.value .. field.unit, attr) -- NOTE: Concenated fields instead of get lastPos
lcd.drawText(140, y, formatFloat(field.value, field.prec) .. field.unit, attr)
end
local function fieldFloatSave(field)
@@ -72,7 +72,7 @@ local function incrField(step)
end
else
local min, max = 0, 0
if field.type <= 5 then
if ((field.type <= 5) or (field.type == 8)) then
min = field.min
max = field.max
step = field.step * step
@@ -238,23 +238,21 @@ local function fieldFloatLoad(field, data, offset)
field.default = fieldGetValue(data, offset+12, 4)
fieldUnsignedToSigned(field, 4)
field.prec = data[offset+16]
if field.prec > 2 then
field.prec = 2
if field.prec > 3 then
field.prec = 3
end
field.step = fieldGetValue(data, offset+17, 4)
field.unit, offset = fieldGetString(data, offset+21)
end
local function formatFloat(num, decimals)
local mult = 10^(decimals or 0)
local val = num / mult
return string.format("%." .. decimals .. "f", val)
end
local function fieldFloatDisplay(field, y, attr)
local attrnum
if field.prec == 1 then
attrnum = LEFT + attr + PREC1
elseif field.prec == 2 then
attrnum = LEFT + attr + PREC2
else
attrnum = LEFT + attr
end
lcd.drawNumber(89, y, field.value, attrnum)
lcd.drawText(89, y, formatFloat(field.value, field.prec), LEFT + attr)
lcd.drawText(lcd.getLastPos(), y, field.unit, attr)
end
@@ -72,7 +72,7 @@ local function incrField(step)
end
else
local min, max = 0, 0
if field.type <= 5 then
if ((field.type <= 5) or (field.type == 8)) then
min = field.min
max = field.max
step = field.step * step
@@ -238,23 +238,21 @@ local function fieldFloatLoad(field, data, offset)
field.default = fieldGetValue(data, offset+12, 4)
fieldUnsignedToSigned(field, 4)
field.prec = data[offset+16]
if field.prec > 2 then
field.prec = 2
if field.prec > 3 then
field.prec = 3
end
field.step = fieldGetValue(data, offset+17, 4)
field.unit, offset = fieldGetString(data, offset+21)
end
local function formatFloat(num, decimals)
local mult = 10^(decimals or 0)
local val = num / mult
return string.format("%." .. decimals .. "f", val)
end
local function fieldFloatDisplay(field, y, attr)
local attrnum
if field.prec == 1 then
attrnum = LEFT + attr + PREC1
elseif field.prec == 2 then
attrnum = LEFT + attr + PREC2
else
attrnum = LEFT + attr
end
lcd.drawNumber(140, y, field.value, attrnum)
lcd.drawText(140, y, formatFloat(field.value, field.prec), LEFT + attr)
lcd.drawText(lcd.getLastPos(), y, field.unit, attr)
end