login

<     >

2021-08-26 11:32:11 (UTC-03:00)

Marcel Rodrigues <marcelgmr@gmail.com>

map: add Frame:add_margin()

diff --git a/map.lua b/map.lua
index 7144cab..b178bdb 100644
--- a/map.lua
+++ b/map.lua
@@ -187,6 +187,19 @@ function Frame:set_height(h)
     self.w = math.floor(mw * self.s + 0.5)
 end
 
+function Frame:add_margin(m)
+    local f = (self.h + m) / self.h
+    self.s = self.s / f
+    local mw = self.bbox.x1 - self.bbox.x0
+    local mh = self.bbox.y1 - self.bbox.y0
+    local cx = (self.bbox.x0 + self.bbox.x1) / 2
+    local cy = (self.bbox.y0 + self.bbox.y1) / 2
+    self.bbox.x0 = cx - mw/2 * f
+    self.bbox.x1 = cx + mw/2 * f
+    self.bbox.y0 = cy - mh/2 * f
+    self.bbox.y1 = cy + mh/2 * f
+end
+
 function Frame:fitted(polys)
     return function()
         local points = polys()