Warning: this is an htmlized version!
The original is across this link,
and the conversion rules are here.
-- bbox.lua: bounding boxes (experimental).
-- This file:
-- http://angg.twu.net/LATEX/dednat6/preamble6.lua
-- http://angg.twu.net/LATEX/dednat6/preamble6.lua.html
--  (find-angg        "LATEX/dednat6/preamble6.lua")
-- See: (find-dn6 "preamble.lua")

-- Bounding boxes

bbmin = function (a, b) return (a and b) and min(a, b) or (a or b) end
bbmax = function (a, b) return (a and b) and max(a, b) or (a or b) end

BBox = Class {
  type    = "BBox",
  new = function (T) return BBox(T or {}):addx1y1() end,
  __tostring = function (bb) return bb:tostring() end,
  __index = {
    tostring = function (bb)
        local ntos = function (n) return n and format("%.3f", n) or "nil" end
        local str = format("BBox: [%s,%s]x[%s,%s]",
                           ntos(bb.x0), ntos(bb.x2),
                           ntos(bb.y0), ntos(bb.y2))
        if bb.x1 or bb.y1 then
          str = str..format(", center (%s,%s)", ntos(bb.x1), ntos(bb.y1))
        return str
    x0x2y0y2 = function (bb) return bb.x0, bb.x2, bb.y0, bb.y2 end,
    addxy   = function (bb, x, y) return bb:addx(x):addy(y) end,
    addx1y1 = function (bb) return bb:addxy(bb.x1, bb.y1) end,
    addx = function (bb, x)
        bb.x0 = bbmin(bb.x0, x)
        bb.x2 = bbmax(bb.x2, x)
        return bb
    addy = function (bb, y)
        bb.y0 = bbmin(bb.y0, y)
        bb.y2 = bbmax(bb.y2, y)
        return bb
    enlarge = function (bb, d)
        return BBox.new {
            x0=(bb.x0 and bb.x0 - d), x2=(bb.x2 and bb.x2 + d),
            y0=(bb.y0 and bb.y0 - d), y2=(bb.y2 and bb.y2 + d),
            x1=bb.x1, y1=bb.y1,

-- TODO: center, v, toward, intinnerbox, has

* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "bbox.lua"
bb = BBox.new {x1=2, y1=3}
= bb


* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "bbox.lua"


-- Local Variables:
-- coding: raw-text-unix
-- End: