krita

kis_filters_listview.h

00001 /*
00002  * This file is part of Krita
00003  *
00004  * Copyright (c) 2005 Cyrille Berger <cberger@cberger.net>
00005  *
00006  *  This program is free software; you can redistribute it and/or modify
00007  *  it under the terms of the GNU General Public License as published by
00008  *  the Free Software Foundation; either version 2 of the License, or
00009  *  (at your option) any later version.
00010  *
00011  *  This program is distributed in the hope that it will be useful,
00012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  *  GNU General Public License for more details.
00015  *
00016  *  You should have received a copy of the GNU General Public License
00017  *  along with this program; if not, write to the Free Software
00018  *  Foundation, Inc., 51 Franklin Street, Fifth Floor,
00019  * Boston, MA 02110-1301, USA.
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
KDE Home | KDE Accessibility Home | Description of Access Keys