mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
@@ -12,64 +12,8 @@ function DJVUReader:init()
|
||||
end
|
||||
|
||||
-- open a DJVU file and its settings store
|
||||
-- DJVU does not support password yet
|
||||
function DJVUReader:open(filename)
|
||||
self.doc = djvu.openDocument(filename)
|
||||
if self.doc ~= nil then
|
||||
self.settings = DocSettings:open(filename)
|
||||
local gamma = self.settings:readsetting("gamma")
|
||||
if gamma then
|
||||
self.globalgamma = gamma
|
||||
end
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
--set viewer state according to zoom state
|
||||
function DJVUReader:setzoom(page)
|
||||
local dc = self.newDC()
|
||||
local pwidth, pheight = page:getSize(self.nulldc)
|
||||
|
||||
if self.globalzoommode == self.ZOOM_FIT_TO_PAGE then
|
||||
self.globalzoom = width / pwidth
|
||||
self.offset_x = 0
|
||||
self.offset_y = (height - (self.globalzoom * pheight)) / 2
|
||||
if height / pheight < self.globalzoom then
|
||||
self.globalzoom = height / pheight
|
||||
print(width, (self.globalzoom * pwidth))
|
||||
self.offset_x = (width - (self.globalzoom * pwidth)) / 2
|
||||
self.offset_y = 0
|
||||
end
|
||||
elseif self.globalzoommode == self.ZOOM_FIT_TO_PAGE_WIDTH then
|
||||
self.globalzoom = width / pwidth
|
||||
self.offset_x = 0
|
||||
self.offset_y = (height - (self.globalzoom * pheight)) / 2
|
||||
elseif self.globalzoommode == self.ZOOM_FIT_TO_PAGE_HEIGHT then
|
||||
self.globalzoom = height / pheight
|
||||
self.offset_x = (width - (self.globalzoom * pwidth)) / 2
|
||||
self.offset_y = 0
|
||||
end
|
||||
|
||||
dc:setZoom(self.globalzoom)
|
||||
-- record globalzoom for manual zoom in/out
|
||||
self.globalzoom_orig = self.globalzoom
|
||||
|
||||
dc:setRotate(self.globalrotate);
|
||||
dc:setOffset(self.offset_x, self.offset_y)
|
||||
self.fullwidth, self.fullheight = page:getSize(dc)
|
||||
self.min_offset_x = fb.bb:getWidth() - self.fullwidth
|
||||
self.min_offset_y = fb.bb:getHeight() - self.fullheight
|
||||
if(self.min_offset_x > 0) then
|
||||
self.min_offset_x = 0
|
||||
end
|
||||
if(self.min_offset_y > 0) then
|
||||
self.min_offset_y = 0
|
||||
end
|
||||
|
||||
-- set gamma here, we don't have any other good place for this right now:
|
||||
if self.globalgamma ~= self.GAMMA_NO_GAMMA then
|
||||
print("gamma correction: "..self.globalgamma)
|
||||
dc:setGamma(self.globalgamma)
|
||||
end
|
||||
return dc
|
||||
return self:loadSettings(filename)
|
||||
end
|
||||
|
||||
@@ -14,13 +14,5 @@ end
|
||||
-- open a PDF file and its settings store
|
||||
function PDFReader:open(filename, password)
|
||||
self.doc = pdf.openDocument(filename, password or "")
|
||||
if self.doc ~= nil then
|
||||
self.settings = DocSettings:open(filename)
|
||||
local gamma = self.settings:readsetting("gamma")
|
||||
if gamma then
|
||||
self.globalgamma = gamma
|
||||
end
|
||||
return true
|
||||
end
|
||||
return false
|
||||
return self:loadSettings(filename)
|
||||
end
|
||||
|
||||
@@ -72,10 +72,41 @@ function UniReader:new(o)
|
||||
return o
|
||||
end
|
||||
|
||||
--[[
|
||||
For a new specific reader,
|
||||
you must always overwrite following two methods:
|
||||
|
||||
* self:init()
|
||||
* self:open()
|
||||
|
||||
overwrite other methods if needed.
|
||||
--]]
|
||||
function UniReader:init()
|
||||
print("empty initialization method!")
|
||||
end
|
||||
|
||||
-- open a file and its settings store
|
||||
-- tips: you can use self:loadSettings in open() method.
|
||||
function UniReader:open(filename, password)
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
|
||||
--[ following are default methods ]--
|
||||
|
||||
function UniReader:loadSettings(filename)
|
||||
if self.doc ~= nil then
|
||||
self.settings = DocSettings:open(filename)
|
||||
local gamma = self.settings:readsetting("gamma")
|
||||
if gamma then
|
||||
self.globalgamma = gamma
|
||||
end
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
-- guarantee that we have enough memory in cache
|
||||
function UniReader:cacheclaim(size)
|
||||
if(size > self.cache_max_memsize) then
|
||||
@@ -136,11 +167,6 @@ function UniReader:clearcache()
|
||||
self.cache_current_memsize = 0
|
||||
end
|
||||
|
||||
-- open a file and its settings store
|
||||
function UniReader:open(filename, password)
|
||||
return false
|
||||
end
|
||||
|
||||
-- set viewer state according to zoom state
|
||||
function UniReader:setzoom(page)
|
||||
local dc = self.newDC()
|
||||
|
||||
Reference in New Issue
Block a user