Allow passing AABBs to anchorPoints.
authorJoe Wreschnig <joe.wreschnig@gmail.com>
Wed, 17 Sep 2014 17:10:51 +0000 (19:10 +0200)
committerJoe Wreschnig <joe.wreschnig@gmail.com>
Wed, 17 Sep 2014 17:10:51 +0000 (19:10 +0200)
src/yuu/core.js

index 8b16707..b526131 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; }