From ccc2f7e134558bd88409ecf1a982dbd2d94eedba Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 29 Feb 2012 16:17:43 +0100 Subject: [PATCH 01/13] cleanup old files before fetching new versions --- Makefile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 5f9de89ee..141af1b03 100644 --- a/Makefile +++ b/Makefile @@ -90,9 +90,11 @@ lfs.o: $(LFSDIR)/src/lfs.c $(CC) -c $(CFLAGS) -I$(LUADIR)/src -I$(LFSDIR)/src $(LFSDIR)/src/lfs.c -o $@ fetchthirdparty: - -rmdir mupdf - -rmdir lua - -rm lua + -rm -Rf mupdf + -rm -Rf lua lua-5.1.4* + -rm -Rf lsqlite3_svn08* + -rm -Rf sqlite-amalgamation-3070900* + -rm -Rf luafilesystem* git clone git://git.ghostscript.com/mupdf.git ( cd mupdf ; wget http://www.mupdf.com/download/mupdf-thirdparty.zip && unzip mupdf-thirdparty.zip ) wget http://www.lua.org/ftp/lua-5.1.4.tar.gz && tar xvzf lua-5.1.4.tar.gz && ln -s lua-5.1.4 lua From 9a90b4d599a578d9137f4408770f261227edcea1 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 29 Feb 2012 16:53:40 +0100 Subject: [PATCH 02/13] move FW_PRESS to End in emulation --- keys.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keys.lua b/keys.lua index 7e3f5aec7..adac1aa32 100644 --- a/keys.lua +++ b/keys.lua @@ -115,7 +115,7 @@ function set_emu_keycodes() KEY_FW_DOWN = 116 KEY_FW_LEFT = 113 KEY_FW_RIGHT = 114 - KEY_FW_PRESS = 36 -- enter for now + KEY_FW_PRESS = 115 -- end for now (above arrows) KEY_SPACE = 65 KEY_ENTER = 36 From ffc411096ed8941ca415621580126903dc2e1ca6 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 29 Feb 2012 16:54:06 +0100 Subject: [PATCH 03/13] fix pan by one screen in manual zoom mode --- pdfreader.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pdfreader.lua b/pdfreader.lua index bc8b0b37d..49ed164bf 100644 --- a/pdfreader.lua +++ b/pdfreader.lua @@ -437,8 +437,8 @@ function PDFReader:inputloop() x = self.shift_x / 5 y = self.shift_y / 5 elseif self.pan_by_page then - x = self.width - 5; -- small overlap when moving by page - y = self.height - 5; + x = width - 5; -- small overlap when moving by page + y = height - 5; else x = self.shift_x y = self.shift_y From 12fee4f7c5c98f1579edb6b9093c2bb74521098b Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 29 Feb 2012 18:55:58 +0100 Subject: [PATCH 04/13] reset y panning when moving left or right This makes this pan mode really useful, because you don't need to go all the way to top of page when you get to bottom of first column. --- pdfreader.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pdfreader.lua b/pdfreader.lua index 49ed164bf..5b700fdaa 100644 --- a/pdfreader.lua +++ b/pdfreader.lua @@ -453,11 +453,17 @@ function PDFReader:inputloop() if self.offset_x > 0 then self.offset_x = 0 end + if self.pan_by_page then + self.offset_y = 0 + end elseif ev.code == KEY_FW_RIGHT then self.offset_x = self.offset_x - x if self.offset_x < self.min_offset_x then self.offset_x = self.min_offset_x end + if self.pan_by_page then + self.offset_y = 0 + end elseif ev.code == KEY_FW_UP then self.offset_y = self.offset_y + y if self.offset_y > 0 then From ba13e6b4104c8e7c54d3a5455a393afc903a4024 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 29 Feb 2012 19:32:00 +0100 Subject: [PATCH 05/13] make up/down levels same I use addition and substraction instead of multipiciation with factor to make zoom deterministic (and this, one zoom up too many can be undone with simple zoom out which wasn't the case). --- pdfreader.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pdfreader.lua b/pdfreader.lua index 5b700fdaa..f89646055 100644 --- a/pdfreader.lua +++ b/pdfreader.lua @@ -361,17 +361,17 @@ function PDFReader:inputloop() self.altmode = true elseif ev.code == KEY_PGFWD or ev.code == KEY_LPGFWD then if self.shiftmode then - self:setglobalzoom(self.globalzoom*1.2) + self:setglobalzoom(self.globalzoom+0.2) elseif self.altmode then - self:setglobalzoom(self.globalzoom*1.1) + self:setglobalzoom(self.globalzoom+0.1) else self:goto(self.pageno + 1) end elseif ev.code == KEY_PGBCK or ev.code == KEY_LPGBCK then if self.shiftmode then - self:setglobalzoom(self.globalzoom*0.8) + self:setglobalzoom(self.globalzoom-0.2) elseif self.altmode then - self:setglobalzoom(self.globalzoom*0.9) + self:setglobalzoom(self.globalzoom-0.1) else self:goto(self.pageno - 1) end From 4481fc517899b42c28bcedc4a5178666e067744e Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 29 Feb 2012 19:39:03 +0100 Subject: [PATCH 06/13] reset x and y position when moving between pages in pan_by_page mode --- pdfreader.lua | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pdfreader.lua b/pdfreader.lua index f89646055..c1f6e387d 100644 --- a/pdfreader.lua +++ b/pdfreader.lua @@ -365,6 +365,10 @@ function PDFReader:inputloop() elseif self.altmode then self:setglobalzoom(self.globalzoom+0.1) else + if self.pan_by_page then + self.offset_x = 0 + self.offset_y = 0 + end self:goto(self.pageno + 1) end elseif ev.code == KEY_PGBCK or ev.code == KEY_LPGBCK then @@ -373,6 +377,10 @@ function PDFReader:inputloop() elseif self.altmode then self:setglobalzoom(self.globalzoom-0.1) else + if self.pan_by_page then + self.offset_x = 0 + self.offset_y = 0 + end self:goto(self.pageno - 1) end elseif ev.code == KEY_BACK then From 33829e18155569c4afab1fd025f5c29fed275314 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 29 Feb 2012 20:47:02 +0100 Subject: [PATCH 07/13] save pan position when entering pan_by_page --- pdfreader.lua | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/pdfreader.lua b/pdfreader.lua index c1f6e387d..7574d12b4 100644 --- a/pdfreader.lua +++ b/pdfreader.lua @@ -40,6 +40,8 @@ PDFReader = { shift_x = 100, shift_y = 50, pan_by_page = false, -- using shift_[xy] or width/height + pan_x = 0, -- top-left offset of page when pan activated + pan_y = 0, -- keep track of input state: shiftmode = false, -- shift pressed @@ -366,8 +368,8 @@ function PDFReader:inputloop() self:setglobalzoom(self.globalzoom+0.1) else if self.pan_by_page then - self.offset_x = 0 - self.offset_y = 0 + self.offset_x = self.pan_x + self.offset_y = self.pan_y end self:goto(self.pageno + 1) end @@ -378,8 +380,8 @@ function PDFReader:inputloop() self:setglobalzoom(self.globalzoom-0.1) else if self.pan_by_page then - self.offset_x = 0 - self.offset_y = 0 + self.offset_x = self.pan_x + self.offset_y = self.pan_y end self:goto(self.pageno - 1) end @@ -462,7 +464,7 @@ function PDFReader:inputloop() self.offset_x = 0 end if self.pan_by_page then - self.offset_y = 0 + self.offset_y = self.pan_y end elseif ev.code == KEY_FW_RIGHT then self.offset_x = self.offset_x - x @@ -470,7 +472,7 @@ function PDFReader:inputloop() self.offset_x = self.min_offset_x end if self.pan_by_page then - self.offset_y = 0 + self.offset_y = self.pan_y end elseif ev.code == KEY_FW_UP then self.offset_y = self.offset_y + y @@ -484,10 +486,19 @@ function PDFReader:inputloop() end elseif ev.code == KEY_FW_PRESS then if self.shiftmode then - self.offset_x = 0 - self.offset_y = 0 + if self.pan_by_page then + self.offset_x = self.pan_x + self.offset_y = self.pan_y + else + self.offset_x = 0 + self.offset_y = 0 + end else self.pan_by_page = not self.pan_by_page + if self.pan_by_page then + self.pan_x = self.offset_x + self.pan_y = self.offset_y + end end end if old_offset_x ~= self.offset_x From 03be0680c5bcf8112a4d42a3c26bb557b810e93f Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 29 Feb 2012 20:56:37 +0100 Subject: [PATCH 08/13] correctly pass path to FileSearcher --- filechooser.lua | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/filechooser.lua b/filechooser.lua index d7007f9ee..8e29abb1d 100644 --- a/filechooser.lua +++ b/filechooser.lua @@ -163,14 +163,7 @@ function FileChooser:choose(ypos, height) elseif ev.code == KEY_S then -- invoke search input keywords = InputBox:input(height-100, 100, "Search:") if keywords then -- display search result according to keywords - --[[ - ---------------------------------------------------------------- - || uncomment following line and set the correct path if you want - || to test search feature in EMU mode - ---------------------------------------------------------------- - --]] - --FileSearcher:init("/home/dave/documents/kindle/backup/documents") - FileSearcher:init() + FileSearcher:init( self.path ) file = FileSearcher:choose(ypos, height, keywords) if file then return file From 54e7ae3296e4af60eaaee1d8f4955c3d123d0b05 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 29 Feb 2012 23:19:31 +0100 Subject: [PATCH 09/13] implement new zoom mode (F) for two-colum layout It zooms to left column and turns on panning mode, so simple sequence of down,down...,right,down,down... will get you through whole page --- pdfreader.lua | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pdfreader.lua b/pdfreader.lua index 7574d12b4..e706e8e77 100644 --- a/pdfreader.lua +++ b/pdfreader.lua @@ -12,6 +12,7 @@ PDFReader = { ZOOM_FIT_TO_CONTENT = -4, ZOOM_FIT_TO_CONTENT_WIDTH = -5, ZOOM_FIT_TO_CONTENT_HEIGHT = -6, + ZOOM_FIT_TO_CONTENT_HALF_WIDTH = -7, GAMMA_NO_GAMMA = 1.0, @@ -42,6 +43,7 @@ PDFReader = { pan_by_page = false, -- using shift_[xy] or width/height pan_x = 0, -- top-left offset of page when pan activated pan_y = 0, + pan_margin = 20, -- keep track of input state: shiftmode = false, -- shift pressed @@ -191,6 +193,18 @@ function PDFReader:setzoom(page) self.offset_x = -1 * x0 * self.globalzoom + (width - (self.globalzoom * (x1 - x0))) / 2 self.offset_y = -1 * y0 * self.globalzoom end + elseif self.globalzoommode == self.ZOOM_FIT_TO_CONTENT_HALF_WIDTH then + local x0, y0, x1, y1 = page:getUsedBBox() + self.globalzoom = width / (x1 - x0 + self.pan_margin) + self.offset_x = -1 * x0 * self.globalzoom * 2 + self.pan_margin + self.globalzoom = height / (y1 - y0) + self.offset_y = -1 * y0 * self.globalzoom * 2 + self.globalzoom = width / (x1 - x0 + self.pan_margin) * 2 + print("column mode offset:"..self.offset_x.."*"..self.offset_y.." zoom:"..self.globalzoom); + self.globalzoommode = self.ZOOM_BY_VALUE -- enable pan mode + self.pan_x = self.offset_x + self.pan_y = self.offset_y + self.pan_by_page = true end dc:setZoom(self.globalzoom) dc:setRotate(self.globalrotate); @@ -426,6 +440,8 @@ function PDFReader:inputloop() else self:setglobalzoommode(self.ZOOM_FIT_TO_PAGE_HEIGHT) end + elseif ev.code == KEY_F then + self:setglobalzoommode(self.ZOOM_FIT_TO_CONTENT_HALF_WIDTH) elseif ev.code == KEY_T then self:showTOC() elseif ev.code == KEY_B then From 321181052aea76bf406e5ce2b759969e4d2b7ee0 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 29 Feb 2012 23:37:13 +0100 Subject: [PATCH 10/13] fine-tune offsets and panning It's better to leave small margin at top, and remove margin when panning left-right since we have margins anyway --- pdfreader.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pdfreader.lua b/pdfreader.lua index e706e8e77..b35803b98 100644 --- a/pdfreader.lua +++ b/pdfreader.lua @@ -198,7 +198,7 @@ function PDFReader:setzoom(page) self.globalzoom = width / (x1 - x0 + self.pan_margin) self.offset_x = -1 * x0 * self.globalzoom * 2 + self.pan_margin self.globalzoom = height / (y1 - y0) - self.offset_y = -1 * y0 * self.globalzoom * 2 + self.offset_y = -1 * y0 * self.globalzoom * 2 + self.pan_margin self.globalzoom = width / (x1 - x0 + self.pan_margin) * 2 print("column mode offset:"..self.offset_x.."*"..self.offset_y.." zoom:"..self.globalzoom); self.globalzoommode = self.ZOOM_BY_VALUE -- enable pan mode @@ -463,8 +463,8 @@ function PDFReader:inputloop() x = self.shift_x / 5 y = self.shift_y / 5 elseif self.pan_by_page then - x = width - 5; -- small overlap when moving by page - y = height - 5; + x = width; + y = height - self.pan_margin; -- overlap for lines which didn't fit else x = self.shift_x y = self.shift_y From a839f82bac707f93f168558f6fe89e7a3f380fcc Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 29 Feb 2012 23:48:27 +0100 Subject: [PATCH 11/13] change pages with just left/right fiveway --- pdfreader.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pdfreader.lua b/pdfreader.lua index b35803b98..670b2c86d 100644 --- a/pdfreader.lua +++ b/pdfreader.lua @@ -478,6 +478,11 @@ function PDFReader:inputloop() self.offset_x = self.offset_x + x if self.offset_x > 0 then self.offset_x = 0 + if self.pan_by_page and self.pageno > 1 then + self.offset_x = self.pan_x + self.offset_y = self.pan_y + self:goto(self.pageno - 1) + end end if self.pan_by_page then self.offset_y = self.pan_y @@ -486,6 +491,11 @@ function PDFReader:inputloop() self.offset_x = self.offset_x - x if self.offset_x < self.min_offset_x then self.offset_x = self.min_offset_x + if self.pan_by_page and self.pageno < self.doc:getPages() then + self.offset_x = self.pan_x + self.offset_y = self.pan_y + self:goto(self.pageno + 1) + end end if self.pan_by_page then self.offset_y = self.pan_y From de1725d39593080b9b3822cfa9d3260ba2928f34 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Thu, 1 Mar 2012 00:20:46 +0100 Subject: [PATCH 12/13] fiveway left in pan mode with position to bottom of column --- pdfreader.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pdfreader.lua b/pdfreader.lua index 670b2c86d..c3305de58 100644 --- a/pdfreader.lua +++ b/pdfreader.lua @@ -480,12 +480,12 @@ function PDFReader:inputloop() self.offset_x = 0 if self.pan_by_page and self.pageno > 1 then self.offset_x = self.pan_x - self.offset_y = self.pan_y + self.offset_y = self.min_offset_y -- bottom self:goto(self.pageno - 1) end end if self.pan_by_page then - self.offset_y = self.pan_y + self.offset_y = self.min_offset_y end elseif ev.code == KEY_FW_RIGHT then self.offset_x = self.offset_x - x From 5de749f457f16b60b7d3f42b3e496d690e96d435 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Thu, 1 Mar 2012 23:04:17 +0100 Subject: [PATCH 13/13] adjust fiveway rotation --- pdfreader.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/pdfreader.lua b/pdfreader.lua index c3305de58..327e41bee 100644 --- a/pdfreader.lua +++ b/pdfreader.lua @@ -370,6 +370,7 @@ function PDFReader:inputloop() while 1 do local ev = input.waitForEvent() if ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_PRESS then + ev.code = adjustFWKey(ev.code) local secs, usecs = util.gettime() if ev.code == KEY_SHIFT then self.shiftmode = true