diff --git a/frontend/apps/filemanager/filemanager.lua b/frontend/apps/filemanager/filemanager.lua index e87e0f241..21554c366 100644 --- a/frontend/apps/filemanager/filemanager.lua +++ b/frontend/apps/filemanager/filemanager.lua @@ -8,6 +8,7 @@ local FileChooser = require("ui/widget/filechooser") local VerticalSpan = require("ui/widget/verticalspan") local VerticalGroup = require("ui/widget/verticalgroup") local ButtonDialog = require("ui/widget/buttondialog") +local lfs = require("libs/libkoreader-lfs") local UIManager = require("ui/uimanager") local Font = require("ui/font") local Screen = require("ui/screen") diff --git a/frontend/apps/filemanager/filemanagerhistory.lua b/frontend/apps/filemanager/filemanagerhistory.lua index a9dae76e8..0e3c031f6 100644 --- a/frontend/apps/filemanager/filemanagerhistory.lua +++ b/frontend/apps/filemanager/filemanagerhistory.lua @@ -1,10 +1,11 @@ local InputContainer = require("ui/widget/container/inputcontainer") local CenterContainer = require("ui/widget/container/centercontainer") -local Menu = require("ui/widget/menu") local ButtonDialog = require("ui/widget/buttondialog") -local Screen = require("ui/screen") +local lfs = require("libs/libkoreader-lfs") local UIManager = require("ui/uimanager") local DocSettings = require("docsettings") +local Menu = require("ui/widget/menu") +local Screen = require("ui/screen") local DEBUG = require("dbg") local _ = require("gettext") diff --git a/frontend/apps/filemanager/filemanagersearch.lua b/frontend/apps/filemanager/filemanagersearch.lua index 9a9de5860..820f471bb 100644 --- a/frontend/apps/filemanager/filemanagersearch.lua +++ b/frontend/apps/filemanager/filemanagersearch.lua @@ -1,11 +1,12 @@ -local InfoMessage = require("ui/widget/infomessage") -local UIManager = require("ui/uimanager") -local _ = require("gettext") +local CenterContainer = require("ui/widget/container/centercontainer") local InputContainer = require("ui/widget/container/inputcontainer") local InputDialog = require("ui/widget/inputdialog") -local CenterContainer = require("ui/widget/container/centercontainer") -local Screen = require("ui/screen") +local InfoMessage = require("ui/widget/infomessage") +local lfs = require("libs/libkoreader-lfs") +local UIManager = require("ui/uimanager") local Menu = require("ui/widget/menu") +local Screen = require("ui/screen") +local _ = require("gettext") local Search = InputContainer:new{ calibrefile = nil, @@ -72,7 +73,7 @@ function Search:init() self.results = {} -- check if we find the calibre file - if LIBRARY_PATH == nil then + if LIBRARY_PATH == nil then self.calibrefile = findcalibre("/mnt") if not self.calibrefile then error = "LIBRARY_PATH in DEFAULTS.LUA is not set!" @@ -100,7 +101,7 @@ function Search:init() self.calibrefile = findcalibre("/mnt") end end - + if self.calibrefile ~= nil then LIBRARY_PATH = string.gsub(self.calibrefile,"/[^/]*$","") if string.sub(LIBRARY_PATH,string.len(LIBRARY_PATH)) ~= "/" then @@ -197,7 +198,7 @@ function Search:find() else upsearch = string.upper(self.search_value) end - + self.data[i] = {"-","-","-","-","-","-","-","-"} while line do if line == " }, " or line == " }" then diff --git a/frontend/apps/reader/modules/readertypeset.lua b/frontend/apps/reader/modules/readertypeset.lua index e5649526a..4d172eaf3 100644 --- a/frontend/apps/reader/modules/readertypeset.lua +++ b/frontend/apps/reader/modules/readertypeset.lua @@ -1,11 +1,11 @@ local InputContainer = require("ui/widget/container/inputcontainer") local ConfirmBox = require("ui/widget/confirmbox") +local lfs = require("libs/libkoreader-lfs") local UIManager = require("ui/uimanager") local Screen = require("ui/screen") local Event = require("ui/event") local DEBUG = require("dbg") local _ = require("gettext") --- lfs local ReaderTypeset = InputContainer:new{ css_menu_title = _("Set render style"), diff --git a/frontend/apps/reader/pluginloader.lua b/frontend/apps/reader/pluginloader.lua index ef26ce20d..788964f9e 100644 --- a/frontend/apps/reader/pluginloader.lua +++ b/frontend/apps/reader/pluginloader.lua @@ -1,5 +1,5 @@ +local lfs = require("libs/libkoreader-lfs") local DEBUG = require("dbg") --- lfs local PluginLoader = { plugin_path = "plugins" diff --git a/frontend/cache.lua b/frontend/cache.lua index 3d4627f97..60f1bc826 100644 --- a/frontend/cache.lua +++ b/frontend/cache.lua @@ -2,6 +2,7 @@ A global LRU cache ]]-- require("MD5") +local lfs = require("libs/libkoreader-lfs") local DEBUG = require("dbg") local function calcFreeMem() diff --git a/frontend/docsettings.lua b/frontend/docsettings.lua index e094712d0..1c3e7f204 100644 --- a/frontend/docsettings.lua +++ b/frontend/docsettings.lua @@ -1,5 +1,5 @@ +local lfs = require("libs/libkoreader-lfs") local DocSettings = {} --- lfs function DocSettings:getHistoryPath(fullpath) local i = #fullpath - 1 diff --git a/frontend/document/credocument.lua b/frontend/document/credocument.lua index 9020859bb..b840041d7 100644 --- a/frontend/document/credocument.lua +++ b/frontend/document/credocument.lua @@ -1,14 +1,13 @@ -local Geom = require("ui/geometry") -local Blitbuffer = require("ffi/blitbuffer") local CreOptions = require("ui/data/creoptions") local Document = require("document/document") +local Configurable = require("configurable") +local Blitbuffer = require("ffi/blitbuffer") +local lfs = require("libs/libkoreader-lfs") local Geom = require("ui/geometry") -local Font = require("ui/font") local Device = require("ui/device") local Screen = require("ui/screen") +local Font = require("ui/font") local DEBUG = require("dbg") -local Configurable = require("configurable") --- TBD: DrawContext local CreDocument = Document:new{ -- this is defined in kpvcrlib/crengine/crengine/include/lvdocview.h diff --git a/frontend/ui/device.lua b/frontend/ui/device.lua index 1d83717ed..b4ee97d52 100644 --- a/frontend/ui/device.lua +++ b/frontend/ui/device.lua @@ -1,12 +1,12 @@ local AndroidPowerd = require("ui/device/androidpowerd") local KindlePowerD = require("ui/device/kindlepowerd") +local isAndroid, android = pcall(require, "android") local KoboPowerD = require("ui/device/kobopowerd") local BasePowerD = require("ui/device/basepowerd") +local lfs = require("libs/libkoreader-lfs") local Screen = require("ui/device/screen") local util = require("ffi/util") local ffi = require("ffi") -local isAndroid, android = pcall(require, "android") --- lfs local Device = { screen_saver_mode = false, diff --git a/frontend/ui/device/screen.lua b/frontend/ui/device/screen.lua index dcbfca859..e3a0c36d5 100644 --- a/frontend/ui/device/screen.lua +++ b/frontend/ui/device/screen.lua @@ -1,12 +1,10 @@ local Blitbuffer = require("ffi/blitbuffer") +local einkfb = require("ffi/framebuffer") local Geom = require("ui/geometry") local util = require("ffi/util") local DEBUG = require("dbg") local _ = require("gettext") --- Blitbuffer --- einkfb - --[[ Codes for rotation modes: diff --git a/frontend/ui/font.lua b/frontend/ui/font.lua index b714c7d3b..e218fd1f4 100644 --- a/frontend/ui/font.lua +++ b/frontend/ui/font.lua @@ -1,3 +1,5 @@ +local lfs = require("libs/libkoreader-lfs") +local Freetype = require("ffi/freetype") local Screen = require("ui/screen") local DEBUG = require("dbg") @@ -62,7 +64,7 @@ function Font:getFace(font, size) realname = font end realname = self.fontdir.."/"..realname - ok, face = pcall(freetype.newFace, realname, size) + ok, face = pcall(Freetype.newFace, realname, size) if not ok then DEBUG("#! Font "..font.." ("..realname..") not supported: "..face) return nil diff --git a/frontend/ui/input.lua b/frontend/ui/input.lua index 0dc7108e7..d558e43bd 100644 --- a/frontend/ui/input.lua +++ b/frontend/ui/input.lua @@ -3,11 +3,12 @@ local GestureDetector = require("ui/gesturedetector") local Event = require("ui/event") local TimeVal = require("ui/timeval") local Screen = require("ui/screen") +local input = require("ffi/input") +local util = require("ffi/util") local Math = require("optmath") local DEBUG = require("dbg") -local _ = require("gettext") local ffi = require("ffi") -local util = require("ffi/util") +local _ = require("gettext") -- constants from local EV_SYN = 0 diff --git a/frontend/ui/widget/filechooser.lua b/frontend/ui/widget/filechooser.lua index 4c305cc39..2df87d59e 100644 --- a/frontend/ui/widget/filechooser.lua +++ b/frontend/ui/widget/filechooser.lua @@ -1,9 +1,9 @@ +local lfs = require("libs/libkoreader-lfs") local Menu = require("ui/widget/menu") local Screen = require("ui/screen") local UIManager = require("ui/uimanager") local DEBUG = require("dbg") local util = require("ffi/util") --- lfs local ffi = require("ffi") ffi.cdef[[ int strcoll (char *str1, char *str2); diff --git a/frontend/ui/widget/imagewidget.lua b/frontend/ui/widget/imagewidget.lua index 5f42aa28d..37e302229 100644 --- a/frontend/ui/widget/imagewidget.lua +++ b/frontend/ui/widget/imagewidget.lua @@ -1,6 +1,6 @@ local Widget = require("ui/widget/widget") +local Image = require("ffi/mupdfimg") local Geom = require("ui/geometry") --- Image --[[ ImageWidget shows an image from a file @@ -10,6 +10,9 @@ local ImageWidget = Widget:new{ invert = nil, dim = nil, hide = nil, + -- if width or height is given, image will rescale to the given size + width = nil, + height = nil, _bb = nil } @@ -20,6 +23,10 @@ function ImageWidget:_render() elseif itype == "png" then self._bb = Image:fromPNG(self.file) end + local w, h = self._bb:getWidth(), self._bb:getHeight() + if (self.width and self.width ~= w) or (self.height and self.height ~= h) then + self._bb = self._bb:scale(self.width or w, self.height or h) + end end function ImageWidget:getSize() @@ -29,12 +36,19 @@ function ImageWidget:getSize() return Geom:new{ w = self._bb:getWidth(), h = self._bb:getHeight() } end +function ImageWidget:rotate(degree) + if not self._bb then + self:_render() + end + self._bb:rotate(degree) +end + function ImageWidget:paintTo(bb, x, y) local size = self:getSize() self.dimen = Geom:new{ x = x, y = y, w = size.w, - h = size.h + h = size.h } if self.hide then return end bb:blitFrom(self._bb, x, y, 0, 0, size.w, size.h) diff --git a/reader.lua b/reader.lua index a1f239359..19c58ecfa 100755 --- a/reader.lua +++ b/reader.lua @@ -1,11 +1,5 @@ #!./koreader-base -require "libs/libkoreader-lfs" -einkfb = require("ffi/framebuffer") -input = require("ffi/input") -freetype = require("ffi/freetype") -Image = require("ffi/mupdfimg") - require "defaults" pcall(dofile, "defaults.persistent.lua") package.path = "?.lua;common/?.lua;frontend/?.lua" @@ -27,14 +21,15 @@ end local DocumentRegistry = require("document/documentregistry") local FileManager = require("apps/filemanager/filemanager") local InfoMessage = require("ui/widget/infomessage") +local ReaderUI = require("apps/reader/readerui") +local lfs = require("libs/libkoreader-lfs") local UIManager = require("ui/uimanager") local Menu = require("ui/widget/menu") local Device = require("ui/device") local Screen = require("ui/screen") +local input = require("ffi/input") local DEBUG = require("dbg") -local ReaderUI = require("apps/reader/readerui") - local Profiler = nil function exitReader() diff --git a/wtest.lua b/wtest.lua index 816bc0c1c..b76153fce 100755 --- a/wtest.lua +++ b/wtest.lua @@ -1,11 +1,5 @@ #!./koreader-base -require "libs/libkoreader-lfs" -einkfb = require("ffi/framebuffer") -input = require("ffi/input") -freetype = require("ffi/freetype") -Image = require("ffi/mupdfimg") - require "defaults" print(package.path) package.path = "?.lua;common/?.lua;frontend/?.lua" @@ -64,7 +58,7 @@ end function TestVisible:paintTo(bb) --Draw three lines at the borders to assess what the maximum visible coordinates are - + v_line = math.floor(bb:getWidth() / 50) h_line = math.floor(bb:getHeight() / 50) -- Paint white background for higher contrast @@ -78,40 +72,40 @@ function TestVisible:paintTo(bb) x_num = i*50 RenderText:renderUtf8Text(bb, x_num, 40, Font:getFace("ffont", 12), x_num, true) end - + -- Handtunable minimal and maximal visible coordinates local x_min = 0 + 4 local x_max = bb:getWidth() - 4 local y_min = 0 + 3 local y_max = bb:getHeight() - 3 - 12 - + -- Render extremes on screen RenderText:renderUtf8Text(bb, 150, 100, Font:getFace("ffont", 22), "x_min = "..x_min, true) RenderText:renderUtf8Text(bb, 500, 100, Font:getFace("ffont", 22), "x_max = "..x_max, true) RenderText:renderUtf8Text(bb, 100, 150, Font:getFace("ffont", 22), "y_min = "..y_min, true) RenderText:renderUtf8Text(bb, 100, 300, Font:getFace("ffont", 22), "y_max = "..y_max, true) RenderText:renderUtf8Text(bb, 100, 500, Font:getFace("ffont", 26), "Visible screen size : "..(x_max-x_min).."x"..(y_max-y_min), true) - + -- Three parallel lines at the top bb:paintRect(x_min,y_min, x_max, 1 , 10) bb:paintRect(x_min,y_min + 3, x_max, 1 , 10) bb:paintRect(x_min,y_min + 6, x_max, 1 , 10) - + -- Three parallel lines at the bottom bb:paintRect(x_min,y_max, x_max, 1 , 10) bb:paintRect(x_min,y_max - 3, x_max, 1 , 10) bb:paintRect(x_min,y_max - 6, x_max, 1 , 10) - + -- Three parallel lines at the left bb:paintRect(x_min,y_min, 1, y_max , 10) bb:paintRect(x_min + 3,y_min, 1, y_max, 10) bb:paintRect(x_min + 6,y_min, 1, y_max, 10) - + -- Three parallel lines at the right bb:paintRect(x_max,y_min, 1, y_max , 10) bb:paintRect(x_max - 3,y_min, 1, y_max, 10) bb:paintRect(x_max - 6,y_min, 1, y_max, 10) - + --Two lines spaces 600 pixels bb:paintRect(100,600, 1, 250 , 10) bb:paintRect(700,600, 1, 250 , 10)