2022-04-03 23:24:17 +02:00
|
|
|
require("common.class")
|
2022-04-05 17:31:02 +02:00
|
|
|
local Util = require("common.util")
|
2022-06-29 00:35:52 +02:00
|
|
|
local ServiceField = require("api.page.servicefield")
|
2022-04-03 23:24:17 +02:00
|
|
|
|
|
|
|
---@class ColorGradientField: ServiceField
|
|
|
|
local ColorGradientField = {
|
2022-05-06 01:02:30 +02:00
|
|
|
__name = "ColorGradientField",
|
2022-04-03 23:24:17 +02:00
|
|
|
GRADIENT_X_OFFSET = 128,
|
2022-04-15 04:54:30 +02:00
|
|
|
GRADIENT_WIDTH = 576,
|
2022-04-03 23:24:17 +02:00
|
|
|
GRADIENT_STEPS = 32
|
|
|
|
}
|
|
|
|
|
2022-04-12 23:45:28 +02:00
|
|
|
---Create a new ColorGradientField instance
|
2022-05-06 01:02:30 +02:00
|
|
|
---@param params? ColorGradientField # initial parameters
|
2022-04-12 23:45:28 +02:00
|
|
|
---@return ColorGradientField
|
2022-05-06 01:02:30 +02:00
|
|
|
function ColorGradientField.new(params)
|
|
|
|
params = params or {}
|
2022-04-03 23:24:17 +02:00
|
|
|
|
2022-05-06 01:02:30 +02:00
|
|
|
params.value = params.value or {0, 0, 0, 255}
|
2022-04-03 23:24:17 +02:00
|
|
|
|
2022-05-06 01:02:30 +02:00
|
|
|
return CreateInstance(ColorGradientField, params, ServiceField)
|
2022-04-03 23:24:17 +02:00
|
|
|
end
|
|
|
|
|
2022-04-12 23:45:28 +02:00
|
|
|
---@param obj? any # message object for the field
|
|
|
|
function ColorGradientField:activate(obj) end
|
2022-04-03 23:24:17 +02:00
|
|
|
|
2022-04-12 23:45:28 +02:00
|
|
|
---@param obj? any # message object for the field
|
|
|
|
function ColorGradientField:focus(obj) end
|
2022-04-03 23:24:17 +02:00
|
|
|
|
2022-04-12 23:45:28 +02:00
|
|
|
---@param obj? any # message object for the field
|
|
|
|
function ColorGradientField:deactivate(obj) end
|
2022-04-03 23:24:17 +02:00
|
|
|
|
2022-04-12 23:45:28 +02:00
|
|
|
---@param deltaTime number # frametime in seconds
|
2022-04-03 23:24:17 +02:00
|
|
|
function ColorGradientField:drawValue(deltaTime)
|
|
|
|
local stepW = self.GRADIENT_WIDTH / self.GRADIENT_STEPS
|
|
|
|
for i = 0, self.GRADIENT_STEPS - 1 do
|
|
|
|
local posX = self.GRADIENT_X_OFFSET + i * stepW
|
2022-04-05 17:31:02 +02:00
|
|
|
local colorA = math.ceil(Util.lerp(i, 0, 0, self.GRADIENT_STEPS - 1, self.value[4]))
|
2022-04-03 23:24:17 +02:00
|
|
|
gfx.BeginPath()
|
2022-04-11 18:47:26 +02:00
|
|
|
gfx.Rect(posX, 0, stepW, self.aabbH)
|
2022-04-03 23:24:17 +02:00
|
|
|
gfx.FillColor(self.value[1], self.value[2], self.value[3], colorA)
|
|
|
|
gfx.Fill()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2022-04-05 23:53:19 +02:00
|
|
|
return ColorGradientField
|