18 #ifndef QGSPALETTEDRENDERERWIDGET_H
19 #define QGSPALETTEDRENDERERWIDGET_H
27 #include "ui_qgspalettedrendererwidgetbase.h"
31 #include <QSortFilterProxyModel>
34 class QgsLocaleAwareNumericLineEditDelegate;
43 class QgsPalettedRendererClassGatherer:
public QThread
50 , mBandNumber( bandNumber )
52 , mClasses( existingClasses )
53 , mWasCanceled( false )
62 mFeedbackMutex.lock();
65 mFeedbackMutex.unlock();
71 bool wasCanceled()
const {
return mWasCanceled; }
80 void collectedClasses();
86 void progressChanged(
double progress );
92 std::unique_ptr< QgsColorRamp > mRamp;
96 QMutex mFeedbackMutex;
100 class QgsPalettedRendererModel :
public QAbstractItemModel
113 QgsPalettedRendererModel( QObject *parent =
nullptr );
120 QModelIndex index(
int row,
int column,
const QModelIndex &parent = QModelIndex() )
const override;
121 QModelIndex parent(
const QModelIndex &index )
const override;
122 int columnCount(
const QModelIndex &parent = QModelIndex() )
const override;
123 int rowCount(
const QModelIndex &parent = QModelIndex() )
const override;
124 QVariant data(
const QModelIndex &index,
int role = Qt::DisplayRole )
const override;
125 QVariant headerData(
int section, Qt::Orientation orientation,
int role )
const override;
126 bool setData(
const QModelIndex &index,
const QVariant &value,
int role = Qt::EditRole )
override;
127 Qt::ItemFlags flags(
const QModelIndex &index )
const override;
128 bool removeRows(
int row,
int count,
const QModelIndex &parent = QModelIndex() )
override;
129 bool insertRows(
int row,
int count,
const QModelIndex &parent = QModelIndex() )
override;
130 Qt::DropActions supportedDropActions()
const override;
131 QStringList mimeTypes()
const override;
132 QMimeData *mimeData(
const QModelIndexList &indexes )
const override;
133 bool dropMimeData(
const QMimeData *data, Qt::DropAction action,
int row,
int column,
const QModelIndex &parent )
override;
135 QModelIndex addEntry(
const QColor &color );
143 void classesChanged();
152 class QgsPalettedRendererProxyModel:
public QSortFilterProxyModel
158 QgsPalettedRendererProxyModel( QObject *parent = 0 )
159 : QSortFilterProxyModel( parent )
168 bool lessThan(
const QModelIndex &left,
const QModelIndex &right )
const override
170 const QModelIndex lv { left.model()->index( left.row(),
static_cast<int>( QgsPalettedRendererModel::Column::ValueColumn ), left.parent() ) };
171 const QModelIndex rv { right.model()->index( right.row(),
static_cast<int>( QgsPalettedRendererModel::Column::ValueColumn ), right.parent() ) };
172 const double leftData { sourceModel()->data( lv ).toDouble( ) };
173 const double rightData { sourceModel()->data( rv ).toDouble( ) };
174 return leftData < rightData;
205 QMenu *mContextMenu =
nullptr;
206 QMenu *mAdvancedMenu =
nullptr;
207 QAction *mLoadFromLayerAction =
nullptr;
208 QgsPalettedRendererModel *mModel =
nullptr;
209 QgsPalettedRendererProxyModel *mProxyModel =
nullptr;
212 QgsPalettedRendererClassGatherer *mGatherer =
nullptr;
216 QgsLocaleAwareNumericLineEditDelegate *mValueDelegate =
nullptr;
218 void setSelectionColor( const QItemSelection &selection, const QColor &color );
225 void changeOpacity();
227 void applyColorRamp();
228 void loadColorTable();
229 void saveColorTable();
231 void loadFromLayer();
232 void bandChanged(
int band );
234 void gatheredClasses();
235 void gathererThreadFinished();
Abstract base class for color ramps.
Base class for all map layer types.
QList< QgsPalettedRasterRenderer::Class > ClassData
Map of value to class properties.
Feedback object tailored for raster block reading.
Represents a raster layer.
Raster renderer pipe that applies colors to a raster.
A rectangle specified with double values.
Properties of a single value class.