Almost ready; rotating by 180° does now work

reviewable/pr11752/r2
zwim 2 months ago
parent 6d7296bde4
commit 32c7779da2

@ -781,7 +781,7 @@ function ReaderView:onSetRotationMode(rotation)
if rotation ~= nil then if rotation ~= nil then
local old_rotation = Screen:getRotationMode() local old_rotation = Screen:getRotationMode()
if rotation == old_rotation then if rotation == old_rotation then
return true return
end end
-- NOTE: We cannot rely on getScreenMode, as it actually checks the screen dimensions, instead of the rotation mode. -- NOTE: We cannot rely on getScreenMode, as it actually checks the screen dimensions, instead of the rotation mode.
@ -798,7 +798,7 @@ function ReaderView:onSetRotationMode(rotation)
Screen:setRotationMode(rotation) Screen:setRotationMode(rotation)
UIManager:setDirty(self.dialog, "full") UIManager:setDirty(self.dialog, "full")
Notification:notify(T(_("Rotation mode set to: %1"), optionsutil:getOptionText("SetRotationMode", rotation))) Notification:notify(T(_("Rotation mode set to: %1"), optionsutil:getOptionText("SetRotationMode", rotation)))
return true return
end end
Screen:setRotationMode(rotation) Screen:setRotationMode(rotation)
@ -810,7 +810,7 @@ function ReaderView:onSetRotationMode(rotation)
self.ui:onScreenResize(new_screen_size) self.ui:onScreenResize(new_screen_size)
self.ui:handleEvent(Event:new("InitScrollPageStates")) self.ui:handleEvent(Event:new("InitScrollPageStates"))
Notification:notify(T(_("Rotation mode set to: %1"), optionsutil:getOptionText("SetRotationMode", rotation))) Notification:notify(T(_("Rotation mode set to: %1"), optionsutil:getOptionText("SetRotationMode", rotation)))
return true return
end end
function ReaderView:onSetDimensions(dimensions) function ReaderView:onSetDimensions(dimensions)

@ -113,8 +113,7 @@ function CoverImage:createCoverImage(doc_settings)
if self:coverEnabled() and doc_settings:nilOrFalse("exclude_cover_image") then if self:coverEnabled() and doc_settings:nilOrFalse("exclude_cover_image") then
local cover_image, custom_cover = FileManagerBookInfo:getCoverImage(self.ui.document) local cover_image, custom_cover = FileManagerBookInfo:getCoverImage(self.ui.document)
if cover_image then if cover_image then
local s_w, s_h = Screen:getWidth(), Screen:getHeight() local cache_file = self:getCacheFile(custom_cover)
local cache_file = self:getCacheFile(custom_cover, s_w, s_h)
if lfs.attributes(cache_file, "mode") == "file" then if lfs.attributes(cache_file, "mode") == "file" then
logger.dbg("CoverImage: cache file already exists") logger.dbg("CoverImage: cache file already exists")
ffiutil.copyFile(cache_file, self.cover_image_path) ffiutil.copyFile(cache_file, self.cover_image_path)
@ -122,9 +121,17 @@ function CoverImage:createCoverImage(doc_settings)
return return
end end
local s_w, s_h = Screen:getWidth(), Screen:getHeight()
local i_w, i_h = cover_image:getWidth(), cover_image:getHeight() local i_w, i_h = cover_image:getWidth(), cover_image:getHeight()
local scale_factor = math.min(s_w / i_w, s_h / i_h) local scale_factor = math.min(s_w / i_w, s_h / i_h)
if Screen:getRotationMode() == Screen.DEVICE_ROTATED_UPSIDE_DOWN
or Screen:getRotationMode() == Screen.DEVICE_ROTATED_COUNTER_CLOCKWISE then
print("xxxxx rotating")
cover_image:rotate(180) -- this does not work ????
end
if self.cover_image_background == "none" or scale_factor == 1 then if self.cover_image_background == "none" or scale_factor == 1 then
local act_format = self.cover_image_format == "auto" and getExtension(self.cover_image_path) or self.cover_image_format local act_format = self.cover_image_format == "auto" and getExtension(self.cover_image_path) or self.cover_image_format
if not cover_image:writeToFile(self.cover_image_path, act_format, self.cover_image_quality, self.cover_image_grayscale) then if not cover_image:writeToFile(self.cover_image_path, act_format, self.cover_image_quality, self.cover_image_grayscale) then
@ -200,9 +207,9 @@ function CoverImage:onReaderReady(doc_settings)
self:createCoverImage(doc_settings) self:createCoverImage(doc_settings)
end end
function CoverImage:onRotationUpdate() function CoverImage:onSetRotationMode(rotation)
logger.dbg("CoverImage: onRotationUpdate") logger.dbg("CoverImage: onSetRotationMode", rotation)
self.createCoverImage(self.ui.doc_settings) self:createCoverImage(self.ui.doc_settings)
end end
function CoverImage:fallbackEnabled() function CoverImage:fallbackEnabled()
@ -217,13 +224,13 @@ end
-- cache handling functions -- cache handling functions
--------------------------- ---------------------------
function CoverImage:getCacheFile(custom_cover, s_w, s_h) function CoverImage:getCacheFile(custom_cover)
local custom_cover_mtime = custom_cover and lfs.attributes(custom_cover, "modification") or "" local custom_cover_mtime = custom_cover and lfs.attributes(custom_cover, "modification") or ""
local dummy, document_name = util.splitFilePathName(self.ui.document.file) local dummy, document_name = util.splitFilePathName(self.ui.document.file)
-- use document_name here. Title may contain characters not allowed on every filesystem (esp. vfat on /sdcard) -- use document_name here. Title may contain characters not allowed on every filesystem (esp. vfat on /sdcard)
local key = document_name .. custom_cover_mtime .. self.cover_image_quality .. self.cover_image_stretch_limit local key = document_name .. custom_cover_mtime .. self.cover_image_quality .. self.cover_image_stretch_limit
.. self.cover_image_background .. self.cover_image_format .. tostring(self.cover_image_grayscale) .. self.cover_image_background .. self.cover_image_format .. tostring(self.cover_image_grayscale)
.. s_w .. s_h .. Screen:getRotationMode()
return self.cover_image_cache_path .. self.cover_image_cache_prefix .. md5(key) .. "." .. getExtension(self.cover_image_path) return self.cover_image_cache_path .. self.cover_image_cache_prefix .. md5(key) .. "." .. getExtension(self.cover_image_path)
end end

Loading…
Cancel
Save