mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-12 08:00:53 +00:00
Merge branch 'gbsneto/mark-name-in-waterfall-fixes' into 'master'
sysprof: Also render labels for instant marks See merge request GNOME/sysprof!99
This commit is contained in:
@ -106,7 +106,9 @@ sysprof_time_span_layer_snapshot (GtkWidget *widget,
|
|||||||
GtkSnapshot *snapshot)
|
GtkSnapshot *snapshot)
|
||||||
{
|
{
|
||||||
SysprofTimeSpanLayer *self = (SysprofTimeSpanLayer *)widget;
|
SysprofTimeSpanLayer *self = (SysprofTimeSpanLayer *)widget;
|
||||||
|
const GdkRGBA *label_color = _sysprof_chart_layer_get_accent_fg_color ();
|
||||||
static const GdkRGBA black = {0,0,0,1};
|
static const GdkRGBA black = {0,0,0,1};
|
||||||
|
g_autoptr(PangoLayout) layout = NULL;
|
||||||
const double *x_values;
|
const double *x_values;
|
||||||
const double *x2_values;
|
const double *x2_values;
|
||||||
const GdkRGBA *color;
|
const GdkRGBA *color;
|
||||||
@ -117,6 +119,8 @@ sysprof_time_span_layer_snapshot (GtkWidget *widget,
|
|||||||
guint n_x_values = 0;
|
guint n_x_values = 0;
|
||||||
guint n_x2_values = 0;
|
guint n_x2_values = 0;
|
||||||
guint n_values;
|
guint n_values;
|
||||||
|
int layout_y;
|
||||||
|
int layout_h;
|
||||||
int width;
|
int width;
|
||||||
int height;
|
int height;
|
||||||
|
|
||||||
@ -152,12 +156,9 @@ sysprof_time_span_layer_snapshot (GtkWidget *widget,
|
|||||||
!(n_values = MIN (n_x_values, n_x2_values)))
|
!(n_values = MIN (n_x_values, n_x2_values)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (color->alpha > 0)
|
if (color->alpha > 0 || event_color->alpha > 0)
|
||||||
{
|
{
|
||||||
const GdkRGBA *label_color = _sysprof_chart_layer_get_accent_fg_color ();
|
layout = gtk_widget_create_pango_layout (GTK_WIDGET (self), NULL);
|
||||||
PangoLayout *layout = gtk_widget_create_pango_layout (GTK_WIDGET (self), NULL);
|
|
||||||
int layout_y;
|
|
||||||
int layout_h;
|
|
||||||
|
|
||||||
pango_layout_set_single_paragraph_mode (layout, TRUE);
|
pango_layout_set_single_paragraph_mode (layout, TRUE);
|
||||||
pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END);
|
pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END);
|
||||||
@ -165,7 +166,10 @@ sysprof_time_span_layer_snapshot (GtkWidget *widget,
|
|||||||
pango_layout_get_pixel_size (layout, NULL, &layout_h);
|
pango_layout_get_pixel_size (layout, NULL, &layout_h);
|
||||||
|
|
||||||
layout_y = (height - layout_h) / 2;
|
layout_y = (height - layout_h) / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (color->alpha > 0)
|
||||||
|
{
|
||||||
/* First pass, draw our rectangles for duration which we
|
/* First pass, draw our rectangles for duration which we
|
||||||
* always want in the background compared to "points" which
|
* always want in the background compared to "points" which
|
||||||
* are marks w/o a duration.
|
* are marks w/o a duration.
|
||||||
@ -264,8 +268,6 @@ sysprof_time_span_layer_snapshot (GtkWidget *widget,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_object_unref (layout);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event_color->alpha > 0)
|
if (event_color->alpha > 0)
|
||||||
@ -295,6 +297,34 @@ sysprof_time_span_layer_snapshot (GtkWidget *widget,
|
|||||||
gtk_snapshot_restore (snapshot);
|
gtk_snapshot_restore (snapshot);
|
||||||
|
|
||||||
last_x = begin;
|
last_x = begin;
|
||||||
|
|
||||||
|
if (n_values == 1)
|
||||||
|
{
|
||||||
|
g_autofree char *label = sysprof_time_series_dup_label (self->series, i);
|
||||||
|
const GdkRGBA *fg = dark ? label_color : &black;
|
||||||
|
int right_empty_space;
|
||||||
|
int label_width;
|
||||||
|
int label_x;
|
||||||
|
|
||||||
|
if (label == NULL || *label == '\0')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
pango_layout_set_text (layout, label, -1);
|
||||||
|
pango_layout_set_alignment (layout, PANGO_ALIGN_LEFT);
|
||||||
|
pango_layout_get_pixel_size (layout, &label_width, NULL);
|
||||||
|
|
||||||
|
label_x = begin * width + ceil (height / 3.) + 2;
|
||||||
|
right_empty_space = width - label_x;
|
||||||
|
pango_layout_set_width (layout, right_empty_space * PANGO_SCALE);
|
||||||
|
|
||||||
|
if (right_empty_space <= 20)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
gtk_snapshot_save (snapshot);
|
||||||
|
gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (label_x, layout_y));
|
||||||
|
gtk_snapshot_append_layout (snapshot, layout, fg);
|
||||||
|
gtk_snapshot_restore (snapshot);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user