add ime support
This commit is contained in:
parent
3171286c1f
commit
4638fb1ea5
7 changed files with 162 additions and 40 deletions
24
theme.lua
24
theme.lua
|
@ -21,6 +21,10 @@ end
|
|||
function theme.drawBox(x,y,w,h, colors, cornerRadius)
|
||||
local colors = colors or theme.getColorForState(opt)
|
||||
cornerRadius = cornerRadius or theme.cornerRadius
|
||||
w = math.max(cornerRadius/2, w)
|
||||
if h < cornerRadius/2 then
|
||||
y,h = y - (cornerRadius - h), cornerRadius/2
|
||||
end
|
||||
|
||||
love.graphics.setColor(colors.bg)
|
||||
love.graphics.rectangle('fill', x,y, w,h, cornerRadius)
|
||||
|
@ -89,7 +93,7 @@ function theme.Slider(fraction, opt, x,y,w,h)
|
|||
|
||||
local c = theme.getColorForState(opt)
|
||||
theme.drawBox(x,y,w,h, c, opt.cornerRadius)
|
||||
theme.drawBox(x,yb,wb,hb, {bg=c.fg}, opt.cornerRadius)
|
||||
theme.drawBox(xb,yb,wb,hb, {bg=c.fg}, opt.cornerRadius)
|
||||
|
||||
if opt.state ~= nil and opt.state ~= "normal" then
|
||||
love.graphics.setColor((opt.color and opt.color.active or {}).fg or theme.color.active.fg)
|
||||
|
@ -119,12 +123,26 @@ function theme.Input(input, opt, x,y,w,h)
|
|||
love.graphics.setFont(opt.font)
|
||||
love.graphics.print(input.text, x, y+(h-th)/2)
|
||||
|
||||
-- candidate text
|
||||
local tw = opt.font:getWidth(input.text)
|
||||
local ctw = opt.font:getWidth(input.candidate_text.text)
|
||||
love.graphics.setColor((opt.color and opt.color.normal and opt.color.normal.fg) or theme.color.normal.fg)
|
||||
love.graphics.print(input.candidate_text.text, x + tw, y+(h-th)/2)
|
||||
|
||||
-- candidate text rectangle box
|
||||
love.graphics.rectangle("line", x + tw, y+(h-th)/2, ctw, th)
|
||||
|
||||
-- cursor
|
||||
if opt.hasKeyboardFocus and (love.timer.getTime() % 1) > .5 then
|
||||
local ct = input.candidate_text;
|
||||
local ss = ct.text:sub(1, utf8.offset(ct.text, ct.start))
|
||||
local ws = opt.font:getWidth(ss)
|
||||
if ct.start == 0 then ws = 0 end
|
||||
|
||||
love.graphics.setLineWidth(1)
|
||||
love.graphics.setLineStyle('rough')
|
||||
love.graphics.line(x + opt.cursor_pos, y + (h-th)/2,
|
||||
x + opt.cursor_pos, y + (h+th)/2)
|
||||
love.graphics.line(x + opt.cursor_pos + ws, y + (h-th)/2,
|
||||
x + opt.cursor_pos + ws, y + (h+th)/2)
|
||||
end
|
||||
|
||||
-- reset scissor
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue