From 7d44eb91493f92609c4fea21181f200d5cd8cd16 Mon Sep 17 00:00:00 2001 From: Itamar Turner-Trauring Date: Sun, 2 Feb 2020 16:58:43 -0500 Subject: [PATCH 1/2] Adjust height based on subtitle. --- src/flamegraph/mod.rs | 28 +++++- .../flamegraph/options/subtitle_simple.svg | 88 +++++++++---------- .../options/subtitle_with_symbols.svg | 88 +++++++++---------- 3 files changed, 114 insertions(+), 90 deletions(-) diff --git a/src/flamegraph/mod.rs b/src/flamegraph/mod.rs index ff940b1b..3fdc6b78 100644 --- a/src/flamegraph/mod.rs +++ b/src/flamegraph/mod.rs @@ -235,9 +235,14 @@ pub struct Options<'a> { } impl<'a> Options<'a> { - /// Calculate pad top, including title + /// Calculate pad top, including title and subtitle pub(super) fn ypad1(&self) -> usize { - self.font_size * 3 + let subtitle_height = if let Some(_) = self.subtitle { + self.font_size * 2 + } else { + 0 + }; + self.font_size * 3 + subtitle_height } /// Calculate pad bottom, including labels @@ -827,3 +832,22 @@ fn write_usize(buffer: &mut StrStack, value: usize) -> usize { itoa::fmt(&mut writer, value).unwrap(); writer.finish() } + +#[cfg(test)] +mod tests { + use super::Options; + + #[test] + fn top_ypadding_adjusts_for_subtitle() { + let height_without_subtitle = Options { + ..Default::default() + } + .ypad1(); + let height_with_subtitle = Options { + subtitle: Some(String::from("hello!")), + ..Default::default() + } + .ypad1(); + assert!(height_with_subtitle > height_without_subtitle); + } +} diff --git a/tests/data/flamegraph/options/subtitle_simple.svg b/tests/data/flamegraph/options/subtitle_simple.svg index dc5decd6..6b029c88 100644 --- a/tests/data/flamegraph/options/subtitle_simple.svg +++ b/tests/data/flamegraph/options/subtitle_simple.svg @@ -1,4 +1,4 @@ - + @@ -28,113 +28,113 @@ var searchcolor = 'rgb(230,0,230)'; var fluiddrawing = true; var truncate_text_right = false;]]> - + Flame Graph Test Subtitle - + Reset Zoom Search - + _start (56 samples, 10.92%; 0.00%) - - _start + + _start __libc_start_main (56 samples, 10.92%; 0.00%) - - __libc_start_main + + __libc_start_main main (56 samples, 10.92%; 0.00%) - - main + + main cksum (56 samples, 10.92%; +4.87%) - - cksum + + cksum cksum (5 samples, 0.97%; -0.78%) - - + + __GI___fread_unlocked (3 samples, 0.58%; 0.00%) - - + + _IO_file_xsgetn (3 samples, 0.58%; 0.00%) - - + + _IO_file_read (3 samples, 0.58%; 0.00%) - - + + entry_SYSCALL_64_fastpath (3 samples, 0.58%; 0.00%) - - + + sys_read (3 samples, 0.58%; 0.00%) - - + + vfs_read (3 samples, 0.58%; 0.00%) - - + + __vfs_read (3 samples, 0.58%; 0.00%) - - + + ext4_file_read_iter (3 samples, 0.58%; +0.39%) - - + + cksum (96 samples, 18.71%; 0.00%) - - cksum + + cksum main (35 samples, 6.82%; 0.00%) - - main + + main cksum (35 samples, 6.82%; +3.12%) - - cksum + + cksum [unknown] (2 samples, 0.39%; 0.00%) - - + + all (513 samples, 100%) - - + + noploop (417 samples, 81.29%; 0.00%) - - noploop + + noploop main (415 samples, 80.90%; +27.49%) - - main + + main \ No newline at end of file diff --git a/tests/data/flamegraph/options/subtitle_with_symbols.svg b/tests/data/flamegraph/options/subtitle_with_symbols.svg index 53bf1f49..3260c359 100644 --- a/tests/data/flamegraph/options/subtitle_with_symbols.svg +++ b/tests/data/flamegraph/options/subtitle_with_symbols.svg @@ -1,4 +1,4 @@ - + @@ -28,113 +28,113 @@ var searchcolor = 'rgb(230,0,230)'; var fluiddrawing = true; var truncate_text_right = false;]]> - + Flame Graph Test Subtitle <& ' " - + Reset Zoom Search - + _start (56 samples, 10.92%; 0.00%) - - _start + + _start __libc_start_main (56 samples, 10.92%; 0.00%) - - __libc_start_main + + __libc_start_main main (56 samples, 10.92%; 0.00%) - - main + + main cksum (56 samples, 10.92%; +4.87%) - - cksum + + cksum cksum (5 samples, 0.97%; -0.78%) - - + + __GI___fread_unlocked (3 samples, 0.58%; 0.00%) - - + + _IO_file_xsgetn (3 samples, 0.58%; 0.00%) - - + + _IO_file_read (3 samples, 0.58%; 0.00%) - - + + entry_SYSCALL_64_fastpath (3 samples, 0.58%; 0.00%) - - + + sys_read (3 samples, 0.58%; 0.00%) - - + + vfs_read (3 samples, 0.58%; 0.00%) - - + + __vfs_read (3 samples, 0.58%; 0.00%) - - + + ext4_file_read_iter (3 samples, 0.58%; +0.39%) - - + + cksum (96 samples, 18.71%; 0.00%) - - cksum + + cksum main (35 samples, 6.82%; 0.00%) - - main + + main cksum (35 samples, 6.82%; +3.12%) - - cksum + + cksum [unknown] (2 samples, 0.39%; 0.00%) - - + + all (513 samples, 100%) - - + + noploop (417 samples, 81.29%; 0.00%) - - noploop + + noploop main (415 samples, 80.90%; +27.49%) - - main + + main \ No newline at end of file From a7d621ce0378c65c8fd391bb1bddb1ccbfcf812b Mon Sep 17 00:00:00 2001 From: Itamar Turner-Trauring Date: Sun, 2 Feb 2020 16:59:56 -0500 Subject: [PATCH 2/2] Changelog entry. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 01213691..5dcbd96a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Fix bug where subtitles would often be hidden ([#161](https://github.com/jonhoo/inferno/pull/161) by [@itamarst](https://github.com/itamarst)) + ### Removed ## [0.9.3] - 2020-02-02