/* jslint node: true */ 'use strict'; var View = require('./view.js').View; var miscUtil = require('./misc_util.js'); var strUtil = require('./string_util.js'); var ansi = require('./ansi_term.js'); var util = require('util'); var assert = require('assert'); exports.TickerTextView = TickerTextView; function TickerTextView(options) { View.call(this, options); var self = this; this.text = options.text || ''; this.tickerStyle = options.tickerStyle || 'rightToLeft'; assert(this.tickerStyle in TickerTextView.TickerStyles); // :TODO: Ticker |text| should have ANSI stripped before calculating any lengths/etc. // strUtil.ansiTextLength(s) // strUtil.pad(..., ignoreAnsi) // strUtil.stylizeString(..., ignoreAnsi) this.tickerState = {}; switch(this.tickerStyle) { case 'rightToLeft' : this.tickerState.pos = this.position.row + this.dimens.width; break; } self.onTickerInterval = function() { switch(self.tickerStyle) { case 'rightToLeft' : self.updateRightToLeftTicker(); break; } }; self.updateRightToLeftTicker = function() { // if pos < start // drawRemain() // if pos + remain > end // drawRemain(0, spaceFor) // else // drawString() + remainPading }; } util.inherits(TickerTextView, View); TickerTextView.TickerStyles = { leftToRight : 1, rightToLeft : 2, bounce : 3, slamLeft : 4, slamRight : 5, slamBounce : 6, decrypt : 7, typewriter : 8, }; Object.freeze(TickerTextView.TickerStyles); /* TickerTextView.TICKER_STYLES = [ 'leftToRight', 'rightToLeft', 'bounce', 'slamLeft', 'slamRight', 'slamBounce', 'decrypt', 'typewriter', ]; */ TickerTextView.prototype.controllerAttached = function() { // :TODO: call super }; TickerTextView.prototype.controllerDetached = function() { // :TODO: call super }; TickerTextView.prototype.setText = function(text) { this.text = strUtil.stylizeString(text, this.textStyle); if(!this.dimens || !this.dimens.width) { this.dimens.width = Math.ceil(this.text.length / 2); } };