    /** * @class Ext.chart.grid.HorizontalGrid3D * @extends Ext.chart.grid.HorizontalGrid * * Horizontal 3D Grid sprite. Used in 3D Cartesian Charts. */Ext.define('Ext.chart.grid.HorizontalGrid3D', {    extend: 'Ext.chart.grid.HorizontalGrid',    alias: 'grid.horizontal3d',     inheritableStatics: {        def: {            processors: {                depth: 'number'            },             defaults: {                depth: 0            }        }    },     render: function (surface, ctx, rect) {        var attr = this.attr,            x = surface.roundPixel(attr.x),            y = surface.roundPixel(attr.y),            dx = surface.matrix.getDX(),            halfLineWidth = ctx.lineWidth * 0.5,            height = attr.height,            depth = attr.depth,            left, top;         if (y <= rect[1]) {            return;        }         // Horizontal stripe.          left = rect[0] + depth - dx;        top  = y + halfLineWidth - depth;         ctx.beginPath();        ctx.rect(left, top, rect[2], height);        ctx.fill();         // Horizontal line.          ctx.beginPath();        ctx.moveTo(left,               top);        ctx.lineTo(left + rect[2], top);        ctx.stroke();         // Diagonal stripe.          left = rect[0] + x - dx;        top  = y + halfLineWidth;         ctx.beginPath();        ctx.moveTo(left,         top);        ctx.lineTo(left + depth, top - depth);        ctx.lineTo(left + depth, top - depth + height);        ctx.lineTo(left,         top + height);        ctx.closePath();        ctx.fill();         // Diagonal line.          ctx.beginPath();        ctx.moveTo(left,         top);        ctx.lineTo(left + depth, top - depth);        ctx.stroke();    }});