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

#include <kis_wdg_pattern.h>

+ Inheritance diagram for KisWdgPattern:

Public Member Functions

KisPropertiesConfigurationSP configuration () const override
 
 KisWdgPattern (QWidget *parent=0)
 
void setConfiguration (const KisPropertiesConfigurationSP) override
 
const Ui_WdgPatternOptions * widget () const
 
 ~KisWdgPattern () override
 
- Public Member Functions inherited from KisConfigWidget
virtual KoCanvasResourcesInterfaceSP canvasResourcesInterface () const
 
virtual void setCanvasResourcesInterface (KoCanvasResourcesInterfaceSP canvasResourcesInterface)
 
virtual void setView (KisViewManager *view)
 
 ~KisConfigWidget () override
 

Private Slots

void slot_sliderAlignToPixelGridX_valueChanged (int value)
 
void slot_sliderAlignToPixelGridY_valueChanged (int value)
 
void slotHeightChanged (double h)
 
void slotScaleAspectRatioChanged (bool checked)
 
void slotWidthChanged (double w)
 

Private Attributes

Ui_WdgPatternOptions * m_widget
 

Additional Inherited Members

- Signals inherited from KisConfigWidget
void sigConfigurationItemChanged ()
 
void sigConfigurationUpdated ()
 
void sigDropLockedConfig (KisPropertiesConfigurationSP p)
 
void sigSaveLockedConfig (KisPropertiesConfigurationSP p)
 
- Protected Member Functions inherited from KisConfigWidget
 KisConfigWidget (QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags(), int delay=200)
 

Detailed Description

Definition at line 16 of file kis_wdg_pattern.h.

Constructor & Destructor Documentation

◆ KisWdgPattern()

KisWdgPattern::KisWdgPattern ( QWidget * parent = 0)

Definition at line 26 of file kis_wdg_pattern.cpp.

27 : KisConfigWidget(parent)
28{
29 m_widget = new Ui_WdgPatternOptions();
30 m_widget->setupUi(this);
31 m_widget->lblPattern->setVisible(false);
32
33 m_widget->sldShearX->setRange(-500, 500, 2);
34 m_widget->sldShearX->setSoftRange(-100, 100);
35 m_widget->sldShearX->setSingleStep(1);
36 m_widget->sldShearX->setValue(0.0);
37 m_widget->sldShearY->setRange(-500, 500, 2);
38 m_widget->sldShearY->setSoftRange(-100, 100);
39 m_widget->sldShearY->setSingleStep(1);
40 m_widget->sldShearY->setValue(0.0);
41
42 m_widget->spbOffsetX->setRange(-10000, 10000);
43 m_widget->spbOffsetX->setSoftRange(-500, 500);
44 m_widget->spbOffsetX->setValue(0);
45 m_widget->spbOffsetY->setRange(-10000, 10000);
46 m_widget->spbOffsetY->setSoftRange(-500, 500);
47 m_widget->spbOffsetY->setValue(0);
48
49 m_widget->spbScaleWidth->setRange(0, 10000, 2);
50 m_widget->spbScaleWidth->setSoftRange(0, 500);
51 m_widget->spbScaleWidth->setValue(100.0);
52 m_widget->spbScaleHeight->setRange(0, 10000, 2);
53 m_widget->spbScaleHeight->setSoftRange(0, 500);
54 m_widget->spbScaleHeight->setValue(100.0);
55
56 m_widget->angleSelectorRotationX->setPrefix(i18n("X: "));
57 m_widget->angleSelectorRotationY->setPrefix(i18n("Y: "));
58 m_widget->angleSelectorRotationZ->setIncreasingDirection(KisAngleGauge::IncreasingDirection_Clockwise);
59
60 m_widget->container3DRotation->setVisible(false);
61
62 m_widget->sliderAlignToPixelGridX->setRange(1, 20);
63 m_widget->sliderAlignToPixelGridY->setRange(1, 20);
64 KisSpinBoxI18nHelper::install(m_widget->sliderAlignToPixelGridX, [](int value) {
65 // i18n: This is meant to be used in a spinbox so keep the {n} in the text
66 // and it will be substituted by the number. The text before will be
67 // used as the prefix and the text after as the suffix
68 return i18ncp("Horizontal pixel grid alignment prefix/suffix for spinboxes in pattern generator", "Every {n} repetition horizontally", "Every {n} repetitions horizontally", value);
69 });
70 KisSpinBoxI18nHelper::install(m_widget->sliderAlignToPixelGridY, [](int value) {
71 // i18n: This is meant to be used in a spinbox so keep the {n} in the text
72 // and it will be substituted by the number. The text before will be
73 // used as the prefix and the text after as the suffix
74 return i18ncp("Vertical pixel grid alignment prefix/suffix for spinboxes in pattern generator", "Every {n} repetition vertically", "Every {n} repetitions vertically", value);
75 });
76
77 connect(m_widget->patternChooser, SIGNAL(resourceSelected(KoResourceSP)), this, SIGNAL(sigConfigurationUpdated()));
78
79 connect(m_widget->sldShearX, SIGNAL(valueChanged(double)), this, SIGNAL(sigConfigurationUpdated()));
80 connect(m_widget->sldShearY, SIGNAL(valueChanged(double)), this, SIGNAL(sigConfigurationUpdated()));
81
82 connect(m_widget->spbOffsetX, SIGNAL(valueChanged(int)), this, SIGNAL(sigConfigurationUpdated()));
83 connect(m_widget->spbOffsetY, SIGNAL(valueChanged(int)), this, SIGNAL(sigConfigurationUpdated()));
84
85 connect(m_widget->spbScaleWidth, SIGNAL(valueChanged(double)), this, SLOT(slotWidthChanged(double)));
86 connect(m_widget->spbScaleHeight, SIGNAL(valueChanged(double)), this, SLOT(slotHeightChanged(double)));
87 connect(m_widget->btnLockAspectRatio, SIGNAL(keepAspectRatioChanged(bool)), this, SLOT(slotScaleAspectRatioChanged(bool)));
88
89 connect(m_widget->angleSelectorRotationX, SIGNAL(angleChanged(qreal)), this, SIGNAL(sigConfigurationUpdated()));
90 connect(m_widget->angleSelectorRotationY, SIGNAL(angleChanged(qreal)), this, SIGNAL(sigConfigurationUpdated()));
91 connect(m_widget->angleSelectorRotationZ, SIGNAL(angleChanged(qreal)), this, SIGNAL(sigConfigurationUpdated()));
92
93 connect(m_widget->checkBoxAlignToPixelGrid, SIGNAL(toggled(bool)), this, SIGNAL(sigConfigurationUpdated()));
94 connect(m_widget->sliderAlignToPixelGridX, SIGNAL(valueChanged(int)), this, SLOT(slot_sliderAlignToPixelGridX_valueChanged(int)));
95 connect(m_widget->sliderAlignToPixelGridY, SIGNAL(valueChanged(int)), this, SLOT(slot_sliderAlignToPixelGridY_valueChanged(int)));
96}
float value(const T *src, size_t ch)
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
@ IncreasingDirection_Clockwise
KisConfigWidget(QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags(), int delay=200)
void sigConfigurationUpdated()
void slot_sliderAlignToPixelGridY_valueChanged(int value)
void slotWidthChanged(double w)
Ui_WdgPatternOptions * m_widget
void slot_sliderAlignToPixelGridX_valueChanged(int value)
void slotScaleAspectRatioChanged(bool checked)
void slotHeightChanged(double h)
void install(QSpinBox *spinBox, std::function< QString(int)> messageFn)

References connect(), KisAngleGauge::IncreasingDirection_Clockwise, KisSpinBoxI18nHelper::install(), m_widget, KisConfigWidget::sigConfigurationUpdated(), slot_sliderAlignToPixelGridX_valueChanged(), slot_sliderAlignToPixelGridY_valueChanged(), slotHeightChanged(), slotScaleAspectRatioChanged(), slotWidthChanged(), and value().

◆ ~KisWdgPattern()

KisWdgPattern::~KisWdgPattern ( )
override

Definition at line 98 of file kis_wdg_pattern.cpp.

99{
100 delete m_widget;
101}

References m_widget.

Member Function Documentation

◆ configuration()

KisPropertiesConfigurationSP KisWdgPattern::configuration ( ) const
overridevirtual
Returns
the configuration

Implements KisConfigWidget.

Definition at line 141 of file kis_wdg_pattern.cpp.

142{
143 KisGeneratorSP generator = KisGeneratorRegistry::instance()->get("pattern");
145
146 QVariant v;
147 KoResourceSP pattern = widget()->patternChooser->currentResource(true);
148 if (pattern) {
149 config->setProperty("pattern", pattern->name());
150 config->setProperty("md5sum", pattern->md5Sum());
151 config->setProperty("fileName", pattern->filename());
152 }
153
154 config->setProperty("transform_offset_x", m_widget->spbOffsetX->value());
155 config->setProperty("transform_offset_y", m_widget->spbOffsetY->value());
156
157 config->setProperty("transform_scale_x", m_widget->spbScaleWidth->value() / 100);
158 config->setProperty("transform_scale_y", m_widget->spbScaleHeight->value() / 100);
159
160 config->setProperty("transform_keep_scale_aspect", m_widget->btnLockAspectRatio->keepAspectRatio());
161
162 config->setProperty("transform_shear_x", widget()->sldShearX->value() / 100);
163 config->setProperty("transform_shear_y", widget()->sldShearY->value() / 100);
164
165 config->setProperty("transform_rotation_x", widget()->angleSelectorRotationX->angle());
166 config->setProperty("transform_rotation_y", widget()->angleSelectorRotationY->angle());
167 config->setProperty("transform_rotation_z", widget()->angleSelectorRotationZ->angle());
168
169 config->setProperty("transform_align_to_pixel_grid", m_widget->checkBoxAlignToPixelGrid->isChecked());
170 config->setProperty("transform_align_to_pixel_grid_x", m_widget->sliderAlignToPixelGridX->value());
171 config->setProperty("transform_align_to_pixel_grid_y", m_widget->sliderAlignToPixelGridY->value());
172
173 return config;
174}
qreal v
static KisGeneratorRegistry * instance()
static KisResourcesInterfaceSP instance()
const Ui_WdgPatternOptions * widget() const
T get(const QString &id) const
virtual KisFilterConfigurationSP factoryConfiguration(KisResourcesInterfaceSP resourcesInterface) const

References KisBaseProcessor::factoryConfiguration(), KoGenericRegistry< T >::get(), KisGeneratorRegistry::instance(), KisGlobalResourcesInterface::instance(), m_widget, v, and widget().

◆ setConfiguration()

void KisWdgPattern::setConfiguration ( const KisPropertiesConfigurationSP config)
overridevirtual
Parameters
configthe configuration for this configuration widget.

Implements KisConfigWidget.

Definition at line 104 of file kis_wdg_pattern.cpp.

105{
107
108 {
109 KisSignalsBlocker blocker1(m_widget->patternChooser, m_widget->spbOffsetX, m_widget->spbOffsetY,
110 m_widget->spbScaleWidth, m_widget->spbScaleHeight, m_widget->btnLockAspectRatio);
111 KisSignalsBlocker blocker2(m_widget->sldShearX, m_widget->sldShearY, m_widget->angleSelectorRotationX,
112 m_widget->angleSelectorRotationY, m_widget->angleSelectorRotationZ);
113 KisSignalsBlocker blocker3(m_widget->checkBoxAlignToPixelGrid, m_widget->sliderAlignToPixelGridX,
114 m_widget->sliderAlignToPixelGridY);
115
116 QString md5sum = config->getString("md5sum");
117 QString patternName = config->getString("pattern", "Grid01.pat");
118 KoPatternSP pattern = source.bestMatch(md5sum, "", patternName);
119 widget()->patternChooser->setCurrentPattern(pattern ? pattern : source.fallbackResource());
120 m_widget->spbOffsetX->setValue(config->getInt("transform_offset_x", 0));
121 m_widget->spbOffsetY->setValue(config->getInt("transform_offset_y", 0));
122
123 m_widget->spbScaleWidth->setValue(config->getDouble("transform_scale_x", 1.0) * 100);
124 m_widget->spbScaleHeight->setValue(config->getDouble("transform_scale_y", 1.0) * 100);
125 m_widget->btnLockAspectRatio->setKeepAspectRatio(config->getBool("transform_keep_scale_aspect", true));
126
127 m_widget->sldShearX->setValue(config->getDouble("transform_shear_x", 0.0) * 100);
128 m_widget->sldShearY->setValue(config->getDouble("transform_shear_y", 0.0) * 100);
129
130 widget()->angleSelectorRotationX->setAngle(config->getDouble("transform_rotation_x", 0.0));
131 widget()->angleSelectorRotationY->setAngle(config->getDouble("transform_rotation_y", 0.0));
132 widget()->angleSelectorRotationZ->setAngle(config->getDouble("transform_rotation_z", 0.0));
133
134 m_widget->checkBoxAlignToPixelGrid->setChecked(config->getBool("transform_align_to_pixel_grid", false));
135 m_widget->sliderAlignToPixelGridX->setValue(config->getInt("transform_align_to_pixel_grid_x", 1));
136 m_widget->sliderAlignToPixelGridY->setValue(config->getInt("transform_align_to_pixel_grid_y", 1));
137 }
139}
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
void sigConfigurationItemChanged()
Write API docs here.
Definition KoPattern.h:21
const QString Patterns

References KisGlobalResourcesInterface::instance(), m_widget, ResourceType::Patterns, KisConfigWidget::sigConfigurationItemChanged(), source(), and widget().

◆ slot_sliderAlignToPixelGridX_valueChanged

void KisWdgPattern::slot_sliderAlignToPixelGridX_valueChanged ( int value)
privateslot

Definition at line 203 of file kis_wdg_pattern.cpp.

204{
205 Q_UNUSED(value);
206 if (m_widget->checkBoxAlignToPixelGrid->isChecked()) {
208 }
209}

References m_widget, KisConfigWidget::sigConfigurationItemChanged(), and value().

◆ slot_sliderAlignToPixelGridY_valueChanged

void KisWdgPattern::slot_sliderAlignToPixelGridY_valueChanged ( int value)
privateslot

Definition at line 211 of file kis_wdg_pattern.cpp.

212{
213 Q_UNUSED(value);
214 if (m_widget->checkBoxAlignToPixelGrid->isChecked()) {
216 }
217}

References m_widget, KisConfigWidget::sigConfigurationItemChanged(), and value().

◆ slotHeightChanged

void KisWdgPattern::slotHeightChanged ( double h)
privateslot

Definition at line 185 of file kis_wdg_pattern.cpp.

186{
187 if (m_widget->btnLockAspectRatio->keepAspectRatio()) {
188 KisSignalsBlocker blocker(m_widget->spbScaleWidth);
189 m_widget->spbScaleWidth->setValue(h);
190 }
192}

References m_widget, and KisConfigWidget::sigConfigurationItemChanged().

◆ slotScaleAspectRatioChanged

void KisWdgPattern::slotScaleAspectRatioChanged ( bool checked)
privateslot

Definition at line 194 of file kis_wdg_pattern.cpp.

195{
196 if (checked && m_widget->spbScaleHeight->value() != m_widget->spbScaleWidth->value()) {
197 KisSignalsBlocker blocker(m_widget->spbScaleHeight);
198 m_widget->spbScaleHeight->setValue(m_widget->spbScaleWidth->value());
200 }
201}

References m_widget, and KisConfigWidget::sigConfigurationItemChanged().

◆ slotWidthChanged

void KisWdgPattern::slotWidthChanged ( double w)
privateslot

Definition at line 176 of file kis_wdg_pattern.cpp.

177{
178 if (m_widget->btnLockAspectRatio->keepAspectRatio()) {
179 KisSignalsBlocker blocker(m_widget->spbScaleHeight);
180 m_widget->spbScaleHeight->setValue(w);
181 }
183}

References m_widget, and KisConfigWidget::sigConfigurationItemChanged().

◆ widget()

const Ui_WdgPatternOptions * KisWdgPattern::widget ( ) const
inline

Definition at line 23 of file kis_wdg_pattern.h.

23 {
24 return m_widget;
25 }

References m_widget.

Member Data Documentation

◆ m_widget

Ui_WdgPatternOptions* KisWdgPattern::m_widget
private

Definition at line 36 of file kis_wdg_pattern.h.


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