mirror of
https://github.com/koreader/koreader
synced 2024-11-18 03:25:46 +00:00
2154e7e852
This should finish the work to make all globals to local variables. That allows LuaJIT to properly compile things by interning the references to the relevant parts (rather than looking up globals all the time which stops a trace).
46 lines
884 B
Lua
46 lines
884 B
Lua
local TimeVal = require("ui/timeval")
|
|
|
|
local GestureRange = {
|
|
ges = nil,
|
|
-- spatial range limits the gesture emitting position
|
|
range = nil,
|
|
-- temproal range limits the gesture emitting rate
|
|
rate = nil,
|
|
-- span limits of this gesture
|
|
scale = nil,
|
|
}
|
|
|
|
function GestureRange:new(o)
|
|
local o = o or {}
|
|
setmetatable(o, self)
|
|
self.__index = self
|
|
return o
|
|
end
|
|
|
|
function GestureRange:match(gs)
|
|
if gs.ges ~= self.ges then
|
|
return false
|
|
end
|
|
if self.range then
|
|
if not self.range:contains(gs.pos) then
|
|
return false
|
|
end
|
|
end
|
|
if self.rate then
|
|
local last_time = self.last_time or TimeVal:new{}
|
|
if gs.time - last_time > TimeVal:new{usec = 1000000 / self.rate} then
|
|
self.last_time = gs.time
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
if self.scale then
|
|
if self.scale[1] > gs.span or self.scale[2] < gs.span then
|
|
return false
|
|
end
|
|
end
|
|
return true
|
|
end
|
|
|
|
return GestureRange
|