@@ -11,7 +11,7 @@ let version_id = "7.2.x";
1111
1212/** @summary version date
1313 * @desc Release date in format day/month/year like "19/11/2021" */
14- let version_date = "4 /11/2022";
14+ let version_date = "7 /11/2022";
1515
1616/** @summary version id and date
1717 * @desc Produced by concatenation of {@link version_id} and {@link version_date}
@@ -253,7 +253,9 @@ let settings = {
253253 /** @summary Show only last cycle for objects in TFile */
254254 OnlyLastCycle: false,
255255 /** @summary Configures dark mode for the GUI */
256- DarkMode: false
256+ DarkMode: false,
257+ /** @summary Prefer to use saved points in TF1/TF2, avoids eval() and Function() when possible */
258+ PreferSavedPoints: false
257259};
258260
259261
@@ -93714,9 +93716,13 @@ class TF1Painter extends ObjectPainter {
9371493716 let np = Math.max(tf1.fNpx, 101),
9371593717 dx = (xmax - xmin) / (np - 1),
9371693718 res = [], iserror = false,
93717- force_use_save = (tf1.fSave.length > 3) && ignore_zoom;
93719+ has_saved_points = (tf1.fSave.length > 3),
93720+ force_use_save = has_saved_points && (ignore_zoom || settings.PreferSavedPoints);
93721+
93722+ if (!force_use_save) {
93723+ if (!tf1.evalPar)
93724+ proivdeEvalPar(tf1);
9371893725
93719- if (!force_use_save)
9372093726 for (let n = 0; n < np; n++) {
9372193727 let xx = xmin + n*dx, yy = 0;
9372293728 if (logx) xx = Math.exp(xx);
@@ -93731,10 +93737,11 @@ class TF1Painter extends ObjectPainter {
9373193737 if (Number.isFinite(yy))
9373293738 res.push({ x: xx, y: yy });
9373393739 }
93740+ }
9373493741
9373593742 // in the case there were points have saved and we cannot calculate function
9373693743 // if we don't have the user's function
93737- if ((iserror || ignore_zoom || !res.length) && (tf1.fSave.length > 3) ) {
93744+ if ((iserror || ignore_zoom || !res.length) && has_saved_points ) {
9373893745
9373993746 np = tf1.fSave.length - 2;
9374093747 xmin = tf1.fSave[np];
@@ -93804,8 +93811,9 @@ class TF1Painter extends ObjectPainter {
9380493811
9380593812 updateObject(obj /*, opt */) {
9380693813 if (!this.matchObjectType(obj)) return false;
93807- Object.assign(this.getObject(), obj);
93808- proivdeEvalPar(this.getObject());
93814+ let tf1 = this.getObject();
93815+ Object.assign(tf1, obj);
93816+ delete tf1.evalPar;
9380993817 return true;
9381093818 }
9381193819
@@ -93960,8 +93968,6 @@ class TF1Painter extends ObjectPainter {
9396093968 if (d.check('RX')) aopt += "RX";
9396193969 if (d.check('RY')) aopt += "RY";
9396293970
93963- proivdeEvalPar(tf1);
93964-
9396593971 let pr = Promise.resolve(true);
9396693972
9396793973 if (!has_main || painter.second_x || painter.second_y)
0 commit comments