DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DAColorTheme.h
1#ifndef DACOLORTHEME_H
2#define DACOLORTHEME_H
3#include "DAGenericIndexedContainer.hpp"
4#include <initializer_list>
5#include <QColor>
6#include <QDebug>
7#include "DAUtilsAPI.h"
8namespace DA
9{
10
14class DAUTILS_API DAColorTheme
15{
16public:
17 using ColorList = QList< QColor >;
19 using iterator = container::iterator;
20 using const_iterator = container::const_iterator;
21
22public:
31 {
32 BuiltInStyle_Begin = 0,
33 Style_Matplotlib_Tab10 = BuiltInStyle_Begin,
34 Style_Matplotlib_Seaborn,
35 Style_Matlab_Modern,
36 Style_R_Viridis,
37 Style_Wong_Nature,
38 Style_Archambault,
39 Style_Cassatt1,
40 Style_Cassatt2,
41 Style_Demuth,
42 Style_Derain,
43 Style_Egypt,
44 Style_Greek,
45 Style_Hiroshige,
46 Style_Hokusai2,
47 Style_Hokusai3,
48 Style_Ingres,
49 Style_Isfahan1,
50 Style_Isfahan2,
51 Style_Java,
52 Style_Johnson,
53 Style_Kandinsky,
54 Style_Morgenstern,
55 Style_OKeeffe1,
56 Style_OKeeffe2,
57 Style_Pillement,
58 Style_Tam,
59 Style_Troy,
60 Style_VanGogh3,
61 Style_Veronese,
63 Style_UserDefine = 2000
64 };
65
66public:
72 DAColorTheme(ColorThemeStyle th);
73 DAColorTheme(const std::initializer_list< QColor >& v);
80 static DAColorTheme create(ColorThemeStyle t);
86 DAColorTheme& operator=(const ColorThemeStyle& th);
87 // 获取下一个元素(索引后移)
88 QColor next();
89 // 把索引移动到下一个,如果超过范围,会回到头
90 void moveToNext();
91 // 前缀操作,++v,返回下一个
92 QColor operator++();
93 // 后缀操作,v++,返回当前,并移动到下一个
94 QColor operator++(int);
95 // 获取前一个元素(索引前移)
96 QColor previous();
97 // 把索引移动到下一个,如果超过范围,会回尾部
98 void moveToPrevious();
99 // 前缀操作--v,回退并返回值
100 QColor operator--();
101 // 后缀操作,v--,返回当前,并回退
102 QColor operator--(int);
103 // 获取当前的元素,在调用前使用isValidIndex确认索引的正确性
104 QColor current() const;
105 // 按照索引获取
106 QColor at(int index) const;
107 //[]操作
108 QColor& operator[](int index);
109 const QColor& operator[](int index) const;
110 // 转换为QList<QColor>
111 ColorList toColorList() const;
112 // 最后的颜色
113 QColor lastColor() const;
114 // 第一个颜色
115 QColor firstColor() const;
116 // 判断当前索引是否是第一个
117 bool isFirstIndex() const;
118 // 判断当前索引是否是最后一个
119 bool isLastIndex() const;
120 // 判断当前索引是否是合理范围内
121 bool isValidIndex() const;
122 // 获取当前的索引
123 int getCurrentIndex() const;
124 // 设置当前的索引
125 void setCurrentIndex(int v);
126 //
127 iterator begin();
128 const_iterator begin() const;
129 iterator end();
130 const_iterator end() const;
131 // 数量
132 int size() const;
133 // 按照比例获取颜色,颜色将使用插值获取,proportion必须为0~1之间
134 QColor getColorAtPosition(float proportion) const;
135 // 颜色插值,在颜色1和2之间的比例取值,t必须为0~1之间的数
136 static QColor interpolateColor(const QColor& color1, const QColor& color2, float t);
137 // 主题样式
138 ColorThemeStyle getColorThemeStyle() const;
139 void setColorThemeStyle(ColorThemeStyle style);
140 // 设置用户自定义的颜色列表
141 void setUserDefineColorList(const ColorList& cls, ColorThemeStyle style = Style_UserDefine);
142 // 主题名字
143 static QString colorThemeStyleName(ColorThemeStyle style);
144
145protected:
146 container createColorList(const ColorThemeStyle& th);
147
148private:
149 container mColorList;
150 ColorThemeStyle mCurrentColorTheme { Style_Archambault };
151};
152
153QDebug DAUTILS_API operator<<(QDebug debug, const DAColorTheme& th);
154
155} // end namespace DA
156Q_DECLARE_METATYPE(DA::DAColorTheme)
157
158#endif // DACOLORTHEME_H
颜色主题
Definition DAColorTheme.h:15
ColorThemeStyle
已有的主题
Definition DAColorTheme.h:31
@ BuiltInStyle_End
结束
Definition DAColorTheme.h:62
typename Container::const_iterator const_iterator
常量迭代器类型
Definition DAGenericIndexedContainer.hpp:70
typename Container::iterator iterator
非常量迭代器类型
Definition DAGenericIndexedContainer.hpp:69
序列化类都是带异常的,使用中需要处理异常
Definition AppMainWindow.cpp:44