%PDF- %PDF-
Direktori : /home/jalalj2hb/www/ftm-admin/bower_components/kineticjs/src/ |
Current File : /home/jalalj2hb/www/ftm-admin/bower_components/kineticjs/src/Canvas.js |
(function() { // calculate pixel ratio var canvas = Kinetic.Util.createCanvasElement(), context = canvas.getContext('2d'), // if using a mobile device, calculate the pixel ratio. Otherwise, just use // 1. For desktop browsers, if the user has zoom enabled, it affects the pixel ratio // and causes artifacts on the canvas. As of 02/26/2014, there doesn't seem to be a way // to reliably calculate the browser zoom for modern browsers, which is why we just set // the pixel ratio to 1 for desktops _pixelRatio = Kinetic.UA.mobile ? (function() { var devicePixelRatio = window.devicePixelRatio || 1, backingStoreRatio = context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1; return devicePixelRatio / backingStoreRatio; })() : 1; /** * Canvas Renderer constructor * @constructor * @abstract * @memberof Kinetic * @param {Number} width * @param {Number} height * @param {Number} pixelRatio KineticJS automatically handles pixel ratio adustments in order to render crisp drawings * on all devices. Most desktops, low end tablets, and low end phones, have device pixel ratios * of 1. Some high end tablets and phones, like iPhones and iPads (not the mini) have a device pixel ratio * of 2. Some Macbook Pros, and iMacs also have a device pixel ratio of 2. Some high end Android devices have pixel * ratios of 2 or 3. Some browsers like Firefox allow you to configure the pixel ratio of the viewport. Unless otherwise * specificed, the pixel ratio will be defaulted to the actual device pixel ratio. You can override the device pixel * ratio for special situations, or, if you don't want the pixel ratio to be taken into account, you can set it to 1. */ Kinetic.Canvas = function(config) { this.init(config); }; Kinetic.Canvas.prototype = { init: function(config) { config = config || {}; var pixelRatio = config.pixelRatio || Kinetic.pixelRatio || _pixelRatio; this.pixelRatio = pixelRatio; this._canvas = Kinetic.Util.createCanvasElement(); // set inline styles this._canvas.style.padding = 0; this._canvas.style.margin = 0; this._canvas.style.border = 0; this._canvas.style.background = 'transparent'; this._canvas.style.position = 'absolute'; this._canvas.style.top = 0; this._canvas.style.left = 0; }, /** * get canvas context * @method * @memberof Kinetic.Canvas.prototype * @returns {CanvasContext} context */ getContext: function() { return this.context; }, /** * get pixel ratio * @method * @memberof Kinetic.Canvas.prototype * @returns {Number} pixel ratio */ getPixelRatio: function() { return this.pixelRatio; }, /** * get pixel ratio * @method * @memberof Kinetic.Canvas.prototype * @param {Number} pixelRatio KineticJS automatically handles pixel ratio adustments in order to render crisp drawings * on all devices. Most desktops, low end tablets, and low end phones, have device pixel ratios * of 1. Some high end tablets and phones, like iPhones and iPads (not the mini) have a device pixel ratio * of 2. Some Macbook Pros, and iMacs also have a device pixel ratio of 2. Some high end Android devices have pixel * ratios of 2 or 3. Some browsers like Firefox allow you to configure the pixel ratio of the viewport. Unless otherwise * specificed, the pixel ratio will be defaulted to the actual device pixel ratio. You can override the device pixel * ratio for special situations, or, if you don't want the pixel ratio to be taken into account, you can set it to 1. */ setPixelRatio: function(pixelRatio) { this.pixelRatio = pixelRatio; this.setSize(this.getWidth(), this.getHeight()); }, /** * set width * @method * @memberof Kinetic.Canvas.prototype * @param {Number} width */ setWidth: function(width) { // take into account pixel ratio this.width = this._canvas.width = width * this.pixelRatio; this._canvas.style.width = width + 'px'; }, /** * set height * @method * @memberof Kinetic.Canvas.prototype * @param {Number} height */ setHeight: function(height) { // take into account pixel ratio this.height = this._canvas.height = height * this.pixelRatio; this._canvas.style.height = height + 'px'; }, /** * get width * @method * @memberof Kinetic.Canvas.prototype * @returns {Number} width */ getWidth: function() { return this.width; }, /** * get height * @method * @memberof Kinetic.Canvas.prototype * @returns {Number} height */ getHeight: function() { return this.height; }, /** * set size * @method * @memberof Kinetic.Canvas.prototype * @param {Number} width * @param {Number} height */ setSize: function(width, height) { this.setWidth(width); this.setHeight(height); }, /** * to data url * @method * @memberof Kinetic.Canvas.prototype * @param {String} mimeType * @param {Number} quality between 0 and 1 for jpg mime types * @returns {String} data url string */ toDataURL: function(mimeType, quality) { try { // If this call fails (due to browser bug, like in Firefox 3.6), // then revert to previous no-parameter image/png behavior return this._canvas.toDataURL(mimeType, quality); } catch(e) { try { return this._canvas.toDataURL(); } catch(err) { Kinetic.Util.warn('Unable to get data URL. ' + err.message); return ''; } } } }; Kinetic.SceneCanvas = function(config) { config = config || {}; var width = config.width || 0, height = config.height || 0; Kinetic.Canvas.call(this, config); this.context = new Kinetic.SceneContext(this); this.setSize(width, height); }; Kinetic.SceneCanvas.prototype = { setWidth: function(width) { var pixelRatio = this.pixelRatio, _context = this.getContext()._context; Kinetic.Canvas.prototype.setWidth.call(this, width); _context.scale(pixelRatio, pixelRatio); }, setHeight: function(height) { var pixelRatio = this.pixelRatio, _context = this.getContext()._context; Kinetic.Canvas.prototype.setHeight.call(this, height); _context.scale(pixelRatio, pixelRatio); } }; Kinetic.Util.extend(Kinetic.SceneCanvas, Kinetic.Canvas); Kinetic.HitCanvas = function(config) { config = config || {}; var width = config.width || 0, height = config.height || 0; Kinetic.Canvas.call(this, config); this.context = new Kinetic.HitContext(this); this.setSize(width, height); }; Kinetic.Util.extend(Kinetic.HitCanvas, Kinetic.Canvas); })();