krita/ui
kis_bookmarked_filter_configurations_model.ccGo to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "kis_bookmarked_filter_configurations_model.h"
00020 #include <QPixmap>
00021
00022 #include <filter/kis_filter.h>
00023 #include <filter/kis_filter_configuration.h>
00024 #include <kis_paint_device.h>
00025
00026 struct KisBookmarkedFilterConfigurationsModel::Private {
00027 KisPaintDeviceSP thumb;
00028 KisFilterSP filter;
00029 QHash<int, QImage> previewCache;
00030 };
00031
00032 KisBookmarkedFilterConfigurationsModel::KisBookmarkedFilterConfigurationsModel(KisPaintDeviceSP thumb, KisFilterSP filter)
00033 : KisBookmarkedConfigurationsModel(filter->bookmarkManager()), d(new Private)
00034 {
00035 d->thumb = thumb;
00036 d->filter = filter;
00037 }
00038
00039 KisBookmarkedFilterConfigurationsModel::~KisBookmarkedFilterConfigurationsModel()
00040 {
00041 delete d;
00042 }
00043
00044 QVariant KisBookmarkedFilterConfigurationsModel::data(const QModelIndex &index, int role) const
00045 {
00046 if (!index.isValid()) {
00047 return QVariant();
00048 }
00049 if (role == Qt::DecorationRole) {
00050 if (!d->previewCache.contains(index.row())) {
00051 KisPaintDeviceSP target = new KisPaintDevice(*d->thumb);
00052 d->filter->process(target, QRect(0, 0, 100, 100), configuration(index));
00053 d->previewCache[index.row()] = target->convertToQImage(0);
00054 }
00055 return d->previewCache[index.row()];
00056 } else {
00057 return KisBookmarkedConfigurationsModel::data(index, role);
00058 }
00059 }
00060
00061 KisFilterConfiguration* KisBookmarkedFilterConfigurationsModel::configuration(const QModelIndex &index) const
00062 {
00063 KisFilterConfiguration* config = dynamic_cast<KisFilterConfiguration*>(KisBookmarkedConfigurationsModel::configuration(index));
00064 if (config) return config;
00065 return d->filter->defaultConfiguration(d->thumb);
00066 }
|