Paged documents: rework zoom options (#6885)

- Move zoom options from top menu to bottom config
- Add option to manually define zoom (relative to
  page width) and overlap (in percent)
- Add options to zoom to columns or rows, possibly
  with overlap. Add panning direction options when
  page forward in these modes
reviewable/pr6921/r1
jperon 4 years ago committed by GitHub
parent 52f66a89d2
commit 8eeb010dc9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -25,9 +25,6 @@ function ReaderCropping:onPageCrop(mode)
end
return
elseif mode == "none" then
if self.document.configurable.text_wrap ~= 1 then
self.ui:handleEvent(Event:new("SetZoomMode", "pagewidth", "cropping"))
end
return
end
-- backup original view dimen
@ -51,7 +48,7 @@ function ReaderCropping:onPageCrop(mode)
-- mode, just force readerview to recalculate visible_area
self.view:recalculate()
else
self.ui:handleEvent(Event:new("SetZoomMode", "page", "cropping"))
self.ui:handleEvent(Event:new("SetZoomMode", "page"))
end
-- prepare bottom buttons so we know the size available for the page above it
@ -152,11 +149,11 @@ end
function ReaderCropping:setCropZoomMode(confirmed)
if confirmed then
-- if original zoom mode is not "content", set zoom mode to "contentwidth"
self:setZoomMode(
self.orig_zoom_mode:find("content")
and self.orig_zoom_mode
or "contentwidth")
-- if original zoom mode is "page???", set zoom mode to "content???"
local zoom_mode_type = self.orig_zoom_mode:match("page(.*)")
self:setZoomMode(zoom_mode_type
and "content"..zoom_mode_type
or self.orig_zoom_mode)
self.ui:handleEvent(Event:new("InitScrollPageStates"))
else
self:setZoomMode(self.orig_zoom_mode)

@ -1,5 +1,7 @@
local EventListener = require("ui/widget/eventlistener")
local Event = require("ui/event")
local ReaderZooming = require("apps/reader/modules/readerzooming")
local util = require("util")
local ReaderKoptListener = EventListener:new{}
@ -14,9 +16,13 @@ end
function ReaderKoptListener:onReadSettings(config)
-- normal zoom mode is zoom mode used in non-reflow mode.
self.normal_zoom_mode = config:readSetting("normal_zoom_mode") or
local normal_zoom_mode = config:readSetting("normal_zoom_mode") or
G_reader_settings:readSetting("zoom_mode") or "page"
self:setZoomMode(self.normal_zoom_mode)
normal_zoom_mode = util.arrayContains(ReaderZooming.available_zoom_modes, normal_zoom_mode)
and normal_zoom_mode
or "page"
self.normal_zoom_mode = normal_zoom_mode
self:setZoomMode(normal_zoom_mode)
self.document.configurable.contrast = config:readSetting("kopt_contrast") or
G_reader_settings:readSetting("kopt_contrast") or 1.0
self.ui:handleEvent(Event:new("GammaUpdate", 1/self.document.configurable.contrast))

@ -6,6 +6,7 @@ local InputContainer = require("ui/widget/container/inputcontainer")
local Math = require("optmath")
local MultiConfirmBox = require("ui/widget/multiconfirmbox")
local Notification = require("ui/widget/notification")
local ReaderZooming = require("apps/reader/modules/readerzooming")
local UIManager = require("ui/uimanager")
local bit = require("bit")
local logger = require("logger")
@ -193,6 +194,9 @@ function ReaderPaging:onReadSettings(config)
if self.inverse_reading_order == nil then
self.inverse_reading_order = G_reader_settings:isTrue("inverse_reading_order")
end
for _, v in ipairs(ReaderZooming.zoom_pan_settings) do
self[v] = config:readSetting(v) or G_reader_settings:readSetting(v) or ReaderZooming[v]
end
end
function ReaderPaging:onSaveSettings()
@ -840,134 +844,115 @@ function ReaderPaging:onGotoPageRel(diff)
logger.dbg("goto relative page:", diff)
local new_va = self.visible_area:copy()
local x_pan_off, y_pan_off = 0, 0
if self.zoom_mode:find("width") then
y_pan_off = self.visible_area.h * diff
elseif self.zoom_mode:find("height") then
-- negative x panning if writing direction is right to left
local direction = self.ui.document.configurable.writing_direction
x_pan_off = self.visible_area.w * diff * (direction == 1 and -1 or 1)
elseif self.zoom_mode:find("column") then
-- zoom mode for two-column navigation
y_pan_off = self.visible_area.h * diff
y_pan_off = Math.roundAwayFromZero(y_pan_off)
new_va.x = Math.roundAwayFromZero(self.visible_area.x)
new_va.y = Math.roundAwayFromZero(self.visible_area.y+y_pan_off)
-- intra-column navigation (vertical), this is the default behavior
-- if we do not reach the end of a column
if new_va:notIntersectWith(self.page_area) then
-- if we leave the page, we must either switch to the other column
-- or switch to another page (we are crossing the end of a column)
x_pan_off = self.visible_area.w * diff
x_pan_off = Math.roundAwayFromZero(x_pan_off)
new_va.x = Math.roundAwayFromZero(self.visible_area.x+x_pan_off)
new_va.y = Math.roundAwayFromZero(self.visible_area.y)
-- inter-column displacement (horizontal)
if new_va:notIntersectWith(self.page_area) then
-- if we leave the page with horizontal displacement, then we are
-- already in the border column, we must turn the page
local new_page = self.current_page + diff
if diff > 0 and new_page == self.number_of_pages + 1 then
self.ui:handleEvent(Event:new("EndOfBook"))
else
self:_gotoPage(new_page)
end
if y_pan_off < 0 then
-- if we are going back to previous page, reset view area
-- to bottom right of previous page, end of second column
self.view:PanningUpdate(self.page_area.w, self.page_area.h)
end
else
-- if we do not leave the page with horizontal displacement,
-- it means that we can stay on this page and switch column
if diff > 0 then
-- end of first column, set view area to the top right of
-- current page, beginning of second column
self.view:PanningUpdate(self.page_area.w, -self.page_area.h)
else
-- move backwards to the first column, set the view area to the
-- bottom left of the current page
self.view:PanningUpdate(-self.page_area.w, self.page_area.h)
end
end
-- if we are here, the panning has already been updated so return
return true
local right_to_left = (self.ui.document.configurable.writing_direction > 0)
local bottom_to_top = self.ui.zooming.zoom_bottom_to_top
local h_progress = 1 - self.ui.zooming.zoom_overlap_h / 100
local v_progress = 1 - self.ui.zooming.zoom_overlap_v / 100
local old_va = self.visible_area
local old_page = self.current_page
local x, y, w, h = "x", "y", "w", "h"
local x_diff = diff
local y_diff = diff
-- Adjust directions according to settings
if self.ui.zooming.zoom_direction_vertical then -- invert axes
y, x, h, w = x, y, w, h
h_progress, v_progress = v_progress, h_progress
if right_to_left then
x_diff, y_diff = -x_diff, -y_diff
end
if bottom_to_top then
x_diff = -x_diff
end
elseif bottom_to_top then
y_diff = -y_diff
end
if right_to_left then
x_diff = -x_diff
end
if self.zoom_mode ~= "free" then
x_pan_off = Math.roundAwayFromZero(self.visible_area[w] * h_progress * x_diff)
y_pan_off = Math.roundAwayFromZero(self.visible_area[h] * v_progress * y_diff)
end
elseif self.zoom_mode ~= "free" then -- do nothing in "free" zoom mode
-- must be fit content or page zoom mode
if self.visible_area.w == self.page_area.w then
y_pan_off = self.visible_area.h * diff
-- Auxiliary functions to (as much as possible) keep things clear
-- If going backwards (diff < 0) "end" is equivalent to "beginning", "next" to "previous";
-- in column mode, "line" is equivalent to "column".
local function at_end(axis)
-- returns true if we're at the end of line (axis = x) or page (axis = y)
local len, _diff
if axis == x then
len, _diff = w, x_diff
else
x_pan_off = self.visible_area.w * diff
len, _diff = h, y_diff
end
return old_va[axis] + old_va[len] + _diff > self.page_area[axis] + self.page_area[len]
or old_va[axis] + _diff < self.page_area[axis]
end
local function goto_end(axis, _diff)
-- updates view area to the end of line (axis = x) or page (axis = y)
local len = axis == x and w or h
_diff = _diff or (axis == x and x_diff or y_diff)
new_va[axis] = _diff > 0
and old_va[axis] + self.page_area[len] - old_va[len]
or self.page_area[axis]
end
-- adjust offset to help with page turn decision
-- we dont take overlap into account here yet, otherwise new_va will
-- always intersect with page_area
x_pan_off = Math.roundAwayFromZero(x_pan_off)
y_pan_off = Math.roundAwayFromZero(y_pan_off)
new_va.x = Math.roundAwayFromZero(self.visible_area.x+x_pan_off)
new_va.y = Math.roundAwayFromZero(self.visible_area.y+y_pan_off)
if new_va:notIntersectWith(self.page_area) then
-- view area out of page area, do a page turn
local function goto_next_line()
new_va[y] = old_va[y] + y_pan_off
goto_end(x, -x_diff)
end
local function goto_next_page()
local new_page = self.current_page + diff
if diff > 0 and new_page == self.number_of_pages + 1 then
if new_page > self.number_of_pages then
self.ui:handleEvent(Event:new("EndOfBook"))
else
goto_end(y)
goto_end(x)
elseif new_page > 0 then
self:_gotoPage(new_page)
goto_end(y, -y_diff)
else
goto_end(x)
end
-- if we are going back to previous page, reset
-- view area to bottom of previous page
if x_pan_off < 0 then
self.view:PanningUpdate(self.page_area.w, 0)
elseif y_pan_off < 0 then
self.view:PanningUpdate(0, self.page_area.h)
end
else
-- not end of page yet, goto next view
-- adjust panning step according to overlap
local overlap = self.overlap
if x_pan_off > overlap then
-- moving to next view, move view
x_pan_off = x_pan_off - overlap
elseif x_pan_off < -overlap then
x_pan_off = x_pan_off + overlap
end
if y_pan_off > overlap then
y_pan_off = y_pan_off - overlap
elseif y_pan_off < -overlap then
y_pan_off = y_pan_off + overlap
end
-- we have to calculate again to count into overlap
new_va.x = Math.roundAwayFromZero(self.visible_area.x+x_pan_off)
new_va.y = Math.roundAwayFromZero(self.visible_area.y+y_pan_off)
-- fit new view area into page area
new_va:offsetWithin(self.page_area, 0, 0)
-- calculate panning offsets
local panned_x = new_va.x - self.visible_area.x
local panned_y = new_va.y - self.visible_area.y
-- adjust for crazy floating point overflow...
if math.abs(panned_x) < 1 then
panned_x = 0
end
if math.abs(panned_y) < 1 then
panned_y = 0
end
-- Move the view area towerds line end
new_va[x] = old_va[x] + x_pan_off
new_va[y] = old_va[y]
-- Handle cases when the view area gets out of page boundaries
if not self.page_area:contains(new_va) then
if not at_end(x) then
goto_end(x)
else
goto_next_line()
if not self.page_area:contains(new_va) then
if not at_end(y) then
goto_end(y)
else
goto_next_page()
end
end
end
-- singal panning update
self.view:PanningUpdate(panned_x, panned_y)
-- update dime area in ReaderView
if self.show_overlap_enable then
end
-- signal panning update
local panned_x, panned_y = (new_va.x - old_va.x), (new_va.y - old_va.y)
-- adjust for crazy floating point overflow...
if math.abs(panned_x) < 1 then
panned_x = 0
end
if math.abs(panned_y) < 1 then
panned_y = 0
end
self.view:PanningUpdate(panned_x, panned_y)
-- update dim area in ReaderView
if self.show_overlap_enable then
if self.current_page ~= old_page then
self.view.dim_area.x = 0
self.view.dim_area.y = 0
else
self.view.dim_area.h = new_va.h - math.abs(panned_y)
self.view.dim_area.w = new_va.w - math.abs(panned_x)
if panned_y < 0 then
@ -981,8 +966,6 @@ function ReaderPaging:onGotoPageRel(diff)
self.view.dim_area.x = 0
end
end
-- update self.visible_area
self.visible_area = new_va
end
return true

@ -573,12 +573,17 @@ function ReaderView:recalculate()
self.visible_area.h = self.visible_area.h - self.ui.view.footer:getHeight()
end
if self.ui.document.configurable.writing_direction == 0 then
-- starts from left top of page_area
-- starts from left of page_area
self.visible_area.x = self.page_area.x
self.visible_area.y = self.page_area.y
else
-- start from right top of page_area
-- start from right of page_area
self.visible_area.x = self.page_area.x + self.page_area.w - self.visible_area.w
end
if self.ui.zooming.zoom_bottom_to_top then
-- starts from bottom of page_area
self.visible_area.y = self.page_area.y + self.page_area.h - self.visible_area.h
else
-- starts from top of page_area
self.visible_area.y = self.page_area.y
end
if not self.page_scroll then
@ -736,6 +741,9 @@ In combination with zoom to fit page, page height, content height or content, co
end
self.page_scroll = page_scroll
if not page_scroll then
self.ui.document.configurable.page_scroll = 0
end
self:recalculate()
self.ui:handleEvent(Event:new("InitScrollPageStates"))
end

@ -6,8 +6,10 @@ local Geom = require("ui/geometry")
local GestureRange = require("ui/gesturerange")
local InfoMessage = require("ui/widget/infomessage")
local InputContainer = require("ui/widget/container/inputcontainer")
local SpinWidget = require("ui/widget/spinwidget")
local UIManager = require("ui/uimanager")
local logger = require("logger")
local util = require("util")
local _ = require("gettext")
local Input = Device.input
local Screen = Device.screen
@ -15,9 +17,35 @@ local T = require("ffi/util").template
local ReaderZooming = InputContainer:new{
zoom = 1.0,
available_zoom_modes = {
"page",
"pagewidth",
"pageheight",
"content",
"contentwidth",
"contentheight",
"columns",
"rows",
"manual",
},
-- default to nil so we can trigger ZoomModeUpdate events on start up
zoom_mode = nil,
DEFAULT_ZOOM_MODE = "pagewidth",
-- for pan mode: fit to width/zoom_factor,
-- with overlap of zoom_overlap_h % (horizontally)
-- and zoom_overlap_v % (vertically).
zoom_factor = 2,
zoom_pan_settings = {
"zoom_factor",
"zoom_overlap_h",
"zoom_overlap_v",
"zoom_bottom_to_top",
"zoom_direction_vertical",
},
zoom_overlap_h = 40,
zoom_overlap_v = 40,
zoom_bottom_to_top = nil, -- true for bottom-to-top
zoom_direction_vertical = nil, -- true for column mode
current_page = 1,
rotation = 0,
paged_modes = {
@ -71,25 +99,35 @@ function ReaderZooming:init()
doc = "zoom to fit content height",
event = "SetZoomMode", args = "contentheight"
},
ZoomToFitColumn = {
{ "Shift", "C" },
doc = "zoom to fit column",
event = "SetZoomMode", args = "colu"
ZoomManual = {
{ "Shift", "M" },
doc = "manual zoom mode",
event = "SetZoomMode", args = "manual"
},
}
end
self.ui.menu:registerToMainMenu(self)
end
function ReaderZooming:onReadSettings(config)
local zoom_mode = config:readSetting("zoom_mode") or
G_reader_settings:readSetting("zoom_mode") or
self.DEFAULT_ZOOM_MODE
local zoom_mode = config:readSetting("zoom_mode")
or G_reader_settings:readSetting("zoom_mode")
or self.DEFAULT_ZOOM_MODE
zoom_mode = util.arrayContains(self.available_zoom_modes, zoom_mode)
and zoom_mode
or self.DEFAULT_ZOOM_MODE
self:setZoomMode(zoom_mode, true) -- avoid informative message on load
for _, setting in ipairs(self.zoom_pan_settings) do
self[setting] = config:readSetting(setting) or
G_reader_settings:readSetting(setting) or
self[setting]
end
end
function ReaderZooming:onSaveSettings()
self.ui.doc_settings:saveSetting("zoom_mode", self.orig_zoom_mode or self.zoom_mode)
for _, setting in ipairs(self.zoom_pan_settings) do
self.ui.doc_settings:saveSetting(setting, self[setting])
end
end
function ReaderZooming:onSpread(arg, ges)
@ -161,6 +199,108 @@ function ReaderZooming:onZoom(direction)
return true
end
function ReaderZooming:onDefineZoom(btn)
local config = self.ui.document.configurable
local settings = ({
[7] = {right_to_left = false, zoom_bottom_to_top = false, zoom_direction_vertical = false},
[6] = {right_to_left = false, zoom_bottom_to_top = false, zoom_direction_vertical = true },
[5] = {right_to_left = false, zoom_bottom_to_top = true, zoom_direction_vertical = false},
[4] = {right_to_left = false, zoom_bottom_to_top = true, zoom_direction_vertical = true },
[3] = {right_to_left = true, zoom_bottom_to_top = true, zoom_direction_vertical = true },
[2] = {right_to_left = true, zoom_bottom_to_top = true, zoom_direction_vertical = false},
[1] = {right_to_left = true, zoom_bottom_to_top = false, zoom_direction_vertical = true },
[0] = {right_to_left = true, zoom_bottom_to_top = false, zoom_direction_vertical = false},
})[config.zoom_direction]
local zoom_range_number = config.zoom_range_number
local zoom_factor = config.zoom_factor
local zoom_mode_genus = ({
[4] = "page",
[3] = "content",
[2] = "columns",
[1] = "rows",
[0] = "manual",
})[config.zoom_mode_genus]
local zoom_mode_type = ({
[2] = "",
[1] = "width",
[0] = "height",
})[config.zoom_mode_type]
settings.zoom_overlap_h = config.zoom_overlap_h
settings.zoom_overlap_v = config.zoom_overlap_v
if btn == "set_zoom_overlap_h" then
self:_zoomPanChange(_("Set horizontal overlap"), "zoom_overlap_h")
settings.zoom_overlap_h = self.zoom_overlap_h
elseif btn == "set_zoom_overlap_v" then
self:_zoomPanChange(_("Set vertical overlap"), "zoom_overlap_v")
settings.zoom_overlap_v = self.zoom_overlap_v
end
local zoom_mode
if zoom_mode_genus == "page" or zoom_mode_genus == "content" then
zoom_mode = zoom_mode_genus..zoom_mode_type
else
zoom_mode = zoom_mode_genus
self.ui:handleEvent(Event:new("SetScrollMode", false))
end
zoom_mode = util.arrayContains(self.available_zoom_modes, zoom_mode) and zoom_mode or self.DEFAULT_ZOOM_MODE
settings.zoom_mode = zoom_mode
if settings.right_to_left then
if settings.zoom_bottom_to_top then
config.writing_direction = 2
else
config.writing_direction = 1
end
else
config.writing_direction = 0
end
settings.right_to_left = nil
if zoom_mode == "columns" or zoom_mode == "rows" then
if btn ~= "columns" and btn ~= "rows" then
self.ui:handleEvent(Event:new("SetZoomPan", settings, true))
settings.zoom_factor = self:setNumberOf(
zoom_mode,
zoom_range_number,
zoom_mode == "columns" and settings.zoom_overlap_h or settings.zoom_overlap_v
)
end
elseif zoom_mode == "manual" then
if btn == "manual" then
config.zoom_factor = self:getNumberOf("columns")
else
self:setNumberOf("columns", zoom_factor)
end
self.ui:handleEvent(Event:new("SetZoomPan", settings, true))
end
self.ui:handleEvent(Event:new("SetZoomMode", zoom_mode))
if btn == "columns" or btn == "rows" then
config.zoom_range_number = self:getNumberOf(
zoom_mode,
btn == "columns" and settings.zoom_overlap_h or settings.zoom_overlap_v
)
end
if tonumber(btn) then
UIManager:show(InfoMessage:new{
timeout = 2,
text = T(_([[Zoom set to:
mode: %1
number of columns: %2
number of rows: %4
horizontal overlap: %3 %
vertical overlap: %5 %
zoom factor: %6]]),
zoom_mode,
("%.2f"):format(self:getNumberOf("columns", settings.zoom_overlap_h)),
settings.zoom_overlap_h,
("%.2f"):format(self:getNumberOf("rows", settings.zoom_overlap_v)),
settings.zoom_overlap_v,
("%.2f"):format(self:getNumberOf("columns"))),
})
end
end
function ReaderZooming:onSetZoomMode(new_mode)
self.view.zoom_mode = new_mode
if self.zoom_mode ~= new_mode then
@ -168,7 +308,11 @@ function ReaderZooming:onSetZoomMode(new_mode)
self.ui:handleEvent(Event:new("ZoomModeUpdate", new_mode))
self.zoom_mode = new_mode
self:setZoom()
self.ui:handleEvent(Event:new("InitScrollPageStates", new_mode))
if new_mode == "manual" then
self.ui:handleEvent(Event:new("SetScrollMode", false))
else
self.ui:handleEvent(Event:new("InitScrollPageStates", new_mode))
end
end
end
@ -241,12 +385,9 @@ end
function ReaderZooming:getZoom(pageno)
-- check if we're in bbox mode and work on bbox if that's the case
local zoom = nil
local zoom
local page_size = self.ui.document:getNativePageDimensions(pageno)
if self.zoom_mode == "content"
or self.zoom_mode == "contentwidth"
or self.zoom_mode == "contentheight"
or self.zoom_mode == "column" then
if not (self.zoom_mode and self.zoom_mode:match("^page") or self.ui.document.configurable.trim_page == 3) then
local ubbox_dimen = self.ui.document:getUsedBBoxDimensions(pageno, 1)
-- if bbox is larger than the native page dimension render the full page
-- See discussion in koreader/koreader#970.
@ -283,12 +424,15 @@ function ReaderZooming:getZoom(pageno)
end
elseif self.zoom_mode == "contentwidth" or self.zoom_mode == "pagewidth" then
zoom = zoom_w
elseif self.zoom_mode == "column" then
zoom = zoom_w * 2
elseif self.zoom_mode == "contentheight" or self.zoom_mode == "pageheight" then
zoom = zoom_h
elseif self.zoom_mode == "free" then
zoom = self.zoom
else
local zoom_factor = self.ui.doc_settings:readSetting("zoom_factor")
or G_reader_settings:readSetting("zoom_factor")
or self.zoom_factor
zoom = zoom_w * zoom_factor
end
if zoom and zoom > 10 and not Cache:willAccept(zoom * (self.dimen.w * self.dimen.h + 64)) then
logger.dbg("zoom too large, adjusting")
@ -309,7 +453,7 @@ function ReaderZooming:getZoom(pageno)
if zoom < 0 then return 0 end
end
end
return zoom
return zoom, zoom_w, zoom_h
end
function ReaderZooming:getRegionalZoomCenter(pageno, pos)
@ -345,54 +489,109 @@ function ReaderZooming:genSetZoomModeCallBack(mode)
end
function ReaderZooming:setZoomMode(mode, no_warning)
if not no_warning and self.ui.view.page_scroll and self.paged_modes[mode] then
UIManager:show(InfoMessage:new{
text = T(_([[
if not no_warning and self.ui.view.page_scroll then
local message
if self.paged_modes[mode] then
message = T(_([[
%1
In combination with continuous view (scroll mode), this can cause unexpected vertical shifts when turning pages.]]), self.paged_modes[mode]),
timeout = 5,
})
In combination with continuous view (scroll mode), this can cause unexpected vertical shifts when turning pages.]]),
self.paged_modes[mode])
elseif self.zoom_mode == "manual" then
message = _([[
"Manual zoom works best with page view."
Please enable page view instead of continuous view (scroll mode).]])
end
if message then
UIManager:show(InfoMessage:new{text = message, timeout = 5})
end
end
self.ui:handleEvent(Event:new("SetZoomMode", mode))
self.ui:handleEvent(Event:new("InitScrollPageStates"))
end
function ReaderZooming:addToMainMenu(menu_items)
if self.ui.document.info.has_pages then
local function getZoomModeMenuItem(text, mode, separator)
return {
text_func = function()
local default_zoom_mode = G_reader_settings:readSetting("zoom_mode") or self.DEFAULT_ZOOM_MODE
return text .. (mode == default_zoom_mode and "" or "")
end,
checked_func = function()
return self.zoom_mode == mode
end,
callback = self:genSetZoomModeCallBack(mode),
hold_callback = function(touchmenu_instance)
self:makeDefault(mode, touchmenu_instance)
end,
separator = separator,
}
local function _getOverlapFactorForNum(n, overlap)
-- Auxiliary function to "distribute" an overlap between tiles
overlap = overlap * (n - 1) / n
return (100 / (100 - overlap))
end
function ReaderZooming:getNumberOf(what, overlap)
-- Number of columns (if what ~= "rows") or rows (if what == "rows")
local zoom, zoom_w, zoom_h = self:getZoom(self.current_page)
local zoom_factor = zoom / (what == "rows" and zoom_h or zoom_w)
if overlap then
overlap = (what == "rows" and self.zoom_overlap_v or self.zoom_overlap_h)
zoom_factor = (overlap - 100 * zoom_factor) / (overlap - 100) -- Thanks Xcas for this one...
end
return zoom_factor
end
function ReaderZooming:setNumberOf(what, num, overlap)
-- Sets number of columns (if what ~= "rows") or rows (if what == "rows")
local _, zoom_w, zoom_h = self:getZoom(self.current_page)
local overlap_factor = overlap and _getOverlapFactorForNum(num, overlap) or 1
local zoom_factor = num / overlap_factor
if what == "rows" then
zoom_factor = zoom_factor * zoom_h / zoom_w
end
self.ui:handleEvent(Event:new("SetZoomPan", {zoom_factor = zoom_factor}))
self.ui:handleEvent(Event:new("RedrawCurrentPage"))
end
function ReaderZooming:_zoomFactorChange(title_text, direction, precision)
local zoom_factor, overlap = self:getNumberOf(direction)
UIManager:show(SpinWidget:new{
width = math.floor(Screen:getWidth() * 0.6),
value = zoom_factor,
value_min = 0.1,
value_max = 10,
value_step = 0.1,
value_hold_step = 1,
precision = "%.1f",
ok_text = title_text,
title_text = title_text,
callback = function(spin)
zoom_factor = spin.value
self:setNumberOf(direction, zoom_factor, overlap)
end
menu_items.switch_zoom_mode = {
text = _("Switch zoom mode"),
enabled_func = function()
return self.ui.document.configurable.text_wrap ~= 1
end,
sub_item_table = {
getZoomModeMenuItem(_("Zoom to fit content width"), "contentwidth"),
getZoomModeMenuItem(_("Zoom to fit content height"), "contentheight", true),
getZoomModeMenuItem(_("Zoom to fit page width"), "pagewidth"),
getZoomModeMenuItem(_("Zoom to fit page height"), "pageheight", true),
getZoomModeMenuItem(_("Zoom to fit column"), "column"),
getZoomModeMenuItem(_("Zoom to fit content"), "content"),
getZoomModeMenuItem(_("Zoom to fit page"), "page"),
}
}
})
end
function ReaderZooming:_zoomPanChange(text, setting)
UIManager:show(SpinWidget:new{
width = math.floor(Screen:getWidth() * 0.6),
value = self[setting],
value_min = 0,
value_max = 90,
value_step = 1,
value_hold_step = 10,
ok_text = _("Set"),
title_text = text,
callback = function(spin)
self.ui:handleEvent(Event:new("SetZoomPan", {[setting] = spin.value}))
end
})
end
function ReaderZooming:onZoomFactorChange()
self:_zoomFactorChange(_("Set Zoom factor"), false, "%.1f")
end
function ReaderZooming:onSetZoomPan(settings, no_redraw)
for k, v in pairs(settings) do
self[k] = v
self.ui.doc_settings:saveSetting(k, v)
end
if not no_redraw then
self.ui:handleEvent(Event:new("RedrawCurrentPage"))
end
end
function ReaderZooming:onBBoxUpdate()
self:onDefineZoom()
end
function ReaderZooming:makeDefault(zoom_mode, touchmenu_instance)

@ -28,6 +28,7 @@ Each setting contains:
local CreOptions = require("ui/data/creoptions")
local Device = require("device")
local Event = require("ui/event")
local ReaderZooming = require("apps/reader/modules/readerzooming")
local Screen = require("device").screen
local UIManager = require("ui/uimanager")
local _ = require("gettext")
@ -114,7 +115,7 @@ local settingsList = {
book_cover = { category="none", event="ShowBookCover", title=_("Book cover"), rolling=true, paging=true, separator=true,},
show_config_menu = { category="none", event="ShowConfigMenu", title=_("Show bottom menu"), rolling=true, paging=true,},
toggle_bookmark = { category="none", event="ToggleBookmark", title=_("Toggle bookmark"), rolling=true, paging=true,},
toggle_inverse_reading_order = { category="none", event="ToggleReadingOrder", title=_("Toggle page turn direction"), rolling=true, paging=true,},
toggle_inverse_reading_order = { category="none", event="ToggleReadingOrder", title=_("Toggle page turn direction"), rolling=true, paging=true, separator=true},
cycle_highlight_action = { category="none", event="CycleHighlightAction", title=_("Cycle highlight action"), rolling=true, paging=true,},
cycle_highlight_style = { category="none", event="CycleHighlightStyle", title=_("Cycle highlight style"), rolling=true, paging=true,},
page_jmp = { category="absolutenumber", event="GotoViewRel", min=-100, max=100, title=_("Go %1 pages"), rolling=true, paging=true,},
@ -127,7 +128,8 @@ local settingsList = {
-- paging reader settings
toggle_page_flipping = { category="none", event="TogglePageFlipping", title=_("Toggle page flipping"), paging=true,},
toggle_reflow = { category="none", event="ToggleReflow", title=_("Toggle reflow"), paging=true,},
zoom = { category="string", event="SetZoomMode", title=_("Zoom to"), args={"contentwidth", "contentheight", "pagewidth", "pageheight", "column", "content", "page"}, toggle={"content width", "content height", "page width", "page height", "column", "content", "page"}, paging=true,},
zoom = { category="string", event="SetZoomMode", title=_("Zoom mode"), args=ReaderZooming.available_zoom_modes, toggle=ReaderZooming.available_zoom_modes, paging=true,},
zoom_factor_change = {category="none", event="ZoomFactorChange", title=_("Change zoom factor"), paging=true, separator=true},
-- parsed from CreOptions
-- the rest of the table elements are built from their counterparts in CreOptions
@ -254,6 +256,7 @@ local dispatcher_menu_order = {
"toggle_reflow",
"toggle_inverse_reading_order",
"zoom",
"zoom_factor_change",
"cycle_highlight_action",
"cycle_highlight_style",
"panel_zoom_toggle",

@ -273,10 +273,10 @@ function Document:getUsedBBoxDimensions(pageno, zoom, rotation)
-- clipping page bbox
if bbox.x0 < 0 then bbox.x0 = 0 end
if bbox.y0 < 0 then bbox.y0 = 0 end
if bbox.x1 < 0 then bbox.x1 = 0 end
if bbox.y1 < 0 then bbox.y1 = 0 end
if bbox.x1 and bbox.x1 < 0 then bbox.x1 = 0 end
if bbox.y1 and bbox.y1 < 0 then bbox.y1 = 0 end
local ubbox_dimen
if (bbox.x0 >= bbox.x1) or (bbox.y0 >= bbox.y1) then
if (not bbox.x1 or bbox.x0 >= bbox.x1) or (not bbox.y1 or bbox.y0 >= bbox.y1) then
-- if document's bbox info is corrupted, we use the page size
ubbox_dimen = self:getPageDimensions(pageno, zoom, rotation)
else

@ -76,6 +76,157 @@ In 'semi-auto' and 'manual' modes, you may need to define areas once on an odd p
},
}
},
{
icon = "resources/icons/appbar.page.fit.png",
options = {
{
name = "zoom_overlap_h",
name_text = _("Horizontal overlap"),
buttonprogress = true,
fine_tune = true,
values = {0, 12, 24, 36, 48, 60, 72, 84},
default_pos = 4,
default_value = 36,
show_func = function(config)
return config and config.zoom_mode_genus < 3
end,
event = "DefineZoom",
args = {0, 12, 24, 36, 48, 60, 72, 84},
labels = {0, 12, 24, 36, 48, 60, 72, 84},
name_text_hold_callback = optionsutil.showValues,
help_text = _([[Set horizontal zoom overlap (between columns).]]),
},
{
name = "zoom_overlap_v",
name_text = _("Vertical overlap"),
buttonprogress = true,
fine_tune = true,
values = {0, 12, 24, 36, 48, 60, 72, 84},
default_pos = 4,
default_value = 36,
show_func = function(config)
return config and config.zoom_mode_genus < 3
end,
event = "DefineZoom",
args = {0, 12, 24, 36, 48, 60, 72, 84},
labels = {0, 12, 24, 36, 48, 60, 72, 84},
name_text_hold_callback = optionsutil.showValues,
help_text = _([[Set vertical zoom overlap (between lines).]]),
},
{
name = "zoom_mode_type",
name_text = _("Fit"),
toggle = {_("full"), _("width"), _("height")},
alternate = false,
values = {2, 1, 0},
default_value = 2,
show_func = function(config) return config and config.zoom_mode_genus > 2 end,
event = "DefineZoom",
args = {"full", "width", "height"},
name_text_hold_callback = optionsutil.showValues,
help_text = _([[Set what to fit.]]),
},
{
name = "zoom_range_number",
name_text_func = function(config)
if config then
if config.zoom_mode_genus == 1 then return _("Rows")
elseif config.zoom_mode_genus == 2 then return _("Columns")
end
end
return _("Number")
end,
name_text_true_values = true,
show_true_value_func = function(str)
return string.format("%.1f", str)
end,
toggle = {_("1"), _("2"), _("3"), _("4"), _("5"), _("6"), _("7"), _("8")},
more_options = true,
more_options_param = {
value_step = 0.1, value_hold_step = 1,
value_min = 0.1, value_max = 1000,
precision = "%.1f",
},
values = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0},
default_pos = 2,
default_value = 2,
show_func = function(config)
return config and config.zoom_mode_genus < 3 and config.zoom_mode_genus > 0
end,
event = "DefineZoom",
args = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0},
name_text_hold_callback = optionsutil.showValues,
help_text = _([[Set the number of columns or rows into which to split the page.]]),
},
{
name = "zoom_factor",
name_text = _("Zoom factor"),
name_text_true_values = true,
show_true_value_func = function(str)
return string.format("%.1f", str)
end,
toggle = {_("0.7"), _("1"), _("1.5"), _("2"), _("3"), _("5"), _("10"), _("20")},
more_options = true,
more_options_param = {
value_step = 0.1, value_hold_step = 1,
value_min = 0.1, value_max = 1000,
precision = "%.1f",
},
values = {0.7, 1.0, 1.5, 2.0, 3.0, 5.0, 10.0, 20.0},
default_pos = 3,
default_value = 1.5,
show_func = function(config)
return config and config.zoom_mode_genus < 1
end,
event = "DefineZoom",
args = {0.7, 1.0, 1.5, 2.0, 3.0, 5.0, 10.0, 20.0},
name_text_hold_callback = optionsutil.showValues,
},
{
name = "zoom_mode_genus",
name_text = _("Zoom to"),
-- toggle = {_("page"), _("content"), _("columns"), _("rows"), _("manual")},
item_icons = {
"resources/icons/zoom.page.png",
"resources/icons/zoom.content.png",
"resources/icons/zoom.direction.column.png",
"resources/icons/zoom.direction.row.png",
"resources/icons/zoom.manual.png",
},
alternate = false,
values = {4, 3, 2, 1, 0},
default_value = 4,
event = "DefineZoom",
args = {"page", "content", "columns", "rows", "manual"},
name_text_hold_callback = optionsutil.showValues,
},
{
name = "zoom_direction",
name_text = _("Direction"),
enabled_func = function(config)
return config.zoom_mode_genus < 3
end,
item_icons = {
"resources/icons/direction.LRTB.png",
"resources/icons/direction.TBLR.png",
"resources/icons/direction.LRBT.png",
"resources/icons/direction.BTLR.png",
"resources/icons/direction.BTRL.png",
"resources/icons/direction.RLBT.png",
"resources/icons/direction.TBRL.png",
"resources/icons/direction.RLTB.png",
},
alternate = false,
values = {7, 6, 5, 4, 3, 2, 1, 0},
default_value = 7,
event = "DefineZoom",
args = {7, 6, 5, 4, 3, 2, 1, 0},
name_text_hold_callback = optionsutil.showValues,
help_text = _([[Set how paging and swiping forward should move the view on the page:
left to right or reverse, top to bottom or reverse.]]),
},
}
},
{
icon = "resources/icons/appbar.column.two.large.png",
options = {
@ -311,12 +462,12 @@ This can also be used to remove some gray background or to convert a grayscale o
{
name = "writing_direction",
name_text = S.WRITING_DIR,
toggle = {S.LTR, S.RTL, S.TBRTL},
values = {0, 1, 2},
default_value = 0,
enabled_func = function(configurable)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
toggle = {S.LTR, S.RTL, S.TBRTL},
values = {0, 1, 2},
default_value = 0,
name_text_hold_callback = optionsutil.showValues,
help_text = _([[In reflow mode, sets the original text direction. This needs to be set to RTL to correctly extract and reflow RTL languages like Arabic or Hebrew.]]),
},

@ -99,16 +99,19 @@ function optionsutil.showValues(configurable, option, prefix)
help_text = T("\n%1\n", option.help_text)
end
local text
local name_text = option.name_text_func
and option.name_text_func(configurable)
or option.name_text
if option.name_text_true_values and option.toggle and option.values then
if value_default then
text = T(_("%1\n%2\nCurrent value: %3 (%4)\nDefault value: %5 (%6)"), option.name_text, help_text,
text = T(_("%1\n%2\nCurrent value: %3 (%4)\nDefault value: %5 (%6)"), name_text, help_text,
current, value_current, default, value_default)
else
text = T(_("%1\n%2\nCurrent value: %3 (%4)\nDefault value: %5"), option.name_text, help_text,
text = T(_("%1\n%2\nCurrent value: %3 (%4)\nDefault value: %5"), name_text, help_text,
current, value_current, default)
end
else
text = T(_("%1\n%2\nCurrent value: %3\nDefault value: %4"), option.name_text, help_text, current, default)
text = T(_("%1\n%2\nCurrent value: %3\nDefault value: %4"), name_text, help_text, current, default)
end
UIManager:show(InfoMessage:new{ text=text })
end

@ -112,6 +112,7 @@ function OptionIconItem:init()
}
self[1] = FrameContainer:new{
padding = 0,
padding_top = self.underline_padding,
padding_left = self.padding_left,
padding_right = self.padding_right,
bordersize = 0,
@ -198,12 +199,14 @@ function ConfigOption:init()
local show = self.options[c].show
-- Prefer show_func over show if there's one
if self.options[c].show_func then
show = self.options[c].show_func()
show = self.options[c].show_func(self.config.configurable, self.config.document)
end
if show ~= false and show_default then
local name_font_face = self.options[c].name_font_face and self.options[c].name_font_face or "cfont"
local name_font_size = self.options[c].name_font_size and self.options[c].name_font_size or default_name_font_size
local text = self.options[c].name_text
local text = self.options[c].name_text_func
and self.options[c].name_text_func(self.config.configurable, self.config.document)
or self.options[c].name_text
local face = Font:getFace(name_font_face, name_font_size)
local txt_width = 0
if text ~= nil then
@ -236,7 +239,7 @@ function ConfigOption:init()
local show = self.options[c].show
-- Prefer show_func over show if there's one
if self.options[c].show_func then
show = self.options[c].show_func()
show = self.options[c].show_func(self.config.configurable, self.config.document)
end
if show ~= false and show_default then
local name_align = self.options[c].name_align_right and self.options[c].name_align_right or default_name_align_right
@ -262,20 +265,22 @@ function ConfigOption:init()
local horizontal_group = HorizontalGroup:new{}
-- Deal with the name on the left
if self.options[c].name_text then
local name_text = self.options[c].name_text_func
and self.options[c].name_text_func(self.config.configurable, self.config.document)
or self.options[c].name_text
if name_text then
-- the horizontal padding on the left will be ensured by the RightContainer
local name_widget_width = math.floor(name_align * Screen:getWidth())
-- We don't remove default_option_hpadding from name_text_max_width
-- to give more to text and avoid truncation: as it is right aligned,
-- the text can grow on the left, padding_small is enough.
local name_text_max_width = name_widget_width - 2*padding_small
local text = self.options[c].name_text
local face = Font:getFace(name_font_face, name_font_size)
local option_name_container = RightContainer:new{
dimen = Geom:new{ w = name_widget_width, h = option_height},
}
local option_name = Button:new{
text = text,
text = name_text,
max_width = name_text_max_width,
bordersize = 0,
face = face,
@ -461,7 +466,7 @@ function ConfigOption:init()
option_items[d] = option_item
option_item.items = option_items
option_item.name = self.options[c].name
option_item.name_text = self.options[c].name_text
option_item.name_text = name_text
option_item.item_text = self.options[c].item_text
option_item.values = self.options[c].values
option_item.args = self.options[c].args
@ -476,21 +481,25 @@ function ConfigOption:init()
-- Icons (ex: columns, text align, with PDF)
if self.options[c].item_icons then
local items_count = #self.options[c].item_icons
local first_item = OptionIconItem:new{
icon = ImageWidget:new{
file = self.options[c].item_icons[1]
}
}
local max_item_spacing = (option_widget_width -
first_item:getSize().w * items_count) / items_count
local icon_max_height = option_height
local icon_max_width = math.floor(option_widget_width / items_count)
local icon_size = math.min(icon_max_height, icon_max_width)
local max_item_spacing = (option_widget_width - icon_size * items_count) / items_count
local horizontal_half_padding = math.min(max_item_spacing, item_spacing_width) / 2
-- Our icons have a bottom padding that makes 10% to 20% of their height (5-9px in our 48px images)
-- We don't want the underline to be that far away from the image content,
-- so we use some negative padding to eat a bit on their padding.
local underline_padding = - math.floor(0.05 * icon_size)
for d = 1, #self.options[c].item_icons do
local option_item = OptionIconItem:new{
icon = ImageWidget:new{
file = self.options[c].item_icons[d],
dim = not enabled,
width = icon_size,
height = icon_size,
scale_factor = 0, -- scale to fit width and height
},
underline_padding = -padding_button,
underline_padding = underline_padding,
padding_left = d > 1 and horizontal_half_padding,
padding_right = d < #self.options[c].item_icons and horizontal_half_padding,
color = d == current_item and (enabled and Blitbuffer.COLOR_BLACK or Blitbuffer.COLOR_DARK_GRAY) or Blitbuffer.COLOR_WHITE,
@ -499,7 +508,7 @@ function ConfigOption:init()
option_items[d] = option_item
option_item.items = option_items
option_item.name = self.options[c].name
option_item.name_text = self.options[c].name_text
option_item.name_text = name_text
option_item.values = self.options[c].values
option_item.args = self.options[c].args
option_item.event = self.options[c].event
@ -528,7 +537,7 @@ function ConfigOption:init()
font_face = item_font_face,
font_size = item_font_size,
name = self.options[c].name,
name_text = self.options[c].name_text,
name_text = name_text,
toggle = self.options[c].toggle,
alternate = self.options[c].alternate,
values = self.options[c].values,
@ -545,7 +554,7 @@ function ConfigOption:init()
self.options[c].more_options_param.show_true_value_func = self.options[c].show_true_value_func
end
self.config:onConfigMoreChoose(self.options[c].values, self.options[c].name,
self.options[c].event, arg, self.options[c].name_text, self.options[c].delay_repaint, self.options[c].more_options_param)
self.options[c].event, arg, name_text, self.options[c].delay_repaint, self.options[c].more_options_param)
end
end
}
@ -573,10 +582,11 @@ function ConfigOption:init()
callback = function(arg)
if arg == "-" or arg == "+" then
self.config:onConfigFineTuneChoose(self.options[c].values, self.options[c].name,
self.options[c].event, self.options[c].args, self.options[c].events, arg, self.options[c].delay_repaint)
self.options[c].event, self.options[c].args, self.options[c].events, arg, self.options[c].delay_repaint,
self.options[c].fine_tune_param)
elseif arg == "" then
self.config:onConfigMoreChoose(self.options[c].values, self.options[c].name,
self.options[c].event, arg, self.options[c].name_text, self.options[c].delay_repaint, self.options[c].more_options_param)
self.options[c].event, arg, name_text, self.options[c].delay_repaint, self.options[c].more_options_param)
else
self.config:onConfigChoose(self.options[c].values, self.options[c].name,
self.options[c].event, self.options[c].args, self.options[c].events, arg, self.options[c].delay_repaint)
@ -587,16 +597,17 @@ function ConfigOption:init()
end,
hold_callback = function(arg)
if arg == "-" or arg == "+" then
self.config:onMakeFineTuneDefault(self.options[c].name, self.options[c].name_text, self.options[c].values,
self.config:onMakeFineTuneDefault(self.options[c].name, name_text, self.options[c].values,
self.options[c].labels or self.options[c].args, arg)
elseif arg ~= "" then
self.config:onMakeDefault(self.options[c].name, self.options[c].name_text, self.options[c].values,
self.config:onMakeDefault(self.options[c].name, name_text, self.options[c].values,
self.options[c].labels or self.options[c].args, arg)
end
end,
show_parrent = self.config,
enabled = enabled,
fine_tune = self.options[c].fine_tune,
fine_tune_param = self.options[c].fine_tune_param,
more_options = self.options[c].more_options,
more_options_param = self.options[c].more_options_param,
}
@ -963,7 +974,7 @@ function ConfigDialog:onConfigChoose(values, name, event, args, events, position
end
-- Tweaked variant used with the fine_tune variant of buttonprogress (direction can only be "-" or "+")
function ConfigDialog:onConfigFineTuneChoose(values, name, event, args, events, direction, delay_repaint)
function ConfigDialog:onConfigFineTuneChoose(values, name, event, args, events, direction, delay_repaint, params)
UIManager:tickAfterNext(function()
-- Repainting may be delayed depending on options
local refresh_dialog_func = function()
@ -994,6 +1005,7 @@ function ConfigDialog:onConfigFineTuneChoose(values, name, event, args, events,
end
if values then
local value
local step = params and params.value_step or 1
if direction == "-" then
value = self.configurable[name] or values[1]
if type(value) == "table" then
@ -1001,7 +1013,7 @@ function ConfigDialog:onConfigFineTuneChoose(values, name, event, args, events,
-- to one of the original preset values tables
local updated = {}
for i=1, #value do
local v = value[i] - 1
local v = value[i] - step
if v < 0 then
v = 0
end
@ -1009,7 +1021,7 @@ function ConfigDialog:onConfigFineTuneChoose(values, name, event, args, events,
end
value = updated
else
value = value - 1
value = value - step
if value < 0 then
value = 0
end
@ -1019,11 +1031,11 @@ function ConfigDialog:onConfigFineTuneChoose(values, name, event, args, events,
if type(value) == "table" then
local updated = {}
for i=1, #value do
table.insert(updated, value[i] + 1)
table.insert(updated, value[i] + step)
end
value = updated
else
value = value + 1
value = value + step
end
end
self:onConfigChoice(name, value)

@ -129,7 +129,7 @@ function NumberPickerWidget:paintWidget()
callback_input = function()
input_dialog = InputDialog:new{
title = _("Enter number"),
input = self.value,
input = value,
input_type = "number",
buttons = {
{

@ -339,7 +339,7 @@ function util.arrayAppend(t1, t2)
end
end
-- Reverse array elements in-place in table t
--- Reverse array elements in-place in table t
---- @param t Lua table
function util.arrayReverse(t)
local i, j = 1, #t
@ -350,6 +350,22 @@ function util.arrayReverse(t)
end
end
--- Test whether t contains a value equal to v
--- (or such a value that callback returns true),
--- and if so, return the index.
---- @param t Lua table
---- @param v
---- @function callback(v1, v2)
function util.arrayContains(t, v, cb)
cb = cb or function(v1, v2) return v1 == v2 end
for _k, _v in ipairs(t) do
if cb(_v, v) then
return _k
end
end
return false
end
-- Merge t2 into t1, overwriting existing elements if they already exist
-- Probably not safe with nested tables (c.f., https://stackoverflow.com/q/1283388)
---- @param t1 Lua table

@ -1 +1 @@
Subproject commit 6d0396d8c100024e6c11c01720daee8443877241
Subproject commit 718d53ce4270d72b6421d0f7acc25ba3c0d348b0

@ -9,3 +9,15 @@ Start from an RGB copy of the image if you end up with a 256c or sRGB PNG (check
See https://www.mobileread.com/forums/showpost.php?p=3728291&postcount=17 for more details ;).
Zoom direction icons are generated from direction.LRBT.png with:
```bash
convert direction.LRBT.png -rotate 90 direction.TBLR.png
convert direction.LRBT.png -rotate 180 direction.RLTB.png
convert direction.LRBT.png -rotate -90 direction.BTRL.png
convert direction.BTRL.png -flop direction.BTLR.png
convert direction.LRBT.png -flop direction.RLBT.png
convert direction.RLTB.png -flop direction.LRTB.png
convert direction.TBLR.png -flop direction.TBRL.png
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 660 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 666 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 B

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="76"
height="76"
viewBox="0 0 76.00 76.00"
enable-background="new 0 0 76.00 76.00"
xml:space="preserve"
id="svg6"
sodipodi:docname="appbar.magnify.zoom.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
inkscape:export-filename="/home/jacques/Programmes/Liseuse/koreader/resources/icons/appbar.magnify.zoom.png"
inkscape:export-xdpi="80.839996"
inkscape:export-ydpi="80.839996"><metadata
id="metadata12"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs10" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="718"
id="namedview8"
showgrid="false"
inkscape:zoom="6.2368421"
inkscape:cx="37.609177"
inkscape:cy="38"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<path
fill="#000000"
fill-opacity="1"
stroke-width="1.72319"
stroke-linejoin="round"
d="m 62.999267,57.787149 c 1.8333,1.8333 1.8333,4.805628 0,6.638929 -1.8333,1.8333 -4.805628,1.8333 -6.638929,0 L 42.791435,50.857174 c -3.000589,1.828303 -6.525371,2.881516 -10.296224,2.881516 -10.944488,0 -19.816669,-8.872181 -19.816669,-19.816669 0,-10.944487 8.872181,-19.816668 19.816669,-19.816668 10.944487,0 19.816668,8.872181 19.816668,19.816668 0,3.770854 -1.053213,7.295636 -2.881516,10.296224 z M 19.571296,33.922021 c 0,7.13762 5.786295,12.923915 12.923915,12.923915 7.137619,0 12.923914,-5.786295 12.923914,-12.923915 0,-7.137619 -5.786295,-12.923914 -12.923914,-12.923914 -7.13762,0 -12.923915,5.786295 -12.923915,12.923914 z"
id="path4" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.2" width="12.96mm" height="12.96mm" viewBox="0 0 1296 1296" preserveAspectRatio="xMidYMid" fill-rule="evenodd" stroke-width="28.222" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:presentation="http://sun.com/xmlns/staroffice/presentation" xmlns:smil="http://www.w3.org/2001/SMIL20/" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xml:space="preserve">
<defs class="ClipPathGroup">
<clipPath id="presentation_clip_path" clipPathUnits="userSpaceOnUse">
<rect x="0" y="0" width="1296" height="1296"/>
</clipPath>
<clipPath id="presentation_clip_path_shrink" clipPathUnits="userSpaceOnUse">
<rect x="1" y="1" width="1294" height="1294"/>
</clipPath>
</defs>
<defs class="TextShapeIndex">
<g ooo:slide="id1" ooo:id-list="id3 id4"/>
</defs>
<defs class="EmbeddedBulletChars">
<g id="bullet-char-template-57356" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"/>
</g>
<g id="bullet-char-template-57354" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"/>
</g>
<g id="bullet-char-template-10146" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"/>
</g>
<g id="bullet-char-template-10132" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"/>
</g>
<g id="bullet-char-template-10007" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"/>
</g>
<g id="bullet-char-template-10004" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"/>
</g>
<g id="bullet-char-template-9679" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"/>
</g>
<g id="bullet-char-template-8226" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"/>
</g>
<g id="bullet-char-template-8211" transform="scale(0.00048828125,-0.00048828125)">
<path d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"/>
</g>
<g id="bullet-char-template-61548" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 173,740 C 173,903 231,1043 346,1159 462,1274 601,1332 765,1332 928,1332 1067,1274 1183,1159 1299,1043 1357,903 1357,740 1357,577 1299,437 1183,322 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 173,740 Z"/>
</g>
</defs>
<g>
<g id="id2" class="Master_Slide">
<g id="bg-id2" class="Background"/>
<g id="bo-id2" class="BackgroundObjects"/>
</g>
</g>
<g class="SlideGroup">
<g>
<g id="container-id1">
<g id="id1" class="Slide" clip-path="url(#presentation_clip_path)">
<g class="Page">
<g class="com.sun.star.drawing.ClosedBezierShape">
<g id="id3">
<rect class="BoundingBox" stroke="none" fill="none" x="235" y="138" width="861" height="1046"/>
<path fill="rgb(0,0,0)" stroke="none" d="M 236,661 L 236,139 525,139 815,139 954,284 1095,429 1095,805 1095,1182 664,1182 236,1182 236,661 Z M 1002,811 L 1002,535 859,535 716,535 716,386 715,237 521,236 327,235 327,660 327,1086 665,1086 1002,1086 1002,811 Z M 890,349 L 809,265 809,352 809,438 890,438 C 934,438 970,437 970,436 970,434 934,395 890,349 Z"/>
</g>
</g>
<g class="com.sun.star.drawing.LineShape">
<g id="id4">
<rect class="BoundingBox" stroke="none" fill="none" x="365" y="286" width="603" height="767"/>
<path fill="none" stroke="rgb(0,0,0)" stroke-width="100" stroke-linejoin="round" d="M 455,401 L 877,937"/>
<path fill="rgb(0,0,0)" stroke="none" d="M 367,491 L 365,286 564,337 367,491 Z"/>
<path fill="rgb(0,0,0)" stroke="none" d="M 965,847 L 967,1052 768,1001 965,847 Z"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.2" width="15mm" height="15mm" viewBox="0 0 1500 1500" preserveAspectRatio="xMidYMid" fill-rule="evenodd" stroke-width="28.222" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:presentation="http://sun.com/xmlns/staroffice/presentation" xmlns:smil="http://www.w3.org/2001/SMIL20/" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xml:space="preserve">
<defs class="ClipPathGroup">
<clipPath id="presentation_clip_path" clipPathUnits="userSpaceOnUse">
<rect x="0" y="0" width="1500" height="1500"/>
</clipPath>
<clipPath id="presentation_clip_path_shrink" clipPathUnits="userSpaceOnUse">
<rect x="1" y="1" width="1497" height="1497"/>
</clipPath>
</defs>
<defs class="TextShapeIndex">
<g ooo:slide="id1" ooo:id-list="id3 id4 id5"/>
</defs>
<defs class="EmbeddedBulletChars">
<g id="bullet-char-template-57356" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"/>
</g>
<g id="bullet-char-template-57354" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"/>
</g>
<g id="bullet-char-template-10146" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"/>
</g>
<g id="bullet-char-template-10132" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"/>
</g>
<g id="bullet-char-template-10007" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"/>
</g>
<g id="bullet-char-template-10004" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"/>
</g>
<g id="bullet-char-template-9679" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"/>
</g>
<g id="bullet-char-template-8226" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"/>
</g>
<g id="bullet-char-template-8211" transform="scale(0.00048828125,-0.00048828125)">
<path d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"/>
</g>
<g id="bullet-char-template-61548" transform="scale(0.00048828125,-0.00048828125)">
<path d="M 173,740 C 173,903 231,1043 346,1159 462,1274 601,1332 765,1332 928,1332 1067,1274 1183,1159 1299,1043 1357,903 1357,740 1357,577 1299,437 1183,322 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 173,740 Z"/>
</g>
</defs>
<g>
<g id="id2" class="Master_Slide">
<g id="bg-id2" class="Background"/>
<g id="bo-id2" class="BackgroundObjects"/>
</g>
</g>
<g class="SlideGroup">
<g>
<g id="container-id1">
<g id="id1" class="Slide" clip-path="url(#presentation_clip_path)">
<g class="Page">
<g class="Group">
<g class="com.sun.star.drawing.OpenBezierShape">
<g id="id3">
<rect class="BoundingBox" stroke="none" fill="none" x="153" y="1085" width="1087" height="102"/>
<path fill="none" stroke="rgb(0,0,0)" stroke-width="100" stroke-linejoin="round" d="M 203,1136 L 1188,1136"/>
</g>
</g>
<g class="com.sun.star.drawing.OpenBezierShape">
<g id="id4">
<rect class="BoundingBox" stroke="none" fill="none" x="213" y="143" width="1091" height="351"/>
<path fill="none" stroke="rgb(0,0,0)" stroke-width="100" stroke-linejoin="round" d="M 263,318 L 1099,318"/>
<path fill="rgb(0,0,0)" stroke="none" d="M 1076,143 L 1303,318 1076,493 1076,143 Z"/>
</g>
</g>
<g class="com.sun.star.drawing.OpenBezierShape">
<g id="id5">
<rect class="BoundingBox" stroke="none" fill="none" x="212" y="267" width="1027" height="921"/>
<path fill="none" stroke="rgb(0,0,0)" stroke-width="100" stroke-linejoin="round" stroke-linecap="round" d="M 263,318 L 1188,1136"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

@ -0,0 +1,324 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:ooo="http://xml.openoffice.org/svg/export"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.2"
width="48"
height="48"
viewBox="0 0 1270 1270"
preserveAspectRatio="xMidYMid"
fill-rule="evenodd"
stroke-width="28.222"
stroke-linejoin="round"
xml:space="preserve"
id="svg95"
sodipodi:docname="zoom.content.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
inkscape:export-filename="/tmp/icon.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><metadata
id="metadata99"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="718"
id="namedview97"
showgrid="false"
inkscape:zoom="9.6471154"
inkscape:cx="24.566929"
inkscape:cy="24.566929"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg95"
units="px" />
<defs
class="ClipPathGroup"
id="defs8"><marker
style="overflow:visible"
id="marker3506"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="TriangleInM"
inkscape:isstock="true"><path
transform="scale(-0.4)"
style="fill-rule:evenodd;stroke:#ffffff;stroke-width:1pt;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
id="path3504" /></marker><marker
style="overflow:visible"
id="TriangleInM"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="TriangleInM"
inkscape:isstock="true"><path
transform="scale(-0.4)"
style="fill-rule:evenodd;stroke:#ffffff;stroke-width:1pt;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
id="path1944" /></marker><marker
style="overflow:visible"
id="TriangleOutS"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="TriangleOutS"
inkscape:isstock="true"><path
transform="scale(0.2)"
style="fill-rule:evenodd;stroke:#ffffff;stroke-width:1pt;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
id="path1956" /></marker><marker
style="overflow:visible"
id="TriangleOutM"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="TriangleOutM"
inkscape:isstock="true"><path
transform="scale(0.4)"
style="fill-rule:evenodd;stroke:#ffffff;stroke-width:1pt;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
id="path1953" /></marker><marker
style="overflow:visible"
id="TriangleInS"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="TriangleInS"
inkscape:isstock="true"><path
transform="scale(-0.2)"
style="fill-rule:evenodd;stroke:#ffffff;stroke-width:1pt;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
id="path1947" /></marker><marker
style="overflow:visible;"
id="Arrow2Send"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Send"
inkscape:isstock="true"><path
transform="scale(0.3) rotate(180) translate(-2.3,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ffffff;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
id="path1841" /></marker><marker
style="overflow:visible;"
id="marker2802"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Send"
inkscape:isstock="true"><path
transform="scale(0.2) rotate(180) translate(6,0)"
style="fill-rule:evenodd;stroke:#ffffff;stroke-width:1pt;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path2800" /></marker><marker
style="overflow:visible"
id="Arrow2Sstart"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Sstart"
inkscape:isstock="true"><path
transform="scale(0.3) translate(-2.3,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ffffff;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
id="path1838" /></marker><marker
style="overflow:visible;"
id="Arrow1Send"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Send"
inkscape:isstock="true"><path
transform="scale(0.2) rotate(180) translate(6,0)"
style="fill-rule:evenodd;stroke:#ffffff;stroke-width:1pt;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path1823" /></marker><marker
style="overflow:visible"
id="Arrow1Sstart"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Sstart"
inkscape:isstock="true"><path
transform="scale(0.2) translate(6,0)"
style="fill-rule:evenodd;stroke:#ffffff;stroke-width:1pt;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path1820" /></marker><marker
style="overflow:visible;"
id="Arrow2Lend"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true"><path
transform="scale(1.1) rotate(180) translate(1,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ffffff;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
id="path1829" /></marker><marker
style="overflow:visible"
id="Arrow2Lstart"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Lstart"
inkscape:isstock="true"><path
transform="scale(1.1) translate(1,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#ffffff;stroke-opacity:1;fill:#ffffff;fill-opacity:1"
id="path1826" /></marker>
<clipPath
id="presentation_clip_path"
clipPathUnits="userSpaceOnUse">
<rect
x="0"
y="0"
width="1300"
height="1300"
id="rect2" />
</clipPath>
<clipPath
id="presentation_clip_path_shrink"
clipPathUnits="userSpaceOnUse">
<rect
x="1"
y="1"
width="1298"
height="1298"
id="rect5" />
</clipPath>
</defs>
<defs
class="TextShapeIndex"
id="defs12">
<g
ooo:slide="id1"
ooo:id-list="id3 id4 id5 id6"
id="g10" />
</defs>
<defs
class="EmbeddedBulletChars"
id="defs44">
<g
id="bullet-char-template-57356"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 580,1141 1163,571 580,0 -4,571 Z"
id="path14" />
</g>
<g
id="bullet-char-template-57354"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 8,1128 H 1137 V 0 H 8 Z"
id="path17" />
</g>
<g
id="bullet-char-template-10146"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 174,0 602,739 174,1481 1456,739 Z M 1358,739 309,1346 659,739 Z"
id="path20" />
</g>
<g
id="bullet-char-template-10132"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 2015,739 1276,0 H 717 l 543,543 H 174 v 393 h 1086 l -543,545 h 557 z"
id="path23" />
</g>
<g
id="bullet-char-template-10007"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="m 0,-2 c -7,16 -16,29 -25,39 l 381,530 c -94,256 -141,385 -141,387 0,25 13,38 40,38 9,0 21,-2 34,-5 21,4 42,12 65,25 l 27,-13 111,-251 280,301 64,-25 24,25 c 21,-10 41,-24 62,-43 C 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 c 0,-27 -21,-55 -63,-84 l 16,-20 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 c -22,-34 -53,-51 -92,-51 -42,0 -63,17 -64,51 -7,9 -10,24 -10,44 0,9 1,19 2,30 z"
id="path26" />
</g>
<g
id="bullet-char-template-10004"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 c 0,78 14,145 41,201 34,71 87,106 158,106 53,0 88,-31 106,-94 l 23,-176 c 8,-64 28,-97 59,-98 l 735,706 c 11,11 33,17 66,17 42,0 63,-15 63,-46 V 965 c 0,-36 -10,-64 -30,-84 L 442,47 C 390,-6 338,-33 285,-33 Z"
id="path29" />
</g>
<g
id="bullet-char-template-9679"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 c 0,181 53,324 160,431 106,107 249,161 430,161 179,0 323,-54 432,-161 108,-107 162,-251 162,-431 0,-180 -54,-324 -162,-431 C 1136,54 992,0 813,0 Z"
id="path32" />
</g>
<g
id="bullet-char-template-8226"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="m 346,457 c -73,0 -137,26 -191,78 -54,51 -81,114 -81,188 0,73 27,136 81,188 54,52 118,78 191,78 73,0 134,-26 185,-79 51,-51 77,-114 77,-187 0,-75 -25,-137 -76,-188 -50,-52 -112,-78 -186,-78 z"
id="path35" />
</g>
<g
id="bullet-char-template-8211"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M -4,459 H 1135 V 606 H -4 Z"
id="path38" />
</g>
<g
id="bullet-char-template-61548"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="m 173,740 c 0,163 58,303 173,419 116,115 255,173 419,173 163,0 302,-58 418,-173 116,-116 174,-256 174,-419 0,-163 -58,-303 -174,-418 C 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 173,740 Z"
id="path41" />
</g>
</defs>
<g
id="g49"
transform="translate(-26.458333)">
<g
id="id2"
class="Master_Slide">
<g
id="bg-id2"
class="Background" />
<g
id="bo-id2"
class="BackgroundObjects" />
</g>
</g>
<path
id="path1711"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10.7281;stroke-linejoin:round;paint-order:markers stroke fill"
d="m 185.21138,132.29167 h 582.08344 c 93.6354,92.77554 196.4491,199.24151 291.04168,291.04169 V 1137.7084 H 185.21138 c -0.003,-331.56285 -0.005,-673.85383 0,-1005.41673 z M 978.96152,502.70836 H 687.9198 V 211.66668 c -130.64448,-0.26035 -292.69315,-0.93207 -423.33341,0 -3.58987,271.65204 0.54756,574.9867 0,846.66672 h 714.37513 c 0,-175.90782 0,-379.71718 0,-555.62504 z m -26.4584,-79.375 c -59.2538,-66.90902 -110.016,-115.04967 -185.2083,-193.04002 -0.5027,46.71084 -3.5888,146.52089 0,193.1194 54.0321,1.87404 131.2441,3.20931 185.2083,-0.0794 z"
sodipodi:nodetypes="ccccccccccccccccc" /><g
id="g1804"><rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:146.762;stroke-linejoin:round;paint-order:markers stroke fill"
id="rect1785"
width="396.875"
height="687.91663"
x="343.95834"
y="291.04166" /><rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:128.718;stroke-linejoin:round;paint-order:markers stroke fill"
id="rect1785-3"
width="396.875"
height="529.16681"
x="502.70834"
y="449.79166" /></g><path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:61.85958333;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInS);marker-end:url(#TriangleOutS);paint-order:normal"
d="M 474.21727,435.92827 769.3244,830.61449"
id="path1806" /></svg>

After

Width:  |  Height:  |  Size: 12 KiB

@ -0,0 +1,266 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:ooo="http://xml.openoffice.org/svg/export"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.2"
width="48"
height="48"
viewBox="0 0 1270 1270"
preserveAspectRatio="xMidYMid"
fill-rule="evenodd"
stroke-width="28.222"
stroke-linejoin="round"
xml:space="preserve"
id="svg66"
sodipodi:docname="zoom.direction.column.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
inkscape:export-filename="/tmp/icon.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><metadata
id="metadata70"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="718"
id="namedview68"
showgrid="false"
inkscape:zoom="6.7282375"
inkscape:cx="26.97423"
inkscape:cy="27.932473"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg66"
units="px"
inkscape:document-rotation="0" />
<defs
class="ClipPathGroup"
id="defs8">
<clipPath
id="presentation_clip_path"
clipPathUnits="userSpaceOnUse">
<rect
x="0"
y="0"
width="2060"
height="2060"
id="rect2" />
</clipPath>
<clipPath
id="presentation_clip_path_shrink"
clipPathUnits="userSpaceOnUse">
<rect
x="2"
y="2"
width="2056"
height="2056"
id="rect5" />
</clipPath>
</defs>
<defs
class="TextShapeIndex"
id="defs12">
<g
ooo:slide="id1"
ooo:id-list="id3"
id="g10" />
</defs>
<defs
class="EmbeddedBulletChars"
id="defs44">
<g
id="bullet-char-template-57356"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 580,1141 1163,571 580,0 -4,571 Z"
id="path14" />
</g>
<g
id="bullet-char-template-57354"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 8,1128 H 1137 V 0 H 8 Z"
id="path17" />
</g>
<g
id="bullet-char-template-10146"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 174,0 602,739 174,1481 1456,739 Z M 1358,739 309,1346 659,739 Z"
id="path20" />
</g>
<g
id="bullet-char-template-10132"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 2015,739 1276,0 H 717 l 543,543 H 174 v 393 h 1086 l -543,545 h 557 z"
id="path23" />
</g>
<g
id="bullet-char-template-10007"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="m 0,-2 c -7,16 -16,29 -25,39 l 381,530 c -94,256 -141,385 -141,387 0,25 13,38 40,38 9,0 21,-2 34,-5 21,4 42,12 65,25 l 27,-13 111,-251 280,301 64,-25 24,25 c 21,-10 41,-24 62,-43 C 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 c 0,-27 -21,-55 -63,-84 l 16,-20 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 c -22,-34 -53,-51 -92,-51 -42,0 -63,17 -64,51 -7,9 -10,24 -10,44 0,9 1,19 2,30 z"
id="path26" />
</g>
<g
id="bullet-char-template-10004"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 c 0,78 14,145 41,201 34,71 87,106 158,106 53,0 88,-31 106,-94 l 23,-176 c 8,-64 28,-97 59,-98 l 735,706 c 11,11 33,17 66,17 42,0 63,-15 63,-46 V 965 c 0,-36 -10,-64 -30,-84 L 442,47 C 390,-6 338,-33 285,-33 Z"
id="path29" />
</g>
<g
id="bullet-char-template-9679"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 c 0,181 53,324 160,431 106,107 249,161 430,161 179,0 323,-54 432,-161 108,-107 162,-251 162,-431 0,-180 -54,-324 -162,-431 C 1136,54 992,0 813,0 Z"
id="path32" />
</g>
<g
id="bullet-char-template-8226"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="m 346,457 c -73,0 -137,26 -191,78 -54,51 -81,114 -81,188 0,73 27,136 81,188 54,52 118,78 191,78 73,0 134,-26 185,-79 51,-51 77,-114 77,-187 0,-75 -25,-137 -76,-188 -50,-52 -112,-78 -186,-78 z"
id="path35" />
</g>
<g
id="bullet-char-template-8211"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M -4,459 H 1135 V 606 H -4 Z"
id="path38" />
</g>
<g
id="bullet-char-template-61548"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="m 173,740 c 0,163 58,303 173,419 116,115 255,173 419,173 163,0 302,-58 418,-173 116,-116 174,-256 174,-419 0,-163 -58,-303 -174,-418 C 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 173,740 Z"
id="path41" />
</g>
</defs>
<g
id="g49">
<g
id="id2"
class="Master_Slide">
<g
id="bg-id2"
class="Background" />
<g
id="bo-id2"
class="BackgroundObjects" />
</g>
</g>
<rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:556.562"
id="rect1156"
width="264.58334"
height="132.29166"
x="158.75"
y="158.75" />
<rect
style="fill:#000000;fill-opacity:0.33333334;stroke:none;stroke-width:556.562"
id="rect1156-31"
width="264.58331"
height="132.29167"
x="502.70834"
y="158.75" /><rect
style="fill:#000000;fill-opacity:0.33333334;stroke:none;stroke-width:556.484"
id="rect1156-0"
width="264.58328"
height="132.2538"
x="846.66663"
y="158.75" /><rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:556.561"
id="rect1156-5"
width="264.58337"
height="132.29167"
x="158.75"
y="370.41669" /><rect
style="fill:#000000;fill-opacity:0.33333334;stroke:none;stroke-width:556.561"
id="rect1156-31-3"
width="264.58334"
height="132.29169"
x="502.70837"
y="370.41669" /><rect
style="fill:#000000;fill-opacity:0.33333334;stroke:none;stroke-width:556.484"
id="rect1156-0-5"
width="264.58331"
height="132.2538"
x="846.66669"
y="370.41669" /><rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:556.561"
id="rect1156-6"
width="264.58337"
height="132.29167"
x="158.75"
y="582.08331" /><rect
style="fill:#000000;fill-opacity:0.333333;stroke:none;stroke-width:556.561"
id="rect1156-31-2"
width="264.58334"
height="132.29169"
x="502.70837"
y="582.08331" /><rect
style="fill:#000000;fill-opacity:0.333333;stroke:none;stroke-width:556.484"
id="rect1156-0-9"
width="264.58331"
height="132.25381"
x="846.66669"
y="582.08331" /><rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:556.561"
id="rect1156-1"
width="264.58337"
height="132.29169"
x="158.75"
y="793.75" /><rect
style="fill:#000000;fill-opacity:0.333333;stroke:none;stroke-width:556.561"
id="rect1156-31-27"
width="264.58334"
height="132.29169"
x="502.70837"
y="793.75" /><rect
style="fill:#000000;fill-opacity:0.333333;stroke:none;stroke-width:556.484"
id="rect1156-0-0"
width="264.58331"
height="132.2538"
x="846.66669"
y="793.75" /><rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:556.561"
id="rect1156-9"
width="264.58337"
height="132.29169"
x="158.75"
y="1005.4166" /><rect
style="fill:#000000;fill-opacity:0.333333;stroke:none;stroke-width:556.561"
id="rect1156-31-36"
width="264.58334"
height="132.29169"
x="502.70837"
y="1005.4166" /><rect
style="fill:#000000;fill-opacity:0.333333;stroke:none;stroke-width:556.484"
id="rect1156-0-06"
width="264.58331"
height="132.2538"
x="846.66669"
y="1005.4166" /></svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

@ -0,0 +1,266 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:ooo="http://xml.openoffice.org/svg/export"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.2"
width="48"
height="48"
viewBox="0 0 1270 1270"
preserveAspectRatio="xMidYMid"
fill-rule="evenodd"
stroke-width="28.222"
stroke-linejoin="round"
xml:space="preserve"
id="svg66"
sodipodi:docname="zoom.direction.row.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
inkscape:export-filename="/tmp/icon.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><metadata
id="metadata70"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="718"
id="namedview68"
showgrid="false"
inkscape:zoom="6.7282375"
inkscape:cx="26.97423"
inkscape:cy="27.932473"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg66"
units="px"
inkscape:document-rotation="0" />
<defs
class="ClipPathGroup"
id="defs8">
<clipPath
id="presentation_clip_path"
clipPathUnits="userSpaceOnUse">
<rect
x="0"
y="0"
width="2060"
height="2060"
id="rect2" />
</clipPath>
<clipPath
id="presentation_clip_path_shrink"
clipPathUnits="userSpaceOnUse">
<rect
x="2"
y="2"
width="2056"
height="2056"
id="rect5" />
</clipPath>
</defs>
<defs
class="TextShapeIndex"
id="defs12">
<g
ooo:slide="id1"
ooo:id-list="id3"
id="g10" />
</defs>
<defs
class="EmbeddedBulletChars"
id="defs44">
<g
id="bullet-char-template-57356"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 580,1141 1163,571 580,0 -4,571 Z"
id="path14" />
</g>
<g
id="bullet-char-template-57354"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 8,1128 H 1137 V 0 H 8 Z"
id="path17" />
</g>
<g
id="bullet-char-template-10146"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 174,0 602,739 174,1481 1456,739 Z M 1358,739 309,1346 659,739 Z"
id="path20" />
</g>
<g
id="bullet-char-template-10132"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 2015,739 1276,0 H 717 l 543,543 H 174 v 393 h 1086 l -543,545 h 557 z"
id="path23" />
</g>
<g
id="bullet-char-template-10007"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="m 0,-2 c -7,16 -16,29 -25,39 l 381,530 c -94,256 -141,385 -141,387 0,25 13,38 40,38 9,0 21,-2 34,-5 21,4 42,12 65,25 l 27,-13 111,-251 280,301 64,-25 24,25 c 21,-10 41,-24 62,-43 C 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 c 0,-27 -21,-55 -63,-84 l 16,-20 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 c -22,-34 -53,-51 -92,-51 -42,0 -63,17 -64,51 -7,9 -10,24 -10,44 0,9 1,19 2,30 z"
id="path26" />
</g>
<g
id="bullet-char-template-10004"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 c 0,78 14,145 41,201 34,71 87,106 158,106 53,0 88,-31 106,-94 l 23,-176 c 8,-64 28,-97 59,-98 l 735,706 c 11,11 33,17 66,17 42,0 63,-15 63,-46 V 965 c 0,-36 -10,-64 -30,-84 L 442,47 C 390,-6 338,-33 285,-33 Z"
id="path29" />
</g>
<g
id="bullet-char-template-9679"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 c 0,181 53,324 160,431 106,107 249,161 430,161 179,0 323,-54 432,-161 108,-107 162,-251 162,-431 0,-180 -54,-324 -162,-431 C 1136,54 992,0 813,0 Z"
id="path32" />
</g>
<g
id="bullet-char-template-8226"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="m 346,457 c -73,0 -137,26 -191,78 -54,51 -81,114 -81,188 0,73 27,136 81,188 54,52 118,78 191,78 73,0 134,-26 185,-79 51,-51 77,-114 77,-187 0,-75 -25,-137 -76,-188 -50,-52 -112,-78 -186,-78 z"
id="path35" />
</g>
<g
id="bullet-char-template-8211"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M -4,459 H 1135 V 606 H -4 Z"
id="path38" />
</g>
<g
id="bullet-char-template-61548"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="m 173,740 c 0,163 58,303 173,419 116,115 255,173 419,173 163,0 302,-58 418,-173 116,-116 174,-256 174,-419 0,-163 -58,-303 -174,-418 C 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 173,740 Z"
id="path41" />
</g>
</defs>
<g
id="g49">
<g
id="id2"
class="Master_Slide">
<g
id="bg-id2"
class="Background" />
<g
id="bo-id2"
class="BackgroundObjects" />
</g>
</g>
<rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:556.562"
id="rect1156"
width="264.58334"
height="132.29166"
x="158.75"
y="158.75" />
<rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:556.562"
id="rect1156-31"
width="264.58331"
height="132.29167"
x="502.70834"
y="158.75" /><rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:556.484"
id="rect1156-0"
width="264.58328"
height="132.2538"
x="846.66663"
y="158.75" /><rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:556.561"
id="rect1156-5"
width="264.58337"
height="132.29167"
x="158.75"
y="370.41669" /><rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:556.561"
id="rect1156-31-3"
width="264.58334"
height="132.29169"
x="502.70837"
y="370.41669" /><rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:556.484"
id="rect1156-0-5"
width="264.58331"
height="132.2538"
x="846.66669"
y="370.41669" /><rect
style="fill:#000000;fill-opacity:0.333333;stroke:none;stroke-width:556.561"
id="rect1156-6"
width="264.58337"
height="132.29167"
x="158.75"
y="582.08331" /><rect
style="fill:#000000;fill-opacity:0.333333;stroke:none;stroke-width:556.561"
id="rect1156-31-2"
width="264.58334"
height="132.29169"
x="502.70837"
y="582.08331" /><rect
style="fill:#000000;fill-opacity:0.333333;stroke:none;stroke-width:556.484"
id="rect1156-0-9"
width="264.58331"
height="132.25381"
x="846.66669"
y="582.08331" /><rect
style="fill:#000000;fill-opacity:0.333333;stroke:none;stroke-width:556.561"
id="rect1156-1"
width="264.58337"
height="132.29169"
x="158.75"
y="793.75" /><rect
style="fill:#000000;fill-opacity:0.333333;stroke:none;stroke-width:556.561"
id="rect1156-31-27"
width="264.58334"
height="132.29169"
x="502.70837"
y="793.75" /><rect
style="fill:#000000;fill-opacity:0.333333;stroke:none;stroke-width:556.484"
id="rect1156-0-0"
width="264.58331"
height="132.2538"
x="846.66669"
y="793.75" /><rect
style="fill:#000000;fill-opacity:0.333333;stroke:none;stroke-width:556.561"
id="rect1156-9"
width="264.58337"
height="132.29169"
x="158.75"
y="1005.4166" /><rect
style="fill:#000000;fill-opacity:0.333333;stroke:none;stroke-width:556.561"
id="rect1156-31-36"
width="264.58334"
height="132.29169"
x="502.70837"
y="1005.4166" /><rect
style="fill:#000000;fill-opacity:0.333333;stroke:none;stroke-width:556.484"
id="rect1156-0-06"
width="264.58331"
height="132.2538"
x="846.66669"
y="1005.4166" /></svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

@ -0,0 +1,178 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:ooo="http://xml.openoffice.org/svg/export"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.2"
width="48"
height="48"
viewBox="0 0 1270 1270"
preserveAspectRatio="xMidYMid"
fill-rule="evenodd"
stroke-width="28.222"
stroke-linejoin="round"
xml:space="preserve"
id="svg1132"
sodipodi:docname="zoom.manual.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
inkscape:export-filename="/tmp/icon.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><metadata
id="metadata1136"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="718"
id="namedview1134"
showgrid="false"
inkscape:zoom="11.73"
inkscape:cx="22.789244"
inkscape:cy="24.486379"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1132"
units="px" />
<defs
class="ClipPathGroup"
id="defs1067">
<clipPath
id="presentation_clip_path"
clipPathUnits="userSpaceOnUse">
<rect
x="0"
y="0"
width="1296"
height="1296"
id="rect1061" />
</clipPath>
<clipPath
id="presentation_clip_path_shrink"
clipPathUnits="userSpaceOnUse">
<rect
x="1"
y="1"
width="1294"
height="1294"
id="rect1064" />
</clipPath>
</defs>
<defs
class="TextShapeIndex"
id="defs1071">
<g
ooo:slide="id1"
ooo:id-list="id3 id4"
id="g1069" />
</defs>
<defs
class="EmbeddedBulletChars"
id="defs1103">
<g
id="bullet-char-template-57356"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 580,1141 1163,571 580,0 -4,571 Z"
id="path1073" />
</g>
<g
id="bullet-char-template-57354"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 8,1128 H 1137 V 0 H 8 Z"
id="path1076" />
</g>
<g
id="bullet-char-template-10146"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 174,0 602,739 174,1481 1456,739 Z M 1358,739 309,1346 659,739 Z"
id="path1079" />
</g>
<g
id="bullet-char-template-10132"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 2015,739 1276,0 H 717 l 543,543 H 174 v 393 h 1086 l -543,545 h 557 z"
id="path1082" />
</g>
<g
id="bullet-char-template-10007"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="m 0,-2 c -7,16 -16,29 -25,39 l 381,530 c -94,256 -141,385 -141,387 0,25 13,38 40,38 9,0 21,-2 34,-5 21,4 42,12 65,25 l 27,-13 111,-251 280,301 64,-25 24,25 c 21,-10 41,-24 62,-43 C 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 c 0,-27 -21,-55 -63,-84 l 16,-20 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 c -22,-34 -53,-51 -92,-51 -42,0 -63,17 -64,51 -7,9 -10,24 -10,44 0,9 1,19 2,30 z"
id="path1085" />
</g>
<g
id="bullet-char-template-10004"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 c 0,78 14,145 41,201 34,71 87,106 158,106 53,0 88,-31 106,-94 l 23,-176 c 8,-64 28,-97 59,-98 l 735,706 c 11,11 33,17 66,17 42,0 63,-15 63,-46 V 965 c 0,-36 -10,-64 -30,-84 L 442,47 C 390,-6 338,-33 285,-33 Z"
id="path1088" />
</g>
<g
id="bullet-char-template-9679"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 c 0,181 53,324 160,431 106,107 249,161 430,161 179,0 323,-54 432,-161 108,-107 162,-251 162,-431 0,-180 -54,-324 -162,-431 C 1136,54 992,0 813,0 Z"
id="path1091" />
</g>
<g
id="bullet-char-template-8226"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="m 346,457 c -73,0 -137,26 -191,78 -54,51 -81,114 -81,188 0,73 27,136 81,188 54,52 118,78 191,78 73,0 134,-26 185,-79 51,-51 77,-114 77,-187 0,-75 -25,-137 -76,-188 -50,-52 -112,-78 -186,-78 z"
id="path1094" />
</g>
<g
id="bullet-char-template-8211"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M -4,459 H 1135 V 606 H -4 Z"
id="path1097" />
</g>
<g
id="bullet-char-template-61548"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="m 173,740 c 0,163 58,303 173,419 116,115 255,173 419,173 163,0 302,-58 418,-173 116,-116 174,-256 174,-419 0,-163 -58,-303 -174,-418 C 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 173,740 Z"
id="path1100" />
</g>
</defs>
<g
id="g1108">
<g
id="id2"
class="Master_Slide">
<g
id="bg-id2"
class="Background" />
<g
id="bo-id2"
class="BackgroundObjects" />
</g>
</g>
<path
id="path1711"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10.7281;stroke-linejoin:round;paint-order:markers stroke fill"
d="m 185.20833,132.29167 h 582.08334 c 93.63538,92.77553 196.44908,199.24149 291.04163,291.04166 V 1137.7083 H 185.20833 c -0.003,-331.56283 -0.005,-673.85377 0,-1005.41663 z m 793.75,370.41666 H 687.91667 V 211.66667 c -130.64446,-0.26045 -292.6931,-0.93207 -423.33334,0 -3.58987,271.652 0.54756,574.98664 0,846.66663 h 714.375 c 0,-175.9078 0,-379.71714 0,-555.62497 z M 952.5,423.33333 c -59.25378,-66.90902 -110.01605,-115.04966 -185.20833,-193.04 -0.50262,46.71083 -3.5888,146.52087 0,193.11938 54.03214,1.87403 131.24414,3.20932 185.20833,-0.0794 z"
sodipodi:nodetypes="ccccccccccccccccc" /><path
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10.9366;stroke-linejoin:round;paint-order:markers stroke fill"
d="m 610.8433,1006.1909 -36.1507,-0.8489 -0.7601,-36.95865 -0.7602,-36.95884 -18.1704,-6.3455 c -9.9937,-3.49004 -25.1888,-10.36114 -33.7667,-15.26905 l -15.5963,-8.92339 -25.8364,25.64831 -25.8364,25.64827 -27.0067,-28.70876 -27.0067,-28.70893 25.4814,-25.97467 25.4813,-25.97468 -10.7125,-21.87342 c -5.8919,-12.03047 -11.4535,-26.48741 -12.3592,-32.12666 l -1.6468,-10.25316 h -36.149 -36.14911 l -1.76527,-26.65823 c -0.97101,-14.66204 -1.77163,-32.46782 -1.7793,-39.56844 l -0.0142,-12.91018 37.47558,-0.76068 37.4755,-0.76068 2.1629,-10.42773 c 1.1896,-5.73525 6.0215,-19.69633 10.7374,-31.02463 l 8.5744,-20.59691 -25.3013,-25.40734 c -13.9158,-13.97406 -24.8459,-26.5928 -24.2892,-28.04169 0.5566,-1.44886 11.7407,-14.09314 24.8534,-28.09835 l 23.8414,-25.46403 27.3497,25.2372 27.3497,25.2372 17.1624,-9.56794 c 9.4393,-5.26235 24.9412,-11.71959 34.4487,-14.34941 l 17.2862,-4.78147 -0.8813,-37.77908 -0.8813,-37.77909 33.2696,0.004 c 18.2982,0.002 35.2157,0.75062 37.5944,1.66344 3.0026,1.15226 4.3248,5.20342 4.3248,13.25086 0,6.37516 0.7966,22.81507 1.7703,36.5331 l 1.7703,24.94188 13.951,4.48789 c 7.673,2.4683 22.7197,9.14146 33.4372,14.82915 l 19.4863,10.34129 25.4966,-25.60333 c 29.5376,-29.66143 22.7937,-30.58192 57.965,7.9116 l 22.019,24.09886 -25.3055,25.41156 -25.3056,25.41155 7.4801,14.74275 c 4.114,8.10852 10.1797,22.74022 13.4794,32.51491 l 5.9992,17.77217 35.978,0.76279 35.978,0.76279 v 21.39298 c 0,11.76615 0.7866,28.91993 1.7484,38.11952 l 1.7483,16.72648 -37.6672,0.76306 -37.6674,0.76333 -3.8184,15.03796 c -2.1002,8.2709 -7.5235,22.98499 -12.0521,32.69795 l -8.2337,17.65998 26.7632,24.99874 26.7633,24.99878 -22.498,24.6439 c -12.3738,13.55413 -24.2027,26.05872 -26.2862,27.78792 -3.0289,2.5138 -9.1077,-1.8902 -30.323,-21.96859 l -26.5347,-25.11272 -18.2483,9.80289 c -10.0366,5.39171 -25.3229,11.83942 -33.9696,14.32844 l -15.7214,4.52548 v 38.0846 c 0,20.9466 -0.9228,37.81585 -2.0505,37.48755 -1.1279,-0.3283 -18.3184,-0.9789 -38.2013,-1.4459 z m 26.8798,-131.98843 c 60.0904,-11.39608 103.5987,-65.70361 103.5987,-129.31307 0,-77.24604 -59.2947,-138.57973 -133.9728,-138.57973 -101.4024,0 -160.5016,104.71801 -112.3583,199.08793 3.1608,6.19575 13.27,19.30736 22.4649,29.13692 31.6073,33.78875 75.2923,48.19743 120.2675,39.66795 z"
id="path1713" /></svg>

After

Width:  |  Height:  |  Size: 8.3 KiB

@ -0,0 +1,319 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:ooo="http://xml.openoffice.org/svg/export"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.2"
width="48"
height="48"
viewBox="0 0 1270 1270"
preserveAspectRatio="xMidYMid"
fill-rule="evenodd"
stroke-width="28.222"
stroke-linejoin="round"
xml:space="preserve"
id="svg77"
sodipodi:docname="zoom.page.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
inkscape:export-filename="/tmp/icon.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><metadata
id="metadata81"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="718"
id="namedview79"
showgrid="false"
inkscape:zoom="15.851047"
inkscape:cx="20.892872"
inkscape:cy="26.433762"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg77"
units="px" />
<defs
class="ClipPathGroup"
id="defs8"><marker
style="overflow:visible"
id="EmptyTriangleOutM"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="EmptyTriangleOutM"
inkscape:isstock="true"><path
transform="scale(0.4) translate(-4.5,0)"
style="fill-rule:evenodd;fill:#ffffff;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
id="path1774" /></marker><marker
style="overflow:visible"
id="EmptyTriangleInM"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="EmptyTriangleInM"
inkscape:isstock="true"><path
transform="scale(-0.4) translate(-4.5,0)"
style="fill-rule:evenodd;fill:#ffffff;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
id="path1765" /></marker><marker
style="overflow:visible"
id="TriangleInM"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="TriangleInM"
inkscape:isstock="true"><path
transform="scale(-0.4)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
id="path1747" /></marker><marker
style="overflow:visible"
id="Arrow2Sstart"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Sstart"
inkscape:isstock="true"><path
transform="scale(0.3) translate(-2.3,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
id="path1641" /></marker><marker
style="overflow:visible;"
id="marker2225"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Send"
inkscape:isstock="true"><path
transform="scale(0.3) rotate(180) translate(-2.3,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
id="path2223" /></marker><marker
style="overflow:visible"
id="marker2173"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Sstart"
inkscape:isstock="true"><path
transform="scale(0.2) translate(6,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path2171" /></marker><marker
style="overflow:visible"
id="Arrow2Mstart"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Mstart"
inkscape:isstock="true"><path
transform="scale(0.6) translate(0,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
id="path1635" /></marker><marker
style="overflow:visible"
id="Arrow1Sstart"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Sstart"
inkscape:isstock="true"><path
transform="scale(0.2) translate(6,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path1623" /></marker><marker
style="overflow:visible;"
id="Arrow2Send"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow2Send"
inkscape:isstock="true"><path
transform="scale(0.3) rotate(180) translate(-2.3,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
id="path1644" /></marker><marker
style="overflow:visible"
id="TriangleOutS"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="TriangleOutS"
inkscape:isstock="true"><path
transform="scale(0.2)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
id="path1759" /></marker><marker
style="overflow:visible"
id="TriangleInS"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="TriangleInS"
inkscape:isstock="true"><path
transform="scale(-0.2)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
id="path1750" /></marker>
<clipPath
id="presentation_clip_path"
clipPathUnits="userSpaceOnUse">
<rect
x="0"
y="0"
width="1322"
height="1322"
id="rect2" />
</clipPath>
<clipPath
id="presentation_clip_path_shrink"
clipPathUnits="userSpaceOnUse">
<rect
x="1"
y="1"
width="1320"
height="1320"
id="rect5" />
</clipPath>
</defs>
<defs
class="TextShapeIndex"
id="defs12">
<g
ooo:slide="id1"
ooo:id-list="id3 id4"
id="g10" />
</defs>
<defs
class="EmbeddedBulletChars"
id="defs44">
<g
id="bullet-char-template-57356"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 580,1141 1163,571 580,0 -4,571 Z"
id="path14" />
</g>
<g
id="bullet-char-template-57354"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 8,1128 H 1137 V 0 H 8 Z"
id="path17" />
</g>
<g
id="bullet-char-template-10146"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 174,0 602,739 174,1481 1456,739 Z M 1358,739 309,1346 659,739 Z"
id="path20" />
</g>
<g
id="bullet-char-template-10132"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 2015,739 1276,0 H 717 l 543,543 H 174 v 393 h 1086 l -543,545 h 557 z"
id="path23" />
</g>
<g
id="bullet-char-template-10007"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="m 0,-2 c -7,16 -16,29 -25,39 l 381,530 c -94,256 -141,385 -141,387 0,25 13,38 40,38 9,0 21,-2 34,-5 21,4 42,12 65,25 l 27,-13 111,-251 280,301 64,-25 24,25 c 21,-10 41,-24 62,-43 C 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 c 0,-27 -21,-55 -63,-84 l 16,-20 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 c -22,-34 -53,-51 -92,-51 -42,0 -63,17 -64,51 -7,9 -10,24 -10,44 0,9 1,19 2,30 z"
id="path26" />
</g>
<g
id="bullet-char-template-10004"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 c 0,78 14,145 41,201 34,71 87,106 158,106 53,0 88,-31 106,-94 l 23,-176 c 8,-64 28,-97 59,-98 l 735,706 c 11,11 33,17 66,17 42,0 63,-15 63,-46 V 965 c 0,-36 -10,-64 -30,-84 L 442,47 C 390,-6 338,-33 285,-33 Z"
id="path29" />
</g>
<g
id="bullet-char-template-9679"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 c 0,181 53,324 160,431 106,107 249,161 430,161 179,0 323,-54 432,-161 108,-107 162,-251 162,-431 0,-180 -54,-324 -162,-431 C 1136,54 992,0 813,0 Z"
id="path32" />
</g>
<g
id="bullet-char-template-8226"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="m 346,457 c -73,0 -137,26 -191,78 -54,51 -81,114 -81,188 0,73 27,136 81,188 54,52 118,78 191,78 73,0 134,-26 185,-79 51,-51 77,-114 77,-187 0,-75 -25,-137 -76,-188 -50,-52 -112,-78 -186,-78 z"
id="path35" />
</g>
<g
id="bullet-char-template-8211"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="M -4,459 H 1135 V 606 H -4 Z"
id="path38" />
</g>
<g
id="bullet-char-template-61548"
transform="matrix(4.8828125e-4,0,0,-4.8828125e-4,0,0)">
<path
d="m 173,740 c 0,163 58,303 173,419 116,115 255,173 419,173 163,0 302,-58 418,-173 116,-116 174,-256 174,-419 0,-163 -58,-303 -174,-418 C 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 173,740 Z"
id="path41" />
</g>
</defs>
<g
id="g49"
transform="translate(52.916666)">
<g
id="id2"
class="Master_Slide">
<g
id="bg-id2"
class="Background" />
<g
id="bo-id2"
class="BackgroundObjects" />
</g>
</g>
<path
id="path1711"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10.7281;stroke-linejoin:round;paint-order:markers stroke fill"
d="M 185.21138,132.29167 H 767.2948 c 93.63538,92.77554 196.4491,199.24151 291.0416,291.04169 V 1137.7084 H 185.21138 c -0.003,-331.56285 -0.005,-673.85383 0,-1005.41673 z M 978.96149,502.70836 H 687.9198 V 211.66668 c -130.64448,-0.26035 -292.69315,-0.93208 -423.33341,0 -3.58987,271.65204 0.54756,574.9867 0,846.66672 h 714.3751 c 0,-175.90782 0,-379.71718 0,-555.62504 z m -26.45833,-79.375 C 893.24935,356.42434 842.48708,308.28369 767.2948,230.29334 c -0.50271,46.71084 -3.58881,146.52089 0,193.1194 54.03215,1.87404 131.24415,3.20931 185.20836,-0.0794 z"
sodipodi:nodetypes="ccccccccccccccccc" /><g
id="g2841"
style="opacity:1"><path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:68.1963;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1.0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1;"
d="M 402.88672 326.86133 A 34.098148 34.098148 0 0 0 381.52148 334.4668 A 34.098148 34.098148 0 0 0 376.49805 382.42773 L 816.41797 925.30859 A 34.098148 34.098148 0 0 0 864.37695 930.33203 A 34.098148 34.098148 0 0 0 869.40234 882.37305 L 429.48242 339.49219 A 34.098148 34.098148 0 0 0 402.88672 326.86133 z "
id="path2861" /><g
id="g2843"><g
id="g2855"
style="opacity:1"><path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:13.6393pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1.0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1;"
d="M 892.45703,964.98388 765.19513,916.25681 871.16309,830.38638 Z"
id="path2857" /><path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:13.6393pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
d="m 886.35417,806.97917 -145.52084,119.0625 c 39.27938,17.58167 108.39305,32.12571 148.37175,47.43294 6.53257,2.49977 13.3238,-3.00326 12.23242,-9.91211 -9.03422,-45.79567 -10.18235,-124.98936 -15.08333,-156.58333 z m -21.70964,40.39388 16.37305,103.49414 -97.85352,-37.4668 z"
id="path2859"
sodipodi:nodetypes="ccccccccc" /></g><g
id="g2847"
style="opacity:1"><path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:13.6393pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1.0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1;"
d="m 353.44262,299.81592 127.2619,48.72707 -105.96796,85.87043 z"
id="path2849" /><path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:13.6393pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
d="m 353.4707,290.72266 c -5.59974,-0.017 -9.88413,4.98259 -9.00976,10.51367 3.97463,48.24516 9.23293,101.51466 12.72656,148.55534 L 502.70833,343.95833 c -56.25101,-20.08895 -106.03538,-37.32654 -146.01497,-52.63411 -1.02891,-0.39409 -2.12087,-0.59792 -3.22266,-0.60156 z m 11.41016,23.20898 97.85547,37.46875 -81.48242,66.02734 z"
id="path2851"
sodipodi:nodetypes="cccccccccc" /></g></g></g></svg>

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Loading…
Cancel
Save