krita
kis_filters_listview.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _KIS_FILTERS_LIST_VIEW_H_
00022 #define _KIS_FILTERS_LIST_VIEW_H_
00023
00024 #include <qevent.h>
00025
00026 #include <kiconview.h>
00027
00028 #include "kis_id.h"
00029 #include "kis_types.h"
00030 #include "kis_layer.h"
00031 #include "kis_paint_device.h"
00032 #include "kis_thread.h"
00033
00034 class KisView;
00035 class KisFilter;
00036 class KisFilterConfiguration;
00037 class KisPreviewView;
00038 class KisFiltersIconViewItem;
00039 class KisFiltersListView;
00040 class KisThreadPool;
00041
00042 class KisThumbnailDoneEvent : public QCustomEvent
00043 {
00044 public:
00045
00046 KisThumbnailDoneEvent(KisFiltersIconViewItem * iconItem, const QImage & img)
00047 : QCustomEvent(QEvent::User + 1969)
00048 , m_iconItem(iconItem)
00049 , m_image(img) {};
00050
00051 KisFiltersIconViewItem * m_iconItem;
00052 QImage m_image;
00053
00054 };
00055
00056
00057 class KisFiltersThumbnailThread : public KisThread
00058 {
00059 public:
00060
00061 KisFiltersThumbnailThread(QIconView * parent,
00062 KisFiltersIconViewItem * iconItem,
00063 KisFilterConfiguration * config, KisFilter * filter,
00064 KisPaintDeviceSP dev, const QRect & bounds,
00065 KisProfile * profile);
00066
00067 ~KisFiltersThumbnailThread();
00068
00069 virtual void run();
00070 QPixmap pixmap();
00071 void cancel();
00072
00073 private:
00074 QIconView * m_parent;
00075 KisFiltersIconViewItem * m_iconItem;
00076 KisFilterConfiguration * m_config;
00077 KisFilter * m_filter;
00078 KisPaintDeviceSP m_dev;
00079 const QRect m_bounds;
00080 KisProfile * m_profile;
00081 QImage m_pixmap;
00082 };
00083
00084 class KisFiltersIconViewItem : public QIconViewItem {
00085 public:
00086 KisFiltersIconViewItem( QIconView * parent, const QString & text, const QPixmap & icon,
00087 KisID id, KisFilter* filter, KisFilterConfiguration* filterConfig,
00088 KisPaintDeviceSP thumb, const QRect & bounds, KisProfile * profile);
00089
00090 virtual ~KisFiltersIconViewItem();
00091 KisID id() { return m_id; }
00092 KisFilter* filter() { return m_filter; }
00093 void setFilterConfiguration(KisFilterConfiguration* fc) { m_filterconfig = fc; }
00094
00095 void resetThread() { m_thread = 0; };
00096 KisThread * thread() { return m_thread; }
00097
00098 private:
00099 KisID m_id;
00100 KisFilter* m_filter;
00101 KisFilterConfiguration* m_filterconfig;
00102 KisFiltersThumbnailThread * m_thread;
00103 };
00104
00105 class KisFiltersListView : public KIconView {
00106
00107 public:
00108 explicit KisFiltersListView(QWidget * parent = 0, const char * name = 0, WFlags f = 0, bool filterForAdjustmentLayers = false);
00109 KisFiltersListView(QWidget* parent, bool filterForAdjustmentLayers = false, const char* name = 0);
00110 KisFiltersListView(KisLayerSP layer, QWidget* parent, bool filterForAdjustmentLayers = false, const char * name = 0) KDE_DEPRECATED;
00111 KisFiltersListView(KisPaintDeviceSP layer, QWidget* parent, bool filterForAdjustmentLayers = false, const char * name = 0);
00112
00113 virtual void customEvent(QCustomEvent *);
00114
00115 private:
00116
00117 void init();
00118
00119 public:
00120 void setLayer(KisLayerSP layer) KDE_DEPRECATED;
00121 void setProfile(KisProfile * profile) { m_profile = profile; };
00122
00123 inline void setPaintDevice(KisPaintDeviceSP pd) {
00124 if( pd != m_original)
00125 {
00126 m_original = pd;
00127 buildPreview();
00128 }
00129 }
00130 void buildPreview();
00131 void setCurrentFilter(KisID filter);
00132
00133 private:
00134
00135 KisPaintDeviceSP m_original;
00136 KisImageSP m_imgthumb;
00137 KisPaintDeviceSP m_thumb;
00138 KisProfile * m_profile;
00139 KisThreadPool * threadPool;
00140 bool m_filterForAdjustmentLayers;
00141 };
00142
00143 #endif
|