phaser/v3/merge/geom/RoundedRectangle.js
2016-11-23 00:17:46 +00:00

108 lines
3.3 KiB
JavaScript

/**
* @author Mat Groves http://matgroves.com/
* @author Richard Davey <rich@photonstorm.com>
* @copyright 2016 Photon Storm Ltd.
* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
*/
/**
* The Rounded Rectangle object is an area defined by its position and has nice rounded corners,
* as indicated by its top-left corner point (x, y) and by its width and its height.
*
* @class Phaser.RoundedRectangle
* @constructor
* @param {number} [x=0] - The x coordinate of the top-left corner of the Rectangle.
* @param {number} [y=0] - The y coordinate of the top-left corner of the Rectangle.
* @param {number} [width=0] - The width of the Rectangle. Should always be either zero or a positive value.
* @param {number} [height=0] - The height of the Rectangle. Should always be either zero or a positive value.
* @param {number} [radius=20] - Controls the radius of the rounded corners.
*/
Phaser.RoundedRectangle = function(x, y, width, height, radius)
{
if (x === undefined) { x = 0; }
if (y === undefined) { y = 0; }
if (width === undefined) { width = 0; }
if (height === undefined) { height = 0; }
if (radius === undefined) { radius = 20; }
/**
* @property {number} x - The x coordinate of the top-left corner of the Rectangle.
*/
this.x = x;
/**
* @property {number} y - The y coordinate of the top-left corner of the Rectangle.
*/
this.y = y;
/**
* @property {number} width - The width of the Rectangle. This value should never be set to a negative.
*/
this.width = width;
/**
* @property {number} height - The height of the Rectangle. This value should never be set to a negative.
*/
this.height = height;
/**
* @property {number} radius - The radius of the rounded corners.
*/
this.radius = radius || 20;
/**
* @property {number} type - The const type of this object.
* @readonly
*/
this.type = Phaser.ROUNDEDRECTANGLE;
};
Phaser.RoundedRectangle.prototype.constructor = Phaser.RoundedRectangle;
Phaser.RoundedRectangle.prototype = {
/**
* Returns a new RoundedRectangle object with the same values for the x, y, width, height and
* radius properties as this RoundedRectangle object.
*
* @method Phaser.RoundedRectangle#clone
* @return {Phaser.RoundedRectangle}
*/
clone: function () {
return new Phaser.RoundedRectangle(this.x, this.y, this.width, this.height, this.radius);
},
/**
* Determines whether the specified coordinates are contained within the region defined by this Rounded Rectangle object.
*
* @method Phaser.RoundedRectangle#contains
* @param {number} x - The x coordinate of the point to test.
* @param {number} y - The y coordinate of the point to test.
* @return {boolean} A value of true if the RoundedRectangle Rectangle object contains the specified point; otherwise false.
*/
contains: function (x, y) {
if (this.width <= 0 || this.height <= 0)
{
return false;
}
var x1 = this.x;
if (x >= x1 && x <= x1 + this.width)
{
var y1 = this.y;
if (y >= y1 && y <= y1 + this.height)
{
return true;
}
}
return false;
}
};