ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
colorseries.cpp
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #include "colorseries.h"
9 
10 namespace Utils {
11 
12 typedef QList<QColor> ColorList;
13 
14 static inline QColor hexToColor(QRgb num) {
15  return QColor(qRed(num), qGreen(num), qBlue(num));
16 }
17 
18 class ColorSeriesPrivate {
19 public:
20  static ColorList sSpectrumColorList;
21  static ColorList sWarmColorList;
22  static ColorList sCoolColorList;
23  static ColorList sBluesColorList;
24  static ColorList sWildFlowerColorList;
25  static ColorList sCitrusColorList;
26 
27  ColorSeries::Scheme currentScheme = ColorSeries::Warm;
28  int colorCounter = 0;
29 };
30 
31 ColorList ColorSeriesPrivate::sSpectrumColorList =
32  ColorList() << QColor::fromRgb(0x000000) << QColor::fromRgb(0xE41A1C)
33  << QColor::fromRgb(0x377EB8) << QColor::fromRgb(0x4DAF4A)
34  << QColor::fromRgb(0x984EA3) << QColor::fromRgb(0xFF7F00)
35  << QColor::fromRgb(0xA65628);
36 
37 ColorList ColorSeriesPrivate::sWarmColorList =
38  ColorList() << QColor::fromRgb(0x791717) << QColor::fromRgb(0xB50101)
39  << QColor::fromRgb(0xEF4719) << QColor::fromRgb(0xF98324)
40  << QColor::fromRgb(0xFFB400) << QColor::fromRgb(0xFFE506);
41 
42 ColorList ColorSeriesPrivate::sCoolColorList =
43  ColorList() << QColor::fromRgb(0x75B101) << QColor::fromRgb(0x588029)
44  << QColor::fromRgb(0x50D7BF) << QColor::fromRgb(0x1C95CD)
45  << QColor::fromRgb(0x3B68AB) << QColor::fromRgb(0x9A68FF)
46  << QColor::fromRgb(0x5F3380);
47 
48 ColorList ColorSeriesPrivate::sBluesColorList =
49  ColorList() << QColor::fromRgb(0x3B68AB) << QColor::fromRgb(0x1C95CD)
50  << QColor::fromRgb(0x4ED9EA) << QColor::fromRgb(0x739AD5)
51  << QColor::fromRgb(0x423DA9) << QColor::fromRgb(0x505487)
52  << QColor::fromRgb(0x102A52);
53 
54 ColorList ColorSeriesPrivate::sWildFlowerColorList =
55  ColorList() << QColor::fromRgb(0x1C95CD) << QColor::fromRgb(0x3B68AB)
56  << QColor::fromRgb(0x663EB7) << QColor::fromRgb(0xA254CF)
57  << QColor::fromRgb(0xDE61CE) << QColor::fromRgb(0xDC6195)
58  << QColor::fromRgb(0x3D1052);
59 
60 ColorList ColorSeriesPrivate::sCitrusColorList =
61  ColorList() << QColor::fromRgb(0x657C37) << QColor::fromRgb(0x75B101)
62  << QColor::fromRgb(0xB2BA30) << QColor::fromRgb(0xFFE506)
63  << QColor::fromRgb(0xFFB400) << QColor::fromRgb(0xF98324);
64 
65 ColorSeries::ColorSeries() { d_ptr = new ColorSeriesPrivate; }
66 
67 ColorSeries::~ColorSeries() { delete d_ptr; }
68 
70  if (d_ptr->currentScheme != scheme) {
71  d_ptr->currentScheme = scheme;
72  d_ptr->colorCounter = 0;
73  }
74 }
75 
76 ColorSeries::Scheme ColorSeries::scheme() const { return d_ptr->currentScheme; }
77 
78 QColor ColorSeries::color(int index) const {
79  switch (d_ptr->currentScheme) {
80  case Spectrum:
81  return d_ptr->sSpectrumColorList.at(
82  index % d_ptr->sSpectrumColorList.size());
83 
84  case Warm:
85  return d_ptr->sWarmColorList.at(index %
86  d_ptr->sWarmColorList.size());
87 
88  case Cool:
89  return d_ptr->sCoolColorList.at(index %
90  d_ptr->sCoolColorList.size());
91 
92  case Blues:
93  return d_ptr->sBluesColorList.at(index %
94  d_ptr->sBluesColorList.size());
95 
96  case WildFlower:
97  return d_ptr->sWildFlowerColorList.at(
98  index % d_ptr->sWildFlowerColorList.size());
99 
100  case Citrus:
101  return d_ptr->sCitrusColorList.at(index %
102  d_ptr->sCitrusColorList.size());
103  }
104 
105  return Qt::black;
106 }
107 
108 QColor ColorSeries::nextColor() const { return color(d_ptr->colorCounter++); }
109 
110 } // namespace Utils
void setScheme(Scheme scheme)
Definition: colorseries.cpp:69
Scheme scheme() const
Definition: colorseries.cpp:76
QColor nextColor() const
QColor color(int index) const
Definition: colorseries.cpp:78
QList< QColor > ColorList
Definition: colorseries.cpp:12
static QColor hexToColor(QRgb num)
Definition: colorseries.cpp:14
constexpr Rgb black(0, 0, 0)