UNPKG

jsroot

Version:
60 lines (45 loc) 1.86 kB
import { settings, gStyle } from '../core.mjs'; import { RH1Painter as RH1Painter2D } from '../hist2d/RH1Painter.mjs'; import { RAxisPainter } from '../gpad/RAxisPainter.mjs'; import { assignFrame3DMethods, drawBinsLego } from './hist3d.mjs'; class RH1Painter extends RH1Painter2D { /** @summary Draw 1-D histogram in 3D mode */ draw3D(reason) { this.mode3d = true; const main = this.getFramePainter(), // who makes axis drawing is_main = this.isMainPainter(), // is main histogram zmult = 1 + 2*gStyle.fHistTopMargin; let pr = Promise.resolve(this); if (reason === 'resize') { if (is_main && main.resize3D()) main.render3D(); return pr; } this.deleteAttr(); this.scanContent(true); // may be required for axis drawings if (is_main) { assignFrame3DMethods(main); pr = main.create3DScene(this.options.Render3D).then(() => { main.setAxesRanges(this.getAxis('x'), this.xmin, this.xmax, null, this.ymin, this.ymax, null, 0, 0); main.set3DOptions(this.options); main.drawXYZ(main.toplevel, RAxisPainter, { use_y_for_z: true, zmult, zoom: settings.Zooming, ndim: 1, draw: true, v7: true }); }); } if (!main.mode3d) return pr; return pr.then(() => this.drawingBins(reason)).then(() => { // called when bins received from server, must be reentrant const fp = this.getFramePainter(); drawBinsLego(this, true); this.updatePaletteDraw(); fp.render3D(); fp.addKeysHandler(); return this; }); } /** @summary draw RH1 object */ static async draw(dom, histo, opt) { return RH1Painter._draw(new RH1Painter(dom, histo), opt); } } // class RH1Painter export { RH1Painter };