local M, module = {}, ...
_G[module] = M

function M.run()
    -- make this a volatile module:
    package.loaded[module] = nil

    print("Running component text...")

    local x, y, w, h, i
    local m
  
    disp:setColor(0, 80, 40, 0)
    disp:setColor(1, 60, 0, 40)
    disp:setColor(2, 20, 0, 20)
    disp:setColor(3, 60, 0, 0)
    disp:drawGradientBox(0, 0, disp:getWidth(), disp:getHeight())

    disp:setColor(255, 255, 255)
    disp:setPrintPos(2,18)
    disp:setPrintDir(0)
    disp:print("Text")

    m = millis() + T
    i = 0
    while millis() < m do
        disp:setColor(bit.band(lcg_rnd(), 31), bit.band(lcg_rnd(), 127) + 127, bit.band(lcg_rnd(), 127) + 64)
        w = 40
        h = 22
        x = bit.rshift(lcg_rnd() * (disp:getWidth() - w), 8)
        y = bit.rshift(lcg_rnd() * (disp:getHeight() - h), 8)
    
        disp:setPrintPos(x, y+h)
        disp:setPrintDir(bit.band(bit.rshift(i, 2), 3))
        i = i + 1
        disp:print("Ucglib")
    end
    disp:setPrintDir(0)

    print("...done")
end

return M