2014-04-30 23:24:44 +08:00
|
|
|
local Blitbuffer = require("ffi/blitbuffer")
|
2013-10-18 22:38:07 +02:00
|
|
|
local CacheItem = require("cacheitem")
|
2014-04-30 23:24:44 +08:00
|
|
|
local serial = require("serialize")
|
2016-12-29 00:10:38 -08:00
|
|
|
local logger = require("logger")
|
2013-10-18 22:38:07 +02:00
|
|
|
|
|
|
|
|
local TileCacheItem = CacheItem:new{}
|
|
|
|
|
|
|
|
|
|
function TileCacheItem:onFree()
|
2014-03-13 21:52:43 +08:00
|
|
|
if self.bb.free then
|
2016-12-29 00:10:38 -08:00
|
|
|
logger.dbg("free blitbuffer", self.bb)
|
2014-03-13 21:52:43 +08:00
|
|
|
self.bb:free()
|
|
|
|
|
end
|
2013-10-18 22:38:07 +02:00
|
|
|
end
|
|
|
|
|
|
2014-04-30 23:24:44 +08:00
|
|
|
function TileCacheItem:dump(filename)
|
2016-12-29 00:10:38 -08:00
|
|
|
logger.dbg("dumping tile cache to", filename, self.excerpt)
|
2014-04-30 23:24:44 +08:00
|
|
|
return serial.dump(self.size, self.excerpt, self.pageno,
|
2020-12-04 23:43:57 +01:00
|
|
|
self.bb.w, self.bb.h, tonumber(self.bb.stride), self.bb:getType(),
|
2014-04-30 23:24:44 +08:00
|
|
|
Blitbuffer.tostring(self.bb), filename)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function TileCacheItem:load(filename)
|
2020-09-28 01:04:59 +02:00
|
|
|
local w, h, stride, bb_type, bb_data
|
2014-04-30 23:24:44 +08:00
|
|
|
self.size, self.excerpt, self.pageno,
|
2020-09-28 01:04:59 +02:00
|
|
|
w, h, stride, bb_type, bb_data = serial.load(filename)
|
|
|
|
|
self.bb = Blitbuffer.fromstring(w, h, bb_type, bb_data, stride)
|
2016-12-29 00:10:38 -08:00
|
|
|
logger.dbg("loading tile cache from", filename, self)
|
2014-04-30 23:24:44 +08:00
|
|
|
end
|
|
|
|
|
|
2013-10-18 22:38:07 +02:00
|
|
|
return TileCacheItem
|