'use strict'; /** * Licensed Materials - Property of IBM * IBM Cognos Products: Storytelling * (C) Copyright IBM Corp. 2014, 2018 * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ define(['baglass/core-client/js/core-client/ui/core/Events'], function (Events) { var ScaleManager = Events.extend({ defaultPixelsPerSecond: 1, minScale: 1, maxScale: 250, scale: 1, duration: 0, availableWidth: 0, init: function init() { ScaleManager.inherited('init', this, arguments); }, updateDuration: function updateDuration(duration, availableWidth) { this.duration = duration; this.availableWidth = availableWidth; }, scaleToFit: function scaleToFit() { var scale = this._calculateFitToSizeScale(); this.setScale(scale); }, /** * @param step - a scale factor to apply */ stepScale: function stepScale(step) { if (step !== 0) { this.setScale(this.scale * step); } }, setScale: function setScale(scale) { var previousScale = this.scale; this.scale = Math.max(this.minScale, Math.min(this.maxScale, scale)); this.trigger('scale:change', { scale: this.scale, previousScale: previousScale }); }, getScale: function getScale() { return this.scale; }, getScaleToPixelRatio: function getScaleToPixelRatio() { return this.defaultPixelsPerSecond; }, getMinScale: function getMinScale() { return this.minScale; }, getMaxScale: function getMaxScale() { return this.maxScale; }, convertTimeToPosition: function convertTimeToPosition(time) { return time / 1000 * this.defaultPixelsPerSecond * (this.scale || 1); }, convertPositionToTime: function convertPositionToTime(position) { return position / (this.defaultPixelsPerSecond * (this.scale || 1)) * 1000; }, /* * Helpers. */ _calculateFitToSizeScale: function _calculateFitToSizeScale() { var position = this.convertTimeToPosition(this.duration); var ratio = position > 0 ? this.availableWidth / position : 1; return this.scale * ratio; } }); return ScaleManager; }); //# sourceMappingURL=ScaleManager.js.map