You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
4.2 KiB
139 lines
4.2 KiB
/*
|
|
* This file is part of Chalk
|
|
*
|
|
* Copyright (c) 2005 Cyrille Berger <cberger@cberger.net>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#include "filters_gallery.h"
|
|
|
|
#include <tqapplication.h>
|
|
|
|
#include <kdebug.h>
|
|
#include <kgenericfactory.h>
|
|
#include <kstandarddirs.h>
|
|
|
|
#include <kopalettemanager.h>
|
|
|
|
#include <kis_colorspace_factory_registry.h>
|
|
#include "kis_progress_display_interface.h"
|
|
#include <kis_dlg_filtersgallery.h>
|
|
#include <kis_doc.h>
|
|
#include <kis_filter.h>
|
|
#include <kis_filters_listview.h>
|
|
#include <kis_meta_registry.h>
|
|
#include <kis_paint_device.h>
|
|
#include <kis_selection.h>
|
|
#include <kis_view.h>
|
|
#include <kis_transaction.h>
|
|
|
|
namespace Chalk {
|
|
namespace Plugins {
|
|
namespace FiltersGallery {
|
|
|
|
typedef KGenericFactory<ChalkFiltersGallery> ChalkFiltersGalleryFactory;
|
|
K_EXPORT_COMPONENT_FACTORY( chalkfiltersgallery, ChalkFiltersGalleryFactory( "chalk" ) )
|
|
|
|
ChalkFiltersGallery::ChalkFiltersGallery(TQObject *parent, const char *name, const TQStringList &)
|
|
: KParts::Plugin(parent, name)
|
|
{
|
|
|
|
if ( parent->inherits("KisView") )
|
|
{
|
|
setInstance(ChalkFiltersGallery::instance());
|
|
setXMLFile(locate("data","chalkplugins/chalkfiltersgallery.rc"), true);
|
|
|
|
m_view = (KisView*) parent;
|
|
|
|
(void) new KAction(i18n("&Filters Gallery"), 0, 0, this, TQT_SLOT(showFiltersGalleryDialog()), actionCollection(), "chalk_filters_gallery");
|
|
|
|
// Add a docker with the list of filters
|
|
// TQImage img;
|
|
// if(img.load(locate("data","chalk/images/previewfilter.png")))
|
|
// {
|
|
// KisPaintDeviceSP preview = new KisPaintDevice(KisMetaRegistry::instance()->csRegistry()->getColorSpace(KisID("RGBA",""),""));
|
|
// preview->convertFromTQImage(img,"");
|
|
// m_view->canvasSubject()->paletteManager()->addWidget(new KisFiltersListView(preview,m_view),"filterslist",chalk::EFFECTSBOX, 0);
|
|
// }
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
ChalkFiltersGallery::~ChalkFiltersGallery()
|
|
{
|
|
}
|
|
|
|
void ChalkFiltersGallery::showFiltersGalleryDialog()
|
|
{
|
|
KisDlgFiltersGallery dlg(m_view, m_view);
|
|
if (dlg.exec())
|
|
{
|
|
TQApplication::setOverrideCursor( TQt::waitCursor );
|
|
|
|
KisFilter* filter = dlg.currentFilter();
|
|
if(filter )
|
|
{
|
|
KisImageSP img = m_view->canvasSubject()->currentImg();
|
|
if (!img) return;
|
|
|
|
KisPaintDeviceSP dev = img->activeDevice();
|
|
if (!dev) return;
|
|
TQRect r1 = dev->exactBounds();
|
|
TQRect r2 = img->bounds();
|
|
|
|
TQRect rect = r1.intersect(r2);
|
|
|
|
if (dev->hasSelection()) {
|
|
TQRect r3 = dev->selection()->selectedExactRect();
|
|
rect = rect.intersect(r3);
|
|
}
|
|
KisFilterConfiguration* config = filter->configuration( dlg.currentConfigWidget());
|
|
|
|
filter->enableProgress();
|
|
m_view->canvasSubject()->progressDisplay()->setSubject(filter, true, true);
|
|
filter->setProgressDisplay(m_view->canvasSubject()->progressDisplay());
|
|
|
|
KisTransaction * cmd = new KisTransaction(filter->id().name(), dev);
|
|
|
|
filter->process(dev,dev, config, rect);
|
|
|
|
delete config;
|
|
if (filter->cancelRequested()) {
|
|
cmd->unexecute();
|
|
delete cmd;
|
|
} else {
|
|
dev->setDirty(rect);
|
|
if (img->undo())
|
|
img->undoAdapter()->addCommand(cmd);
|
|
else
|
|
delete cmd;
|
|
}
|
|
filter->disableProgress();
|
|
TQApplication::restoreOverrideCursor();
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
#include "filters_gallery.moc"
|