if(this.dirty){returnthis.fullRender();
}// calculate geometry
dojo.forEach(this.stack, function(plot){if(plot.dirty||(plot.hAxis&&this.axes[plot.hAxis].dirty)||(plot.vAxis&&this.axes[plot.vAxis].dirty)){
plot.calculateAxes(this.plotArea);
}}, this);
// go over the stack backwards
df.forEachRev(this.stack, function(plot){ plot.render(this.dim, this.offsets); }, this);
// go over axes
df.forIn(this.axes, function(axis){ axis.render(this.dim, this.offsets); }, this);
this._makeClean();
// BEGIN FOR HTML CANVAS if(this.surface.render){this.surface.render(); };
// END FOR HTML CANVASreturnthis;