Add half-width, half-height, and center accessors to AAAB.
authorJoe Wreschnig <joe.wreschnig@gmail.com>
Tue, 23 Sep 2014 16:17:47 +0000 (18:17 +0200)
committerJoe Wreschnig <joe.wreschnig@gmail.com>
Tue, 23 Sep 2014 16:17:47 +0000 (18:17 +0200)
Allow anchorPoint to take one AABB.

src/yuu/core.js

index 1d64e98d193c170d56a0f84c73f05dac5dfcb003..a2967b0729b203f1e7e12b4e024304d0dda894b9 100644 (file)
             gui.Window.get().showDevTools();
     }, "show developer tools");
 
-    yuu.anchorPoint = function (anchor, x0, y0, x1, y1) {
+    var anchorPoint = yuu.anchorPoint = yf.argcd(
         /** Calculate the anchor point for a box given extents and anchor mode
 
             This function is the inverse of yuu.bottomLeft.
         */
-        switch (anchor) {
-        case "center": return [(x0 + x1) / 2, (y0 + y1) / 2];
-        case "top": return [(x0 + x1) / 2, y1];
-        case "bottom": return [(x0 + x1) / 2, y0];
-        case "left": return [x0, (y0 + y1) / 2];
-        case "right": return [x1, (y0 + y1) / 2];
-
-        case "topleft": return [x0, y1];
-        case "topright": return [x1, y1];
-        case "bottomleft": return [x0, y0];
-        case "bottomright": return [x0, y0];
-        default: return [anchor[0], anchor[1]];
+        function (anchor, aabb) {
+            return anchorPoint(anchor, aabb.x0, aabb.y0, aabb.x1, aabb.y1);
+        },
+        function (anchor, x0, y0, x1, y1) {
+            switch (anchor) {
+            case "center": return [(x0 + x1) / 2, (y0 + y1) / 2];
+            case "top": return [(x0 + x1) / 2, y1];
+            case "bottom": return [(x0 + x1) / 2, y0];
+            case "left": return [x0, (y0 + y1) / 2];
+            case "right": return [x1, (y0 + y1) / 2];
+            case "topleft": return [x0, y1];
+            case "topright": return [x1, y1];
+            case "bottomleft": return [x0, y0];
+            case "bottomright": return [x0, y0];
+            default: return [anchor[0], anchor[1]];
+            }
         }
-    };
+    );
 
     yuu.bottomLeft = function (anchor, x, y, w, h) {
         /** Calculate the bottom-left for a box given size and anchor mode
             }
         ),
 
+        xc: {
+            get: function () { return (this.x0 + this.x1) / 2; }
+        },
+        yc: {
+            get: function () { return (this.y0 + this.y1) / 2; }
+        },
+
         w: {
             get: function () { return this.x1 - this.x0; },
             set: function (w) { this.x1 = this.x0 + w; }
 
         size: { swizzle: "wh" },
 
+        hw: { get: function () { return this.w / 2; } },
+        hh: { get: function () { return this.h / 2; } },
+
         contains: yf.argcd(
             function (p) { return this.contains(p.x, p.y); },
             function (x, y) {