12#include <QInputDialog>
13#include <QItemSelectionModel>
15#include <QListWidgetItem>
17#include <QStackedWidget>
60 , m_layerStyle(layerStyle)
62 , m_isSwitchingPredefinedStyle(false)
63 , m_sanityLayerStyleDirty(false)
73 QWidget *page =
new QWidget(
this);
144 SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),
145 this, SLOT(
changePage(QListWidgetItem*,QListWidgetItem*)));
149 QPalette newPalette =
palette();
150 newPalette.setColor(QPalette::Active, QPalette::Window,
palette().text().color() );
204 QListWidgetItem *item;
206 if (
wdgLayerStyles.lstStyleSelector->item(6)->checkState() == Qt::Checked) {
209 Qt::ItemFlags currentFlags7 = item->flags();
210 item->setFlags(currentFlags7 | Qt::ItemIsEnabled);
214 Qt::ItemFlags currentFlags8 = item->flags();
215 item->setFlags(currentFlags8 | Qt::ItemIsEnabled);
220 Qt::ItemFlags currentFlags7 = item->flags();
221 item->setFlags(currentFlags7 & (~Qt::ItemIsEnabled));
225 Qt::ItemFlags currentFlags8 = item->flags();
226 item->setFlags(currentFlags8 & (~Qt::ItemIsEnabled));
249 const QString customName =
"CustomStyles.asl";
257 QString finalName = name;
265 finalName = QString(
"%1%2").arg(name).arg(i++);
275 QInputDialog::getText(
this,
276 i18nc(
"@title:window",
"Enter new style name"),
277 i18nc(
"@label:textbox",
"Name:"),
279 i18nc(
"Default name for a new style",
"New Style"),
286 clone->setName(styleName);
287 clone->setUuid(QUuid::createUuid());
288 clone->setFilename(clone->uuid().toString());
289 clone->setValid(
true);
291 const QString customStylesStorageLocation =
"asl/CustomStyles.asl";
293 QString storagePath = resourceDir +
"/" + customStylesStorageLocation;
295 bool resourceAdded =
false;
310 resourceAdded = bool(clone);
325 return resourceFolderPath +
'/' +
"asl" +
'/' + filename;
331 dialog.setDefaultDir(QStandardPaths::writableLocation(QStandardPaths::DownloadLocation));
332 dialog.setMimeTypeFilters({
"application/x-photoshop-style-library"});
333 dialog.setCaption(i18n(
"Select ASL file"));
335 const QString filename = dialog.filename();
343 if (!filename.isEmpty()) {
344 const QFileInfo oldFileInfo(filename);
351 if (!storage->valid()) {
352 qWarning() <<
"Attempted to import an invalid layer style library!" << filename;
353 QMessageBox::warning(
this,
354 i18nc(
"@title:window",
"Krita"),
355 i18n(
"Could not load layer style library %1.", filename));
362 const QString newName = oldFileInfo.fileName();
363 const QString newLocation = QStringLiteral(
"%1/%2").arg(newDir, newName);
365 const QFileInfo newFileInfo(newLocation);
367 if (newFileInfo.exists()) {
368 if (QMessageBox::warning(
this,
369 i18nc(
"@title:window",
"Warning"),
370 i18n(
"There is already a layer style library with this name installed. Do you "
371 "want to overwrite it?"),
372 QMessageBox::Ok | QMessageBox::Cancel)
373 == QMessageBox::Cancel) {
376 QFile::remove(newLocation);
380 QFile::copy(filename, newLocation);
386 qWarning() <<
"Could not add layer style library to the storages" << newLocation;
397 dialog.setCaption(i18n(
"Select ASL file"));
398 dialog.setMimeTypeFilters(
QStringList() <<
"application/x-photoshop-style-library",
"application/x-photoshop-style-library");
399 filename = dialog.filename();
404 newStyle->setName(QFileInfo(filename).completeBaseName());
407 serializer->setStyles(styles);
408 serializer->saveToFile(filename);
432 QListWidgetItem *item;
434 item->setCheckState(
m_layerStyle->dropShadow()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
437 item->setCheckState(
m_layerStyle->innerShadow()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
440 item->setCheckState(
m_layerStyle->outerGlow()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
443 item->setCheckState(
m_layerStyle->innerGlow()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
446 item->setCheckState(
m_layerStyle->bevelAndEmboss()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
449 item->setCheckState(
m_layerStyle->bevelAndEmboss()->contourEnabled() ? Qt::Checked : Qt::Unchecked);
452 item->setCheckState(
m_layerStyle->bevelAndEmboss()->textureEnabled() ? Qt::Checked : Qt::Unchecked);
455 item->setCheckState(
m_layerStyle->satin()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
458 item->setCheckState(
m_layerStyle->colorOverlay()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
461 item->setCheckState(
m_layerStyle->gradientOverlay()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
464 item->setCheckState(
m_layerStyle->patternOverlay()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
467 item->setCheckState(
m_layerStyle->stroke()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
523 if (style->dropShadow()->useGlobalLight()) {
524 style->dropShadow()->setAngle(angle);
526 if (
style->innerShadow()->useGlobalLight()) {
527 style->innerShadow()->setAngle(angle);
529 if (
style->bevelAndEmboss()->useGlobalLight()) {
530 style->bevelAndEmboss()->setAngle(angle);
541 : QSortFilterProxyModel(parent)
548 m_enableFiltering = enableFiltering;
554 m_locationToFilter = location;
560 Q_UNUSED(source_parent);
561 if (!m_enableFiltering) {
565 QModelIndex idx = sourceModel()->index(source_row, 0);
569 return location == m_locationToFilter;
578 : QListWidgetItem(style->name())
602 ui.listStyles->setEditTriggers(QAbstractItemView::EditTrigger::NoEditTriggers);
604 connect(
ui.cmbStyleCollections, SIGNAL(textActivated(QString)),
this, SLOT(
loadStyles(QString)));
609 if (
ui.cmbStyleCollections->count()) {
610 ui.cmbStyleCollections->setCurrentIndex(0);
622 if (!locationsList.contains(location)) {
623 locationsList << location;
626 ui.cmbStyleCollections->clear();
627 ui.cmbStyleCollections->addItems(locationsList);
671 qDebug() <<
"StylesSelector::selectStyle" << (resource.isNull() ?
"(null)" : resource->name()) << (layerStyle.isNull() ?
"(null)" : layerStyle->name());
688 warnKrita <<
"Collection cannot be loaded, because we do not use collections now; please use KisAslStorage instead.";
725 ui.listStyles->reset();
726 ui.cmbStyleCollections->setCurrentText(location);
747 ui.intDepth->setRange(0, 100);
750 ui.intSize->setRange(0, 250);
751 ui.intSize->setSuffix(i18n(
" px"));
752 ui.intSize->setExponentRatio(2.0);
754 ui.intSoften->setRange(0, 18);
755 ui.intSoften->setSuffix(i18n(
" px"));
765 ui.intOpacity->setRange(0, 100);
768 ui.intOpacity2->setRange(0, 100);
771 ui.angleSelector->enableGlobalLight(
true);
788 i18nc(
"{n} is the number value, % is the percent sign",
"{n}%"));
797 i18nc(
"{n} is the number value, % is the percent sign",
"{n}%"));
801 i18nc(
"{n} is the number value, % is the percent sign",
"{n}%"));
812 ui.cmbStyle->setCurrentIndex((
int)bevelAndEmboss->
style());
813 ui.cmbTechnique->setCurrentIndex((
int)bevelAndEmboss->
technique());
814 ui.intDepth->setValue(bevelAndEmboss->
depth());
815 ui.cmbDirection->setCurrentIndex((
int)bevelAndEmboss->
direction());
816 ui.intSize->setValue(bevelAndEmboss->
size());
817 ui.intSoften->setValue(bevelAndEmboss->
soften());
819 ui.angleSelector->setValue(bevelAndEmboss->
angle());
822 ui.intAltitude->setValue(bevelAndEmboss->
altitude());
849 bevelAndEmboss->
setDepth(
ui.intDepth->value());
851 bevelAndEmboss->
setSize(
ui.intSize->value());
854 bevelAndEmboss->
setAngle(
ui.angleSelector->value());
908 ui.grpBlendingOptions->setTitle(QString(
"%1 (%2)").arg(
ui.grpBlendingOptions->title()).arg(i18n(
"Not Implemented Yet")));
909 ui.grpBlendingOptions->setEnabled(
false);
924 ui.intOpacity->setRange(0, 100);
935 ui.intOpacity->setValue(colorOverlay->
opacity());
936 ui.bnColor->setColor(colorOverlay->
color());
941 colorOverlay->
setBlendMode(
ui.cmbCompositeOp->selectedCompositeOp().id());
957 ui.intOpacity->setRange(0, 100);
960 ui.intDistance->setRange(0, 500);
961 ui.intDistance->setSuffix(i18n(
" px"));
962 ui.intDistance->setExponentRatio(3.0);
964 ui.intSpread->setRange(0, 100);
967 ui.intSize->setRange(0, 250);
968 ui.intSize->setSuffix(i18n(
" px"));
969 ui.intSize->setExponentRatio(2.0);
971 ui.intNoise->setRange(0, 100);
974 ui.angleSelector->enableGlobalLight(
true);
994 ui.chkLayerKnocksOutDropShadow->setVisible(
false);
995 ui.grpMain->setTitle(i18n(
"Inner Shadow"));
996 ui.lblSpread->setText(i18n(
"Choke:"));
1003 ui.intOpacity->setValue(shadow->
opacity());
1004 ui.bnColor->setColor(shadow->
color());
1006 ui.angleSelector->setValue(shadow->
angle());
1009 ui.intDistance->setValue(shadow->
distance());
1010 ui.intSpread->setValue(shadow->
spread());
1011 ui.intSize->setValue(shadow->
size());
1017 ui.intNoise->setValue(shadow->
noise());
1023 ui.chkLayerKnocksOutDropShadow->setChecked(shadow->
knocksOut());
1029 shadow->
setBlendMode(
ui.cmbCompositeOp->selectedCompositeOp().id());
1049 realDropShadow->
setKnocksOut(
ui.chkLayerKnocksOutDropShadow->isChecked());
1061 if (!gradient)
return 0;
1079 QString newName = name;
1082 while (server->
resource(
"",
"", newName)) {
1083 newName = QString(
"%1%2").arg(name).arg(i++);
1096 m_resourceProvider(resourceProvider)
1100 ui.intOpacity->setRange(0, 100);
1103 ui.intScale->setRange(0, 100);
1106 ui.angleSelector->angleSelector()->setResetAngle(90.0);
1124 ui.intOpacity->setValue(config->
opacity());
1129 ui.cmbGradient->setGradient(gradient);
1132 ui.chkReverse->setChecked(config->
reverse());
1133 ui.cmbStyle->setCurrentIndex((
int)config->
style());
1135 ui.chkAlignWithLayer->setCheckable(
true);
1136 ui.angleSelector->setValue(config->
angle());
1137 ui.intScale->setValue(config->
scale());
1138 ui.chkDither->setChecked(config->
dither());
1143 config->
setBlendMode(
ui.cmbCompositeOp->selectedCompositeOp().id());
1165 m_resourceProvider(resourceProvider)
1170 ui.groupBox->setTitle(i18n(
"Outer Glow"));
1173 ui.intOpacity->setRange(0, 100);
1176 ui.intNoise->setRange(0, 100);
1179 ui.intChoke->setRange(0, 100);
1182 ui.intSize->setRange(0, 250);
1183 ui.intSize->setSuffix(i18n(
" px"));
1184 ui.intSize->setExponentRatio(2.0);
1186 ui.intRange->setRange(1, 100);
1189 ui.intJitter->setRange(0, 100);
1214 ui.cmbSource->hide();
1215 ui.lblSource->hide();
1216 ui.lblChoke->setText(i18nc(
"layer styles parameter",
"Spread:"));
1224 ui.intOpacity->setValue(config->
opacity());
1225 ui.intNoise->setValue(config->
noise());
1228 ui.bnColor->setColor(config->
color());
1234 ui.cmbGradient->setGradient(gradient);
1237 ui.cmbTechnique->setCurrentIndex((
int)config->
technique());
1238 ui.intChoke->setValue(config->
spread());
1239 ui.intSize->setValue(config->
size());
1253 ui.intRange->setValue(config->
range());
1254 ui.intJitter->setValue(config->
jitter());
1259 config->
setBlendMode(
ui.cmbCompositeOp->selectedCompositeOp().id());
1263 if (
ui.radioColor->isChecked()) {
1306 ui.intOpacity->setRange(0, 100);
1309 ui.intScale->setRange(0, 100);
1322 ui.intOpacity->setValue(pattern->
opacity());
1324 ui.patternChooser->setCurrentPattern(patternResource);
1326 ui.intScale->setValue(pattern->
scale());
1331 pattern->
setBlendMode(
ui.cmbCompositeOp->selectedCompositeOp().id());
1348 ui.intOpacity->setRange(0, 100);
1351 ui.intDistance->setRange(0, 250);
1352 ui.intDistance->setSuffix(i18n(
" px"));
1354 ui.intSize->setRange(0, 250);
1355 ui.intSize->setSuffix(i18n(
" px"));
1356 ui.intSize->setExponentRatio(2.0);
1375 ui.bnColor->setColor(satin->
color());
1376 ui.intOpacity->setValue(satin->
opacity());
1378 ui.angleSelector->setValue(satin->
angle());
1381 ui.intSize->setValue(satin->
size());
1387 ui.chkInvert->setChecked(satin->
invert());
1393 satin->
setBlendMode(
ui.cmbCompositeOp->selectedCompositeOp().id());
1414 m_resourceProvider(resourceProvider)
1418 ui.intSize->setRange(0, 250);
1419 ui.intSize->setSuffix(i18n(
" px"));
1420 ui.intSize->setExponentRatio(2.0);
1422 ui.intOpacity->setRange(0, 100);
1425 ui.intScale->setRange(0, 100);
1428 ui.intScale_2->setRange(0, 100);
1433 connect(
ui.cmbFillType, SIGNAL(currentIndexChanged(
int)),
ui.fillStack, SLOT(setCurrentIndex(
int)));
1457 ui.fillStack->setCurrentIndex(
ui.cmbFillType->currentIndex());
1462 ui.intSize->setValue(stroke->
size());
1463 ui.cmbPosition->setCurrentIndex((
int)stroke->
position());
1465 ui.intOpacity->setValue(stroke->
opacity());
1467 ui.cmbFillType->setCurrentIndex((
int)stroke->
fillType());
1468 ui.bnColor->setColor(stroke->
color());
1473 ui.cmbGradient->setGradient(gradient);
1477 ui.cmbStyle->setCurrentIndex((
int)stroke->
style());
1479 ui.chkAlignWithLayer->setCheckable(
true);
1480 ui.angleSelector->setValue(stroke->
angle());
1481 ui.intScale->setValue(stroke->
scale());
1485 ui.intScale_2->setValue(stroke->
scale());
1492 stroke->
setBlendMode(
ui.cmbCompositeOp->selectedCompositeOp().id());
float value(const T *src, size_t ch)
QList< QString > QStringList
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void fetchBevelAndEmboss(psd_layer_effects_bevel_emboss *bevelAndEmboss) const
void setBevelAndEmboss(const psd_layer_effects_bevel_emboss *bevelAndEmboss)
BevelAndEmboss(Contour *contour, Texture *texture, QWidget *parent)
void globalAngleChanged(int value)
Ui::WdgBlendingOptions ui
BlendingOptions(QWidget *parent)
ColorOverlay(QWidget *parent)
void setColorOverlay(const psd_layer_effects_color_overlay *colorOverlay)
void fetchColorOverlay(psd_layer_effects_color_overlay *colorOverlay) const
void globalAngleChanged(int value)
void setShadow(const psd_layer_effects_shadow_common *shadow)
void fetchShadow(psd_layer_effects_shadow_common *shadow) const
DropShadow(Mode mode, QWidget *parent)
Ui::WdgGradientOverlay ui
KisCanvasResourceProvider * m_resourceProvider
void setGradientOverlay(const psd_layer_effects_gradient_overlay *gradient)
GradientOverlay(KisCanvasResourceProvider *resourceProvider, QWidget *parent)
void fetchGradientOverlay(psd_layer_effects_gradient_overlay *gradient) const
static KoAbstractGradientSP styleToResource(KoAbstractGradientSP gradient)
static KoAbstractGradientSP resourceToStyle(KoAbstractGradientSP gradient)
static QString findAvailableName(const QString &name)
InnerGlow(Mode mode, KisCanvasResourceProvider *resourceProvider, QWidget *parent)
void fetchConfig(psd_layer_effects_glow_common *innerGlow) const
void setConfig(const psd_layer_effects_glow_common *innerGlow)
KisCanvasResourceProvider * m_resourceProvider
void setStyles(const QVector< KisPSDLayerStyleSP > &styles)
bool saveToFile(const QString &filename)
KoCanvasResourceProvider * resourceManager()
KoAbstractGradientSP currentGradient() const
T readEntry(const QString &name, const T &defaultValue=T())
void changePage(QListWidgetItem *, QListWidgetItem *)
void notifyGuiConfigChanged()
KisDlgLayerStyle(KisPSDLayerStyleSP layerStyle, KisCanvasResourceProvider *resourceProvider, QWidget *parent=0)
KisPSDLayerStyleSP m_initialLayerStyle
void slotNotifyOnReject()
bool m_sanityLayerStyleDirty
void slotMasterFxSwitchChanged(bool value)
BevelAndEmboss * m_bevelAndEmboss
PatternOverlay * m_patternOverlay
DropShadow * m_dropShadow
bool m_isSwitchingPredefinedStyle
~KisDlgLayerStyle() override
GradientOverlay * m_gradientOverlay
void slotNotifyOnAccept()
Ui::WdgStylesDialog wdgLayerStyles
BlendingOptions * m_blendingOptions
void slotBevelAndEmbossChanged(QListWidgetItem *)
void syncGlobalAngle(int angle)
ColorOverlay * m_colorOverlay
void setStyle(KisPSDLayerStyleSP style)
KisPSDLayerStyleSP style() const
KisPSDLayerStyleSP m_layerStyle
void notifyPredefinedStyleSelected(KisPSDLayerStyleSP style)
DropShadow * m_innerShadow
StylesSelector * m_stylesSelector
KisSignalCompressor * m_configChangedCompressor
static KisResourcesInterfaceSP instance()
bool addStorage(const QString &storageLocation, KisResourceStorageSP storage)
addStorage Adds a new resource storage to the database. The storage is will be marked as not pre-inst...
static KisResourceLocator * instance()
The KisResourceModel class provides the main access to resources. It is possible to filter the resour...
KoResourceSP resourceForId(int id) const
QModelIndex indexForResource(KoResourceSP resource) const override
indexFromResource
KoResourceSP resourceForIndex(QModelIndex index=QModelIndex()) const override
resourceForIndex returns a properly versioned and id'ed resource object
static KisResourceServerProvider * instance()
KoResourceServer< KisPSDLayerStyle > * layerStyleServer()
static bool addResourceWithUserInput(QWidget *widgetParent, KoResourceSP resource, QString storageLocation="")
KoCanvasResourcesInterfaceSP canvasResourcesInterface() const
A dialog base class with standard buttons and predefined layouts.
void setMainWidget(QWidget *widget)
virtual void setCaption(const QString &caption)
void setButtons(ButtonCodes buttonMask)
void setDefaultButton(ButtonCode id)
@ Ok
Show Ok button. (this button accept()s the dialog; result set to QDialog::Accepted)
@ Cancel
Show Cancel-button. (this button reject()s the dialog; result set to QDialog::Rejected)
static QString getAppDataLocation()
QSharedPointer< T > resource(const QString &md5, const QString &fileName, const QString &name)
resource retrieves a resource. If the md5sum is not empty, the resource will only be retrieved if a r...
bool addResource(QSharedPointer< T > resource, bool save=true)
Adds an already loaded resource to the server.
PatternOverlay(QWidget *parent)
void fetchPatternOverlay(psd_layer_effects_pattern_overlay *pattern) const
void setPatternOverlay(const psd_layer_effects_pattern_overlay *pattern)
void setSatin(const psd_layer_effects_satin *satin)
void fetchSatin(psd_layer_effects_satin *satin) const
void fetchStroke(psd_layer_effects_stroke *stroke) const
Stroke(KisCanvasResourceProvider *resourceProvider, QWidget *parent)
KisCanvasResourceProvider * m_resourceProvider
void setStroke(const psd_layer_effects_stroke *stroke)
KisPSDLayerStyleSP m_style
StyleItem(KisPSDLayerStyleSP style)
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override
void setLocationToFilterBy(QString location)
void setEnableFiltering(bool enableFiltering)
LocationProxyModel(QObject *parent)
void addNewStyle(const QString &location, const KisPSDLayerStyleSP style)
void notifyExternalStyleChanged(const QString &name, const QUuid &uuid)
void loadStyles(const QString &name)
void loadCollection(const QString &fileName)
void selectStyle(QModelIndex current)
void slotResourceModelReset()
StylesSelector(QWidget *parent)
void styleSelected(KisPSDLayerStyleSP style)
LocationProxyModel * m_locationsProxyModel
KisResourceModel * m_resourceModel
void setSource(psd_glow_source value)
psd_glow_source source() const
void setGradient(KoAbstractGradientSP value)
void setColor(KoColor value)
void setRange(qint32 value)
bool useGlobalLight() const
QString blendMode() const
void setFillType(psd_fill_type value)
void setNoise(qint32 value)
void setUseGlobalLight(bool value)
psd_technique_type technique() const
void setTechnique(psd_technique_type value)
void setAntiAliased(bool value)
void setKnocksOut(bool value)
void setDistance(qint32 value)
void setAngle(qint32 value)
KoAbstractGradientSP gradient(KisResourcesInterfaceSP resourcesInterface) const
void setBlendMode(QString value)
void setJitter(qint32 value)
void setOpacity(qint32 value)
psd_fill_type fillType() const
void setSpread(qint32 value)
void setSize(qint32 value)
#define KIS_ASSERT_RECOVER_RETURN(cond)
#define KIS_ASSERT_RECOVER_NOOP(cond)
QSharedPointer< KoAbstractGradient > KoAbstractGradientSP
bool checkCustomNameAvailable(const QString &name)
KoAbstractGradientSP fetchGradientLazy(KoAbstractGradientSP gradient, KisCanvasResourceProvider *resourceProvider)
QString createNewAslPath(QString resourceFolderPath, QString filename)
QString selectAvailableStyleName(const QString &name)
void setText(QSpinBox *spinBox, const QStringView textTemplate)
const QString LayerStyles
rgba palette[MAX_PALETTE]
The KisPSDLayerStyle class implements loading, saving and applying the PSD layer effects.
static KoResourceServerProvider * instance()
KoResourceServer< KoAbstractGradient > * gradientServer
QString md5Sum(bool generateIfEmpty=true) const
void setTechnique(psd_technique_type value)
void setStyle(psd_bevel_style value)
void setTextureDepth(int value)
QString shadowBlendMode() const
psd_technique_type technique() const
void setShadowColor(KoColor value)
qint32 highlightOpacity() const
psd_bevel_style style() const
void setTextureScale(int value)
psd_direction direction() const
bool glossAntiAliased() const
void setDirection(psd_direction value)
KoPatternSP texturePattern(KisResourcesInterfaceSP resourcesInterface) const
void setTexturePattern(KoPatternSP value)
void setHighlightBlendMode(QString value)
void setAltitude(int value)
bool textureInvert() const
void setHighlightColor(KoColor value)
void setContourRange(int value)
qint32 shadowOpacity() const
bool textureAlignWithLayer() const
void setShadowBlendMode(QString value)
QString highlightBlendMode() const
void setGlossAntiAliased(bool value)
KoColor shadowColor() const
KoColor highlightColor() const
void setTextureAlignWithLayer(bool value)
void setShadowOpacity(qint32 value)
void setSoften(int value)
void setTextureInvert(bool value)
void setHighlightOpacity(qint32 value)
KoPatternSP pattern(KisResourcesInterfaceSP resourcesInterface) const
void setReverse(bool value)
void setAlignWithLayer(bool value)
void setStyle(psd_gradient_style value)
bool alignWithLayer() const
void setDither(bool value)
psd_gradient_style style() const
void setPattern(KoPatternSP value)
void setInvert(bool value)
void setPosition(psd_stroke_position value)
psd_stroke_position position() const