mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2025-07-08 00:05:00 +00:00
Try different ruler increments
This commit is contained in:
parent
f17f8ddf61
commit
e52050b8d0
1 changed files with 11 additions and 10 deletions
|
@ -795,17 +795,18 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
|
|||
};
|
||||
|
||||
let ruler_origin = document_to_viewport.transform_point2(DVec2::ZERO);
|
||||
let log = ruler_scale.log2();
|
||||
let mut ruler_interval: f64 = if log < 0. { 100. * 2_f64.powf(-log.ceil()) } else { 100. / 2_f64.powf(log.ceil()) };
|
||||
let base = ruler_scale.log10();
|
||||
let rounded_base = base.ceil();
|
||||
let base_remainder = base - rounded_base + 1.;
|
||||
let mut ruler_interval: f64 = 100. / 10_f64.powf(rounded_base);
|
||||
|
||||
// When the interval becomes too small, force it to be a whole number, then to powers of 10.
|
||||
// The progression of intervals is:
|
||||
// ..., 100, 50, 25, 12.5, 6 (6.25), 4 (3.125), 2 (1.5625), 1, 0.1, 0.01, ...
|
||||
if ruler_interval < 1. {
|
||||
ruler_interval = 10_f64.powf(ruler_interval.log10().ceil());
|
||||
} else if ruler_interval < 12.5 {
|
||||
// Round to nearest even number
|
||||
ruler_interval = 2. * (ruler_interval / 2.).round();
|
||||
// About log(2)
|
||||
if base_remainder < 0.3 {
|
||||
ruler_interval *= 5.;
|
||||
}
|
||||
// About log(5)
|
||||
else if base_remainder < 0.7 {
|
||||
ruler_interval *= 2.;
|
||||
}
|
||||
|
||||
if self.graph_view_overlay_open {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue