ref: bf655bb17b29d15adba296dd9bd1ae1d8983e744
parent: 7e5fa392e9477ea3c15741a6c4a579cebf17263f
author: telephil9 <telephil9@gmail.com>
date: Tue Oct 27 05:25:30 EDT 2020
Added most missing geometry functions New functions added: rpt, eqpt, eqrect, ptinrect, rectinrect, rectxrect, badrect, dx, dy Documentation updated to reflect these additions.
--- a/doc/README.md
+++ b/doc/README.md
@@ -82,6 +82,7 @@
#### `g.pt(x, y)`
#### `g.rect(x0, y0, x1, y1)`
+#### `g.rpt(p, q)`
#### `g.addpt(p, q)`
#### `g.subpt(p, q)`
#### `g.mulpt(p, a)`
@@ -90,7 +91,14 @@
#### `g.rectsubpt(r, p)`
#### `g.insetrect(r, n)`
#### `g.canonrect(r)`
-
+#### `g.eqpt(p, q)`
+#### `g.eqrect(r, s)`
+#### `g.ptinrect(p, r)`
+#### `g.rectinrect(r, s)`
+#### `g.rectxrect(r, s)`
+#### `g.badrect(r)`
+#### `g.dx(r)`
+#### `g.dy(r)`
### Module `key`
--- a/geometry.c
+++ b/geometry.c
@@ -137,6 +137,17 @@
}
static int
+lrpt(lua_State *L)
+{+ Point p, q;
+
+ p = checkpoint(L, 1);
+ q = checkpoint(L, 2);
+ pushrect(L, Rpt(p, q));
+ return 1;
+}
+
+static int
laddpt(lua_State *L)
{Point p, q, r;
@@ -230,9 +241,96 @@
return 1;
}
+static int
+leqpt(lua_State *L)
+{+ Point p, q;
+
+ p = checkpoint(L, 1);
+ q = checkpoint(L, 2);
+ lua_pushboolean(L, eqpt(p, q));
+ return 1;
+}
+
+static int
+leqrect(lua_State *L)
+{+ Rectangle r, s;
+
+ r = checkrect(L, 1);
+ s = checkrect(L, 2);
+ lua_pushboolean(L, eqrect(r, s));
+ return 1;
+}
+
+static int
+lptinrect(lua_State *L)
+{+ Point p;
+ Rectangle r;
+
+ p = checkpoint(L, 1);
+ r = checkrect(L, 2);
+ lua_pushboolean(L, ptinrect(p, r));
+ return 1;
+}
+
+static int
+lrectinrect(lua_State *L)
+{+ Rectangle r, s;
+
+ r = checkrect(L, 1);
+ s = checkrect(L, 2);
+ lua_pushboolean(L, rectinrect(r, s));
+ return 1;
+}
+
+static int
+lrectxrect(lua_State *L)
+{+ Rectangle r, s;
+
+ r = checkrect(L, 1);
+ s = checkrect(L, 2);
+ lua_pushboolean(L, rectXrect(r, s));
+ return 1;
+}
+
+static int
+lbadrect(lua_State *L)
+{+ Rectangle r;
+
+ r = checkrect(L, 1);
+ lua_pushboolean(L, badrect(r));
+ return 1;
+}
+
+static int
+ldx(lua_State *L)
+{+ Rectangle r;
+
+ r = checkrect(L, 1);
+ lua_pushinteger(L, Dx(r));
+ return 1;
+}
+
+static int
+ldy(lua_State *L)
+{+ Rectangle r;
+
+ r = checkrect(L, 1);
+ lua_pushinteger(L, Dy(r));
+ return 1;
+}
+
static const struct luaL_Reg libgeometry [] = { { "pt", lpt }, { "rect", lrect },+ { "rpt", lrpt }, { "addpt", laddpt }, { "subpt", lsubpt }, { "mulpt", lmulpt },@@ -241,6 +339,14 @@
{ "rectsubpt", lrectsubpt }, { "insetrect", linsetrect }, { "canonrect", lcanonrect },+ { "eqpt", leqpt },+ { "eqrect", leqrect },+ { "ptinrect", lptinrect },+ { "rectinrect", lrectinrect },+ { "rectxrect", lrectxrect },+ { "badrect", lbadrect },+ { "dx", ldx },+ { "dy", ldy }, { NULL, NULL },};
--
⑨