123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- /*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
- WebInspector.Point = function(x, y)
- {
- this.x = x || 0;
- this.y = y || 0;
- };
- WebInspector.Point.fromEvent = function(event)
- {
- return new WebInspector.Point(event.pageX, event.pageY);
- };
- WebInspector.Point.fromEventInElement = function(event, element)
- {
- var wkPoint = window.webkitConvertPointFromPageToNode(element, new WebKitPoint(event.pageX, event.pageY));
- return new WebInspector.Point(wkPoint.x, wkPoint.y);
- };
- WebInspector.Point.prototype = {
- constructor: WebInspector.Point,
- toString : function()
- {
- return "WebInspector.Point[" + this.x + "," + this.y + "]";
- },
- copy: function()
- {
- return new WebInspector.Point(this.x, this.y);
- },
- equals: function(anotherPoint)
- {
- return (this.x === anotherPoint.x && this.y === anotherPoint.y);
- }
- };
- WebInspector.Size = function(width, height)
- {
- this.width = width || 0;
- this.height = height || 0;
- };
- WebInspector.Size.prototype = {
- constructor: WebInspector.Size,
- toString: function()
- {
- return "WebInspector.Size[" + this.width + "," + this.height + "]";
- },
- copy: function()
- {
- return new WebInspector.Size(this.width, this.height);
- },
- equals: function(anotherSize)
- {
- return (this.width === anotherSize.width && this.height === anotherSize.height);
- }
- };
- WebInspector.Size.ZERO_SIZE = new WebInspector.Size(0, 0);
- WebInspector.Rect = function(x, y, width, height)
- {
- this.origin = new WebInspector.Point(x || 0, y || 0);
- this.size = new WebInspector.Size(width || 0, height || 0);
- };
- WebInspector.Rect.rectFromClientRect = function(clientRect)
- {
- return new WebInspector.Rect(clientRect.left, clientRect.top, clientRect.width, clientRect.height);
- };
- WebInspector.Rect.prototype = {
- constructor: WebInspector.Rect,
- toString: function()
- {
- return "WebInspector.Rect[" + [this.origin.x, this.origin.y, this.size.width, this.size.height].join(", ") + "]";
- },
- copy: function()
- {
- return new WebInspector.Rect(this.origin.x, this.origin.y, this.size.width, this.size.height);
- },
- equals: function(anotherRect)
- {
- return (this.origin.equals(anotherRect.origin) && this.size.equals(anotherRect.size));
- },
- inset: function(insets)
- {
- return new WebInspector.Rect(
- this.origin.x + insets.left,
- this.origin.y + insets.top,
- this.size.width - insets.left - insets.right,
- this.size.height - insets.top - insets.bottom
- );
- },
- minX: function()
- {
- return this.origin.x;
- },
- minY: function()
- {
- return this.origin.y;
- },
- midX: function()
- {
- return this.origin.x + (this.size.width / 2);
- },
- midY: function()
- {
- return this.origin.y + (this.size.height / 2);
- },
- maxX: function()
- {
- return this.origin.x + this.size.width;
- },
- maxY: function()
- {
- return this.origin.y + this.size.height;
- },
- intersectionWithRect: function(rect)
- {
- var x1 = Math.max(this.minX(), rect.minX());
- var x2 = Math.min(this.maxX(), rect.maxX());
- if (x1 > x2)
- return WebInspector.Rect.ZERO_RECT;
- var intersection = new WebInspector.Rect;
- intersection.origin.x = x1;
- intersection.size.width = x2 - x1;
- var y1 = Math.max(this.minY(), rect.minY());
- var y2 = Math.min(this.maxY(), rect.maxY());
- if (y1 > y2)
- return WebInspector.Rect.ZERO_RECT;
- intersection.origin.y = y1;
- intersection.size.height = y2 - y1;
- return intersection;
- }
- };
- WebInspector.Rect.ZERO_RECT = new WebInspector.Rect(0, 0, 0, 0);
- WebInspector.EdgeInsets = function(top, right, bottom, left)
- {
- console.assert(arguments.length === 1 || arguments.length === 4);
- if (arguments.length === 1) {
- this.top = top;
- this.right = top;
- this.bottom = top;
- this.left = top;
- } else if (arguments.length === 4) {
- this.top = top;
- this.right = right;
- this.bottom = bottom;
- this.left = left;
- }
- };
- WebInspector.EdgeInsets.prototype = {
- constructor: WebInspector.EdgeInsets,
- equals: function(anotherInset)
- {
- return (this.top === anotherInset.top && this.right === anotherInset.right &&
- this.bottom === anotherInset.bottom && this.left === anotherInset.left);
- },
- copy: function()
- {
- return new WebInspector.EdgeInsets(this.top, this.right, this.bottom, this.left);
- }
- };
- WebInspector.RectEdge = {
- MIN_X : 0,
- MIN_Y : 1,
- MAX_X : 2,
- MAX_Y : 3
- };
- WebInspector.Quad = function(quad)
- {
- this.points = [
- new WebInspector.Point(quad[0], quad[1]), // top left
- new WebInspector.Point(quad[2], quad[3]), // top right
- new WebInspector.Point(quad[4], quad[5]), // bottom right
- new WebInspector.Point(quad[6], quad[7]) // bottom left
- ];
- this.width = Math.round(Math.sqrt(Math.pow(quad[0] - quad[2], 2) + Math.pow(quad[1] - quad[3], 2)));
- this.height = Math.round(Math.sqrt(Math.pow(quad[0] - quad[6], 2) + Math.pow(quad[1] - quad[7], 2)));
- };
- WebInspector.Quad.prototype = {
- constructor: WebInspector.Quad,
- toProtocol: function()
- {
- return [
- this.points[0].x, this.points[0].y,
- this.points[1].x, this.points[1].y,
- this.points[2].x, this.points[2].y,
- this.points[3].x, this.points[3].y
- ];
- }
- };
|