StructureJS

0.14.6

A class based utility library for building modular and scalable web platform applications. Features opt-in classes and utilities which provide a solid foundation and toolset to build your next project.

File: /Users/rsavian/Sites/StructureJS/js/display/DisplayObject.js

var __extends = (this && this.__extends) || function (d, b) {
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
    function __() { this.constructor = d; }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
(function (factory) {
    if (typeof module === 'object' && typeof module.exports === 'object') {
        var v = factory(require, exports); if (v !== undefined) module.exports = v;
    }
    else if (typeof define === 'function' && define.amd) {
        define(["require", "exports", '../event/EventDispatcher'], factory);
    }
})(function (require, exports) {
    "use strict";
    var EventDispatcher_1 = require('../event/EventDispatcher');
    /**
     * The {{#crossLink "DisplayObject"}}{{/crossLink}} class is the base class for all objects that can be placed on the display list.
     *
     * @class DisplayObject
     * @extends EventDispatcher
     * @module StructureJS
     * @submodule view
     * @requires Extend
     * @requires EventDispatcher
     * @constructor
     * @author Robert S. (www.codeBelt.com)
     */
    var DisplayObject = (function (_super) {
        __extends(DisplayObject, _super);
        function DisplayObject() {
            _super.call(this);
            /**
             * The Stage of the display object.
             *
             * @property stage
             * @type {any}
             * @public
             */
            this.stage = null;
            /**
             * The CanvasRenderingContext2D interface provides the 2D rendering context for the drawing surface of a canvas element.
             * This property is only used with the canvas specific display objects.
             *
             * @property ctx
             * @type {CanvasRenderingContext2D}
             * @public
             */
            this.ctx = null;
            /**
             * A property providing access to the x position.
             *
             * @property x
             * @type {number}
             * @default 0
             * @public
             */
            this.x = 0;
            /**
             * A property providing access to the y position.
             *
             * @property y
             * @type {number}
             * @default 0
             * @public
             */
            this.y = 0;
            /**
             * Indicates the width of the display object, in pixels.
             *
             * @property width
             * @type {number}
             * @default 0
             * @public
             */
            this.width = 0;
            /**
             * Indicates the height of the display object, in pixels.
             *
             * @property height
             * @type {number}
             * @default 0
             * @public
             */
            this.height = 0;
            /**
             * A property providing access to the unscaledWidth.
             *
             * @property unscaledWidth
             * @type {number}
             * @default 100
             * @public
             */
            this.unscaledWidth = 100;
            /**
             * A property providing access to the unscaledHeight.
             *
             * @property unscaledHeight
             * @type {number}
             * @default 100
             * @public
             */
            this.unscaledHeight = 100;
            /**
             * Indicates the horizontal scale (percentage) of the object as applied from the registration point.
             *
             * @property scaleX
             * @type {number}
             * @public
             */
            this.scaleX = 1;
            /**
             * Indicates the vertical scale (percentage) of an object as applied from the registration point of the object.
             *
             * @property scaleY
             * @type {number}
             * @public
             */
            this.scaleY = 1;
            /**
             * Indicates the rotation of the DisplayObject instance, in degrees, from its original orientation.
             *
             * @property rotation
             * @type {number}
             * @public
             */
            this.rotation = 0;
            /**
             * Indicates the alpha transparency value of the object specified.
             *
             * @property alpha
             * @type {number}
             * @public
             */
            this.alpha = 1;
            /**
             * Whether or not the display object is visible.
             *
             * @property visible
             * @type {boolean}
             * @public
             */
            this.visible = true;
            /**
             * Specifies whether this object receives mouse
             *
             * @property mouseEnabled
             * @type {boolean}
             * @public
             */
            this.mouseEnabled = false;
            /**
             * A Boolean value that indicates whether the pointing hand (hand cursor) appears when the pointer rolls over a display object.
             *
             * @property useHandCursor
             * @type {boolean}
             * @public
             */
            this.useHandCursor = false;
            /**
             * The isCreated property is used to keep track if it is the first time this DisplayObject is created.
             *
             * @property isCreated
             * @type {boolean}
             * @default false
             * @public
             */
            this.isCreated = false;
            /**
             * Indicates the instance name of the DisplayObject.
             *
             * @property name
             * @type {string}
             * @public
             */
            this.name = null;
        }
        /**
         * The create function is intended to provide a consistent place for the creation or initializing the view.
         * It will automatically be called the first time that the view is added to a DisplayObjectContainer.
         * It is critical that all subclasses call the super for this function in their overridden methods.
         *
         * @method create
         * @returns {DisplayObject} Returns an instance of itself.
         * @public
         * @chainable
         */
        DisplayObject.prototype.create = function () {
            this.isCreated = true;
            return this;
        };
        /**
         * The layout method provides a common function to handle updating objects in the view.
         *
         * @method layout
         * @param ...rest {Array<any>}
         * @returns {DisplayObject} Returns an instance of itself.
         * @public
         * @chainable
         */
        DisplayObject.prototype.layout = function () {
            var rest = [];
            for (var _i = 0; _i < arguments.length; _i++) {
                rest[_i - 0] = arguments[_i];
            }
            return this;
        };
        /**
         * The setSize method sets the bounds within which the containing DisplayObject would like that component to lay itself out.
         *
         * @param unscaledWidth {number} The width within which the component should lay itself out.
         * @param unscaledHeight {number} The height within which the component should lay itself out.
         * @returns {DisplayObject} Returns an instance of itself.
         * @public
         * @chainable
         */
        DisplayObject.prototype.setSize = function (unscaledWidth, unscaledHeight) {
            this.unscaledWidth = unscaledWidth;
            this.unscaledHeight = unscaledHeight;
            return this;
        };
        DisplayObject.prototype._readerStart = function () {
            this.ctx.save();
        };
        DisplayObject.prototype.renderCanvas = function () {
            if (this.ctx === null || this.alpha <= 0 || this.visible === false)
                return false;
            this._readerStart();
            this.ctx.globalAlpha = this.alpha;
            this.layout();
            this._renderEnd();
        };
        DisplayObject.prototype._renderEnd = function () {
            this.ctx.restore();
        };
        return DisplayObject;
    }(EventDispatcher_1.default));
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.default = DisplayObject;
});