From 25e943cb8460e09a29a45052a94766e4f4750257 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Wed, 6 Jun 2012 14:20:08 +0800 Subject: [PATCH 1/6] bump crengine version to 3.0.57-15 --- kpvcrlib/crengine | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kpvcrlib/crengine b/kpvcrlib/crengine index 998821344..b62d054cc 160000 --- a/kpvcrlib/crengine +++ b/kpvcrlib/crengine @@ -1 +1 @@ -Subproject commit 99882134490b47ebb28107cebfbeb8eafb070f54 +Subproject commit b62d054cca57366bc1ba2fa249c5bbf5c5234346 From e2e3f124633f5a40cd200a1a105cdbc5bf42b669 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Wed, 6 Jun 2012 14:33:35 +0800 Subject: [PATCH 2/6] fix cleanthirdparty target --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index c8c34b15a..9c218500a 100644 --- a/Makefile +++ b/Makefile @@ -154,9 +154,9 @@ clean: -rm -f *.o kpdfview slider_watcher cleanthirdparty: - make -C $(LUADIR) clean - make -C $(MUPDFDIR) clean - #make -C $(CRENGINEDIR)/thirdparty/antiword clean + -make -C $(LUADIR) clean + -make -C $(MUPDFDIR) clean + -make -C $(CRENGINEDIR)/thirdparty/antiword clean test -d $(CRENGINEDIR)/thirdparty/chmlib && make -C $(CRENGINEDIR)/thirdparty/chmlib clean || echo warn: chmlib folder not found test -d $(CRENGINEDIR)/thirdparty/libpng && (make -C $(CRENGINEDIR)/thirdparty/libpng clean) || echo warn: chmlib folder not found test -d $(CRENGINEDIR)/crengine && (make -C $(CRENGINEDIR)/crengine clean) || echo warn: chmlib folder not found From b76be2b87d3a255def4c80d1498c7daa61cde6ba Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Wed, 6 Jun 2012 15:29:57 +0800 Subject: [PATCH 3/6] add bookmark navigation functions in unireader.lua --- unireader.lua | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/unireader.lua b/unireader.lua index feb39f167..4fa488d39 100644 --- a/unireader.lua +++ b/unireader.lua @@ -1730,6 +1730,28 @@ function UniReader:showBookMarks() end end +function UniReader:nextBookMarkedPage() + for k,v in ipairs(self.bookmarks) do + if self.pageno < v.page then + return v + end + end + return nil +end + +function UniReader:prevBookMarkedPage() + local pre_item = nil + for k,v in ipairs(self.bookmarks) do + if self.pageno <= v.page then + if pre_item.page < self.pageno then + return pre_item + end + end + pre_item = v + end + return nil +end + function UniReader:showHighLight() local menu_items = {} local highlight_dict = {} From 763e2223d2df940911bd9ee9cd3c01909660b3aa Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Wed, 6 Jun 2012 15:35:45 +0800 Subject: [PATCH 4/6] sort bookmark table after addition --- unireader.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/unireader.lua b/unireader.lua index 4fa488d39..b241a22cf 100644 --- a/unireader.lua +++ b/unireader.lua @@ -1466,6 +1466,7 @@ function UniReader:addBookmark(pageno) notes = notes, } table.insert(self.bookmarks, mark_item) + table.sort(self.bookmarks, function(a,b) return a.page < b.page end) return true end From d04370464b92316a0c0a32008f77c2b93be9ea31 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Wed, 6 Jun 2012 16:20:13 +0800 Subject: [PATCH 5/6] add getPosFromXPointer in cre.cpp --- cre.cpp | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/cre.cpp b/cre.cpp index 7caae1caa..7a2e09503 100644 --- a/cre.cpp +++ b/cre.cpp @@ -117,6 +117,22 @@ static int getPageFromXPointer(lua_State *L) { return 1; } +static int getPosFromXPointer(lua_State *L) { + CreDocument *doc = (CreDocument*) luaL_checkudata(L, 1, "credocument"); + const char *xpointer_str = luaL_checkstring(L, 2); + + int pos = 0; + ldomXPointer xp = doc->dom_doc->createXPointer(lString16(xpointer_str)); + + lvPoint pt = xp.toPoint(); + if (pt.y > 0) { + pos = pt.y; + } + lua_pushinteger(L, pos); + + return 1; +} + static int getCurrentPos(lua_State *L) { CreDocument *doc = (CreDocument*) luaL_checkudata(L, 1, "credocument"); @@ -125,21 +141,6 @@ static int getCurrentPos(lua_State *L) { return 1; } -//static int getPosFromXPointer(lua_State *L) { - //CreDocument *doc = (CreDocument*) luaL_checkudata(L, 1, "credocument"); - //const char *xpointer_str = luaL_checkstring(L, 2); - - //lvRect rc; - //int pos; - - //ldomXPointer *xp = NULL; - //xp = doc->dom_doc->createXPointer(lString16(xpointer_str)); - //getCursorDocRect(*xp, rc); - //pos = - - //return 1; -//} - static int getCurrentPercent(lua_State *L) { CreDocument *doc = (CreDocument*) luaL_checkudata(L, 1, "credocument"); @@ -437,6 +438,7 @@ static const struct luaL_Reg credocument_meth[] = { {"getPages", getNumberOfPages}, {"getCurrentPage", getCurrentPage}, {"getPageFromXPointer", getPageFromXPointer}, + {"getPosFromXPointer", getPosFromXPointer}, {"getCurrentPos", getCurrentPos}, {"getCurrentPercent", getCurrentPercent}, {"getXPointer", getXPointer}, From d0e7f2240db9d7c3638671708642e6610177afb1 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Wed, 6 Jun 2012 16:21:25 +0800 Subject: [PATCH 6/6] add bookmark navigation function to crereader --- crereader.lua | 26 ++++++++++++++++++++++++++ unireader.lua | 8 +++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/crereader.lua b/crereader.lua index 9f48b7c9e..213997dc4 100644 --- a/crereader.lua +++ b/crereader.lua @@ -271,6 +271,32 @@ end ---------------------------------------------------- -- bookmarks related methods ---------------------------------------------------- +function CREReader:isBookmarkInSequence(a, b) + return self.doc:getPosFromXPointer(a.page) < self.doc:getPosFromXPointer(b.page) +end + +function CREReader:nextBookMarkedPage() + for k,v in ipairs(self.bookmarks) do + if self.pos < self.doc:getPosFromXPointer(v.page) then + return v + end + end + return nil +end + +function CREReader:prevBookMarkedPage() + local pre_item = nil + for k,v in ipairs(self.bookmarks) do + if self.pos <= self.doc:getPosFromXPointer(v) then + if self.doc:getPosFromXPointer(pre_item) < self.pos then + return pre_item + end + end + pre_item = v + end + return nil +end + function CREReader:showBookMarks() local menu_items = {} -- build menu items diff --git a/unireader.lua b/unireader.lua index b241a22cf..f730ab3e4 100644 --- a/unireader.lua +++ b/unireader.lua @@ -1447,6 +1447,10 @@ function UniReader:delJump(pageno) end end +function UniReader:isBookmarkInSequence(a, b) + return a.page < b.page +end + -- return nil if page already marked -- otherwise, return true function UniReader:addBookmark(pageno) @@ -1466,7 +1470,9 @@ function UniReader:addBookmark(pageno) notes = notes, } table.insert(self.bookmarks, mark_item) - table.sort(self.bookmarks, function(a,b) return a.page < b.page end) + table.sort(self.bookmarks, function(a,b) + return self:isBookmarkInSequence(a, b) + end) return true end