All messages sent to the displays are firstr enqueued, then "played
back" on globalstep, similar to biome_lib's deferred-generation method.
By default, no more than 10 messages will be added to the queue. If the
queue should exceed that, old messages will be deleted to make room for
new messages.
Messages will be pulled from the queue, one item per server tick, in the
order received, and relayed to their displays, if dtime <= 0.2s. If
dtime is greater, messages will be withheld until it decreases.
Autoscroll now limits the speed to 0.5s per step.
glyph images are now used as masks over the "leds_on" image
instead of the glyphs themselves looking like they're made of LEDs.
Makes font files much simpler, easier to draw, makes LEDs easier
to re-texture.
White for "on" LEDs, black for "off"
Also optimized all images (optipng, pngcrush)
instead of string.char(0-27), use "/" as an escape followed by
"[0-9][A-R][a-r]", all inside the string.
e.g. digiline_send("chan", "/0this /1is /2some /3colorful /4text")
"/" followed by any other character than the above will be treated as an
invalid color code and will be taken literally.
"//" will print a single slash.
Note: on receipt, all instances of "//" in a message are actually
translated to string.char(30) -- one for each pair. This makes the
scrolling code easier. Keep this in mind if you use the "getstr" and
"getindex" commands.
Also, this expands the max string length to 6 kB, to allow a full 80x25
display with one color code er character. "clear" and "allon" remain at
2kB since that's still enough.
also make sure to `return false` from the scroll_text function if the
scroll timer was last set to a value below the allowed minimum (which
would mean the user/program intended to shut it off by setting it to 0,
or the stepper was called manually, implying no timer)
translate them to bare ISO-8859-1 at print time
Only alters chars with codes > 0x9f, so graphics/symbols in the
0x7f-0x9f range and color and control codes < 0x20 are preserved
The routine assumes that any char code > 0x9f is the first byte of a
two-byte UTF-8 symbol.
Note that due to Minetest's busted formspecs, it's not possible to
actually type-in or copy-paste proper UTF strings to take advantage of
this mode, so it's only useful if the strings are generated by or
imported in from something else (e.g. a URL or something, or a LuaC
program that generates strings)