/** * @class Ext.chart.series.sprite.Bar3D * @extends Ext.chart.series.sprite.Bar * * Draws a sprite used in {@link Ext.chart.series.Bar3D} series. */Ext.define('Ext.chart.series.sprite.Bar3D', { extend: 'Ext.chart.series.sprite.Bar', alias: 'sprite.bar3dSeries', requires: ['Ext.draw.gradient.Linear'], inheritableStatics: { def: { processors: { depthWidthRatio: 'number', /** * @cfg {Number} [saturationFactor=1] * The factor applied to the saturation of the bars. */ saturationFactor: 'number', /** * @cfg {Number} [brightnessFactor=1] * The factor applied to the brightness of the bars. */ brightnessFactor: 'number', /** * @cfg {Number} [colorSpread=1] * An attribute used to control how flat the bar gradient looks. * A value of 0 essentially means no gradient (flat color). */ colorSpread: 'number' }, defaults: { depthWidthRatio: 1/3, saturationFactor: 1, brightnessFactor: 1, colorSpread: 1, transformFillStroke: true }, triggers: { groupCount: 'panzoom' }, updaters: { panzoom: function (attr) { var me = this, dx = attr.visibleMaxX - attr.visibleMinX, dy = attr.visibleMaxY - attr.visibleMinY, innerWidth = attr.flipXY ? attr.innerHeight : attr.innerWidth, innerHeight = !attr.flipXY ? attr.innerHeight : attr.innerWidth, surface = me.getSurface(), isRtl = surface ? surface.getInherited().rtl : false; if (isRtl && !attr.flipXY) { attr.translationX = innerWidth + attr.visibleMinX * innerWidth / dx; } else { attr.translationX = -attr.visibleMinX * innerWidth / dx; } attr.translationY = -attr.visibleMinY * (innerHeight - me.depth) / dy; attr.scalingX = (isRtl && !attr.flipXY ? -1 : 1) * innerWidth / dx; attr.scalingY = (innerHeight - me.depth) / dy; attr.scalingCenterX = 0; attr.scalingCenterY = 0; me.applyTransformations(true); } } } }, config: { showStroke: false }, depth: 0, drawBar: function (ctx, surface, clip, left, top, right, bottom, index) { var me = this, attr = me.attr, itemCfg = {}, renderer = attr.renderer, changes, depth, series, params; itemCfg.x = (left + right) * 0.5; itemCfg.y = top; itemCfg.width = (right - left) * 0.75; itemCfg.height = bottom - top; itemCfg.depth = depth = itemCfg.width * attr.depthWidthRatio; itemCfg.orientation = attr.flipXY ? 'horizontal' : 'vertical'; itemCfg.saturationFactor = attr.saturationFactor; itemCfg.brightnessFactor = attr.brightnessFactor; itemCfg.colorSpread = attr.colorSpread; if (depth !== me.depth) { me.depth = depth; series = me.getSeries(); series.fireEvent('depthchange', series, depth); } if (renderer) { params = [me, itemCfg, {store: me.getStore()}, index]; changes = Ext.callback(renderer, null, params, 0, me.getSeries()); Ext.apply(itemCfg, changes); } me.putMarker('items', itemCfg, index, !renderer); } });