0
0
mirror of https://github.com/yse/easy_profiler.git synced 2025-01-14 00:27:55 +08:00

#0 [GUI] Styling

This commit is contained in:
Victor Zarubkin 2017-11-23 22:01:44 +03:00
parent 66dce34169
commit 109c5fc47c
23 changed files with 792 additions and 461 deletions

View File

@ -43,29 +43,30 @@ The Apache License, Version 2.0 (the "License");
#ifndef EASY_PROFILER_COLORS_H #ifndef EASY_PROFILER_COLORS_H
#define EASY_PROFILER_COLORS_H #define EASY_PROFILER_COLORS_H
#include <stdint.h> #include <cstdint>
#include <easy/details/easy_compiler_support.h>
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
namespace profiler { namespace profiler {
typedef uint32_t color_t; // Standard four-byte ARGB color format using color_t = uint32_t; // Standard four-byte ARGB color format
namespace colors { namespace colors {
///< Change alpha for color. Only 8 major bytes (0xff000000) used from alpha. ///< Change alpha for color. Only 8 major bytes (0xff000000) used from alpha.
inline color_t modify_alpha32(color_t _color, color_t _alpha) { inline EASY_CONSTEXPR_FCN color_t modify_alpha32(color_t _color, color_t _alpha) {
return (_alpha & 0xff000000) | (_color & 0x00ffffff); return (_alpha & 0xff000000) | (_color & 0x00ffffff);
} }
///< Change alpha for color. ///< Change alpha for color.
inline color_t modify_alpha8(color_t _color, uint8_t _alpha) { inline EASY_CONSTEXPR_FCN color_t modify_alpha8(color_t _color, uint8_t _alpha) {
return (static_cast<color_t>(_alpha) << 24) | (_color & 0x00ffffff); return (static_cast<color_t>(_alpha) << 24) | (_color & 0x00ffffff);
} }
///< Create color from ARGB components. ///< Create color from ARGB components.
inline color_t color(uint8_t _red, uint8_t _green, uint8_t _blue, uint8_t _alpha = 0xff) { inline EASY_CONSTEXPR_FCN color_t color(uint8_t _red, uint8_t _green, uint8_t _blue, uint8_t _alpha = 0xff) {
return (static_cast<color_t>(_alpha) << 24) | (static_cast<color_t>(_red) << 16) | (static_cast<color_t>(_green) << 8) | static_cast<color_t>(_blue); return (static_cast<color_t>(_alpha) << 24) | (static_cast<color_t>(_red) << 16) | (static_cast<color_t>(_green) << 8) | static_cast<color_t>(_blue);
} }
@ -73,333 +74,333 @@ namespace profiler {
// Google Material Design colors // Google Material Design colors
// See https://material.google.com/style/color.html // See https://material.google.com/style/color.html
const color_t Red50 = 0xffffebee; EASY_CONSTEXPR color_t Red50 = 0xffffebee;
const color_t Red100 = 0xffffcdd2; EASY_CONSTEXPR color_t Red100 = 0xffffcdd2;
const color_t Red200 = 0xffef9a9a; EASY_CONSTEXPR color_t Red200 = 0xffef9a9a;
const color_t Red300 = 0xffe57373; EASY_CONSTEXPR color_t Red300 = 0xffe57373;
const color_t Red400 = 0xffef5350; EASY_CONSTEXPR color_t Red400 = 0xffef5350;
const color_t Red500 = 0xfff44336; EASY_CONSTEXPR color_t Red500 = 0xfff44336;
const color_t Red600 = 0xffe53935; EASY_CONSTEXPR color_t Red600 = 0xffe53935;
const color_t Red700 = 0xffd32f2f; EASY_CONSTEXPR color_t Red700 = 0xffd32f2f;
const color_t Red800 = 0xffc62828; EASY_CONSTEXPR color_t Red800 = 0xffc62828;
const color_t Red900 = 0xffb71c1c; EASY_CONSTEXPR color_t Red900 = 0xffb71c1c;
const color_t RedA100 = 0xffff8a80; EASY_CONSTEXPR color_t RedA100 = 0xffff8a80;
const color_t RedA200 = 0xffff5252; EASY_CONSTEXPR color_t RedA200 = 0xffff5252;
const color_t RedA400 = 0xffff1744; EASY_CONSTEXPR color_t RedA400 = 0xffff1744;
const color_t RedA700 = 0xffd50000; EASY_CONSTEXPR color_t RedA700 = 0xffd50000;
const color_t Pink50 = 0xfffce4ec; EASY_CONSTEXPR color_t Pink50 = 0xfffce4ec;
const color_t Pink100 = 0xfff8bbd0; EASY_CONSTEXPR color_t Pink100 = 0xfff8bbd0;
const color_t Pink200 = 0xfff48fb1; EASY_CONSTEXPR color_t Pink200 = 0xfff48fb1;
const color_t Pink300 = 0xfff06292; EASY_CONSTEXPR color_t Pink300 = 0xfff06292;
const color_t Pink400 = 0xffec407a; EASY_CONSTEXPR color_t Pink400 = 0xffec407a;
const color_t Pink500 = 0xffe91e63; EASY_CONSTEXPR color_t Pink500 = 0xffe91e63;
const color_t Pink600 = 0xffd81b60; EASY_CONSTEXPR color_t Pink600 = 0xffd81b60;
const color_t Pink700 = 0xffc2185b; EASY_CONSTEXPR color_t Pink700 = 0xffc2185b;
const color_t Pink800 = 0xffad1457; EASY_CONSTEXPR color_t Pink800 = 0xffad1457;
const color_t Pink900 = 0xff880e4f; EASY_CONSTEXPR color_t Pink900 = 0xff880e4f;
const color_t PinkA100 = 0xffff80ab; EASY_CONSTEXPR color_t PinkA100 = 0xffff80ab;
const color_t PinkA200 = 0xffff4081; EASY_CONSTEXPR color_t PinkA200 = 0xffff4081;
const color_t PinkA400 = 0xfff50057; EASY_CONSTEXPR color_t PinkA400 = 0xfff50057;
const color_t PinkA700 = 0xffc51162; EASY_CONSTEXPR color_t PinkA700 = 0xffc51162;
const color_t Purple50 = 0xfff3e5f5; EASY_CONSTEXPR color_t Purple50 = 0xfff3e5f5;
const color_t Purple100 = 0xffe1bee7; EASY_CONSTEXPR color_t Purple100 = 0xffe1bee7;
const color_t Purple200 = 0xffce93d8; EASY_CONSTEXPR color_t Purple200 = 0xffce93d8;
const color_t Purple300 = 0xffba68c8; EASY_CONSTEXPR color_t Purple300 = 0xffba68c8;
const color_t Purple400 = 0xffab47bc; EASY_CONSTEXPR color_t Purple400 = 0xffab47bc;
const color_t Purple500 = 0xff9c27b0; EASY_CONSTEXPR color_t Purple500 = 0xff9c27b0;
const color_t Purple600 = 0xff8e24aa; EASY_CONSTEXPR color_t Purple600 = 0xff8e24aa;
const color_t Purple700 = 0xff7b1fa2; EASY_CONSTEXPR color_t Purple700 = 0xff7b1fa2;
const color_t Purple800 = 0xff6a1b9a; EASY_CONSTEXPR color_t Purple800 = 0xff6a1b9a;
const color_t Purple900 = 0xff4a148c; EASY_CONSTEXPR color_t Purple900 = 0xff4a148c;
const color_t PurpleA100 = 0xffea80fc; EASY_CONSTEXPR color_t PurpleA100 = 0xffea80fc;
const color_t PurpleA200 = 0xffe040fb; EASY_CONSTEXPR color_t PurpleA200 = 0xffe040fb;
const color_t PurpleA400 = 0xffd500f9; EASY_CONSTEXPR color_t PurpleA400 = 0xffd500f9;
const color_t PurpleA700 = 0xffaa00ff; EASY_CONSTEXPR color_t PurpleA700 = 0xffaa00ff;
const color_t DeepPurple50 = 0xffede7f6; EASY_CONSTEXPR color_t DeepPurple50 = 0xffede7f6;
const color_t DeepPurple100 = 0xffd1c4e9; EASY_CONSTEXPR color_t DeepPurple100 = 0xffd1c4e9;
const color_t DeepPurple200 = 0xffb39ddb; EASY_CONSTEXPR color_t DeepPurple200 = 0xffb39ddb;
const color_t DeepPurple300 = 0xff9575cd; EASY_CONSTEXPR color_t DeepPurple300 = 0xff9575cd;
const color_t DeepPurple400 = 0xff7e57c2; EASY_CONSTEXPR color_t DeepPurple400 = 0xff7e57c2;
const color_t DeepPurple500 = 0xff673ab7; EASY_CONSTEXPR color_t DeepPurple500 = 0xff673ab7;
const color_t DeepPurple600 = 0xff5e35b1; EASY_CONSTEXPR color_t DeepPurple600 = 0xff5e35b1;
const color_t DeepPurple700 = 0xff512da8; EASY_CONSTEXPR color_t DeepPurple700 = 0xff512da8;
const color_t DeepPurple800 = 0xff4527a0; EASY_CONSTEXPR color_t DeepPurple800 = 0xff4527a0;
const color_t DeepPurple900 = 0xff311b92; EASY_CONSTEXPR color_t DeepPurple900 = 0xff311b92;
const color_t DeepPurpleA100 = 0xffb388ff; EASY_CONSTEXPR color_t DeepPurpleA100 = 0xffb388ff;
const color_t DeepPurpleA200 = 0xff7c4dff; EASY_CONSTEXPR color_t DeepPurpleA200 = 0xff7c4dff;
const color_t DeepPurpleA400 = 0xff651fff; EASY_CONSTEXPR color_t DeepPurpleA400 = 0xff651fff;
const color_t DeepPurpleA700 = 0xff6200ea; EASY_CONSTEXPR color_t DeepPurpleA700 = 0xff6200ea;
const color_t Indigo50 = 0xffe8eaf6; EASY_CONSTEXPR color_t Indigo50 = 0xffe8eaf6;
const color_t Indigo100 = 0xffc5cae9; EASY_CONSTEXPR color_t Indigo100 = 0xffc5cae9;
const color_t Indigo200 = 0xff9fa8da; EASY_CONSTEXPR color_t Indigo200 = 0xff9fa8da;
const color_t Indigo300 = 0xff7986cb; EASY_CONSTEXPR color_t Indigo300 = 0xff7986cb;
const color_t Indigo400 = 0xff5c6bc0; EASY_CONSTEXPR color_t Indigo400 = 0xff5c6bc0;
const color_t Indigo500 = 0xff3f51b5; EASY_CONSTEXPR color_t Indigo500 = 0xff3f51b5;
const color_t Indigo600 = 0xff3949ab; EASY_CONSTEXPR color_t Indigo600 = 0xff3949ab;
const color_t Indigo700 = 0xff303f9f; EASY_CONSTEXPR color_t Indigo700 = 0xff303f9f;
const color_t Indigo800 = 0xff283593; EASY_CONSTEXPR color_t Indigo800 = 0xff283593;
const color_t Indigo900 = 0xff1a237e; EASY_CONSTEXPR color_t Indigo900 = 0xff1a237e;
const color_t IndigoA100 = 0xff8c9eff; EASY_CONSTEXPR color_t IndigoA100 = 0xff8c9eff;
const color_t IndigoA200 = 0xff536dfe; EASY_CONSTEXPR color_t IndigoA200 = 0xff536dfe;
const color_t IndigoA400 = 0xff3d5afe; EASY_CONSTEXPR color_t IndigoA400 = 0xff3d5afe;
const color_t IndigoA700 = 0xff304ffe; EASY_CONSTEXPR color_t IndigoA700 = 0xff304ffe;
const color_t Blue50 = 0xffe3f2fd; EASY_CONSTEXPR color_t Blue50 = 0xffe3f2fd;
const color_t Blue100 = 0xffbbdefb; EASY_CONSTEXPR color_t Blue100 = 0xffbbdefb;
const color_t Blue200 = 0xff90caf9; EASY_CONSTEXPR color_t Blue200 = 0xff90caf9;
const color_t Blue300 = 0xff64b5f6; EASY_CONSTEXPR color_t Blue300 = 0xff64b5f6;
const color_t Blue400 = 0xff42a5f5; EASY_CONSTEXPR color_t Blue400 = 0xff42a5f5;
const color_t Blue500 = 0xff2196f3; EASY_CONSTEXPR color_t Blue500 = 0xff2196f3;
const color_t Blue600 = 0xff1e88e5; EASY_CONSTEXPR color_t Blue600 = 0xff1e88e5;
const color_t Blue700 = 0xff1976d2; EASY_CONSTEXPR color_t Blue700 = 0xff1976d2;
const color_t Blue800 = 0xff1565c0; EASY_CONSTEXPR color_t Blue800 = 0xff1565c0;
const color_t Blue900 = 0xff0d47a1; EASY_CONSTEXPR color_t Blue900 = 0xff0d47a1;
const color_t BlueA100 = 0xff82b1ff; EASY_CONSTEXPR color_t BlueA100 = 0xff82b1ff;
const color_t BlueA200 = 0xff448aff; EASY_CONSTEXPR color_t BlueA200 = 0xff448aff;
const color_t BlueA400 = 0xff2979ff; EASY_CONSTEXPR color_t BlueA400 = 0xff2979ff;
const color_t BlueA700 = 0xff2962ff; EASY_CONSTEXPR color_t BlueA700 = 0xff2962ff;
const color_t LightBlue50 = 0xffe1f5fe; EASY_CONSTEXPR color_t LightBlue50 = 0xffe1f5fe;
const color_t LightBlue100 = 0xffb3e5fc; EASY_CONSTEXPR color_t LightBlue100 = 0xffb3e5fc;
const color_t LightBlue200 = 0xff81d4fa; EASY_CONSTEXPR color_t LightBlue200 = 0xff81d4fa;
const color_t LightBlue300 = 0xff4fc3f7; EASY_CONSTEXPR color_t LightBlue300 = 0xff4fc3f7;
const color_t LightBlue400 = 0xff29b6f6; EASY_CONSTEXPR color_t LightBlue400 = 0xff29b6f6;
const color_t LightBlue500 = 0xff03a9f4; EASY_CONSTEXPR color_t LightBlue500 = 0xff03a9f4;
const color_t LightBlue600 = 0xff039be5; EASY_CONSTEXPR color_t LightBlue600 = 0xff039be5;
const color_t LightBlue700 = 0xff0288d1; EASY_CONSTEXPR color_t LightBlue700 = 0xff0288d1;
const color_t LightBlue800 = 0xff0277bd; EASY_CONSTEXPR color_t LightBlue800 = 0xff0277bd;
const color_t LightBlue900 = 0xff01579b; EASY_CONSTEXPR color_t LightBlue900 = 0xff01579b;
const color_t LightBlueA100 = 0xff80d8ff; EASY_CONSTEXPR color_t LightBlueA100 = 0xff80d8ff;
const color_t LightBlueA200 = 0xff40c4ff; EASY_CONSTEXPR color_t LightBlueA200 = 0xff40c4ff;
const color_t LightBlueA400 = 0xff00b0ff; EASY_CONSTEXPR color_t LightBlueA400 = 0xff00b0ff;
const color_t LightBlueA700 = 0xff0091ea; EASY_CONSTEXPR color_t LightBlueA700 = 0xff0091ea;
const color_t Cyan50 = 0xffe0f7fa; EASY_CONSTEXPR color_t Cyan50 = 0xffe0f7fa;
const color_t Cyan100 = 0xffb2ebf2; EASY_CONSTEXPR color_t Cyan100 = 0xffb2ebf2;
const color_t Cyan200 = 0xff80deea; EASY_CONSTEXPR color_t Cyan200 = 0xff80deea;
const color_t Cyan300 = 0xff4dd0e1; EASY_CONSTEXPR color_t Cyan300 = 0xff4dd0e1;
const color_t Cyan400 = 0xff26c6da; EASY_CONSTEXPR color_t Cyan400 = 0xff26c6da;
const color_t Cyan500 = 0xff00bcd4; EASY_CONSTEXPR color_t Cyan500 = 0xff00bcd4;
const color_t Cyan600 = 0xff00acc1; EASY_CONSTEXPR color_t Cyan600 = 0xff00acc1;
const color_t Cyan700 = 0xff0097a7; EASY_CONSTEXPR color_t Cyan700 = 0xff0097a7;
const color_t Cyan800 = 0xff00838f; EASY_CONSTEXPR color_t Cyan800 = 0xff00838f;
const color_t Cyan900 = 0xff006064; EASY_CONSTEXPR color_t Cyan900 = 0xff006064;
const color_t CyanA100 = 0xff84ffff; EASY_CONSTEXPR color_t CyanA100 = 0xff84ffff;
const color_t CyanA200 = 0xff18ffff; EASY_CONSTEXPR color_t CyanA200 = 0xff18ffff;
const color_t CyanA400 = 0xff00e5ff; EASY_CONSTEXPR color_t CyanA400 = 0xff00e5ff;
const color_t CyanA700 = 0xff00b8d4; EASY_CONSTEXPR color_t CyanA700 = 0xff00b8d4;
const color_t Teal50 = 0xffe0f2f1; EASY_CONSTEXPR color_t Teal50 = 0xffe0f2f1;
const color_t Teal100 = 0xffb2dfdb; EASY_CONSTEXPR color_t Teal100 = 0xffb2dfdb;
const color_t Teal200 = 0xff80cbc4; EASY_CONSTEXPR color_t Teal200 = 0xff80cbc4;
const color_t Teal300 = 0xff4db6ac; EASY_CONSTEXPR color_t Teal300 = 0xff4db6ac;
const color_t Teal400 = 0xff26a69a; EASY_CONSTEXPR color_t Teal400 = 0xff26a69a;
const color_t Teal500 = 0xff009688; EASY_CONSTEXPR color_t Teal500 = 0xff009688;
const color_t Teal600 = 0xff00897b; EASY_CONSTEXPR color_t Teal600 = 0xff00897b;
const color_t Teal700 = 0xff00796b; EASY_CONSTEXPR color_t Teal700 = 0xff00796b;
const color_t Teal800 = 0xff00695c; EASY_CONSTEXPR color_t Teal800 = 0xff00695c;
const color_t Teal900 = 0xff004d40; EASY_CONSTEXPR color_t Teal900 = 0xff004d40;
const color_t TealA100 = 0xffa7ffeb; EASY_CONSTEXPR color_t TealA100 = 0xffa7ffeb;
const color_t TealA200 = 0xff64ffda; EASY_CONSTEXPR color_t TealA200 = 0xff64ffda;
const color_t TealA400 = 0xff1de9b6; EASY_CONSTEXPR color_t TealA400 = 0xff1de9b6;
const color_t TealA700 = 0xff00bfa5; EASY_CONSTEXPR color_t TealA700 = 0xff00bfa5;
const color_t Green50 = 0xffe8f5e9; EASY_CONSTEXPR color_t Green50 = 0xffe8f5e9;
const color_t Green100 = 0xffc8e6c9; EASY_CONSTEXPR color_t Green100 = 0xffc8e6c9;
const color_t Green200 = 0xffa5d6a7; EASY_CONSTEXPR color_t Green200 = 0xffa5d6a7;
const color_t Green300 = 0xff81c784; EASY_CONSTEXPR color_t Green300 = 0xff81c784;
const color_t Green400 = 0xff66bb6a; EASY_CONSTEXPR color_t Green400 = 0xff66bb6a;
const color_t Green500 = 0xff4caf50; EASY_CONSTEXPR color_t Green500 = 0xff4caf50;
const color_t Green600 = 0xff43a047; EASY_CONSTEXPR color_t Green600 = 0xff43a047;
const color_t Green700 = 0xff388e3c; EASY_CONSTEXPR color_t Green700 = 0xff388e3c;
const color_t Green800 = 0xff2e7d32; EASY_CONSTEXPR color_t Green800 = 0xff2e7d32;
const color_t Green900 = 0xff1b5e20; EASY_CONSTEXPR color_t Green900 = 0xff1b5e20;
const color_t GreenA100 = 0xffb9f6ca; EASY_CONSTEXPR color_t GreenA100 = 0xffb9f6ca;
const color_t GreenA200 = 0xff69f0ae; EASY_CONSTEXPR color_t GreenA200 = 0xff69f0ae;
const color_t GreenA400 = 0xff00e676; EASY_CONSTEXPR color_t GreenA400 = 0xff00e676;
const color_t GreenA700 = 0xff00c853; EASY_CONSTEXPR color_t GreenA700 = 0xff00c853;
const color_t LightGreen50 = 0xfff1f8e9; EASY_CONSTEXPR color_t LightGreen50 = 0xfff1f8e9;
const color_t LightGreen100 = 0xffdcedc8; EASY_CONSTEXPR color_t LightGreen100 = 0xffdcedc8;
const color_t LightGreen200 = 0xffc5e1a5; EASY_CONSTEXPR color_t LightGreen200 = 0xffc5e1a5;
const color_t LightGreen300 = 0xffaed581; EASY_CONSTEXPR color_t LightGreen300 = 0xffaed581;
const color_t LightGreen400 = 0xff9ccc65; EASY_CONSTEXPR color_t LightGreen400 = 0xff9ccc65;
const color_t LightGreen500 = 0xff8bc34a; EASY_CONSTEXPR color_t LightGreen500 = 0xff8bc34a;
const color_t LightGreen600 = 0xff7cb342; EASY_CONSTEXPR color_t LightGreen600 = 0xff7cb342;
const color_t LightGreen700 = 0xff689f38; EASY_CONSTEXPR color_t LightGreen700 = 0xff689f38;
const color_t LightGreen800 = 0xff558b2f; EASY_CONSTEXPR color_t LightGreen800 = 0xff558b2f;
const color_t LightGreen900 = 0xff33691e; EASY_CONSTEXPR color_t LightGreen900 = 0xff33691e;
const color_t LightGreenA100 = 0xffccff90; EASY_CONSTEXPR color_t LightGreenA100 = 0xffccff90;
const color_t LightGreenA200 = 0xffb2ff59; EASY_CONSTEXPR color_t LightGreenA200 = 0xffb2ff59;
const color_t LightGreenA400 = 0xff76ff03; EASY_CONSTEXPR color_t LightGreenA400 = 0xff76ff03;
const color_t LightGreenA700 = 0xff64dd17; EASY_CONSTEXPR color_t LightGreenA700 = 0xff64dd17;
const color_t Lime50 = 0xfff9ebe7; EASY_CONSTEXPR color_t Lime50 = 0xfff9ebe7;
const color_t Lime100 = 0xfff0f4c3; EASY_CONSTEXPR color_t Lime100 = 0xfff0f4c3;
const color_t Lime200 = 0xffe6ee9c; EASY_CONSTEXPR color_t Lime200 = 0xffe6ee9c;
const color_t Lime300 = 0xffdce775; EASY_CONSTEXPR color_t Lime300 = 0xffdce775;
const color_t Lime400 = 0xffd4e157; EASY_CONSTEXPR color_t Lime400 = 0xffd4e157;
const color_t Lime500 = 0xffcddc39; EASY_CONSTEXPR color_t Lime500 = 0xffcddc39;
const color_t Lime600 = 0xffc0ca33; EASY_CONSTEXPR color_t Lime600 = 0xffc0ca33;
const color_t Lime700 = 0xffafb42b; EASY_CONSTEXPR color_t Lime700 = 0xffafb42b;
const color_t Lime800 = 0xff9e9d24; EASY_CONSTEXPR color_t Lime800 = 0xff9e9d24;
const color_t Lime900 = 0xff827717; EASY_CONSTEXPR color_t Lime900 = 0xff827717;
const color_t LimeA100 = 0xfff4ff81; EASY_CONSTEXPR color_t LimeA100 = 0xfff4ff81;
const color_t LimeA200 = 0xffeeff41; EASY_CONSTEXPR color_t LimeA200 = 0xffeeff41;
const color_t LimeA400 = 0xffc6ff00; EASY_CONSTEXPR color_t LimeA400 = 0xffc6ff00;
const color_t LimeA700 = 0xffaeea00; EASY_CONSTEXPR color_t LimeA700 = 0xffaeea00;
const color_t Yellow50 = 0xfffffde7; EASY_CONSTEXPR color_t Yellow50 = 0xfffffde7;
const color_t Yellow100 = 0xfffff9c4; EASY_CONSTEXPR color_t Yellow100 = 0xfffff9c4;
const color_t Yellow200 = 0xfffff59d; EASY_CONSTEXPR color_t Yellow200 = 0xfffff59d;
const color_t Yellow300 = 0xfffff176; EASY_CONSTEXPR color_t Yellow300 = 0xfffff176;
const color_t Yellow400 = 0xffffee58; EASY_CONSTEXPR color_t Yellow400 = 0xffffee58;
const color_t Yellow500 = 0xffffeb3b; EASY_CONSTEXPR color_t Yellow500 = 0xffffeb3b;
const color_t Yellow600 = 0xfffdd835; EASY_CONSTEXPR color_t Yellow600 = 0xfffdd835;
const color_t Yellow700 = 0xfffbc02d; EASY_CONSTEXPR color_t Yellow700 = 0xfffbc02d;
const color_t Yellow800 = 0xfff9a825; EASY_CONSTEXPR color_t Yellow800 = 0xfff9a825;
const color_t Yellow900 = 0xfff57f17; EASY_CONSTEXPR color_t Yellow900 = 0xfff57f17;
const color_t YellowA100 = 0xffffff8d; EASY_CONSTEXPR color_t YellowA100 = 0xffffff8d;
const color_t YellowA200 = 0xffffff00; EASY_CONSTEXPR color_t YellowA200 = 0xffffff00;
const color_t YellowA400 = 0xffffea00; EASY_CONSTEXPR color_t YellowA400 = 0xffffea00;
const color_t YellowA700 = 0xffffd600; EASY_CONSTEXPR color_t YellowA700 = 0xffffd600;
const color_t Amber50 = 0xfffff8e1; EASY_CONSTEXPR color_t Amber50 = 0xfffff8e1;
const color_t Amber100 = 0xffffecb3; EASY_CONSTEXPR color_t Amber100 = 0xffffecb3;
const color_t Amber200 = 0xffffe082; EASY_CONSTEXPR color_t Amber200 = 0xffffe082;
const color_t Amber300 = 0xffffd54f; EASY_CONSTEXPR color_t Amber300 = 0xffffd54f;
const color_t Amber400 = 0xffffca28; EASY_CONSTEXPR color_t Amber400 = 0xffffca28;
const color_t Amber500 = 0xffffc107; EASY_CONSTEXPR color_t Amber500 = 0xffffc107;
const color_t Amber600 = 0xffffb300; EASY_CONSTEXPR color_t Amber600 = 0xffffb300;
const color_t Amber700 = 0xffffa000; EASY_CONSTEXPR color_t Amber700 = 0xffffa000;
const color_t Amber800 = 0xffff8f00; EASY_CONSTEXPR color_t Amber800 = 0xffff8f00;
const color_t Amber900 = 0xffff6f00; EASY_CONSTEXPR color_t Amber900 = 0xffff6f00;
const color_t AmberA100 = 0xffffe57f; EASY_CONSTEXPR color_t AmberA100 = 0xffffe57f;
const color_t AmberA200 = 0xffffd740; EASY_CONSTEXPR color_t AmberA200 = 0xffffd740;
const color_t AmberA400 = 0xffffc400; EASY_CONSTEXPR color_t AmberA400 = 0xffffc400;
const color_t AmberA700 = 0xffffab00; EASY_CONSTEXPR color_t AmberA700 = 0xffffab00;
const color_t Orange50 = 0xfffff3e0; EASY_CONSTEXPR color_t Orange50 = 0xfffff3e0;
const color_t Orange100 = 0xffffe0b2; EASY_CONSTEXPR color_t Orange100 = 0xffffe0b2;
const color_t Orange200 = 0xffffcc80; EASY_CONSTEXPR color_t Orange200 = 0xffffcc80;
const color_t Orange300 = 0xffffb74d; EASY_CONSTEXPR color_t Orange300 = 0xffffb74d;
const color_t Orange400 = 0xffffa726; EASY_CONSTEXPR color_t Orange400 = 0xffffa726;
const color_t Orange500 = 0xffff9800; EASY_CONSTEXPR color_t Orange500 = 0xffff9800;
const color_t Orange600 = 0xfffb8c00; EASY_CONSTEXPR color_t Orange600 = 0xfffb8c00;
const color_t Orange700 = 0xfff57c00; EASY_CONSTEXPR color_t Orange700 = 0xfff57c00;
const color_t Orange800 = 0xffef6c00; EASY_CONSTEXPR color_t Orange800 = 0xffef6c00;
const color_t Orange900 = 0xffe65100; EASY_CONSTEXPR color_t Orange900 = 0xffe65100;
const color_t OrangeA100 = 0xffffd180; EASY_CONSTEXPR color_t OrangeA100 = 0xffffd180;
const color_t OrangeA200 = 0xffffab40; EASY_CONSTEXPR color_t OrangeA200 = 0xffffab40;
const color_t OrangeA400 = 0xffff9100; EASY_CONSTEXPR color_t OrangeA400 = 0xffff9100;
const color_t OrangeA700 = 0xffff6d00; EASY_CONSTEXPR color_t OrangeA700 = 0xffff6d00;
const color_t DeepOrange50 = 0xfffbe9e7; EASY_CONSTEXPR color_t DeepOrange50 = 0xfffbe9e7;
const color_t DeepOrange100 = 0xffffccbc; EASY_CONSTEXPR color_t DeepOrange100 = 0xffffccbc;
const color_t DeepOrange200 = 0xffffab91; EASY_CONSTEXPR color_t DeepOrange200 = 0xffffab91;
const color_t DeepOrange300 = 0xffff8a65; EASY_CONSTEXPR color_t DeepOrange300 = 0xffff8a65;
const color_t DeepOrange400 = 0xffff7043; EASY_CONSTEXPR color_t DeepOrange400 = 0xffff7043;
const color_t DeepOrange500 = 0xffff5722; EASY_CONSTEXPR color_t DeepOrange500 = 0xffff5722;
const color_t DeepOrange600 = 0xfff4511e; EASY_CONSTEXPR color_t DeepOrange600 = 0xfff4511e;
const color_t DeepOrange700 = 0xffe64a19; EASY_CONSTEXPR color_t DeepOrange700 = 0xffe64a19;
const color_t DeepOrange800 = 0xffd84315; EASY_CONSTEXPR color_t DeepOrange800 = 0xffd84315;
const color_t DeepOrange900 = 0xffbf360c; EASY_CONSTEXPR color_t DeepOrange900 = 0xffbf360c;
const color_t DeepOrangeA100 = 0xffff9e80; EASY_CONSTEXPR color_t DeepOrangeA100 = 0xffff9e80;
const color_t DeepOrangeA200 = 0xffff6e40; EASY_CONSTEXPR color_t DeepOrangeA200 = 0xffff6e40;
const color_t DeepOrangeA400 = 0xffff3d00; EASY_CONSTEXPR color_t DeepOrangeA400 = 0xffff3d00;
const color_t DeepOrangeA700 = 0xffdd2c00; EASY_CONSTEXPR color_t DeepOrangeA700 = 0xffdd2c00;
const color_t Brown50 = 0xffefebe9; EASY_CONSTEXPR color_t Brown50 = 0xffefebe9;
const color_t Brown100 = 0xffd7ccc8; EASY_CONSTEXPR color_t Brown100 = 0xffd7ccc8;
const color_t Brown200 = 0xffbcaaa4; EASY_CONSTEXPR color_t Brown200 = 0xffbcaaa4;
const color_t Brown300 = 0xffa1887f; EASY_CONSTEXPR color_t Brown300 = 0xffa1887f;
const color_t Brown400 = 0xff8d6e63; EASY_CONSTEXPR color_t Brown400 = 0xff8d6e63;
const color_t Brown500 = 0xff795548; EASY_CONSTEXPR color_t Brown500 = 0xff795548;
const color_t Brown600 = 0xff6d4c41; EASY_CONSTEXPR color_t Brown600 = 0xff6d4c41;
const color_t Brown700 = 0xff5d4037; EASY_CONSTEXPR color_t Brown700 = 0xff5d4037;
const color_t Brown800 = 0xff4e342e; EASY_CONSTEXPR color_t Brown800 = 0xff4e342e;
const color_t Brown900 = 0xff3e2723; EASY_CONSTEXPR color_t Brown900 = 0xff3e2723;
const color_t Grey50 = 0xfffafafa; EASY_CONSTEXPR color_t Grey50 = 0xfffafafa;
const color_t Grey100 = 0xfff5f5f5; EASY_CONSTEXPR color_t Grey100 = 0xfff5f5f5;
const color_t Grey200 = 0xffeeeeee; EASY_CONSTEXPR color_t Grey200 = 0xffeeeeee;
const color_t Grey300 = 0xffe0e0e0; EASY_CONSTEXPR color_t Grey300 = 0xffe0e0e0;
const color_t Grey400 = 0xffbdbdbd; EASY_CONSTEXPR color_t Grey400 = 0xffbdbdbd;
const color_t Grey500 = 0xff9e9e9e; EASY_CONSTEXPR color_t Grey500 = 0xff9e9e9e;
const color_t Grey600 = 0xff757575; EASY_CONSTEXPR color_t Grey600 = 0xff757575;
const color_t Grey700 = 0xff616161; EASY_CONSTEXPR color_t Grey700 = 0xff616161;
const color_t Grey800 = 0xff424242; EASY_CONSTEXPR color_t Grey800 = 0xff424242;
const color_t Grey900 = 0xff212121; EASY_CONSTEXPR color_t Grey900 = 0xff212121;
const color_t BlueGrey50 = 0xffeceff1; EASY_CONSTEXPR color_t BlueGrey50 = 0xffeceff1;
const color_t BlueGrey100 = 0xffcfd8dc; EASY_CONSTEXPR color_t BlueGrey100 = 0xffcfd8dc;
const color_t BlueGrey200 = 0xffb0bec5; EASY_CONSTEXPR color_t BlueGrey200 = 0xffb0bec5;
const color_t BlueGrey300 = 0xff90a4ae; EASY_CONSTEXPR color_t BlueGrey300 = 0xff90a4ae;
const color_t BlueGrey400 = 0xff78909c; EASY_CONSTEXPR color_t BlueGrey400 = 0xff78909c;
const color_t BlueGrey500 = 0xff607d8b; EASY_CONSTEXPR color_t BlueGrey500 = 0xff607d8b;
const color_t BlueGrey600 = 0xff546e7a; EASY_CONSTEXPR color_t BlueGrey600 = 0xff546e7a;
const color_t BlueGrey700 = 0xff455a64; EASY_CONSTEXPR color_t BlueGrey700 = 0xff455a64;
const color_t BlueGrey800 = 0xff37474f; EASY_CONSTEXPR color_t BlueGrey800 = 0xff37474f;
const color_t BlueGrey900 = 0xff263238; EASY_CONSTEXPR color_t BlueGrey900 = 0xff263238;
const color_t Black = 0xff000000; EASY_CONSTEXPR color_t Black = 0xff000000;
const color_t White = 0xffffffff; EASY_CONSTEXPR color_t White = 0xffffffff;
const color_t Null = 0x00000000; EASY_CONSTEXPR color_t Null = 0x00000000;
const color_t Red = Red500; EASY_CONSTEXPR color_t Red = Red500;
const color_t DarkRed = Red900; EASY_CONSTEXPR color_t DarkRed = Red900;
const color_t Coral = Red200; EASY_CONSTEXPR color_t Coral = Red200;
const color_t RichRed = 0xffff0000; EASY_CONSTEXPR color_t RichRed = 0xffff0000;
const color_t Pink = Pink500; EASY_CONSTEXPR color_t Pink = Pink500;
const color_t Rose = PinkA100; EASY_CONSTEXPR color_t Rose = PinkA100;
const color_t Purple = Purple500; EASY_CONSTEXPR color_t Purple = Purple500;
const color_t Magenta = PurpleA200; EASY_CONSTEXPR color_t Magenta = PurpleA200;
const color_t DarkMagenta = PurpleA700; EASY_CONSTEXPR color_t DarkMagenta = PurpleA700;
const color_t DeepPurple = DeepPurple500; EASY_CONSTEXPR color_t DeepPurple = DeepPurple500;
const color_t Indigo = Indigo500; EASY_CONSTEXPR color_t Indigo = Indigo500;
const color_t Blue = Blue500; EASY_CONSTEXPR color_t Blue = Blue500;
const color_t DarkBlue = Blue900; EASY_CONSTEXPR color_t DarkBlue = Blue900;
const color_t RichBlue = 0xff0000ff; EASY_CONSTEXPR color_t RichBlue = 0xff0000ff;
const color_t LightBlue = LightBlue500; EASY_CONSTEXPR color_t LightBlue = LightBlue500;
const color_t SkyBlue = LightBlueA100; EASY_CONSTEXPR color_t SkyBlue = LightBlueA100;
const color_t Navy = LightBlue800; EASY_CONSTEXPR color_t Navy = LightBlue800;
const color_t Cyan = Cyan500; EASY_CONSTEXPR color_t Cyan = Cyan500;
const color_t DarkCyan = Cyan900; EASY_CONSTEXPR color_t DarkCyan = Cyan900;
const color_t Teal = Teal500; EASY_CONSTEXPR color_t Teal = Teal500;
const color_t DarkTeal = Teal900; EASY_CONSTEXPR color_t DarkTeal = Teal900;
const color_t Green = Green500; EASY_CONSTEXPR color_t Green = Green500;
const color_t DarkGreen = Green900; EASY_CONSTEXPR color_t DarkGreen = Green900;
const color_t RichGreen = 0xff00ff00; EASY_CONSTEXPR color_t RichGreen = 0xff00ff00;
const color_t LightGreen = LightGreen500; EASY_CONSTEXPR color_t LightGreen = LightGreen500;
const color_t Mint = LightGreen900; EASY_CONSTEXPR color_t Mint = LightGreen900;
const color_t Lime = Lime500; EASY_CONSTEXPR color_t Lime = Lime500;
const color_t Olive = Lime900; EASY_CONSTEXPR color_t Olive = Lime900;
const color_t Yellow = Yellow500; EASY_CONSTEXPR color_t Yellow = Yellow500;
const color_t RichYellow = YellowA200; EASY_CONSTEXPR color_t RichYellow = YellowA200;
const color_t Amber = Amber500; EASY_CONSTEXPR color_t Amber = Amber500;
const color_t Gold = Amber300; EASY_CONSTEXPR color_t Gold = Amber300;
const color_t PaleGold = AmberA100; EASY_CONSTEXPR color_t PaleGold = AmberA100;
const color_t Orange = Orange500; EASY_CONSTEXPR color_t Orange = Orange500;
const color_t Skin = Orange100; EASY_CONSTEXPR color_t Skin = Orange100;
const color_t DeepOrange = DeepOrange500; EASY_CONSTEXPR color_t DeepOrange = DeepOrange500;
const color_t Brick = DeepOrange900; EASY_CONSTEXPR color_t Brick = DeepOrange900;
const color_t Brown = Brown500; EASY_CONSTEXPR color_t Brown = Brown500;
const color_t DarkBrown = Brown900; EASY_CONSTEXPR color_t DarkBrown = Brown900;
const color_t CreamWhite = Orange50; EASY_CONSTEXPR color_t CreamWhite = Orange50;
const color_t Wheat = Amber100; EASY_CONSTEXPR color_t Wheat = Amber100;
const color_t Grey = Grey500; EASY_CONSTEXPR color_t Grey = Grey500;
const color_t Dark = Grey900; EASY_CONSTEXPR color_t Dark = Grey900;
const color_t Silver = Grey300; EASY_CONSTEXPR color_t Silver = Grey300;
const color_t BlueGrey = BlueGrey500; EASY_CONSTEXPR color_t BlueGrey = BlueGrey500;
const color_t Default = Wheat; EASY_CONSTEXPR color_t Default = Wheat;
#else #else
const color_t Default = 0xffffecb3; EASY_CONSTEXPR color_t Default = 0xffffecb3;
#endif // #if !defined(EASY_OPTION_BUILTIN_COLORS) || EASY_OPTION_BUILTIN_COLORS == 0 #endif // #if !defined(EASY_OPTION_BUILTIN_COLORS) || EASY_OPTION_BUILTIN_COLORS == 0
} // END of namespace colors. } // END of namespace colors.

View File

@ -16,6 +16,7 @@ if (Qt5Widgets_FOUND)
blocks_graphics_view.cpp blocks_graphics_view.cpp
blocks_tree_widget.h blocks_tree_widget.h
blocks_tree_widget.cpp blocks_tree_widget.cpp
common_types.h
descriptors_tree_widget.h descriptors_tree_widget.h
descriptors_tree_widget.cpp descriptors_tree_widget.cpp
easy_chronometer_item.h easy_chronometer_item.h

View File

@ -90,9 +90,10 @@ const qreal BASE_SCALE = pow(::profiler_gui::SCALING_COEFFICIENT_INV, 25); // ~0
EASY_CONSTEXPR uint16_t TIMELINE_ROW_SIZE = 20; EASY_CONSTEXPR uint16_t TIMELINE_ROW_SIZE = 20;
EASY_CONSTEXPR QRgb BACKGROUND_1 = ::profiler::colors::Grey300; EASY_CONSTEXPR QRgb BACKGROUND_1 = 0xffe4e4ec;
EASY_CONSTEXPR QRgb BACKGROUND_2 = ::profiler::colors::White; EASY_CONSTEXPR QRgb BACKGROUND_2 = ::profiler::colors::White;
EASY_CONSTEXPR QRgb TIMELINE_BACKGROUND = 0x20000000 | (::profiler::colors::Grey800 & 0x00ffffff);// 0x20303030; EASY_CONSTEXPR QRgb TIMELINE_BACKGROUND = 0x20000000 | (::profiler::colors::Grey800 & 0x00ffffff);// 0x20303030;
EASY_CONSTEXPR QRgb TIMELINE_BORDER = 0xffa8a0a0;
EASY_CONSTEXPR int IDLE_TIMER_INTERVAL = 200; // 5Hz EASY_CONSTEXPR int IDLE_TIMER_INTERVAL = 200; // 5Hz
EASY_CONSTEXPR uint64_t IDLE_TIME = 400; EASY_CONSTEXPR uint64_t IDLE_TIME = 400;
@ -148,6 +149,7 @@ void EasyBackgroundItem::paint(QPainter* _painter, const QStyleOptionGraphicsIte
const auto left = offset * currentScale; const auto left = offset * currentScale;
const auto h = visibleSceneRect.height(); const auto h = visibleSceneRect.height();
const auto visibleBottom = h - 1; const auto visibleBottom = h - 1;
const auto borderColor = QColor::fromRgb(TIMELINE_BORDER);
QRectF rect; QRectF rect;
@ -162,7 +164,7 @@ void EasyBackgroundItem::paint(QPainter* _painter, const QStyleOptionGraphicsIte
int i = -1; int i = -1;
// Draw background // Draw background
_painter->setPen(Qt::NoPen); _painter->setPen(::profiler_gui::SYSTEM_BORDER_COLOR);
for (auto item : items) for (auto item : items)
{ {
++i; ++i;
@ -202,11 +204,11 @@ void EasyBackgroundItem::paint(QPainter* _painter, const QStyleOptionGraphicsIte
const auto nsteps = (1 + odd) * 2 + static_cast<int>(visibleSceneRect.width() / step); const auto nsteps = (1 + odd) * 2 + static_cast<int>(visibleSceneRect.width() / step);
first -= odd; first -= odd;
QPen pen(Qt::darkGray); QPen pen(borderColor);
pen.setWidth(2); pen.setWidth(2);
_painter->setPen(pen); _painter->setPen(pen);
_painter->drawLine(QPointF(0, h), QPointF(visibleSceneRect.width(), h)); _painter->drawLine(QPointF(0, h), QPointF(visibleSceneRect.width(), h));
_painter->setPen(Qt::darkGray); _painter->setPen(borderColor);
QLineF marks[20]; QLineF marks[20];
qreal first_x = first * sceneStep; qreal first_x = first * sceneStep;
@ -238,9 +240,9 @@ void EasyBackgroundItem::paint(QPainter* _painter, const QStyleOptionGraphicsIte
if (next <= 0) if (next <= 0)
{ {
next = n; next = n;
_painter->setPen(Qt::black); _painter->setPen(::profiler_gui::TEXT_COLOR);
_painter->drawText(QPointF(current + 1, h + 17), QString::number(static_cast<quint64>(0.5 + (current + left) * factor / currentScale))); _painter->drawText(QPointF(current + 1, h + 17), QString::number(static_cast<quint64>(0.5 + (current + left) * factor / currentScale)));
_painter->setPen(Qt::darkGray); _painter->setPen(borderColor);
} }
// TEST // TEST
@ -2061,7 +2063,7 @@ void EasyThreadNameItem::paint(QPainter* _painter, const QStyleOptionGraphicsIte
const auto h = visibleSceneRect.height() + TIMELINE_ROW_SIZE - 2; const auto h = visibleSceneRect.height() + TIMELINE_ROW_SIZE - 2;
const auto w = parentView->width();//parentView->sceneRect().width(); const auto w = parentView->width();//parentView->sceneRect().width();
static const uint16_t OVERLAP = ::profiler_gui::THREADS_ROW_SPACING >> 1; EASY_STATIC_CONSTEXPR uint16_t OVERLAP = ::profiler_gui::THREADS_ROW_SPACING >> 1;
static const QBrush brushes[2] = {QColor::fromRgb(BACKGROUND_1), QColor::fromRgb(BACKGROUND_2)}; static const QBrush brushes[2] = {QColor::fromRgb(BACKGROUND_1), QColor::fromRgb(BACKGROUND_2)};
int i = -1; int i = -1;
@ -2101,11 +2103,11 @@ void EasyThreadNameItem::paint(QPainter* _painter, const QStyleOptionGraphicsIte
rect.setRect(0, top, w, hgt); rect.setRect(0, top, w, hgt);
_painter->setPen(Qt::NoPen); _painter->setPen(::profiler_gui::SYSTEM_BORDER_COLOR);
_painter->drawRect(rect); _painter->drawRect(rect);
rect.translate(-5, 0); rect.translate(-5, 0);
_painter->setPen(QColor::fromRgb(::profiler::colors::Dark)); _painter->setPen(::profiler_gui::TEXT_COLOR);
_painter->drawText(rect, Qt::AlignRight | Qt::AlignVCenter, item->threadName()); _painter->drawText(rect, Qt::AlignRight | Qt::AlignVCenter, item->threadName());
} }
@ -2116,12 +2118,12 @@ void EasyThreadNameItem::paint(QPainter* _painter, const QStyleOptionGraphicsIte
rect.translate(5, rect.height()); rect.translate(5, rect.height());
rect.setHeight(h - rect_bottom); rect.setHeight(h - rect_bottom);
_painter->setBrush(brushes[i & 1]); _painter->setBrush(brushes[i & 1]);
_painter->setPen(Qt::NoPen); _painter->setPen(::profiler_gui::SYSTEM_BORDER_COLOR);
_painter->drawRect(rect); _painter->drawRect(rect);
} }
// Draw separator between thread names area and information area // Draw separator between thread names area and information area
_painter->setPen(Qt::darkGray); _painter->setPen(::profiler_gui::SYSTEM_BORDER_COLOR);
_painter->drawLine(QLineF(0, h, w, h)); _painter->drawLine(QLineF(0, h, w, h));
_painter->drawLine(QLineF(0, h + 2, w, h + 2)); _painter->drawLine(QLineF(0, h + 2, w, h + 2));

View File

@ -63,6 +63,7 @@
#include <QMenu> #include <QMenu>
#include <QAction> #include <QAction>
#include <QActionGroup>
#include <QHeaderView> #include <QHeaderView>
#include <QContextMenuEvent> #include <QContextMenuEvent>
#include <QSignalBlocker> #include <QSignalBlocker>
@ -153,6 +154,7 @@ EasyTreeWidget::EasyTreeWidget(QWidget* _parent)
setAnimated(true); setAnimated(true);
setSortingEnabled(false); setSortingEnabled(false);
setColumnCount(COL_COLUMNS_NUMBER); setColumnCount(COL_COLUMNS_NUMBER);
setSelectionBehavior(QAbstractItemView::SelectRows);
auto header_item = new QTreeWidgetItem(); auto header_item = new QTreeWidgetItem();
auto f = header()->font(); auto f = header()->font();
@ -612,19 +614,25 @@ void EasyTreeWidget::contextMenuEvent(QContextMenuEvent* _event)
menu.addSeparator(); menu.addSeparator();
} }
action = menu.addAction("Hierarchy mode"); auto actionGroup = new QActionGroup(&menu);
action->setToolTip("Display full blocks hierarchy"); actionGroup->setExclusive(true);
action->setCheckable(true);
action->setChecked(m_mode == EasyTreeMode_Full);
action->setData((quint32)EasyTreeMode_Full);
connect(action, &QAction::triggered, this, &This::onModeChange);
action = menu.addAction("Plain mode"); auto actionHierarchy = new QAction("Hierarchy mode", actionGroup);
action->setToolTip("Display plain list of blocks per frame.\nSome columns are disabled with this mode."); actionHierarchy->setCheckable(true);
action->setCheckable(true); actionHierarchy->setChecked(m_mode == EasyTreeMode_Full);
action->setChecked(m_mode == EasyTreeMode_Plain); actionHierarchy->setToolTip("Display full blocks hierarchy");
action->setData((quint32)EasyTreeMode_Plain); actionHierarchy->setData((quint32)EasyTreeMode_Full);
connect(action, &QAction::triggered, this, &This::onModeChange); menu.addAction(actionHierarchy);
auto actionPlain = new QAction("Plain mode", actionGroup);
actionPlain->setCheckable(true);
actionPlain->setChecked(m_mode == EasyTreeMode_Plain);
actionPlain->setToolTip("Display plain list of blocks per frame.\nSome columns are disabled with this mode.");
actionPlain->setData((quint32)EasyTreeMode_Plain);
menu.addAction(actionPlain);
connect(actionHierarchy, &QAction::triggered, this, &This::onModeChange);
connect(actionPlain, &QAction::triggered, this, &This::onModeChange);
menu.addSeparator(); menu.addSeparator();
@ -904,11 +912,7 @@ void EasyTreeWidget::onItemCollapse(QTreeWidgetItem* _item)
void EasyTreeWidget::onCurrentItemChange(QTreeWidgetItem* _item, QTreeWidgetItem* _previous) void EasyTreeWidget::onCurrentItemChange(QTreeWidgetItem* _item, QTreeWidgetItem* _previous)
{ {
if (_previous != nullptr) if (_previous != nullptr)
{ static_cast<EasyTreeWidgetItem*>(_previous)->setBold(false);
auto f = font();
for (int i = 0; i < COL_COLUMNS_NUMBER; ++i)
_previous->setFont(i, f);
}
if (_item == nullptr) if (_item == nullptr)
{ {
@ -917,12 +921,10 @@ void EasyTreeWidget::onCurrentItemChange(QTreeWidgetItem* _item, QTreeWidgetItem
} }
else else
{ {
auto f = font(); auto item = static_cast<EasyTreeWidgetItem*>(_item);
f.setBold(true); item->setBold(true);
for (int i = 0; i < COL_COLUMNS_NUMBER; ++i)
_item->setFont(i, f);
EASY_GLOBALS.selected_block = static_cast<EasyTreeWidgetItem*>(_item)->block_index(); EASY_GLOBALS.selected_block = item->block_index();
if (EASY_GLOBALS.selected_block < EASY_GLOBALS.gui_blocks.size()) if (EASY_GLOBALS.selected_block < EASY_GLOBALS.gui_blocks.size())
EASY_GLOBALS.selected_block_id = easyBlock(EASY_GLOBALS.selected_block).tree.node->id(); EASY_GLOBALS.selected_block_id = easyBlock(EASY_GLOBALS.selected_block).tree.node->id();
else else
@ -997,13 +999,13 @@ void EasyTreeWidget::onSelectedBlockChange(uint32_t _block_index)
#endif #endif
} }
auto previous = static_cast<EasyTreeWidgetItem*>(currentItem());
if (previous != nullptr)
previous->setBold(false);
if (item != nullptr) if (item != nullptr)
{ {
//const QSignalBlocker b(this); //const QSignalBlocker b(this);
auto previous = currentItem();
auto f = font();
if (previous != nullptr) for (int i = 0; i < COL_COLUMNS_NUMBER; ++i)
previous->setFont(i, f);
if (EASY_GLOBALS.bind_scene_and_tree_expand_status) if (EASY_GLOBALS.bind_scene_and_tree_expand_status)
{ {
@ -1028,20 +1030,10 @@ void EasyTreeWidget::onSelectedBlockChange(uint32_t _block_index)
connect(this, &Parent::itemExpanded, this, &This::onItemExpand); connect(this, &Parent::itemExpanded, this, &This::onItemExpand);
} }
f.setBold(true); item->setBold(true);
for (int i = 0; i < COL_COLUMNS_NUMBER; ++i)
item->setFont(i, f);
} }
else else
{ {
auto previous = currentItem();
if (previous != nullptr)
{
auto f = font();
for (int i = 0; i < COL_COLUMNS_NUMBER; ++i)
previous->setFont(i, f);
}
setCurrentItem(item); setCurrentItem(item);
} }

View File

@ -478,6 +478,38 @@ inline QString valueString(const ::profiler::ArbitraryValue& _serializedValue)
} // END of namespace profiler_gui. } // END of namespace profiler_gui.
template <typename ... Args>
struct Overload
{
template <typename TClass, typename TReturn>
static EASY_CONSTEXPR_FCN auto of(TReturn (TClass::*method)(Args...)) -> decltype(method)
{
return method;
}
template <typename TReturn>
static EASY_CONSTEXPR_FCN auto of(TReturn (*func)(Args...)) -> decltype(func)
{
return func;
}
};
template <>
struct Overload<void>
{
template <typename TClass, typename TReturn>
static EASY_CONSTEXPR_FCN auto of(TReturn (TClass::*method)()) -> decltype(method)
{
return method;
}
template <typename TReturn>
static EASY_CONSTEXPR_FCN auto of(TReturn (*func)()) -> decltype(func)
{
return func;
}
};
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////

View File

@ -15,67 +15,122 @@
* { * {
font-family: "DejaVu Sans"; font-family: "DejaVu Sans";
font-size: 13px; font-size: 13px;
color: #686060; } color: #504040; }
*:disabled { *:disabled {
color: #b8b0b0; } color: #a08888; }
EasyMainWindow, QToolBar, QDialog { EasyMainWindow, QToolBar, QDialog {
background-color: #fffbfb; } background-color: #f8f2f2; }
QToolTip {
border: 1px solid #cccccc; }
/* ****************************************************************************************************************** */ /* ****************************************************************************************************************** */
QLineEdit, QComboBox { QLineEdit, QComboBox, QSpinBox {
height: 24px; height: 24px;
border: 1px solid #cccccc; border: 1px solid #cccccc;
background-color: white; background-color: white;
selection-background-color: rgba(152, 206, 152, 0.4); selection-background-color: rgba(136, 189, 136, 0.4);
selection-color: #686060; } selection-color: #504040; }
QLineEdit:disabled, QComboBox:disabled { QLineEdit:disabled, QComboBox:disabled, QSpinBox:disabled {
background-color: #dddddd; background-color: #f0f0f0;
color: #b8b0b0; color: #a08888;
selection-background-color: rgba(152, 206, 152, 0.4); selection-background-color: rgba(136, 189, 136, 0.4);
selection-color: #b8b0b0; } selection-color: #a08888; }
QLineEdit:focus { QLineEdit:focus {
border: 1px solid #ffbcbc; } border: 1px solid #ffbcbc; }
/* ****************************************************************************************************************** */
QComboBox::drop-down { QComboBox::drop-down {
subcontrol-origin: padding; subcontrol-origin: padding;
subcontrol-position: top right; subcontrol-position: top right;
width: 20px; width: 24px;
border-left: none; border: none;
margin-left: 0; } margin-left: 0; }
QComboBox::down-arrow { QComboBox::down-arrow {
image: url(":/images/combo-arrow"); image: url(":/images/arrow-down");
height: 8px; height: 8px;
width: 8px; } width: 8px; }
QComboBox::down-arrow:hover {
image: url(":/images/arrow-down-hover"); }
QComboBox::down-arrow:disabled { QComboBox::down-arrow:disabled {
image: url(":/images/combo-arrow-disabled"); image: url(":/images/arrow-down-disabled"); }
/* ****************************************************************************************************************** */
QSpinBox::up-button {
subcontrol-origin: padding;
subcontrol-position: top right;
margin-left: 5px;
width: 24px;
border-left: 1px solid #cccccc;
border-bottom: 1px solid #cccccc; }
QSpinBox::down-button {
subcontrol-origin: padding;
subcontrol-position: bottom right;
margin-left: 5px;
width: 24px;
border-left: 1px solid #cccccc; }
QSpinBox::up-button:pressed, QSpinBox::down-button:pressed {
background-color: #f4f4f4; }
QSpinBox::up-arrow {
image: url(":/images/arrow-up");
height: 8px; height: 8px;
width: 8px; } width: 8px; }
QSpinBox::up-arrow:hover {
image: url(":/images/arrow-up-hover"); }
QSpinBox::up-arrow:disabled {
image: url(":/images/arrow-up-disabled"); }
QSpinBox::down-arrow {
image: url(":/images/arrow-down");
height: 8px;
width: 8px; }
QSpinBox::down-arrow:hover {
image: url(":/images/arrow-down-hover"); }
QSpinBox::down-arrow:disabled {
image: url(":/images/arrow-down-disabled"); }
/* ****************************************************************************************************************** */
QPushButton { QPushButton {
height: 24px; height: 24px;
border: 1px solid #cccccc; border: 1px solid #cccccc;
background-color: white; background-color: white;
padding: 0 5px 0 5px; } padding: 0 5px 0 5px; }
QPushButton:disabled {
background-color: #f0f0f0;
color: #a08888; }
QPushButton:hover { QPushButton:hover {
border: 1px solid #ffbcbc; border: 1px solid #ffbcbc;
color: #d77d7d; }
QPushButton:pressed {
border: 1px solid #d77d7d;
color: #922c2c; } color: #922c2c; }
QComboBox QListView { QPushButton:pressed {
border: 1px solid #922c2c;
color: #370400; }
/* ****************************************************************************************************************** */
QListView {
background-color: white; background-color: white;
border: 1px solid #cccccc; border: 1px solid #cccccc;
selection-background-color: rgba(152, 206, 152, 0.4); selection-background-color: rgba(136, 189, 136, 0.4);
selection-color: #686060; } selection-color: #504040; }
QListView::item, QListView::item, QTableView::item, QTreeView::item {
height: 24px; }
/* ****************************************************************************************************************** */ /* ****************************************************************************************************************** */
QMenu { QMenu {
@ -85,18 +140,18 @@ QMenu {
padding-bottom: 4px; } padding-bottom: 4px; }
QMenu::item { QMenu::item {
height: 22px; height: 24px;
padding: 0 16px 0 25px; padding: 0 16px 0 25px;
border: 1px solid transparent; border: 1px solid transparent;
/* reserve space for selection border */ } /* reserve space for selection border */ }
QMenu::item:selected { QMenu::item:selected {
border: 1px solid rgba(152, 206, 152, 0.4); border: 1px solid rgba(136, 189, 136, 0.4);
background-color: rgba(152, 206, 152, 0.4); } background-color: rgba(136, 189, 136, 0.4); }
QMenu::icon { QMenu::icon {
width: 12px; width: 14px;
height: 12px; height: 14px;
background: none; background: none;
border: 1px inset transparent; border: 1px inset transparent;
padding: 1px; padding: 1px;
@ -218,7 +273,7 @@ QWidget#DiagramPopup, QWidget#ThreadsPopup {
QProgressBar { QProgressBar {
height: 24px; height: 24px;
background-color: white; background-color: white;
border: 1px solid #64BC64; border: 1px solid #cccccc;
color: #0B530B; color: #0B530B;
text-align: center; } text-align: center; }
@ -226,3 +281,48 @@ QProgressBar::chunk {
background-color: #98DE98; background-color: #98DE98;
width: 2px; width: 2px;
margin: 0; } margin: 0; }
/* ****************************************************************************************************************** */
QScrollBar {
background-color: transparent;
border: none;
padding: 0; }
QScrollBar:hover {
background-color: rgba(0, 0, 0, 0.1); }
QScrollBar:horizontal {
margin: 0;
height: 8px; }
QScrollBar:vertical {
margin: 0;
width: 8px; }
QScrollBar::handle {
background-color: rgba(0, 0, 0, 0.4);
border: none;
margin: 0;
padding: 0; }
QScrollBar::handle:pressed {
background-color: rgba(0, 0, 0, 0.6); }
QScrollBar::handle:vertical {
min-height: 20px;
margin-left: 4px; }
QScrollBar::handle:vertical:hover, QScrollBar::handle:vertical:pressed {
margin-left: 0; }
QScrollBar::handle:horizontal {
min-width: 20px;
max-width: 100px;
margin-top: 4px; }
QScrollBar::handle:horizontal:hover, QScrollBar::handle:horizontal:pressed {
margin-top: 0; }
QScrollBar::add-line, QScrollBar::sub-line {
background: none;
border: none; }

View File

@ -15,15 +15,19 @@
/* ****************************************************************************************************************** */ /* ****************************************************************************************************************** */
/* Constants */ /* Constants */
$TextColor: #686060; $TextColor: #504040;
$DisabledTextColor: #b8b0b0; $DisabledTextColor: #a08888;
$BorderColor: #cccccc; $BorderColor: #cccccc;
$MainColor: #f44336; $MainColor: #f44336;
$HoveredMenuRowColor: rgb_a(#98CE98, 0.4); $HoveredMenuRowColor: rgb_a(#88BD88, 0.4);
$BackgroundColor: white; $BackgroundColor: white;
$DisabledBackgroundColor: #dddddd; $DisabledBackgroundColor: #f0f0f0;
$ButtonHoverColor: #d77d7d; $ButtonHoverColor: #922c2c;//#d77d7d;
$ButtonPressedColor: #922c2c; $ButtonPressedColor: #370400;//#922c2c;
$FocusBorderColor: #ffbcbc;
$DefaultHeight: 24px;
$ComboBoxArrowSize: 8px;
$SpinBoxArrowSize: 8px;
/* ****************************************************************************************************************** */ /* ****************************************************************************************************************** */
/* StyleSheet */ /* StyleSheet */
@ -39,49 +43,89 @@ $ButtonPressedColor: #922c2c;
} }
EasyMainWindow, QToolBar, QDialog { EasyMainWindow, QToolBar, QDialog {
background-color: #fffbfb; background-color: #f8f2f2;
} }
QToolTip {
border: 1px solid $BorderColor;
}
/* ****************************************************************************************************************** */ /* ****************************************************************************************************************** */
QLineEdit, QComboBox { QLineEdit, QComboBox, QSpinBox {
height: 24px; height: $DefaultHeight;
border: 1px solid $BorderColor; border: 1px solid $BorderColor;
background-color: $BackgroundColor; background-color: $BackgroundColor;
selection-background-color: $HoveredMenuRowColor; selection-background-color: $HoveredMenuRowColor;
selection-color: $TextColor; selection-color: $TextColor;
} }
QLineEdit:disabled, QComboBox:disabled { QLineEdit:disabled, QComboBox:disabled, QSpinBox:disabled {
background-color: $DisabledBackgroundColor; background-color: $DisabledBackgroundColor;
color: $DisabledTextColor; color: $DisabledTextColor;
selection-background-color: $HoveredMenuRowColor; selection-background-color: $HoveredMenuRowColor;
selection-color: $DisabledTextColor; selection-color: $DisabledTextColor;
} }
QLineEdit:focus { border: 1px solid #ffbcbc; } QLineEdit:focus { border: 1px solid $FocusBorderColor; }
/* ****************************************************************************************************************** */
QComboBox::drop-down { QComboBox::drop-down {
subcontrol-origin: padding; subcontrol-origin: padding;
subcontrol-position: top right; subcontrol-position: top right;
width: 20px; width: $DefaultHeight;
border-left: none; border: none;
margin-left: 0; margin-left: 0;
} }
QComboBox::down-arrow { image: url(":/images/combo-arrow"); height: 8px; width: 8px; } QComboBox::down-arrow { image: url(":/images/arrow-down"); height: $ComboBoxArrowSize; width: $ComboBoxArrowSize; }
QComboBox::down-arrow:disabled { image: url(":/images/combo-arrow-disabled"); height: 8px; width: 8px; } QComboBox::down-arrow:hover { image: url(":/images/arrow-down-hover"); }
QComboBox::down-arrow:disabled { image: url(":/images/arrow-down-disabled"); }
/* ****************************************************************************************************************** */
QSpinBox::up-button {
subcontrol-origin: padding;
subcontrol-position: top right;
margin-left: 5px;
width: $DefaultHeight;
border-left: 1px solid $BorderColor;
border-bottom: 1px solid $BorderColor;
}
QSpinBox::down-button {
subcontrol-origin: padding;
subcontrol-position: bottom right;
margin-left: 5px;
width: $DefaultHeight;
border-left: 1px solid $BorderColor;
}
QSpinBox::up-button:pressed, QSpinBox::down-button:pressed {
background-color: #f4f4f4;
}
QSpinBox::up-arrow { image: url(":/images/arrow-up"); height: $SpinBoxArrowSize; width: $SpinBoxArrowSize; }
QSpinBox::up-arrow:hover { image: url(":/images/arrow-up-hover"); }
QSpinBox::up-arrow:disabled { image: url(":/images/arrow-up-disabled"); }
QSpinBox::down-arrow { image: url(":/images/arrow-down"); height: $SpinBoxArrowSize; width: $SpinBoxArrowSize; }
QSpinBox::down-arrow:hover { image: url(":/images/arrow-down-hover"); }
QSpinBox::down-arrow:disabled { image: url(":/images/arrow-down-disabled"); }
/* ****************************************************************************************************************** */
QPushButton { QPushButton {
height: 24px; height: $DefaultHeight;
border: 1px solid $BorderColor; border: 1px solid $BorderColor;
background-color: $BackgroundColor; background-color: $BackgroundColor;
padding: 0 5px 0 5px; padding: 0 5px 0 5px;
} }
QPushButton:disabled {
background-color: $DisabledBackgroundColor;
color: $DisabledTextColor;
}
QPushButton:hover { QPushButton:hover {
border: 1px solid #ffbcbc; border: 1px solid $FocusBorderColor;
color: $ButtonHoverColor; color: $ButtonHoverColor;
} }
@ -90,13 +134,18 @@ QPushButton:pressed {
color: $ButtonPressedColor; color: $ButtonPressedColor;
} }
QComboBox QListView { /* ****************************************************************************************************************** */
QListView {
background-color: $BackgroundColor; background-color: $BackgroundColor;
border: 1px solid $BorderColor; border: 1px solid $BorderColor;
selection-background-color: $HoveredMenuRowColor; selection-background-color: $HoveredMenuRowColor;
selection-color: $TextColor; selection-color: $TextColor;
} }
QListView::item, QListView::item, QTableView::item, QTreeView::item {
height: $DefaultHeight;
}
/* ****************************************************************************************************************** */ /* ****************************************************************************************************************** */
QMenu { QMenu {
background-color: $BackgroundColor; background-color: $BackgroundColor;
@ -106,7 +155,7 @@ QMenu {
} }
QMenu::item { QMenu::item {
height: 22px; height: $DefaultHeight;
padding: 0 16px 0 25px; padding: 0 16px 0 25px;
border: 1px solid transparent; /* reserve space for selection border */ border: 1px solid transparent; /* reserve space for selection border */
} }
@ -117,8 +166,8 @@ QMenu::item:selected {
} }
QMenu::icon { QMenu::icon {
width: 12px; width: 14px;
height: 12px; height: 14px;
background: none; background: none;
border: 1px inset transparent; border: 1px inset transparent;
padding: 1px; padding: 1px;
@ -251,9 +300,9 @@ QWidget#DiagramPopup, QWidget#ThreadsPopup {
/* ****************************************************************************************************************** */ /* ****************************************************************************************************************** */
QProgressBar { QProgressBar {
height: 24px; height: $DefaultHeight;
background-color: $BackgroundColor; background-color: $BackgroundColor;
border: 1px solid #64BC64; border: 1px solid $BorderColor;//#64BC64;
color: #0B530B; color: #0B530B;
text-align: center; text-align: center;
} }
@ -263,3 +312,46 @@ QProgressBar::chunk {
width: 2px; width: 2px;
margin: 0; margin: 0;
} }
/* ****************************************************************************************************************** */
QScrollBar {
background-color: transparent;
border: none;
padding: 0;
}
QScrollBar:hover {
background-color: rgb_a(#000000, 0.1);
}
QScrollBar:horizontal {
margin: 0;
height: 8px;
}
QScrollBar:vertical {
margin: 0;
width: 8px;
}
QScrollBar::handle {
background-color: rgb_a(#000000, 0.4);
border: none;
margin: 0;
padding: 0;
}
QScrollBar::handle:pressed {
background-color: rgb_a(#000000, 0.6);
}
QScrollBar::handle:vertical { min-height: 20px; margin-left: 4px; }
QScrollBar::handle:vertical:hover, QScrollBar::handle:vertical:pressed { margin-left: 0; }
QScrollBar::handle:horizontal { min-width: 20px; max-width: 100px; margin-top: 4px; }
QScrollBar::handle:horizontal:hover, QScrollBar::handle:horizontal:pressed { margin-top: 0; }
QScrollBar::add-line, QScrollBar::sub-line {
background: none;
border: none;
}

View File

@ -245,7 +245,7 @@ void EasyGraphicsItem::paintChildren(const float _minWidth, const int _narrowSiz
//p.inverseColor = 0xffffffff - p.previousColor; //p.inverseColor = 0xffffffff - p.previousColor;
p.is_light = ::profiler_gui::isLightColor(p.previousColor); p.is_light = ::profiler_gui::isLightColor(p.previousColor);
p.textColor = ::profiler_gui::textColorForFlag(p.is_light); p.textColor = ::profiler_gui::textColorForFlag(p.is_light);
p.brush.setColor(p.previousColor); p.brush.setColor(QColor::fromRgba(p.previousColor));
_painter->setBrush(p.brush); _painter->setBrush(p.brush);
} }
@ -328,7 +328,7 @@ void EasyGraphicsItem::paintChildren(const float _minWidth, const int _narrowSiz
//p.inverseColor = 0xffffffff - p.previousColor; //p.inverseColor = 0xffffffff - p.previousColor;
p.is_light = ::profiler_gui::isLightColor(p.previousColor); p.is_light = ::profiler_gui::isLightColor(p.previousColor);
p.textColor = ::profiler_gui::textColorForFlag(p.is_light); p.textColor = ::profiler_gui::textColorForFlag(p.is_light);
p.brush.setColor(p.previousColor); p.brush.setColor(QColor::fromRgba(p.previousColor));
_painter->setBrush(p.brush); _painter->setBrush(p.brush);
} }
@ -657,7 +657,7 @@ void EasyGraphicsItem::paint(QPainter* _painter, const QStyleOptionGraphicsItem*
//p.inverseColor = 0xffffffff - p.previousColor; //p.inverseColor = 0xffffffff - p.previousColor;
p.is_light = ::profiler_gui::isLightColor(p.previousColor); p.is_light = ::profiler_gui::isLightColor(p.previousColor);
p.textColor = ::profiler_gui::textColorForFlag(p.is_light); p.textColor = ::profiler_gui::textColorForFlag(p.is_light);
p.brush.setColor(p.previousColor); p.brush.setColor(QColor::fromRgba(p.previousColor));
_painter->setBrush(p.brush); _painter->setBrush(p.brush);
} }
@ -739,7 +739,7 @@ void EasyGraphicsItem::paint(QPainter* _painter, const QStyleOptionGraphicsItem*
//p.inverseColor = 0xffffffff - p.previousColor; //p.inverseColor = 0xffffffff - p.previousColor;
p.is_light = ::profiler_gui::isLightColor(p.previousColor); p.is_light = ::profiler_gui::isLightColor(p.previousColor);
p.textColor = ::profiler_gui::textColorForFlag(p.is_light); p.textColor = ::profiler_gui::textColorForFlag(p.is_light);
p.brush.setColor(p.previousColor); p.brush.setColor(QColor::fromRgba(p.previousColor));
_painter->setBrush(p.brush); _painter->setBrush(p.brush);
} }
@ -896,7 +896,7 @@ void EasyGraphicsItem::paint(QPainter* _painter, const QStyleOptionGraphicsItem*
if (!p.selectedItemsWasPainted) if (!p.selectedItemsWasPainted)
{ {
p.brush.setColor(itemDesc.color());// SELECTED_ITEM_COLOR); p.brush.setColor(QColor::fromRgba(itemDesc.color()));// SELECTED_ITEM_COLOR);
_painter->setBrush(p.brush); _painter->setBrush(p.brush);
} }
else else

View File

@ -96,13 +96,13 @@ namespace profiler_gui {
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
const int DEFAULT_TOP = -40; EASY_CONSTEXPR int DEFAULT_TOP = -40;
const int DEFAULT_HEIGHT = 80; EASY_CONSTEXPR int DEFAULT_HEIGHT = 80;
const int INDICATOR_SIZE = 6; EASY_CONSTEXPR int INDICATOR_SIZE = 6;
const int INDICATOR_SIZE_x2 = INDICATOR_SIZE << 1; EASY_CONSTEXPR int INDICATOR_SIZE_x2 = INDICATOR_SIZE << 1;
const int HIST_COLUMN_MIN_HEIGHT = 2; EASY_CONSTEXPR int HIST_COLUMN_MIN_HEIGHT = 2;
const int WORKER_THREAD_CHECK_INTERVAL = 40; EASY_CONSTEXPR int WORKER_THREAD_CHECK_INTERVAL = 40;
const int BOUNDARY_TIMER_INTERVAL = 100; EASY_CONSTEXPR int BOUNDARY_TIMER_INTERVAL = 100;
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
@ -296,7 +296,7 @@ void EasyHistogramItem::paintBusyIndicator(QPainter* _painter, qreal _current_sc
const auto width = m_boundingRect.width() * _current_scale; const auto width = m_boundingRect.width() * _current_scale;
const auto h = _painter->fontMetrics().height(); const auto h = _painter->fontMetrics().height();
_painter->setPen(Qt::black); _painter->setPen(::profiler_gui::TEXT_COLOR);
_painter->drawText(QRectF(0, m_boundingRect.top(), width, m_boundingRect.height() - h), _painter->drawText(QRectF(0, m_boundingRect.top(), width, m_boundingRect.height() - h),
Qt::AlignCenter, "Generating image"); Qt::AlignCenter, "Generating image");
_painter->drawText(QRectF(0, m_boundingRect.top() + h, width, m_boundingRect.height() - h), _painter->drawText(QRectF(0, m_boundingRect.top() + h, width, m_boundingRect.height() - h),
@ -477,11 +477,11 @@ void EasyHistogramItem::paintByPtr(QPainter* _painter)
//bottom_width -= fm.width(m_bottomDurationStr) + 7; //bottom_width -= fm.width(m_bottomDurationStr) + 7;
top_width -= fm.width(m_topDurationStr) + 7; top_width -= fm.width(m_topDurationStr) + 7;
_painter->setPen(m_topDuration < m_maxDuration ? Qt::darkRed : Qt::black); _painter->setPen(m_topDuration < m_maxDuration ? QColor(Qt::darkRed) : ::profiler_gui::TEXT_COLOR);
_painter->drawText(rect, Qt::AlignRight | Qt::AlignTop, m_topDurationStr); _painter->drawText(rect, Qt::AlignRight | Qt::AlignTop, m_topDurationStr);
rect.setRect(0, bottom, width - 3, font_h); rect.setRect(0, bottom, width - 3, font_h);
_painter->setPen(m_bottomDuration > m_minDuration ? Qt::darkRed : Qt::black); _painter->setPen(m_bottomDuration > m_minDuration ? QColor(Qt::darkRed) : ::profiler_gui::TEXT_COLOR);
_painter->drawText(rect, Qt::AlignRight | Qt::AlignTop, m_bottomDurationStr); _painter->drawText(rect, Qt::AlignRight | Qt::AlignTop, m_bottomDurationStr);
} }
@ -507,7 +507,7 @@ void EasyHistogramItem::paintByPtr(QPainter* _painter)
_painter->drawLine(QLineF(0, h, w, h)); _painter->drawLine(QLineF(0, h, w, h));
} }
_painter->setPen(Qt::black); _painter->setPen(::profiler_gui::TEXT_COLOR);
rect.setRect(0, bottom + 2, width, widget->defaultFontHeight()); rect.setRect(0, bottom + 2, width, widget->defaultFontHeight());
const auto eventsSize = m_pProfilerThread->events.size(); const auto eventsSize = m_pProfilerThread->events.size();
_painter->drawText(rect, Qt::AlignHCenter | Qt::TextDontClip, QString("%1 | duration: %2 | profiled: %3 (%4%) | wait: %5 (%6%) | %7 frames | %8 blocks | %9 markers") _painter->drawText(rect, Qt::AlignHCenter | Qt::TextDontClip, QString("%1 | duration: %2 | profiled: %3 (%4%) | wait: %5 (%6%) | %7 frames | %8 blocks | %9 markers")
@ -716,12 +716,11 @@ void EasyHistogramItem::paintById(QPainter* _painter)
//bottom_width -= fm.width(m_bottomDurationStr) + 7; //bottom_width -= fm.width(m_bottomDurationStr) + 7;
top_width -= fm.width(m_topDurationStr) + 7; top_width -= fm.width(m_topDurationStr) + 7;
_painter->setPen(Qt::black); _painter->setPen(m_topDuration < m_maxDuration ? QColor(Qt::darkRed) : ::profiler_gui::TEXT_COLOR);
_painter->setPen(m_topDuration < m_maxDuration ? Qt::darkRed : Qt::black);
_painter->drawText(rect, Qt::AlignRight | Qt::AlignTop, m_topDurationStr); _painter->drawText(rect, Qt::AlignRight | Qt::AlignTop, m_topDurationStr);
rect.setRect(0, bottom, width - 3, font_h); rect.setRect(0, bottom, width - 3, font_h);
_painter->setPen(m_bottomDuration > m_minDuration ? Qt::darkRed : Qt::black); _painter->setPen(m_bottomDuration > m_minDuration ? QColor(Qt::darkRed) : ::profiler_gui::TEXT_COLOR);
_painter->drawText(rect, Qt::AlignRight | Qt::AlignTop, m_bottomDurationStr); _painter->drawText(rect, Qt::AlignRight | Qt::AlignTop, m_bottomDurationStr);
} }
@ -747,7 +746,7 @@ void EasyHistogramItem::paintById(QPainter* _painter)
_painter->drawLine(QLineF(0, h, w, h)); _painter->drawLine(QLineF(0, h, w, h));
} }
_painter->setPen(Qt::black); _painter->setPen(::profiler_gui::TEXT_COLOR);
rect.setRect(0, bottom + 2, width, widget->defaultFontHeight()); rect.setRect(0, bottom + 2, width, widget->defaultFontHeight());
if (!m_selectedBlocks.empty()) if (!m_selectedBlocks.empty())

View File

@ -74,24 +74,26 @@ namespace profiler_gui {
const QColor CHRONOMETER_COLOR = QColor::fromRgba(0x40000000 | (::profiler::colors::RichBlue & 0x00ffffff));// 0x402020c0); const QColor CHRONOMETER_COLOR = QColor::fromRgba(0x40000000 | (::profiler::colors::RichBlue & 0x00ffffff));// 0x402020c0);
const QColor CHRONOMETER_COLOR2 = QColor::fromRgba(0x40000000 | (::profiler::colors::Dark & 0x00ffffff));// 0x40408040); const QColor CHRONOMETER_COLOR2 = QColor::fromRgba(0x40000000 | (::profiler::colors::Dark & 0x00ffffff));// 0x40408040);
const QRgb SELECTED_THREAD_BACKGROUND = 0x00e0e060; const QColor TEXT_COLOR = QColor::fromRgb(0xff504040);
const QRgb SELECTED_THREAD_FOREGROUND = 0x00ffffff - SELECTED_THREAD_BACKGROUND; const QColor SYSTEM_BORDER_COLOR = QColor::fromRgb(0xffcccccc);
EASY_CONSTEXPR QRgb SELECTED_THREAD_BACKGROUND = 0xffe0e060;
EASY_CONSTEXPR QRgb SELECTED_THREAD_FOREGROUND = 0xffffffff - (SELECTED_THREAD_BACKGROUND & 0x00ffffff);
const qreal SCALING_COEFFICIENT = 1.25; EASY_CONSTEXPR qreal SCALING_COEFFICIENT = 1.25;
const qreal SCALING_COEFFICIENT_INV = 1.0 / SCALING_COEFFICIENT; EASY_CONSTEXPR qreal SCALING_COEFFICIENT_INV = 1.0 / SCALING_COEFFICIENT;
const uint32_t V130 = 0x01030000; EASY_CONSTEXPR uint32_t V130 = 0x01030000;
const QSize ICONS_SIZE(28, 28); EASY_CONSTEXPR QSize ICONS_SIZE(28, 28);
const uint16_t GRAPHICS_ROW_SIZE = 18; EASY_CONSTEXPR uint16_t GRAPHICS_ROW_SIZE = 18;
const uint16_t GRAPHICS_ROW_SPACING = 0; EASY_CONSTEXPR uint16_t GRAPHICS_ROW_SPACING = 0;
const uint16_t GRAPHICS_ROW_SIZE_FULL = GRAPHICS_ROW_SIZE + GRAPHICS_ROW_SPACING; EASY_CONSTEXPR uint16_t GRAPHICS_ROW_SIZE_FULL = GRAPHICS_ROW_SIZE + GRAPHICS_ROW_SPACING;
const uint16_t THREADS_ROW_SPACING = 8; EASY_CONSTEXPR uint16_t THREADS_ROW_SPACING = 8;
#ifdef _WIN32 #ifdef _WIN32
const qreal FONT_METRICS_FACTOR = 1.05; EASY_CONSTEXPR qreal FONT_METRICS_FACTOR = 1.05;
#else #else
const qreal FONT_METRICS_FACTOR = 1.; EASY_CONSTEXPR qreal FONT_METRICS_FACTOR = 1.;
#endif #endif
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////

View File

Before

Width:  |  Height:  |  Size: 868 B

After

Width:  |  Height:  |  Size: 868 B

View File

@ -5,7 +5,7 @@
width="451.847px" height="451.847px" viewBox="0 0 451.847 451.847" style="enable-background:new 0 0 451.847 451.847;" width="451.847px" height="451.847px" viewBox="0 0 451.847 451.847" style="enable-background:new 0 0 451.847 451.847;"
xml:space="preserve"> xml:space="preserve">
<g> <g>
<path fill="#686060" d="M225.923,354.706c-8.098,0-16.195-3.092-22.369-9.263L9.27,151.157c-12.359-12.359-12.359-32.397,0-44.751 <path fill="#302020" d="M225.923,354.706c-8.098,0-16.195-3.092-22.369-9.263L9.27,151.157c-12.359-12.359-12.359-32.397,0-44.751
c12.354-12.354,32.388-12.354,44.748,0l171.905,171.915l171.906-171.909c12.359-12.354,32.391-12.354,44.744,0 c12.354-12.354,32.388-12.354,44.748,0l171.905,171.915l171.906-171.909c12.359-12.354,32.391-12.354,44.744,0
c12.365,12.354,12.365,32.392,0,44.751L248.292,345.449C242.115,351.621,234.018,354.706,225.923,354.706z"/> c12.365,12.354,12.365,32.392,0,44.751L248.292,345.449C242.115,351.621,234.018,354.706,225.923,354.706z"/>
</g> </g>

Before

Width:  |  Height:  |  Size: 868 B

After

Width:  |  Height:  |  Size: 868 B

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="451.847px" height="451.847px" viewBox="0 0 451.847 451.847" style="enable-background:new 0 0 451.847 451.847;"
xml:space="preserve">
<g>
<path fill="#504040" d="M225.923,354.706c-8.098,0-16.195-3.092-22.369-9.263L9.27,151.157c-12.359-12.359-12.359-32.397,0-44.751
c12.354-12.354,32.388-12.354,44.748,0l171.905,171.915l171.906-171.909c12.359-12.354,32.391-12.354,44.744,0
c12.365,12.354,12.365,32.392,0,44.751L248.292,345.449C242.115,351.621,234.018,354.706,225.923,354.706z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 868 B

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="451.847px" height="451.847px" viewBox="0 0 451.847 451.847" style="enable-background:new 0 0 451.847 451.847;"
xml:space="preserve">
<g>
<path fill="#504040" d="M97.141,225.92c0-8.095,3.091-16.192,9.259-22.366L300.689,9.27c12.359-12.359,32.397-12.359,44.751,0
c12.354,12.354,12.354,32.388,0,44.748L173.525,225.92l171.903,171.909c12.354,12.354,12.354,32.391,0,44.744
c-12.354,12.365-32.386,12.365-44.745,0l-194.29-194.281C100.226,242.115,97.141,234.018,97.141,225.92z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 861 B

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="451.846px" height="451.847px" viewBox="0 0 451.846 451.847" style="enable-background:new 0 0 451.846 451.847;"
xml:space="preserve">
<g>
<path fill="#504040" d="M345.441,248.292L151.154,442.573c-12.359,12.365-32.397,12.365-44.75,0c-12.354-12.354-12.354-32.391,0-44.744
L278.318,225.92L106.409,54.017c-12.354-12.359-12.354-32.394,0-44.748c12.354-12.359,32.391-12.359,44.75,0l194.287,194.284
c6.177,6.18,9.262,14.271,9.262,22.366C354.708,234.018,351.617,242.115,345.441,248.292z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 871 B

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="451.847px" height="451.846px" viewBox="0 0 451.847 451.846" style="enable-background:new 0 0 451.847 451.846;"
xml:space="preserve">
<g>
<path fill="#cccccc" d="M248.292,106.406l194.281,194.29c12.365,12.359,12.365,32.391,0,44.744c-12.354,12.354-32.391,12.354-44.744,0
L225.923,173.529L54.018,345.44c-12.36,12.354-32.395,12.354-44.748,0c-12.359-12.354-12.359-32.391,0-44.75L203.554,106.4
c6.18-6.174,14.271-9.259,22.369-9.259C234.018,97.141,242.115,100.232,248.292,106.406z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 867 B

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="451.847px" height="451.846px" viewBox="0 0 451.847 451.846" style="enable-background:new 0 0 451.847 451.846;"
xml:space="preserve">
<g>
<path fill="#302020" d="M248.292,106.406l194.281,194.29c12.365,12.359,12.365,32.391,0,44.744c-12.354,12.354-32.391,12.354-44.744,0
L225.923,173.529L54.018,345.44c-12.36,12.354-32.395,12.354-44.748,0c-12.359-12.354-12.359-32.391,0-44.75L203.554,106.4
c6.18-6.174,14.271-9.259,22.369-9.259C234.018,97.141,242.115,100.232,248.292,106.406z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 867 B

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="451.847px" height="451.846px" viewBox="0 0 451.847 451.846" style="enable-background:new 0 0 451.847 451.846;"
xml:space="preserve">
<g>
<path fill="#504040" d="M248.292,106.406l194.281,194.29c12.365,12.359,12.365,32.391,0,44.744c-12.354,12.354-32.391,12.354-44.744,0
L225.923,173.529L54.018,345.44c-12.36,12.354-32.395,12.354-44.748,0c-12.359-12.354-12.359-32.391,0-44.75L203.554,106.4
c6.18-6.174,14.271-9.259,22.369-9.259C234.018,97.141,242.115,100.232,248.292,106.406z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 867 B

View File

@ -32,5 +32,11 @@ maximize-white-hover.svg - Icon made by Freepik from www.flaticon.com
maximize-white-pressed.svg - Icon made by Freepik from www.flaticon.com maximize-white-pressed.svg - Icon made by Freepik from www.flaticon.com
minimize-white.svg - Icon made by Freepik from www.flaticon.com minimize-white.svg - Icon made by Freepik from www.flaticon.com
minimize-white-pressed.svg - Icon made by Freepik from www.flaticon.com minimize-white-pressed.svg - Icon made by Freepik from www.flaticon.com
combo-arrow.svg - Icon made by Freepik from www.flaticon.com arrow-down.svg - Icon made by Freepik from www.flaticon.com
combo-arrow-disabled.svg - Icon made by Freepik from www.flaticon.com arrow-down-hover.svg - Icon made by Freepik from www.flaticon.com
arrow-down-disabled.svg - Icon made by Freepik from www.flaticon.com
arrow-up.svg - Icon made by Freepik from www.flaticon.com
arrow-up-hover.svg - Icon made by Freepik from www.flaticon.com
arrow-up-disabled.svg - Icon made by Freepik from www.flaticon.com
arrow-left.svg - Icon made by Freepik from www.flaticon.com
arrow-right.svg - Icon made by Freepik from www.flaticon.com

View File

@ -629,17 +629,28 @@ EasyMainWindow::EasyMainWindow() : Parent(), m_lastAddress("localhost"), m_lastP
actionGroup->setExclusive(true); actionGroup->setExclusive(true);
auto default_codec_mib = QTextCodec::codecForLocale()->mibEnum(); auto default_codec_mib = QTextCodec::codecForLocale()->mibEnum();
foreach(int mib, QTextCodec::availableMibs())
{ {
auto codec = QTextCodec::codecForMib(mib)->name(); QList<QAction*> actions;
action = new QAction(codec, actionGroup); for (int mib : QTextCodec::availableMibs())
action->setCheckable(true); {
if (mib == default_codec_mib) auto codec = QTextCodec::codecForMib(mib)->name();
action->setChecked(true);
submenu->addAction(action); action = new QAction(codec, actionGroup);
connect(action, &QAction::triggered, this, &This::onEncodingChanged); action->setData(mib);
action->setCheckable(true);
if (mib == default_codec_mib)
action->setChecked(true);
actions.push_back(action);
connect(action, &QAction::triggered, this, &This::onEncodingChanged);
}
qSort(actions.begin(), actions.end(), [](QAction* lhs, QAction* rhs) {
return lhs->text().compare(rhs->text(), Qt::CaseInsensitive) < 0;
});
submenu->addActions(actions);
} }
auto tb_height = toolbar->height() + 4; auto tb_height = toolbar->height() + 4;
@ -1032,10 +1043,14 @@ void EasyMainWindow::onExitClicked(bool)
void EasyMainWindow::onEncodingChanged(bool) void EasyMainWindow::onEncodingChanged(bool)
{ {
auto _sender = qobject_cast<QAction*>(sender()); auto action = qobject_cast<QAction*>(sender());
auto name = _sender->text(); if (action == nullptr)
QTextCodec *codec = QTextCodec::codecForName(name.toStdString().c_str()); return;
QTextCodec::setCodecForLocale(codec);
const int mib = action->data().toInt();
auto codec = QTextCodec::codecForMib(mib);
if (codec != nullptr)
QTextCodec::setCodecForLocale(codec);
} }
void EasyMainWindow::onChronoTextPosChanged(bool) void EasyMainWindow::onChronoTextPosChanged(bool)

View File

@ -41,7 +41,11 @@
<file alias="dock-close-white">icons/close-white.svg</file> <file alias="dock-close-white">icons/close-white.svg</file>
<file alias="dock-close-white-hover">icons/close-white-hover.svg</file> <file alias="dock-close-white-hover">icons/close-white-hover.svg</file>
<file alias="dock-close-white-pressed">icons/close-white-pressed.svg</file> <file alias="dock-close-white-pressed">icons/close-white-pressed.svg</file>
<file alias="combo-arrow">icons/combo-arrow.svg</file> <file alias="arrow-up">icons/arrow-up.svg</file>
<file alias="combo-arrow-disabled">icons/combo-arrow-disabled.svg</file> <file alias="arrow-up-hover">icons/arrow-up-hover.svg</file>
<file alias="arrow-up-disabled">icons/arrow-up-disabled.svg</file>
<file alias="arrow-down">icons/arrow-down.svg</file>
<file alias="arrow-down-hover">icons/arrow-down-hover.svg</file>
<file alias="arrow-down-disabled">icons/arrow-down-disabled.svg</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -58,11 +58,13 @@
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
EASY_CONSTEXPR QRgb TEXT_RGB = 0xff504040;
EasyTreeWidgetItem::EasyTreeWidgetItem(const ::profiler::block_index_t _treeBlock, Parent* _parent) EasyTreeWidgetItem::EasyTreeWidgetItem(const ::profiler::block_index_t _treeBlock, Parent* _parent)
: Parent(_parent) : Parent(_parent)
, m_block(_treeBlock) , m_block(_treeBlock)
, m_customBGColor(0) , m_customBGColor(0)
, m_customTextColor(0) , m_customTextColor(TEXT_RGB)
{ {
} }
@ -211,17 +213,18 @@ void EasyTreeWidgetItem::colorize(bool _colorize)
{ {
for (int i = 0; i < COL_COLUMNS_NUMBER; ++i) for (int i = 0; i < COL_COLUMNS_NUMBER; ++i)
{ {
setBackground(i, QColor::fromRgb(m_customBGColor)); setBackground(i, QColor::fromRgba(m_customBGColor));
setForeground(i, QColor::fromRgb(m_customTextColor)); setForeground(i, QColor::fromRgb(m_customTextColor));
} }
} }
else else
{ {
const QBrush nobrush; const QBrush nobrush;
const QBrush textbrush(::profiler_gui::TEXT_COLOR);
for (int i = 0; i < COL_COLUMNS_NUMBER; ++i) for (int i = 0; i < COL_COLUMNS_NUMBER; ++i)
{ {
setBackground(i, nobrush); setBackground(i, nobrush);
setForeground(i, nobrush); setForeground(i, textbrush);
} }
} }
} }
@ -250,4 +253,12 @@ void EasyTreeWidgetItem::expandAll()
guiBlock().expanded = true; guiBlock().expanded = true;
} }
void EasyTreeWidgetItem::setBold(bool _bold)
{
auto f = font(0);
f.setBold(_bold);
for (int i = 0; i < COL_COLUMNS_NUMBER; ++i)
setFont(i, f);
}
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////

View File

@ -155,6 +155,8 @@ public:
void expandAll(); void expandAll();
void setBold(bool _bold);
}; // END of class EasyTreeWidgetItem. }; // END of class EasyTreeWidgetItem.
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////