Slicer 5.4
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
qMRMLColorModel.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Program: 3D Slicer
4
5 Copyright (c) Kitware Inc.
6
7 See COPYRIGHT.txt
8 or http://www.slicer.org/copyright/copyright.txt for details.
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15
16 This file was originally developed by Julien Finet, Kitware Inc.
17 and was partially funded by NIH grant 3P41RR013218-12S1
18
19==============================================================================*/
20
21#ifndef __qMRMLColorModel_h
22#define __qMRMLColorModel_h
23
24// Qt includes
25#include <QStandardItemModel>
26
27// CTK includes
28#include <ctkPimpl.h>
29#include <ctkVTKObject.h>
30
31// qMRML includes
32#include "qMRMLWidgetsExport.h"
33
34class vtkMRMLNode;
37class QAction;
38
39class qMRMLColorModelPrivate;
40
41//------------------------------------------------------------------------------
42class QMRML_WIDGETS_EXPORT qMRMLColorModel : public QStandardItemModel
43{
44 Q_OBJECT
45 QVTK_OBJECT
46 Q_ENUMS(ItemDataRole)
47 Q_PROPERTY(bool noneEnabled READ noneEnabled WRITE setNoneEnabled)
48
54 Q_PROPERTY(int colorColumn READ colorColumn WRITE setColorColumn)
59 Q_PROPERTY(int labelColumn READ labelColumn WRITE setLabelColumn)
64 Q_PROPERTY(int opacityColumn READ opacityColumn WRITE setOpacityColumn)
70 Q_PROPERTY(int checkableColumn READ checkableColumn WRITE setCheckableColumn)
71
72public:
73 typedef QAbstractItemModel Superclass;
74 qMRMLColorModel(QObject *parent=nullptr);
75 ~qMRMLColorModel() override;
76
80 ColorEntryRole = Qt::UserRole,
82 ColorRole
83 };
84
85
88
91 void setNoneEnabled(bool enable);
92 bool noneEnabled()const;
93
94 int colorColumn()const;
95 void setColorColumn(int column);
96
97 int labelColumn()const;
98 void setLabelColumn(int column);
99
100 int opacityColumn()const;
101 void setOpacityColumn(int column);
102
103 int checkableColumn()const;
104 void setCheckableColumn(int column);
105
109 inline int colorFromIndex(const QModelIndex &index)const;
113 int colorFromItem(QStandardItem* item)const;
114
115 QStandardItem* itemFromColor(int color, int column = 0)const;
116 QModelIndexList indexes(int color)const;
117
118 inline QColor qcolorFromIndex(const QModelIndex& nodeIndex)const;
119 inline QColor qcolorFromItem(QStandardItem* nodeItem)const;
120 QColor qcolorFromColor(int color)const;
121
124 QString nameFromColor(int colorEntry)const;
127 int colorFromName(const QString& name)const;
128
131 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
132
133protected slots:
134 void onMRMLColorNodeModified(vtkObject* node);
135 void onItemChanged(QStandardItem * item);
136
137protected:
138
139 qMRMLColorModel(qMRMLColorModelPrivate* pimpl, QObject *parent=nullptr);
140 virtual void updateItemFromColor(QStandardItem* item, int color, int column);
141 virtual void updateColorFromItem(int color, QStandardItem* item);
142 virtual void updateNode();
143
144 static void onMRMLNodeEvent(vtkObject* vtk_obj, unsigned long event,
145 void* client_data, void* call_data);
146protected:
147 QScopedPointer<qMRMLColorModelPrivate> d_ptr;
148
149private:
150 Q_DECLARE_PRIVATE(qMRMLColorModel);
151 Q_DISABLE_COPY(qMRMLColorModel);
152};
153
154// -----------------------------------------------------------------------------
155int qMRMLColorModel::colorFromIndex(const QModelIndex &nodeIndex)const
156{
157 return this->colorFromItem(this->itemFromIndex(nodeIndex));
158}
159
160// -----------------------------------------------------------------------------
161QColor qMRMLColorModel::qcolorFromIndex(const QModelIndex &nodeIndex)const
162{
163 return this->qcolorFromItem(this->itemFromIndex(nodeIndex));
164}
165
166// -----------------------------------------------------------------------------
167QColor qMRMLColorModel::qcolorFromItem(QStandardItem* nodeItem)const
168{
169 return this->qcolorFromColor(this->colorFromItem(nodeItem));
170}
171
172#endif
QModelIndexList indexes(int color) const
virtual void updateItemFromColor(QStandardItem *item, int color, int column)
virtual void updateColorFromItem(int color, QStandardItem *item)
QStandardItem * itemFromColor(int color, int column=0) const
bool noneEnabled() const
int colorFromItem(QStandardItem *item) const
void setColorColumn(int column)
int colorFromIndex(const QModelIndex &index) const
int colorColumn() const
QAbstractItemModel Superclass
virtual void updateNode()
QString nameFromColor(int colorEntry) const
int labelColumn() const
int opacityColumn() const
void setLabelColumn(int column)
void onMRMLColorNodeModified(vtkObject *node)
void setCheckableColumn(int column)
QColor qcolorFromItem(QStandardItem *nodeItem) const
QColor qcolorFromColor(int color) const
void setNoneEnabled(bool enable)
qMRMLColorModel(qMRMLColorModelPrivate *pimpl, QObject *parent=nullptr)
QColor qcolorFromIndex(const QModelIndex &nodeIndex) const
void onItemChanged(QStandardItem *item)
static void onMRMLNodeEvent(vtkObject *vtk_obj, unsigned long event, void *client_data, void *call_data)
void setMRMLColorNode(vtkMRMLColorNode *node)
vtkMRMLColorNode * mrmlColorNode() const
void setOpacityColumn(int column)
QScopedPointer< qMRMLColorModelPrivate > d_ptr
int checkableColumn() const
int colorFromName(const QString &name) const
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
MRML logic class for color manipulation.
Abstract MRML node to represent color information.
Abstract Superclass for all specific types of MRML nodes.