diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/charts.c | 32 | ||||
| -rw-r--r-- | src/charts.h | 1 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/charts.c b/src/charts.c index eadfc01..429750e 100644 --- a/src/charts.c +++ b/src/charts.c @@ -49,6 +49,7 @@ #define CHART_DELTA_SECONDS_EPSILON .001f /* adherence errors smaller than this are treated as zero */ #define CHART_NUM_FIXED_HEADER_ROWS 3 /* number of rows @ top before the hierarchy: { IOWait/Idle, IRQ/SoftIRQ, Adherence } */ #define CHART_DEFAULT_INTERVAL_SECS .1f /* default to 10Hz */ +#define CHART_STAMP_ROW_INTERVAL 10 /* every Nth row to stamp boundaries with the text */ /* the global charts state, supplied to vwm_chart_create() which keeps a reference for future use. */ typedef struct _vwm_charts_t { @@ -1448,6 +1449,37 @@ void vwm_chart_render(vwm_charts_t *charts, vwm_chart_t *chart, vcr_present_op_t } +void vwm_chart_stamp_boundary(vwm_charts_t *charts, vwm_chart_t *chart, const char *text) +{ + vcr_str_t strs; + int w; + + assert(charts); + assert(chart); + assert(text); + + strs.str = text; + strs.len = strlen(text); + + vcr_advance_phase(chart->vcr, -1); + vcr_mark_boundary(chart->vcr, VCR_LAYER_GRAPHA); + vcr_mark_boundary(chart->vcr, VCR_LAYER_GRAPHB); + + vcr_draw_text(chart->vcr, VCR_LAYER_GRAPHA, VCR_TEXT_FLAGS_WRAPPED, -1, -1, &strs, 1, &w); + for (int i = 0; i < w; i++) /* TODO: advance_phase should support -N instead of -1/+1, this is silly */ + vcr_advance_phase(chart->vcr, -1); + + for (int i = 0; i * VCR_ROW_HEIGHT < chart->visible_height; i += CHART_STAMP_ROW_INTERVAL) { + vcr_draw_text(chart->vcr, VCR_LAYER_GRAPHA, VCR_TEXT_FLAGS_WRAPPED, vcr_phase_x(chart->vcr), i, &strs, 1, NULL); + vcr_draw_text(chart->vcr, VCR_LAYER_GRAPHB, VCR_TEXT_FLAGS_WRAPPED, vcr_phase_x(chart->vcr), i, &strs, 1, NULL); + } + + vcr_advance_phase(chart->vcr, -1); + vcr_mark_boundary(chart->vcr, VCR_LAYER_GRAPHA); + vcr_mark_boundary(chart->vcr, VCR_LAYER_GRAPHB); +} + + static void set_sampling_interval(vwm_charts_t *charts, float interval) { assert(charts); diff --git a/src/charts.h b/src/charts.h index 6db51be..7a23e82 100644 --- a/src/charts.h +++ b/src/charts.h @@ -39,5 +39,6 @@ void vwm_chart_compose(vwm_charts_t *charts, vwm_chart_t *chart); void vwm_chart_compose_xdamage(vwm_charts_t *charts, vwm_chart_t *chart, XserverRegion *res_damaged_region); #endif void vwm_chart_render(vwm_charts_t *charts, vwm_chart_t *chart, vcr_present_op_t op, vcr_dest_t *dest, int x, int y, int width, int height); +void vwm_chart_stamp_boundary(vwm_charts_t *charts, vwm_chart_t *chart, const char *str); #endif |
