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 QTimer;
00039 class KisFiltersIconViewItem;
00040 class KisFiltersListView;
00041 class KisThreadPool;
00042
00043 class KisThumbnailDoneEvent : public QCustomEvent
00044 {
00045 public:
00046
00047 KisThumbnailDoneEvent(KisFiltersIconViewItem * iconItem, const QImage & img)
00048 : QCustomEvent(QEvent::User + 1969)
00049 , m_iconItem(iconItem)
00050 , m_image(img) {};
00051
00052 KisFiltersIconViewItem * m_iconItem;
00053 QImage m_image;
00054
00055 };
00056
00057
00058 class KisFiltersThumbnailThread : public KisThread
00059 {
00060 public:
00061
00062 KisFiltersThumbnailThread(QIconView * parent,
00063 KisFiltersIconViewItem * iconItem,
00064 KisFilterConfiguration * config, KisFilter * filter,
00065 KisPaintDeviceSP dev, const QRect & bounds,
00066 KisProfile * profile);
00067
00068 ~KisFiltersThumbnailThread();
00069
00070 virtual void run();
00071 QPixmap pixmap();
00072 void cancel();
00073
00074 private:
00075 QIconView * m_parent;
00076 KisFiltersIconViewItem * m_iconItem;
00077 KisFilterConfiguration * m_config;
00078 KisFilter * m_filter;
00079 KisPaintDeviceSP m_dev;
00080 const QRect m_bounds;
00081 KisProfile * m_profile;
00082 QImage m_pixmap;
00083 };
00084
00085 class KisFiltersIconViewItem : public QIconViewItem {
00086 public:
00087 KisFiltersIconViewItem( QIconView * parent, const QString & text, const QPixmap & icon,
00088 KisID id, KisFilter* filter, KisFilterConfiguration* filterConfig,
00089 KisPaintDeviceSP thumb, const QRect & bounds, KisProfile * profile);
00090
00091 virtual ~KisFiltersIconViewItem();
00092 KisID id() { return m_id; }
00093 KisFilter* filter() { return m_filter; }
00094 void setFilterConfiguration(KisFilterConfiguration* fc) { m_filterconfig = fc; }
00095
00096 void resetThread() { m_thread = 0; };
00097 KisThread * thread() { return m_thread; }
00098
00099 private:
00100 KisID m_id;
00101 KisFilter* m_filter;
00102 KisFilterConfiguration* m_filterconfig;
00103 KisFiltersThumbnailThread * m_thread;
00104 };
00105
00106 class KisFiltersListView : public KIconView {
00107
00108 public:
00109
00110 KisFiltersListView(QWidget* parent, const char* name = 0);
00111 KisFiltersListView(KisLayerSP layer, QWidget* parent, const char * name = 0) KDE_DEPRECATED;
00112 KisFiltersListView(KisPaintDeviceSP layer, QWidget* parent, const char * name = 0);
00113
00114 virtual void customEvent(QCustomEvent *);
00115
00116 private:
00117
00118 void init();
00119
00120 public:
00121 void setLayer(KisLayerSP layer) KDE_DEPRECATED;
00122 void setProfile(KisProfile * profile) { m_profile = profile; };
00123
00124 inline void setPaintDevice(KisPaintDeviceSP pd) {
00125 if( pd != m_original)
00126 {
00127 m_original = pd;
00128 buildPreview();
00129 }
00130 }
00131 void buildPreview();
00132 void setCurrentFilter(KisID filter);
00133
00134 private:
00135
00136 KisPaintDeviceSP m_original;
00137 KisImageSP m_imgthumb;
00138 KisPaintDeviceSP m_thumb;
00139 KisProfile * m_profile;
00140 KisThreadPool * threadPool;
00141 };
00142
00143 #endif
|