mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2025-12-31 20:36:25 +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)
|
||||
{
|
||||
SysprofTimeSpanLayer *self = (SysprofTimeSpanLayer *)widget;
|
||||
const GdkRGBA *label_color = _sysprof_chart_layer_get_accent_fg_color ();
|
||||
static const GdkRGBA black = {0,0,0,1};
|
||||
g_autoptr(PangoLayout) layout = NULL;
|
||||
const double *x_values;
|
||||
const double *x2_values;
|
||||
const GdkRGBA *color;
|
||||
@ -117,6 +119,8 @@ sysprof_time_span_layer_snapshot (GtkWidget *widget,
|
||||
guint n_x_values = 0;
|
||||
guint n_x2_values = 0;
|
||||
guint n_values;
|
||||
int layout_y;
|
||||
int layout_h;
|
||||
int width;
|
||||
int height;
|
||||
|
||||
@ -152,12 +156,9 @@ sysprof_time_span_layer_snapshot (GtkWidget *widget,
|
||||
!(n_values = MIN (n_x_values, n_x2_values)))
|
||||
return;
|
||||
|
||||
if (color->alpha > 0)
|
||||
if (color->alpha > 0 || event_color->alpha > 0)
|
||||
{
|
||||
const GdkRGBA *label_color = _sysprof_chart_layer_get_accent_fg_color ();
|
||||
PangoLayout *layout = gtk_widget_create_pango_layout (GTK_WIDGET (self), NULL);
|
||||
int layout_y;
|
||||
int layout_h;
|
||||
layout = gtk_widget_create_pango_layout (GTK_WIDGET (self), NULL);
|
||||
|
||||
pango_layout_set_single_paragraph_mode (layout, TRUE);
|
||||
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);
|
||||
|
||||
layout_y = (height - layout_h) / 2;
|
||||
}
|
||||
|
||||
if (color->alpha > 0)
|
||||
{
|
||||
/* First pass, draw our rectangles for duration which we
|
||||
* always want in the background compared to "points" which
|
||||
* 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)
|
||||
@ -295,6 +297,34 @@ sysprof_time_span_layer_snapshot (GtkWidget *widget,
|
||||
gtk_snapshot_restore (snapshot);
|
||||
|
||||
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