KSeExpr  4.0.4.0
ExprColorSwatch.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc.
2 // SPDX-License-Identifier: LicenseRef-Apache-2.0
3 // SPDX-FileCopyrightText: 2020 L. E. Segovia <amy@amyspark.me>
4 // SPDX-License-Identifier: GPL-3.0-or-later
5 
6 #pragma once
7 
8 #include <KSeExpr/Vec.h>
9 #include <QFrame>
10 #include <QObject>
11 #include <QWidget>
12 #include <vector>
13 
14 class QGridLayout;
15 
16 class ExprColorFrame : public QFrame
17 {
18  Q_OBJECT
19 public:
20  ExprColorFrame(KSeExpr::Vec3d value, QWidget *parent = nullptr);
21  ~ExprColorFrame() override = default;
22 
23  void setValue(const KSeExpr::Vec3d &value);
24  KSeExpr::Vec3d getValue() const;
25  bool selected() const
26  {
27  return _selected;
28  };
29 
30 protected:
31  void paintEvent(QPaintEvent *event) override;
32  void mouseReleaseEvent(QMouseEvent *event) override;
33 
34 private Q_SLOTS:
35  void deleteSwatchMenu(const QPoint &pos);
36 
37 Q_SIGNALS:
39  void swatchChanged(QColor color);
41 
42 private:
44  QColor _color {};
45  bool _selected {};
46 };
47 
48 // Simple color widget with or without index label
49 class ExprColorWidget : public QWidget
50 {
51  Q_OBJECT
52 public:
53  ExprColorWidget(KSeExpr::Vec3d value, int index, bool indexLabel, QWidget *parent);
55 
56 private:
58 };
59 
60 class ExprColorSwatchWidget : public QWidget
61 {
62  Q_OBJECT
63 
64 public:
65  ExprColorSwatchWidget(bool indexLabel, QWidget *parent = nullptr);
66  ~ExprColorSwatchWidget() override = default;
67 
68  // Convenience Functions
69  void addSwatch(KSeExpr::Vec3d &val, int index = -1);
70  void setSwatchColor(int index, QColor color);
71  QColor getSwatchColor(int index);
72 
73 private Q_SLOTS:
74  void addNewColor();
76  void internalSwatchChanged(QColor color);
77 
78 Q_SIGNALS:
80  void swatchChanged(int index, KSeExpr::Vec3d val);
81  void swatchAdded(int index, KSeExpr::Vec3d val);
82  void swatchRemoved(int index);
83 
84 private:
85  QGridLayout *_gridLayout;
86  int _columns;
88 };
void setValue(const KSeExpr::Vec3d &value)
void deleteSwatchMenu(const QPoint &pos)
void swatchChanged(QColor color)
void mouseReleaseEvent(QMouseEvent *event) override
void selValChangedSignal(KSeExpr::Vec3d value)
ExprColorFrame(KSeExpr::Vec3d value, QWidget *parent=nullptr)
~ExprColorFrame() override=default
KSeExpr::Vec3d getValue() const
KSeExpr::Vec3d _value
void paintEvent(QPaintEvent *event) override
void deleteSwatch(ExprColorFrame *swatch)
bool selected() const
QGridLayout * _gridLayout
void swatchRemoved(int index)
void setSwatchColor(int index, QColor color)
void removeSwatch(ExprColorFrame *)
void selValChangedSignal(KSeExpr::Vec3d val)
void internalSwatchChanged(QColor color)
ExprColorSwatchWidget(bool indexLabel, QWidget *parent=nullptr)
void swatchAdded(int index, KSeExpr::Vec3d val)
void addSwatch(KSeExpr::Vec3d &val, int index=-1)
~ExprColorSwatchWidget() override=default
void swatchChanged(int index, KSeExpr::Vec3d val)
QColor getSwatchColor(int index)
ExprColorWidget(KSeExpr::Vec3d value, int index, bool indexLabel, QWidget *parent)
ExprColorFrame * getColorFrame()
ExprColorFrame * _colorFrame
double swatch(int n, double *params)