On 1.08.2018 21:22, Steven Rostedt wrote:
+ /* + * Calculate the new range of the histo. Use the bin of the marker + * as a focal point for the zoomout. With this the maker will stay + * inside the same bin in the new histo. + */ + range = histo->max - histo->min; + delta_tot = range * r; + delta_min = delta_tot * mark / histo->n_bins; + + min = histo->min - delta_min; + max = histo->max + (size_t) delta_tot - delta_min;Took me a bit to figure out what exactly the above is doing. Let me explain what I think it is doing and you can correct me if I'm wrong. We set delta_tot to increase by the percentage requested (easy). Now we make delta_min equal to a percentage of delta_tot based on where mark is in the original bins. If mark is zero, then mark was at 0% of the original bins, if it was at histo->n_bins - 1, it was at (almost) 100%. If it is half way, then we place delta_min at %50 of delta_tot. Then we subtract the original min by the delta_tot * mark/n_bins percentage, and add the max by delta_tot * (1 - mark/n_bins). Sound right? Maybe we can add a comment saying such?
Yes, this is a correct explanation. I will use it as a comment in the code. Thanks! Yordan