11 #include <QHBoxLayout>
13 #include <QListWidget>
15 #include <QStylePainter>
42 void setColors(
const QColor& clr1,
const QColor& clr2);
44 QColor
color1()
const {
return m_color1; }
45 QColor
color2()
const {
return m_color2; }
59 QString
name()
const {
return m_gradientData.
name; }
69 : QWidget(parent), m_gradientData(gradient) {
70 QHBoxLayout* layout =
new QHBoxLayout;
73 QLabel* nameLabel =
new QLabel(
this);
74 nameLabel->setMinimumWidth(120);
75 nameLabel->setSizePolicy(
78 gLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
80 layout->addWidget(nameLabel);
81 layout->addWidget(gLabel);
82 layout->setSpacing(1);
83 layout->setContentsMargins(2, 2, 2, 2);
97 QPainter painter(
this);
98 painter.setPen(Qt::NoPen);
99 QLinearGradient lg(rect().topLeft(), rect().topRight());
100 lg.setColorAt(0.0, m_color1);
101 lg.setColorAt(1.0, m_color2);
102 painter.setBrush(QBrush(lg));
103 painter.drawRect(rect());
106 class GradientComboBoxPrivate {
112 QListWidget* gradientItemList;
114 QMap<QListWidgetItem*, GradientWidgetItem*> listItem2GradientItemMap;
117 #define USE_COLOR_SCHEME_NO1
118 #ifdef USE_COLOR_SCHEME_NO1
121 QColor(189, 195, 199),
123 << GradientData(QObject::tr(
"Dusk"),
124 QColor(255, 216, 155),
126 << GradientData(QObject::tr(
"Miami Dolphins"),
127 QColor(77, 160, 176),
128 QColor(211, 157, 56))
129 << GradientData(QObject::tr(
"Superman"),
132 << GradientData(QObject::tr(
"Timber"),
135 << GradientData(QObject::tr(
"Lizard"),
137 QColor(215, 210, 204))
138 << GradientData(QObject::tr(
"Ukraine"),
140 QColor(255, 249, 76))
141 << GradientData(QObject::tr(
"Starfall"),
142 QColor(240, 194, 123),
144 << GradientData(QObject::tr(
"Kyoto"),
147 << GradientData(QObject::tr(
"Miaka"),
149 QColor(10, 191, 188))
150 << GradientData(QObject::tr(
"Calm Darya"),
152 QColor(73, 160, 157))
153 << GradientData(QObject::tr(
"Mantle"),
154 QColor(36, 198, 220),
156 << GradientData(QObject::tr(
"Opa"),
157 QColor(61, 126, 170),
158 QColor(255, 228, 122))
159 << GradientData(QObject::tr(
"Horizon"),
161 QColor(229, 229, 190))
162 << GradientData(QObject::tr(
"Rose Water"),
163 QColor(229, 93, 135),
164 QColor(95, 195, 228))
165 << GradientData(QObject::tr(
"Harmonic Energy"),
166 QColor(22, 160, 133),
167 QColor(244, 208, 63))
168 << GradientData(QObject::tr(
"Purple Paradise"),
170 QColor(248, 205, 218))
171 << GradientData(QObject::tr(
"Aqua Marine"),
173 QColor(38, 208, 206))
174 << GradientData(QObject::tr(
"Calm Darya"),
176 QColor(73, 160, 157))
177 << GradientData(QObject::tr(
"Bora Bora"),
178 QColor(43, 192, 228),
179 QColor(234, 236, 198))
180 << GradientData(QObject::tr(
"Winter"),
181 QColor(230, 218, 218),
183 << GradientData(QObject::tr(
"Bright Vault"),
185 QColor(146, 141, 171))
186 << GradientData(QObject::tr(
"Sunset"),
189 << GradientData(QObject::tr(
"Sherbert"),
191 QColor(100, 243, 140))
192 << GradientData(QObject::tr(
"Deep Sea Space"),
194 QColor(76, 161, 175))
195 << GradientData(QObject::tr(
"Transfile"),
196 QColor(22, 191, 253),
197 QColor(203, 48, 102))
198 << GradientData(QObject::tr(
"Ali"),
200 QColor(31, 221, 255))
201 << GradientData(QObject::tr(
"Alihossein"),
203 QColor(219, 54, 164))
204 << GradientData(QObject::tr(
"Christmas"),
207 << GradientData(QObject::tr(
"Minnesota Vikings"),
209 QColor(219, 214, 92))
210 << GradientData(QObject::tr(
"Pizelex"),
212 QColor(242, 148, 146))
213 << GradientData(QObject::tr(
"Netflix"),
216 << GradientData(QObject::tr(
"Green and Blue"),
217 QColor(194, 229, 156),
218 QColor(100, 179, 244))
219 << GradientData(QObject::tr(
"Fresh Turboscent"),
220 QColor(241, 242, 181),
222 << GradientData(QObject::tr(
"Purple Bliss"),
224 QColor(11, 135, 147))
225 << GradientData(QObject::tr(
"Martini"),
226 QColor(253, 252, 71),
228 << GradientData(QObject::tr(
"Shore"),
229 QColor(112, 225, 245),
230 QColor(255, 209, 148))
231 << GradientData(QObject::tr(
"Earthly"),
232 QColor(100, 145, 115),
233 QColor(219, 213, 164))
234 << GradientData(QObject::tr(
"Titanium"),
236 QColor(133, 147, 152))
237 << GradientData(QObject::tr(
"Sun on the Horizon"),
238 QColor(252, 234, 187),
240 << GradientData(QObject::tr(
"Grapefruit Sunset"),
241 QColor(233, 100, 67),
242 QColor(144, 78, 149))
243 << GradientData(QObject::tr(
"Politics"),
244 QColor(33, 150, 243),
246 << GradientData(QObject::tr(
"Sweet Morning"),
247 QColor(255, 95, 109),
248 QColor(255, 195, 113))
249 << GradientData(QObject::tr(
"Forest"),
252 << GradientData(QObject::tr(
"Back to the Future"),
254 QColor(240, 203, 53))
255 << GradientData(QObject::tr(
"Dark Knight"),
258 << GradientData(QObject::tr(
"Green to dark"),
259 QColor(106, 145, 19),
261 << GradientData(QObject::tr(
"Virgin America"),
262 QColor(123, 67, 151),
264 << GradientData(QObject::tr(
"Turquoise flow"),
265 QColor(19, 106, 138),
266 QColor(38, 120, 113))
267 << GradientData(QObject::tr(
"Portrait"),
268 QColor(142, 158, 171),
269 QColor(238, 242, 243))
270 << GradientData(QObject::tr(
"Flickr"),
273 << GradientData(QObject::tr(
"Predawn"),
274 QColor(255, 161, 127),
276 << GradientData(QObject::tr(
"Crazy Orange I"),
277 QColor(211, 131, 18),
278 QColor(168, 50, 121))
279 << GradientData(QObject::tr(
"ServQuick"),
282 << GradientData(QObject::tr(
"Cheer Up Emo Kid"),
284 QColor(255, 107, 107))
285 << GradientData(QObject::tr(
"Man of Steel"),
288 << GradientData(QObject::tr(
"Moor"),
290 QColor(155, 197, 195))
291 << GradientData(QObject::tr(
"Forever Lost"),
293 QColor(168, 202, 186))
294 << GradientData(QObject::tr(
"Dracula"),
297 << GradientData(QObject::tr(
"Moss"),
299 QColor(113, 178, 128))
300 << GradientData(QObject::tr(
"Lemon Twist"),
302 QColor(181, 172, 73))
303 << GradientData(QObject::tr(
"Frozen"),
305 QColor(231, 233, 187))
306 << GradientData(QObject::tr(
"Emerald Water"),
308 QColor(86, 180, 211))
309 << GradientData(QObject::tr(
"Mirage"),
312 << GradientData(QObject::tr(
"Shroom Haze"),
314 QColor(67, 137, 162))
315 << GradientData(QObject::tr(
"Venice Blue"),
317 QColor(133, 216, 206));
322 QColor(250, 249, 228))
323 << GradientData(QObject::tr(
"Lake"),
325 QColor(238, 231, 213))
326 << GradientData(QObject::tr(
"Army"),
327 QColor(117, 151, 123),
328 QColor(192, 190, 163))
329 << GradientData(QObject::tr(
"Mint"),
330 QColor(135, 248, 173),
331 QColor(233, 159, 201))
332 << GradientData(QObject::tr(
"Atlantic"),
334 QColor(125, 130, 162))
335 << GradientData(QObject::tr(
"Neon"),
336 QColor(185, 222, 75),
337 QColor(205, 54, 193))
338 << GradientData(QObject::tr(
"Aurora"),
340 QColor(212, 77, 243))
341 << GradientData(QObject::tr(
"Pearl"),
342 QColor(234, 220, 208),
343 QColor(239, 206, 250))
344 << GradientData(QObject::tr(
"Avocado"),
346 QColor(251, 249, 57))
347 << GradientData(QObject::tr(
"Plum"),
349 QColor(226, 220, 113))
350 << GradientData(QObject::tr(
"Beach"),
351 QColor(220, 137, 68),
352 QColor(236, 238, 252))
353 << GradientData(QObject::tr(
"Rose"),
356 << GradientData(QObject::tr(
"Candy"),
358 QColor(169, 221, 225))
359 << GradientData(QObject::tr(
"Solar"),
361 QColor(255, 205, 30))
362 << GradientData(QObject::tr(
"CMYK"),
363 QColor(90, 183, 235),
365 << GradientData(QObject::tr(
"South West"),
367 QColor(93, 153, 209))
368 << GradientData(QObject::tr(
"Deep Sea"),
370 QColor(191, 233, 255))
371 << GradientData(QObject::tr(
"Starry Night"),
373 QColor(244, 207, 96))
374 << GradientData(QObject::tr(
"Fall"),
376 QColor(245, 200, 61))
377 << GradientData(QObject::tr(
"Sunset"),
379 QColor(255, 245, 215))
380 << GradientData(QObject::tr(
"Fruit Punch"),
382 QColor(243, 88, 137))
383 << GradientData(QObject::tr(
"Thermometer"),
386 << GradientData(QObject::tr(
"Island"),
387 QColor(184, 103, 69),
388 QColor(171, 202, 83))
389 << GradientData(QObject::tr(
"Watermelon"),
391 QColor(227, 98, 98));
397 GradientComboBoxPrivate::GradientComboBoxPrivate(GradientComboBox* q)
399 gradientItemList =
new QListWidget(q_ptr);
400 gradientItemList->setAlternatingRowColors(
true);
401 q_ptr->connect(q_ptr, SIGNAL(activated(
int)), q_ptr,
402 SLOT(onActivated(
int)));
404 for (
int i = 0; i < sGradientList.size(); ++i) {
405 const GradientData& gd = sGradientList.at(i);
406 QListWidgetItem* listItem =
new QListWidgetItem;
407 listItem->setText(gd.name);
409 GradientWidgetItem* gwi =
new GradientWidgetItem(gd, gradientItemList);
410 gradientItemList->addItem(listItem);
411 gradientItemList->setItemWidget(listItem, gwi);
413 listItem2GradientItemMap.insert(listItem, gwi);
417 q_ptr->setModel(gradientItemList->model());
418 q_ptr->setView(gradientItemList);
421 gradientItemList->setCurrentRow(0);
424 GradientComboBox::GradientComboBox(QWidget* parent) : QComboBox(parent) {
425 d_ptr =
new GradientComboBoxPrivate(
this);
431 d_ptr->gradientItemList->setCurrentRow(index);
432 QListWidgetItem* currItem = d_ptr->gradientItemList->currentItem();
434 if (gwi) setCurrentText(gwi->
name());
435 emit activated(index);
439 return d_ptr->gradientItemList->currentRow();
443 QListWidgetItem* currItem = d_ptr->gradientItemList->currentItem();
444 if (!currItem)
return QString();
446 return d_ptr->listItem2GradientItemMap.value(currItem)->name();
450 QListWidgetItem* currItem = d_ptr->gradientItemList->currentItem();
451 if (!currItem)
return QColor();
453 return d_ptr->listItem2GradientItemMap.value(currItem)->color1();
457 QListWidgetItem* currItem = d_ptr->gradientItemList->currentItem();
458 if (!currItem)
return QColor();
460 return d_ptr->listItem2GradientItemMap.value(currItem)->color2();
464 if (0 <= index && index < GradientComboBoxPrivate::sGradientList.
size())
466 GradientComboBoxPrivate::sGradientList.
at(index).color1,
467 GradientComboBoxPrivate::sGradientList.
at(index).color2);
469 return qMakePair(QColor(), QColor());
473 QComboBox::showPopup();
474 QRect qRect(view()->geometry());
475 int xPos = qRect.width() - d_ptr->gradientItemList->width();
476 int yPos = qRect.height() - d_ptr->gradientItemList->height();
477 d_ptr->gradientItemList->move(xPos, yPos);
478 d_ptr->gradientItemList->doItemsLayout();
479 d_ptr->gradientItemList->setVisible(
true);
483 QComboBox::hidePopup();
484 d_ptr->gradientItemList->setVisible(
false);
485 int currRow = d_ptr->gradientItemList->currentRow();
486 emit currentIndexChanged(currRow);
490 QListWidgetItem* item = d_ptr->gradientItemList->currentItem();
492 QComboBox::paintEvent(
e);
496 QStylePainter painter(
this);
497 painter.setPen(palette().
color(QPalette::Text));
500 QStyleOptionComboBox opt;
501 initStyleOption(&opt);
502 painter.drawComplexControl(QStyle::CC_ComboBox, opt);
506 QRect gradientRect(QPoint(125, 2), QPoint(
width() - 20,
height() - 4));
507 QLinearGradient lg(gradientRect.topLeft(), gradientRect.topRight());
508 lg.setColorAt(0.0, gwi->
color1());
509 lg.setColorAt(1.0, gwi->
color2());
510 painter.setBrush(QBrush(lg));
511 painter.drawRect(gradientRect);
514 painter.drawControl(QStyle::CE_ComboBoxLabel, opt);
518 QComboBox::resizeEvent(
e);
520 QRect qRect(view()->geometry());
521 int xPos = qRect.width() - d_ptr->gradientItemList->width();
522 int yPos = qRect.height() - d_ptr->gradientItemList->height();
523 d_ptr->gradientItemList->move(xPos, yPos);
528 void GradientComboBox::onActivated(
int index) {
529 d_ptr->gradientItemList->setCurrentRow(index);
530 QListWidgetItem* currItem = d_ptr->gradientItemList->item(index);
532 setCurrentText(gwi->
name());
Tensor Minimum(const Tensor &input, const Tensor &other)
Computes the element-wise minimum of input and other. The tensors must have same data type and device...