This method provides a hash table that maps the stream Ids to rainbow-like colors. Signed-off-by: Yordan Karadzhov (VMware) <y.karadz@xxxxxxxxx> --- src/KsPlotTools.cpp | 33 +++++++++++++++++++++++++++++++++ src/KsPlotTools.hpp | 2 ++ 2 files changed, 35 insertions(+) diff --git a/src/KsPlotTools.cpp b/src/KsPlotTools.cpp index 113a6c0..7a0450b 100644 --- a/src/KsPlotTools.cpp +++ b/src/KsPlotTools.cpp @@ -182,6 +182,39 @@ ColorTable getCPUColorTable() return colors; } +/** + * @brief Create a Hash table of Rainbow colors. The Steam Ids are + * mapped to the palette of Rainbow colors. + * + * @returns ColorTable instance. + */ +ColorTable getStreamColorTable() +{ + kshark_context *kshark_ctx(nullptr); + ColorTable colors; + Color color; + float alpha(.35); + int *streamIds; + + if (!kshark_instance(&kshark_ctx)) + return colors; + + streamIds = kshark_all_streams(kshark_ctx); + for (int i = 0; i < kshark_ctx->n_streams; ++i) { + /* + * Starting from index 6 provides better functioning of the + * color scheme slider. + */ + color.setRainbowColor(i + 6); + color.blend(alpha); + colors[streamIds[i]] = color; + } + + free(streamIds); + + return colors; +} + /** * @brief Search the Hash table of Rainbow colors for a particular key (pid). * diff --git a/src/KsPlotTools.hpp b/src/KsPlotTools.hpp index 6e66373..ab28f43 100644 --- a/src/KsPlotTools.hpp +++ b/src/KsPlotTools.hpp @@ -78,6 +78,8 @@ ColorTable getTaskColorTable(); ColorTable getCPUColorTable(); +ColorTable getStreamColorTable(); + Color getColor(ColorTable *colors, int pid); /** Represents an abstract graphical element. */ -- 2.25.1