2
0
mirror of https://github.com/koreader/koreader synced 2024-10-31 21:20:20 +00:00

Merge pull request #438 from chrox/master

process new line symbol in TextBoxWidget
This commit is contained in:
Paulo Matias 2014-01-07 05:09:59 -08:00
commit 9262b17bab
2 changed files with 23 additions and 12 deletions

View File

@ -30,7 +30,7 @@ local DictQuickLookup = InputContainer:new{
definition = nil,
dict_index = 1,
title_face = Font:getFace("tfont", 22),
word_face = Font:getFace("tfont", 20),
word_face = Font:getFace("tfont", 22),
content_face = Font:getFace("cfont", 20),
width = nil,
height = nil,
@ -108,7 +108,7 @@ function DictQuickLookup:update()
text = self.definition,
face = self.content_face,
width = self.width,
height = self.height*0.6,
height = self.height*0.7,
dialog = self,
},
}

View File

@ -40,14 +40,21 @@ function TextBoxWidget:_wrapGreedyAlg(h_list)
for k,w in ipairs(h_list) do
cur_line_width = cur_line_width + w.width
if cur_line_width <= self.width then
table.insert(cur_line, w)
else
if w.word == "\n" then
if cur_line_width > 0 then
-- hard line break
table.insert(v_list, cur_line)
cur_line = {}
cur_line_width = 0
end
elseif cur_line_width > self.width then
-- wrap to next line
table.insert(v_list, cur_line)
cur_line = {}
cur_line_width = w.width
table.insert(cur_line, w)
else
table.insert(cur_line, w)
end
end
-- handle last line
@ -101,15 +108,19 @@ function TextBoxWidget:_getVerticalList(alg)
end
-- build horizontal list
local h_list = {}
for words in self.text:gmatch("[\32-\127\192-\255]+[\128-\191]*") do
for word in words:gsplit("%s+", true) do
for w in word:gsplit("%p+", true) do
local word_box = {}
word_box.word = w
word_box.width = RenderText:sizeUtf8Text(0, Screen:getWidth(), self.face, w, true).x
table.insert(h_list, word_box)
local line_count = 0
for line in self.text:gsplit("\n", true) do
for words in line:gmatch("[\32-\127\192-\255]+[\128-\191]*") do
for word in words:gsplit("%s+", true) do
for w in word:gsplit("%p+", true) do
local word_box = {}
word_box.word = w
word_box.width = RenderText:sizeUtf8Text(0, Screen:getWidth(), self.face, w, true).x
table.insert(h_list, word_box)
end
end
end
if line:sub(-1) == "\n" then table.insert(h_list, {word = '\n', width = 0}) end
end
-- @TODO check alg here 25.04 2012 (houqp)