forked from len0rd/rockbox
lua use lcd_drawline to draw lines inside rliimages
rewrite draw_text to use new viewport buffer set_viewport now accepts rliimage to allowe interfacing with rb. functions fix long standing 2-bit bug with text drawing in lua fix 2-bit img saving bug (i'm guessing just a one off, just enabled clipping) fix font_getstringsize bug fix shape of numbers draw_num.lua also add auto centering add page scrolling to printtable add a new demo script 'stars' Change-Id: I866905cee82ee89ebc0eb020a56a7ecdb101bf5e
This commit is contained in:
parent
7f1b49693c
commit
a6570b7d37
7 changed files with 432 additions and 107 deletions
|
@ -20,17 +20,13 @@
|
|||
*
|
||||
****************************************************************************/
|
||||
]]
|
||||
|
||||
--[[ Exposed Functions
|
||||
_draw_nums.print; binary (base = 2) , octal (base = 8), hexadecimal (base = 16)
|
||||
_draw_nums.nums; table of number characters
|
||||
]]
|
||||
|
||||
if not rb.lcd_framebuffer then rb.splash(rb.HZ, "No Support!") return nil end
|
||||
|
||||
local _draw_nums = {} do
|
||||
local _poly = require "draw_poly"
|
||||
|
||||
-- every 2 elements is an x, y coord pair
|
||||
-- n[?] = {x,y,x,y,x,y}
|
||||
local nums = {
|
||||
|
@ -43,11 +39,11 @@ local _draw_nums = {} do
|
|||
[2] = {1,1,3,1,4,2,4,3,3,4,1,5,1,7,4,7},
|
||||
[3] = {1,1,3,1,4,2,4,3,3,4,2,4,3,4,4,5,4,6,3,7,1,7},
|
||||
[4] = {1,1,1,3,2,4,4,4,4,1,4,7},
|
||||
[5] = {1,1,4,1,1,1,1,4,3,4,4,5,4,7,1,7},
|
||||
[6] = {1,2,1,4,1,6,2,7,3,7,4,6,4,4,1,4,1,2,2,1,4,1},
|
||||
[5] = {1,1,4,1,1,1,1,4,3,4,4,5,4,6,3,7,1,7},
|
||||
[6] = {1,2,1,4,1,6,2,7,3,7,4,6,4,5,3,4,1,4,1,2,2,1,3,1,4,2},
|
||||
[7] = {1,1,4,1,4,2,1,7},
|
||||
[8] = {1,2,1,6,2,7,3,7,4,6,4,4,1,4,4,4,4,2,3,1,2,1,1,2},
|
||||
[9] = {4,6,4,4,4,2,3,1,2,1,1,2,1,4,4,4,4,6,3,7,1,7},
|
||||
[8] = {1,2,4,5,4,6,3,7,2,7,1,6,1,5,4,2,3,1,2,1,1,2},
|
||||
[9] = {4,6,4,4,4,2,3,1,2,1,1,2,1,3,2,4,4,4,4,6,3,7,2,7,1,6},
|
||||
[10] = {1,7,1,4,4,4,4,7,4,2,3,1,2,1,1,2,1,4},
|
||||
[11] = {1,1,1,7,3,7,4,6,4,5,3,4,1,4,3,4,4,3,4,2,3,1,1,1},
|
||||
[12] = {4,2,3,1,2,1,1,2,1,6,2,7,3,7,4,6},
|
||||
|
@ -56,8 +52,6 @@ local _draw_nums = {} do
|
|||
[15] = {4,1,1,1,1,4,3,4,1,4,1,7},
|
||||
}
|
||||
_draw_nums.nums = nums
|
||||
|
||||
|
||||
_draw_nums.print = function(img, num, x, y, chrw, color, base, prefix, bClip, scale_x, scale_y, t_nums)
|
||||
scale_x = scale_x or 1
|
||||
scale_y = scale_y or 1
|
||||
|
@ -65,7 +59,6 @@ local _draw_nums = {} do
|
|||
prefix = (prefix == nil or prefix == true) and true or false
|
||||
t_nums = t_nums or nums
|
||||
local max_x, max_y, digits = 0, 0, {}
|
||||
|
||||
if num <= 0 then
|
||||
if num < 0 then
|
||||
digits[-3] = -1
|
||||
|
@ -74,7 +67,6 @@ local _draw_nums = {} do
|
|||
digits[0] = 0
|
||||
end
|
||||
end
|
||||
|
||||
if not prefix and (base == 2 or base == 8 or base == 16) then
|
||||
-- no prefix
|
||||
elseif base == 2 then
|
||||
|
@ -92,23 +84,20 @@ local _draw_nums = {} do
|
|||
error("unknown number base: " .. base)
|
||||
return nil
|
||||
end
|
||||
|
||||
while num > 0 do -- get each digit (LeastSignificant)
|
||||
digits[#digits + 1] = num % base;
|
||||
num=num/base;
|
||||
end
|
||||
|
||||
digits[#digits + 1] = digits[0] -- zero
|
||||
digits[#digits + 1] = digits[-1] -- base prefix
|
||||
digits[#digits + 1] = digits[-2] -- base prefix (hex)
|
||||
digits[#digits + 1] = digits[-3] -- neg sign
|
||||
|
||||
for i = #digits, 1, -1 do
|
||||
max_x, max_y = _poly.polyline(img, x, y, t_nums[digits[i]],
|
||||
color, false, bClip, scale_x, scale_y)
|
||||
if chrw == 0 then chrw = max_x end
|
||||
x = x + chrw
|
||||
end
|
||||
|
||||
return x, y + max_y, chrw
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue