Krita Source Code Documentation
Loading...
Searching...
No Matches
Stroke Class Reference

#include <kis_dlg_layer_style.h>

+ Inheritance diagram for Stroke:

Signals

void configChanged ()
 

Public Member Functions

void fetchStroke (psd_layer_effects_stroke *stroke, QSharedPointer< KisLocalStrokeResources > uploadResourcesInterface) const
 
void setStroke (const psd_layer_effects_stroke *stroke, KisResourcesInterfaceSP resourcesInterface)
 
 Stroke (KisCanvasResourceProvider *resourceProvider, QWidget *parent)
 

Private Attributes

Ui::WdgStroke ui
 

Detailed Description

Definition at line 187 of file kis_dlg_layer_style.h.

Constructor & Destructor Documentation

◆ Stroke()

Stroke::Stroke ( KisCanvasResourceProvider * resourceProvider,
QWidget * parent )

Definition at line 1477 of file kis_dlg_layer_style.cpp.

1478 : QWidget(parent)
1479{
1480 ui.setupUi(this);
1481
1482 ui.intSize->setRange(0, 250);
1483 ui.intSize->setSuffix(i18n(" px"));
1484 ui.intSize->setExponentRatio(2.0);
1485
1486 ui.intOpacity->setRange(0, 100);
1487 KisSpinBoxI18nHelper::setText(ui.intOpacity, i18nc("{n} is the number value, % is the percent sign", "{n}%"));
1488
1489 ui.intScale->setRange(0, 100);
1490 KisSpinBoxI18nHelper::setText(ui.intScale, i18nc("{n} is the number value, % is the percent sign", "{n}%"));
1491
1492 ui.intScale_2->setRange(0, 100);
1493 KisSpinBoxI18nHelper::setText(ui.intScale_2, i18nc("{n} is the number value, % is the percent sign", "{n}%"));
1494
1495 ui.cmbGradient->setCanvasResourcesInterface(resourceProvider->resourceManager()->canvasResourcesInterface());
1496
1497 connect(ui.cmbFillType, SIGNAL(currentIndexChanged(int)), ui.fillStack, SLOT(setCurrentIndex(int)));
1498
1499 connect(ui.intSize, SIGNAL(valueChanged(int)), SIGNAL(configChanged()));
1500 connect(ui.cmbPosition, SIGNAL(currentIndexChanged(int)), SIGNAL(configChanged()));
1501 connect(ui.cmbCompositeOp, SIGNAL(currentIndexChanged(int)), SIGNAL(configChanged()));
1502 connect(ui.intOpacity, SIGNAL(valueChanged(int)), SIGNAL(configChanged()));
1503
1504 connect(ui.cmbFillType, SIGNAL(currentIndexChanged(int)), SIGNAL(configChanged()));
1505
1506 connect(ui.bnColor, SIGNAL(changed(KoColor)), SIGNAL(configChanged()));
1507
1508 connect(ui.cmbGradient, SIGNAL(gradientChanged(KoAbstractGradientSP)), SIGNAL(configChanged()));
1509 connect(ui.chkReverse, SIGNAL(toggled(bool)), SIGNAL(configChanged()));
1510 connect(ui.cmbStyle, SIGNAL(currentIndexChanged(int)), SIGNAL(configChanged()));
1511 connect(ui.chkAlignWithLayer, SIGNAL(toggled(bool)), SIGNAL(configChanged()));
1512 connect(ui.intScale, SIGNAL(valueChanged(int)), SIGNAL(configChanged()));
1513
1514 connect(ui.patternChooser, SIGNAL(resourceSelected(KoResourceSP )), SIGNAL(configChanged()));
1515 connect(ui.angleSelector, SIGNAL(configChanged()), SIGNAL(configChanged()));
1516
1517 connect(ui.chkLinkWithLayer, SIGNAL(toggled(bool)), SIGNAL(configChanged()));
1518 connect(ui.intScale_2, SIGNAL(valueChanged(int)), SIGNAL(configChanged()));
1519
1520 // cold initialization
1521 ui.fillStack->setCurrentIndex(ui.cmbFillType->currentIndex());
1522}
KoCanvasResourceProvider * resourceManager()
KoCanvasResourcesInterfaceSP canvasResourcesInterface() const
void configChanged()
Ui::WdgStroke ui
void setText(QSpinBox *spinBox, const QStringView textTemplate)

References KoCanvasResourceProvider::canvasResourcesInterface(), configChanged(), KisCanvasResourceProvider::resourceManager(), KisSpinBoxI18nHelper::setText(), and ui.

Member Function Documentation

◆ configChanged

void Stroke::configChanged ( )
signal

◆ fetchStroke()

void Stroke::fetchStroke ( psd_layer_effects_stroke * stroke,
QSharedPointer< KisLocalStrokeResources > uploadResourcesInterface ) const

Definition at line 1555 of file kis_dlg_layer_style.cpp.

1556{
1557 stroke->setSize(ui.intSize->value());
1558 stroke->setPosition((psd_stroke_position)ui.cmbPosition->currentIndex());
1559 stroke->setBlendMode(ui.cmbCompositeOp->selectedCompositeOp().id());
1560 stroke->setOpacity(ui.intOpacity->value());
1561
1562 psd_fill_type fillType = (psd_fill_type)ui.cmbFillType->currentIndex();
1563 stroke->setFillType(fillType);
1564
1565 stroke->setColor(ui.bnColor->color());
1566
1567 auto gradient = ui.cmbGradient->gradient();
1568 if (gradient) {
1569 auto clonedGradient = cloneAndPrepareGradientFromGUI(gradient);
1570 uploadResourcesInterface->addResource(clonedGradient);
1571 stroke->setGradient(clonedGradient);
1572 }
1573
1574 stroke->setReverse(ui.chkReverse->isChecked());
1575 stroke->setStyle((psd_gradient_style)ui.cmbStyle->currentIndex());
1576 if (fillType == psd_fill_gradient) {
1577 // there is only one boolean value, and it's shared with pattern's "link with layer"
1578 stroke->setAlignWithLayer(ui.chkAlignWithLayer->isChecked());
1579 }
1580 stroke->setAngle(ui.angleSelector->value());
1581 stroke->setScale(ui.intScale->value());
1582
1583 auto pattern = ui.patternChooser->currentResource(true).staticCast<KoPattern>();
1584 if (pattern) {
1585 auto clonedPattern = pattern->clone().dynamicCast<KoPattern>();
1586 uploadResourcesInterface->addResource(clonedPattern);
1587 stroke->setPattern(clonedPattern);
1588 }
1589
1590 if (fillType == psd_fill_pattern) {
1591 // there is only one boolean value, and it's shared with gradient's "align with layer"
1592 stroke->setAlignWithLayer(ui.chkLinkWithLayer->isChecked());
1593 }
1594 stroke->setScale(ui.intScale->value());
1595}
Write API docs here.
Definition KoPattern.h:21
KoResourceSP clone() const override
Definition KoPattern.cpp:74
void setGradient(KoAbstractGradientSP value)
Definition psd.h:467
void setColor(KoColor value)
Definition psd.h:377
void setFillType(psd_fill_type value)
Definition psd.h:447
void setAngle(qint32 value)
Definition psd.h:392
void setBlendMode(QString value)
Definition psd.h:372
void setOpacity(qint32 value)
Definition psd.h:387
void setSize(qint32 value)
Definition psd.h:412
KoAbstractGradientSP cloneAndPrepareGradientFromGUI(KoAbstractGradientSP gradient)
psd_gradient_style
Definition psd.h:101
psd_fill_type
Definition psd.h:123
@ psd_fill_gradient
Definition psd.h:125
@ psd_fill_pattern
Definition psd.h:126
psd_stroke_position
Definition psd.h:121
void setReverse(bool value)
Definition psd.h:1094
void setAlignWithLayer(bool value)
Definition psd.h:1084
void setStyle(psd_gradient_style value)
Definition psd.h:1099
void setScale(int value)
Definition psd.h:1079
void setPattern(KoPatternSP value)
Definition psd.h:1115
void setPosition(psd_stroke_position value)
Definition psd.h:1284

References KoPattern::clone(), cloneAndPrepareGradientFromGUI(), psd_fill_gradient, psd_fill_pattern, psd_layer_effects_overlay_base::setAlignWithLayer(), psd_layer_effects_shadow_base::setAngle(), psd_layer_effects_shadow_base::setBlendMode(), psd_layer_effects_shadow_base::setColor(), psd_layer_effects_shadow_base::setFillType(), psd_layer_effects_shadow_base::setGradient(), psd_layer_effects_shadow_base::setOpacity(), psd_layer_effects_overlay_base::setPattern(), psd_layer_effects_stroke::setPosition(), psd_layer_effects_overlay_base::setReverse(), psd_layer_effects_overlay_base::setScale(), psd_layer_effects_shadow_base::setSize(), psd_layer_effects_overlay_base::setStyle(), and ui.

◆ setStroke()

void Stroke::setStroke ( const psd_layer_effects_stroke * stroke,
KisResourcesInterfaceSP resourcesInterface )

Definition at line 1524 of file kis_dlg_layer_style.cpp.

1525{
1526 ui.intSize->setValue(stroke->size());
1527 ui.cmbPosition->setCurrentIndex((int)stroke->position());
1528 ui.cmbCompositeOp->selectCompositeOp(KoID(stroke->blendMode()));
1529 ui.intOpacity->setValue(stroke->opacity());
1530
1531 ui.cmbFillType->setCurrentIndex((int)stroke->fillType());
1532 ui.bnColor->setColor(stroke->color());
1533
1534 KoAbstractGradientSP gradient = fetchGradientLazy(stroke->gradientLink(), resourcesInterface);
1535 if (gradient) {
1536 ui.cmbGradient->setGradient(gradient);
1537 }
1538
1539 ui.chkReverse->setChecked(stroke->antiAliased());
1540 ui.cmbStyle->setCurrentIndex((int)stroke->style());
1541 ui.chkAlignWithLayer->setChecked(stroke->alignWithLayer());
1542 ui.chkAlignWithLayer->setCheckable(true);
1543 ui.angleSelector->setValue(stroke->angle());
1544 ui.intScale->setValue(stroke->scale());
1545
1546 KoPatternSP pattern = fetchPatternLazy(stroke->patternLink(), resourcesInterface);
1547 if (pattern) {
1548 ui.patternChooser->setCurrentPattern(pattern);
1549 }
1550
1551 ui.chkLinkWithLayer->setChecked(stroke->alignWithLayer());
1552 ui.intScale_2->setValue(stroke->scale());
1553}
Definition KoID.h:30
qint32 opacity() const
Definition psd.h:281
QString blendMode() const
Definition psd.h:266
KoColor color() const
Definition psd.h:271
qint32 angle() const
Definition psd.h:286
qint32 size() const
Definition psd.h:306
psd_fill_type fillType() const
Definition psd.h:341
bool antiAliased() const
Definition psd.h:316
KoResourceSignature gradientLink() const
Definition psd.h:361
KoPatternSP fetchPatternLazy(KoResourceSignature signature, KisResourcesInterfaceSP resourcesInterface)
KoAbstractGradientSP fetchGradientLazy(KoResourceSignature signature, KisResourcesInterfaceSP resourcesInterface)
KoResourceSignature patternLink() const
Definition psd.h:1057
bool alignWithLayer() const
Definition psd.h:1027
psd_gradient_style style() const
Definition psd.h:1042
psd_stroke_position position() const
Definition psd.h:1280

References psd_layer_effects_overlay_base::alignWithLayer(), psd_layer_effects_shadow_base::angle(), psd_layer_effects_shadow_base::antiAliased(), psd_layer_effects_shadow_base::blendMode(), psd_layer_effects_shadow_base::color(), fetchGradientLazy(), fetchPatternLazy(), psd_layer_effects_shadow_base::fillType(), psd_layer_effects_shadow_base::gradientLink(), psd_layer_effects_shadow_base::opacity(), psd_layer_effects_overlay_base::patternLink(), psd_layer_effects_stroke::position(), psd_layer_effects_overlay_base::scale(), psd_layer_effects_shadow_base::size(), psd_layer_effects_overlay_base::style(), and ui.

Member Data Documentation

◆ ui

Ui::WdgStroke Stroke::ui
private

Definition at line 198 of file kis_dlg_layer_style.h.


The documentation for this class was generated from the following files: