[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [calligra] krita/plugins/paintops/libpaintop: BUG:331592 Fix memory leak when creating strokes
From: Boudewijn Rempt <boud () valdyas ! org>
Date: 2014-03-31 20:34:01
Message-ID: E1WUiu9-0002ZL-PK () scm ! kde ! org
[Download RAW message or body]
Git commit a9271d26288b7b4dc1d3e76a2dbd99e18d0622d4 by Boudewijn Rempt.
Committed on 31/03/2014 at 20:22.
Pushed by rempt into branch 'master'.
BUG:331592 Fix memory leak when creating strokes
Use KisShared to handle memory management of the sensor objects that
get created when making a stroke.
M +21 -26 krita/plugins/paintops/libpaintop/kis_curve_option.cpp
M +5 -5 krita/plugins/paintops/libpaintop/kis_curve_option.h
M +4 -4 krita/plugins/paintops/libpaintop/kis_curve_option_widget.cpp
M +4 -3 krita/plugins/paintops/libpaintop/kis_curve_option_widget.h
M +4 -6 krita/plugins/paintops/libpaintop/kis_dynamic_sensor.cc
M +14 -5 krita/plugins/paintops/libpaintop/kis_dynamic_sensor.h
M +4 -4 krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.cpp
M +5 -5 krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.h
M +6 -6 krita/plugins/paintops/libpaintop/kis_multi_sensors_selector.cpp
M +6 -5 krita/plugins/paintops/libpaintop/kis_multi_sensors_selector.h
M +1 -1 krita/plugins/paintops/libpaintop/kis_pressure_opacity_option.cpp
M +3 -6 krita/plugins/paintops/libpaintop/kis_pressure_rotation_option.cpp
M +2 -2 krita/plugins/paintops/libpaintop/tests/kis_sensors_test.cpp
M +2 -3 krita/plugins/paintops/libpaintop/tests/kis_sensors_test.h
http://commits.kde.org/calligra/a9271d26288b7b4dc1d3e76a2dbd99e18d0622d4
diff --git a/krita/plugins/paintops/libpaintop/kis_curve_option.cpp \
b/krita/plugins/paintops/libpaintop/kis_curve_option.cpp index f77f78c..add3499 \
100644
--- a/krita/plugins/paintops/libpaintop/kis_curve_option.cpp
+++ b/krita/plugins/paintops/libpaintop/kis_curve_option.cpp
@@ -30,10 +30,10 @@ KisCurveOption::KisCurveOption(const QString & label, const \
QString& name, const , m_checked(checked)
, m_useCurve(true)
, m_useSameCurve(true)
- , m_separateCurveValue(false)
+ , m_separateCurveValue(false)
{
foreach (const KoID& sensorId, KisDynamicSensor::sensorsIds()) {
- KisDynamicSensor *sensor = KisDynamicSensor::id2Sensor(sensorId);
+ KisDynamicSensorSP sensor = KisDynamicSensor::id2Sensor(sensorId);
sensor->setActive(false);
replaceSensor(sensor);
}
@@ -47,9 +47,8 @@ KisCurveOption::KisCurveOption(const QString & label, const \
QString& name, const
KisCurveOption::~KisCurveOption()
{
- QList<KisDynamicSensor*> sensors = m_sensorMap.values();
m_sensorMap.clear();
- qDeleteAll(sensors);
+
}
const QString& KisCurveOption::name() const
@@ -84,7 +83,7 @@ qreal KisCurveOption::value() const
void KisCurveOption::resetAllSensors()
{
- foreach (KisDynamicSensor *sensor, m_sensorMap.values()) {
+ foreach (KisDynamicSensorSP sensor, m_sensorMap.values()) {
if (sensor->isActive()) {
sensor->reset();
}
@@ -106,7 +105,7 @@ void \
KisCurveOption::writeOptionSetting(KisPropertiesConfiguration* setting) con \
doc.appendChild(root); root.setAttribute("id", "sensorslist");
- foreach (KisDynamicSensor* sensor, activeSensors()) {
+ foreach (KisDynamicSensorSP sensor, activeSensors()) {
QDomElement childelt = doc.createElement("ChildSensor");
sensor->toXML(doc, childelt);
root.appendChild(childelt);
@@ -144,7 +143,7 @@ void KisCurveOption::readNamedOptionSetting(const QString& \
prefix, const KisProp
QString sensorDefinition = setting->getString(prefix + "Sensor");
if (!sensorDefinition.contains("sensorslist")) {
- KisDynamicSensor *s = KisDynamicSensor::createFromXML(sensorDefinition);
+ KisDynamicSensorSP s = KisDynamicSensor::createFromXML(sensorDefinition);
if (s) {
replaceSensor(s);
s->setActive(true);
@@ -160,7 +159,7 @@ void KisCurveOption::readNamedOptionSetting(const QString& \
prefix, const KisProp if (node.isElement()) {
QDomElement childelt = node.toElement();
if (childelt.tagName() == "ChildSensor") {
- KisDynamicSensor* s = KisDynamicSensor::createFromXML(childelt);
+ KisDynamicSensorSP s = \
KisDynamicSensor::createFromXML(childelt); if (s) {
replaceSensor(s);
s->setActive(true);
@@ -178,7 +177,7 @@ void KisCurveOption::readNamedOptionSetting(const QString& \
prefix, const KisProp if (!setting->getString(prefix + "Sensor").contains("curve")) \
{ //qDebug() << "\told format";
if (setting->getBool("Custom" + prefix, false)) {
- foreach(KisDynamicSensor *s, m_sensorMap.values()) {
+ foreach(KisDynamicSensorSP s, m_sensorMap.values()) {
s->setCurve(setting->getCubicCurve("Curve" + prefix));
}
}
@@ -201,17 +200,13 @@ void KisCurveOption::readNamedOptionSetting(const QString& \
prefix, const KisProp //qDebug() << "-----------------";
}
-void KisCurveOption::replaceSensor(KisDynamicSensor *s)
+void KisCurveOption::replaceSensor(KisDynamicSensorSP s)
{
Q_ASSERT(s);
-
- if (m_sensorMap.contains(s->id()) && m_sensorMap[s->id()] != s) {
- delete m_sensorMap.take(s->id());
- }
m_sensorMap[s->id()] = s;
}
-KisDynamicSensor *KisCurveOption::sensor(const QString& sensorId, bool active) const
+KisDynamicSensorSP KisCurveOption::sensor(const QString& sensorId, bool active) \
const {
if (m_sensorMap.contains(sensorId)) {
if (!active) {
@@ -266,12 +261,12 @@ void KisCurveOption::setCurve(const QString &sensorId, bool \
useSameCurve, const // No switch in state, don't mess with the cache
if (useSameCurve == m_useSameCurve) {
if (useSameCurve) {
- foreach(KisDynamicSensor *s, m_sensorMap.values()) {
+ foreach(KisDynamicSensorSP s, m_sensorMap.values()) {
s->setCurve(curve);
}
}
else {
- KisDynamicSensor *s = sensor(sensorId, false);
+ KisDynamicSensorSP s = sensor(sensorId, false);
if (s) {
s->setCurve(curve);
}
@@ -283,14 +278,14 @@ void KisCurveOption::setCurve(const QString &sensorId, bool \
useSameCurve, const if (!m_useSameCurve && useSameCurve) {
// Copy the custom curves to the cache and set the new curve on all \
sensors, active or not m_curveCache.clear();
- foreach(KisDynamicSensor *s, m_sensorMap.values()) {
+ foreach(KisDynamicSensorSP s, m_sensorMap.values()) {
m_curveCache[s->id()] = s->curve();
s->setCurve(curve);
}
}
else { //if (m_useSameCurve && !useSameCurve)
// Restore the cached curves
- KisDynamicSensor *s = 0;
+ KisDynamicSensorSP s = 0;
foreach(QString id, m_curveCache.keys()) {
if (m_sensorMap.contains(id)) {
s = m_sensorMap[id];
@@ -359,7 +354,7 @@ double KisCurveOption::computeValue(const KisPaintInformation& \
info) const }
else {
qreal t = 1.0;
- foreach (KisDynamicSensor* s, m_sensorMap.values()) {
+ foreach (KisDynamicSensorSP s, m_sensorMap.values()) {
////qDebug() << "\tTesting" << s->name() << s->isActive();
if (s->isActive()) {
t *= s->parameter(info);
@@ -374,10 +369,10 @@ double KisCurveOption::computeValue(const KisPaintInformation& \
info) const }
}
-QList<KisDynamicSensor*> KisCurveOption::sensors()
+QList<KisDynamicSensorSP> KisCurveOption::sensors()
{
- QList<KisDynamicSensor*> sensorList;
- foreach(KisDynamicSensor* sensor, m_sensorMap.values()) {
+ QList<KisDynamicSensorSP> sensorList;
+ foreach(KisDynamicSensorSP sensor, m_sensorMap.values()) {
if (sensor->isActive()) {
sensorList << sensor;
}
@@ -387,10 +382,10 @@ QList<KisDynamicSensor*> KisCurveOption::sensors()
return m_sensorMap.values();
}
-QList<KisDynamicSensor*> KisCurveOption::activeSensors() const
+QList<KisDynamicSensorSP> KisCurveOption::activeSensors() const
{
- QList<KisDynamicSensor*> sensorList;
- foreach(KisDynamicSensor* sensor, m_sensorMap.values()) {
+ QList<KisDynamicSensorSP> sensorList;
+ foreach(KisDynamicSensorSP sensor, m_sensorMap.values()) {
if (sensor->isActive()) {
sensorList << sensor;
}
diff --git a/krita/plugins/paintops/libpaintop/kis_curve_option.h \
b/krita/plugins/paintops/libpaintop/kis_curve_option.h index 9a3ab6f..a4bfdf0 100644
--- a/krita/plugins/paintops/libpaintop/kis_curve_option.h
+++ b/krita/plugins/paintops/libpaintop/kis_curve_option.h
@@ -65,10 +65,10 @@ public:
qreal value() const;
void resetAllSensors();
- KisDynamicSensor *sensor(const QString &sensorId, bool active) const;
- void replaceSensor(KisDynamicSensor *sensor);
- QList<KisDynamicSensor*> sensors();
- QList<KisDynamicSensor*> activeSensors() const;
+ KisDynamicSensorSP sensor(const QString &sensorId, bool active) const;
+ void replaceSensor(KisDynamicSensorSP sensor);
+ QList<KisDynamicSensorSP> sensors();
+ QList<KisDynamicSensorSP> activeSensors() const;
bool isCheckable();
bool isChecked() const;
@@ -112,7 +112,7 @@ protected:
bool m_useSameCurve;
bool m_separateCurveValue;
- QMap<QString, KisDynamicSensor*> m_sensorMap;
+ QMap<QString, KisDynamicSensorSP> m_sensorMap;
QMap<QString, KisCubicCurve> m_curveCache;
private:
diff --git a/krita/plugins/paintops/libpaintop/kis_curve_option_widget.cpp \
b/krita/plugins/paintops/libpaintop/kis_curve_option_widget.cpp index \
4d82b50..c3ea0e8 100644
--- a/krita/plugins/paintops/libpaintop/kis_curve_option_widget.cpp
+++ b/krita/plugins/paintops/libpaintop/kis_curve_option_widget.cpp
@@ -53,8 +53,8 @@ KisCurveOptionWidget::KisCurveOptionWidget(KisCurveOption* \
curveOption, bool hid
connect(m_curveOptionWidget->curveWidget, SIGNAL(modified()), this, \
SLOT(transferCurve()));
connect(m_curveOptionWidget->sensorSelector, SIGNAL(parametersChanged()), \
SIGNAL(sigSettingChanged()));
- connect(m_curveOptionWidget->sensorSelector, \
SIGNAL(highlightedSensorChanged(KisDynamicSensor *)), \
SLOT(updateSensorCurveLabels(KisDynamicSensor *)));
- connect(m_curveOptionWidget->sensorSelector, \
SIGNAL(highlightedSensorChanged(KisDynamicSensor *)), \
SLOT(updateCurve(KisDynamicSensor *))); + \
connect(m_curveOptionWidget->sensorSelector, \
SIGNAL(highlightedSensorChanged(KisDynamicSensorSP )), \
SLOT(updateSensorCurveLabels(KisDynamicSensorSP ))); + \
connect(m_curveOptionWidget->sensorSelector, \
SIGNAL(highlightedSensorChanged(KisDynamicSensorSP )), \
SLOT(updateCurve(KisDynamicSensorSP )));
connect(m_curveOptionWidget->checkBoxUseSameCurve, SIGNAL(stateChanged(int)), \
SLOT(transferCurve()));
m_curveOptionWidget->label_ymin->setText(curveOption->minimumLabel());
@@ -137,7 +137,7 @@ void KisCurveOptionWidget::transferCurve()
emit sigSettingChanged();
}
-void KisCurveOptionWidget::updateSensorCurveLabels(KisDynamicSensor *sensor)
+void KisCurveOptionWidget::updateSensorCurveLabels(KisDynamicSensorSP sensor)
{
if (sensor) {
m_curveOptionWidget->label_xmin->setText(sensor->minimumLabel());
@@ -145,7 +145,7 @@ void \
KisCurveOptionWidget::updateSensorCurveLabels(KisDynamicSensor *sensor) }
}
-void KisCurveOptionWidget::updateCurve(KisDynamicSensor *sensor)
+void KisCurveOptionWidget::updateCurve(KisDynamicSensorSP sensor)
{
if (sensor) {
bool blockSignal = m_curveOptionWidget->curveWidget->blockSignals(true);
diff --git a/krita/plugins/paintops/libpaintop/kis_curve_option_widget.h \
b/krita/plugins/paintops/libpaintop/kis_curve_option_widget.h index 8d0ccf2..41ea563 \
100644
--- a/krita/plugins/paintops/libpaintop/kis_curve_option_widget.h
+++ b/krita/plugins/paintops/libpaintop/kis_curve_option_widget.h
@@ -26,7 +26,8 @@
class Ui_WdgCurveOption;
class KisCurveOption;
-class KisDynamicSensor;
+
+#include <kis_dynamic_sensor.h>
/**
* XXX; Add a reset button!
@@ -53,8 +54,8 @@ protected:
private slots:
void transferCurve();
- void updateSensorCurveLabels(KisDynamicSensor *sensor);
- void updateCurve(KisDynamicSensor *sensor);
+ void updateSensorCurveLabels(KisDynamicSensorSP sensor);
+ void updateCurve(KisDynamicSensorSP sensor);
void updateValues();
void disableWidgets(bool disable);
diff --git a/krita/plugins/paintops/libpaintop/kis_dynamic_sensor.cc \
b/krita/plugins/paintops/libpaintop/kis_dynamic_sensor.cc index 91fd83d..1e7d400 \
100644
--- a/krita/plugins/paintops/libpaintop/kis_dynamic_sensor.cc
+++ b/krita/plugins/paintops/libpaintop/kis_dynamic_sensor.cc
@@ -26,8 +26,6 @@
#include "sensors/kis_dynamic_sensor_fade.h"
#include "sensors/kis_dynamic_sensor_fuzzy.h"
-static int sensorcount = 0;
-
KisDynamicSensor::KisDynamicSensor(const KoID& id)
: m_id(id)
, m_customCurve(false)
@@ -51,7 +49,7 @@ void KisDynamicSensor::reset()
{
}
-KisDynamicSensor *KisDynamicSensor::id2Sensor(const KoID& id)
+KisDynamicSensorSP KisDynamicSensor::id2Sensor(const KoID& id)
{
if (id.id() == PressureId.id()) {
return new KisDynamicSensorPressure();
@@ -100,7 +98,7 @@ KisDynamicSensor *KisDynamicSensor::id2Sensor(const KoID& id)
}
-KisDynamicSensor *KisDynamicSensor::createFromXML(const QString& s)
+KisDynamicSensorSP KisDynamicSensor::createFromXML(const QString& s)
{
QDomDocument doc;
doc.setContent(s);
@@ -108,10 +106,10 @@ KisDynamicSensor *KisDynamicSensor::createFromXML(const \
QString& s) return createFromXML(e);
}
-KisDynamicSensor *KisDynamicSensor::createFromXML(const QDomElement& e)
+KisDynamicSensorSP KisDynamicSensor::createFromXML(const QDomElement& e)
{
QString id = e.attribute("id", "");
- KisDynamicSensor *sensor = id2Sensor(id);
+ KisDynamicSensorSP sensor = id2Sensor(id);
if (sensor) {
sensor->fromXML(e);
}
diff --git a/krita/plugins/paintops/libpaintop/kis_dynamic_sensor.h \
b/krita/plugins/paintops/libpaintop/kis_dynamic_sensor.h index 0e776e2..87497fe \
100644
--- a/krita/plugins/paintops/libpaintop/kis_dynamic_sensor.h
+++ b/krita/plugins/paintops/libpaintop/kis_dynamic_sensor.h
@@ -30,6 +30,9 @@
#include "kis_serializable_configuration.h"
#include "kis_curve_label.h"
#include <kis_cubic_curve.h>
+#include <kis_shared_ptr.h>
+#include <kis_shared.h>
+
class QWidget;
class KisPaintInformation;
@@ -50,12 +53,16 @@ const KoID PerspectiveId("perspective", ki18n("Perspective")); \
///< number depen const KoID TangentialPressureId("tangentialpressure", \
ki18n("Tangential pressure")); ///< the wheel on an airbrush device const KoID \
SensorsListId("sensorslist", "SHOULD NOT APPEAR IN THE UI !"); ///< this a non \
user-visible sensor that can store a list of other sensors, and multiply their output \
+class KisDynamicSensor;
+typedef KisSharedPtr<KisDynamicSensor> KisDynamicSensorSP;
+
+
/**
* Sensors are used to extract from KisPaintInformation a single
* double value which can be used to control the parameters of
* a brush.
*/
-class PAINTOP_EXPORT KisDynamicSensor : public KisSerializableConfiguration
+class PAINTOP_EXPORT KisDynamicSensor : public KisSerializableConfiguration, public \
KisShared {
public:
enum ParameterSign {
@@ -90,13 +97,13 @@ public:
/**
* Creates a sensor from its identifiant.
*/
- static KisDynamicSensor *id2Sensor(const KoID&);
- static KisDynamicSensor *id2Sensor(const QString& s) {
+ static KisDynamicSensorSP id2Sensor(const KoID&);
+ static KisDynamicSensorSP id2Sensor(const QString& s) {
return id2Sensor(KoID(s));
}
- static KisDynamicSensor *createFromXML(const QString&);
- static KisDynamicSensor *createFromXML(const QDomElement&);
+ static KisDynamicSensorSP createFromXML(const QString&);
+ static KisDynamicSensorSP createFromXML(const QDomElement&);
/**
* @return the list of sensors
@@ -142,6 +149,8 @@ protected:
private:
+ Q_DISABLE_COPY(KisDynamicSensor)
+
const KoID& m_id;
QString m_minimumLabel;
QString m_maximumLabel;
diff --git a/krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.cpp \
b/krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.cpp index \
3138cfd..40d0e82 100644
--- a/krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.cpp
+++ b/krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.cpp
@@ -50,7 +50,7 @@ QVariant KisMultiSensorsModel::data(const QModelIndex &index, int \
role) const }
else if (role == Qt::CheckStateRole) {
QString selectedSensorId = KisDynamicSensor::sensorsIds()[index.row()].id();
- KisDynamicSensor *sensor = m_curveOption->sensor(selectedSensorId, false);
+ KisDynamicSensorSP sensor = m_curveOption->sensor(selectedSensorId, false);
if (sensor) {
//qDebug() << sensor->id() << sensor->isActive();
return QVariant(sensor->isActive() ? Qt::Checked : Qt::Unchecked);
@@ -73,7 +73,7 @@ bool KisMultiSensorsModel::setData(const QModelIndex &index, const \
QVariant &val }
else {
//qDebug() << "Asking for" << \
KisDynamicSensor::sensorsIds()[index.row()].id();
- KisDynamicSensor *sensor = \
m_curveOption->sensor(KisDynamicSensor::sensorsIds()[index.row()].id(), false); + \
KisDynamicSensorSP sensor = \
m_curveOption->sensor(KisDynamicSensor::sensorsIds()[index.row()].id(), false); \
//qDebug() << "\tgot" << sensor; if (!sensor) {
sensor = \
KisDynamicSensor::id2Sensor(KisDynamicSensor::sensorsIds()[index.row()].id()); @@ \
-92,7 +92,7 @@ Qt::ItemFlags KisMultiSensorsModel::flags(const QModelIndex & /*index \
*/) const
return Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled;
}
-KisDynamicSensor *KisMultiSensorsModel::getSensor(const QModelIndex& index)
+KisDynamicSensorSP KisMultiSensorsModel::getSensor(const QModelIndex& index)
{
if (!index.isValid()) return 0;
QString id = KisDynamicSensor::sensorsIds()[index.row()].id();
@@ -107,7 +107,7 @@ void KisMultiSensorsModel::setCurrentCurve(const QModelIndex& \
currentIndex, cons m_curveOption->setCurve(selectedSensorId, useSameCurve, curve);
}
-QModelIndex KisMultiSensorsModel::sensorIndex(KisDynamicSensor *arg1)
+QModelIndex KisMultiSensorsModel::sensorIndex(KisDynamicSensorSP arg1)
{
return index(KisDynamicSensor::sensorsIds().indexOf(KoID(arg1->id())));
}
diff --git a/krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.h \
b/krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.h index \
a3a8e16..dc3e21f 100644
--- a/krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.h
+++ b/krita/plugins/paintops/libpaintop/kis_multi_sensors_model_p.h
@@ -19,12 +19,12 @@
#define KISMULTISENSORSMODEL_H_
#include <QAbstractListModel>
+#include <kis_dynamic_sensor.h>
class KisCubicCurve;
-class KisDynamicSensorList;
-class KisDynamicSensor;
class KisCurveOption;
+
class KisMultiSensorsModel : public QAbstractListModel
{
Q_OBJECT
@@ -44,20 +44,20 @@ public:
virtual Qt::ItemFlags flags(const QModelIndex & index) const;
- KisDynamicSensor *getSensor(const QModelIndex& index);
+ KisDynamicSensorSP getSensor(const QModelIndex& index);
void setCurrentCurve(const QModelIndex& currentIndex, const KisCubicCurve& \
curve, bool useSameCurve);
/**
* Create an index that correspond to the sensor given in argument.
*/
- QModelIndex sensorIndex(KisDynamicSensor *arg1);
+ QModelIndex sensorIndex(KisDynamicSensorSP arg1);
void resetCurveOption();
signals:
- void sensorChanged(KisDynamicSensor *sensor);
+ void sensorChanged(KisDynamicSensorSP sensor);
/**
* This signal is emitted when the parameters of sensor are changed.
diff --git a/krita/plugins/paintops/libpaintop/kis_multi_sensors_selector.cpp \
b/krita/plugins/paintops/libpaintop/kis_multi_sensors_selector.cpp index \
30d33a1..dd5202d 100644
--- a/krita/plugins/paintops/libpaintop/kis_multi_sensors_selector.cpp
+++ b/krita/plugins/paintops/libpaintop/kis_multi_sensors_selector.cpp
@@ -36,7 +36,7 @@ KisMultiSensorsSelector::KisMultiSensorsSelector(QWidget* parent)
d->currentConfigWidget = 0;
d->form.setupUi(this);
d->model = new KisMultiSensorsModel(this);
- connect(d->model, SIGNAL(sensorChanged(KisDynamicSensor *)), \
SIGNAL(sensorChanged(KisDynamicSensor *))); + connect(d->model, \
SIGNAL(sensorChanged(KisDynamicSensorSP )), SIGNAL(sensorChanged(KisDynamicSensorSP \
)));
connect(d->model, SIGNAL(parametersChanged()), SIGNAL(parametersChanged()));
connect(d->form.sensorsList, SIGNAL(activated(QModelIndex)), \
SLOT(sensorActivated(QModelIndex)));
connect(d->form.sensorsList, SIGNAL(clicked(QModelIndex)), \
SLOT(sensorActivated(QModelIndex))); @@ -52,24 +52,24 @@ \
KisMultiSensorsSelector::~KisMultiSensorsSelector() void \
KisMultiSensorsSelector::setCurveOption(KisCurveOption *curveOption) {
d->model->setCurveOption(curveOption);
- KisDynamicSensor *s = curveOption->activeSensors().first();
+ KisDynamicSensorSP s = curveOption->activeSensors().first();
if (!s) {
s = curveOption->sensors().first();
}
setCurrent(s);
}
-void KisMultiSensorsSelector::setCurrent(KisDynamicSensor *_sensor)
+void KisMultiSensorsSelector::setCurrent(KisDynamicSensorSP _sensor)
{
d->form.sensorsList->setCurrentIndex(d->model->sensorIndex(_sensor)); // make \
sure the first element is selected
- KisDynamicSensor *sensor = currentHighlighted();
+ KisDynamicSensorSP sensor = currentHighlighted();
if (!sensor) {
sensor = d->model->getSensor(d->model->index(0, 0));
}
emit(highlightedSensorChanged(sensor));
}
-KisDynamicSensor *KisMultiSensorsSelector::currentHighlighted()
+KisDynamicSensorSP KisMultiSensorsSelector::currentHighlighted()
{
return d->model->getSensor(d->form.sensorsList->currentIndex());
}
@@ -77,7 +77,7 @@ KisDynamicSensor *KisMultiSensorsSelector::currentHighlighted()
void KisMultiSensorsSelector::sensorActivated(const QModelIndex& index)
{
delete d->currentConfigWidget;
- KisDynamicSensor *sensor = d->model->getSensor(index);
+ KisDynamicSensorSP sensor = d->model->getSensor(index);
if (sensor) {
d->currentConfigWidget = \
sensor->createConfigurationWidget(d->form.widgetConfiguration, this); if \
(d->currentConfigWidget) {
diff --git a/krita/plugins/paintops/libpaintop/kis_multi_sensors_selector.h \
b/krita/plugins/paintops/libpaintop/kis_multi_sensors_selector.h index \
c9ccb89..7d21a44 100644
--- a/krita/plugins/paintops/libpaintop/kis_multi_sensors_selector.h
+++ b/krita/plugins/paintops/libpaintop/kis_multi_sensors_selector.h
@@ -20,9 +20,10 @@
class KisCubicCurve;
class QModelIndex;
-class KisDynamicSensor;
class KisCurveOption;
+#include <kis_dynamic_sensor.h>
+
class KisMultiSensorsSelector : public QWidget
{
Q_OBJECT
@@ -32,8 +33,8 @@ public:
~KisMultiSensorsSelector();
void setCurveOption(KisCurveOption *curveOption);
- void setCurrent(KisDynamicSensor *_sensor);
- KisDynamicSensor *currentHighlighted();
+ void setCurrent(KisDynamicSensorSP _sensor);
+ KisDynamicSensorSP currentHighlighted();
void setCurrentCurve(const KisCubicCurve& curve, bool useSameCurve);
void reload();
@@ -43,14 +44,14 @@ private slots:
signals:
- void sensorChanged(KisDynamicSensor *sensor);
+ void sensorChanged(KisDynamicSensorSP sensor);
/**
* This signal is emitted when the parameters of sensor are changed.
*/
void parametersChanged();
- void highlightedSensorChanged(KisDynamicSensor *sensor);
+ void highlightedSensorChanged(KisDynamicSensorSP sensor);
private:
struct Private;
Private* const d;
diff --git a/krita/plugins/paintops/libpaintop/kis_pressure_opacity_option.cpp \
b/krita/plugins/paintops/libpaintop/kis_pressure_opacity_option.cpp index \
046a7db..8b8cd57 100644
--- a/krita/plugins/paintops/libpaintop/kis_pressure_opacity_option.cpp
+++ b/krita/plugins/paintops/libpaintop/kis_pressure_opacity_option.cpp
@@ -41,7 +41,7 @@ void KisPressureOpacityOption::readOptionSetting(const \
KisPropertiesConfiguratio {
KisCurveOption::readOptionSetting(setting);
if (setting->getString("OpacityVersion", "1") == "1") {
- KisDynamicSensor *pressureSensor = sensor(PressureId.id(), true);
+ KisDynamicSensorSP pressureSensor = sensor(PressureId.id(), true);
if (pressureSensor) {
QList<QPointF> points = pressureSensor->curve().points();
QList<QPointF> points_new;
diff --git a/krita/plugins/paintops/libpaintop/kis_pressure_rotation_option.cpp \
b/krita/plugins/paintops/libpaintop/kis_pressure_rotation_option.cpp index \
e88ee63..3df4a06 100644
--- a/krita/plugins/paintops/libpaintop/kis_pressure_rotation_option.cpp
+++ b/krita/plugins/paintops/libpaintop/kis_pressure_rotation_option.cpp
@@ -31,11 +31,8 @@ KisPressureRotationOption::KisPressureRotationOption()
m_canvasAxisXMirrored(false),
m_canvasAxisYMirrored(false)
{
-
setMinimumLabel(i18n("0 °"));
setMaximumLabel(i18n("360 °"));
-
-
}
double KisPressureRotationOption::apply(const KisPaintInformation & info) const
@@ -43,7 +40,7 @@ double KisPressureRotationOption::apply(const KisPaintInformation & \
info) const if (!isChecked()) return m_defaultAngle;
bool dependsOnViewportTransformations = false;
- foreach(const KisDynamicSensor *s, activeSensors()) {
+ foreach(const KisDynamicSensorSP s, activeSensors()) {
if (s->dependsOnCanvasRotation()) {
dependsOnViewportTransformations = true;
break;
@@ -58,7 +55,7 @@ double KisPressureRotationOption::apply(const KisPaintInformation & \
info) const 0.5 + computeValue(info);
/* Special Case for Fuzzy Sensor to provide for Positive and Negative Rotation \
*/
- KisDynamicSensorFuzzy *s = \
dynamic_cast<KisDynamicSensorFuzzy*>(sensor(FuzzyId.id(), true)); + \
KisDynamicSensorFuzzy *s = dynamic_cast<KisDynamicSensorFuzzy*>(sensor(FuzzyId.id(), \
true).data()); if (s && s->isActive()) {
if (s->rotationModeEnabled()) {
return rand()%2 == 0?fmod(rotationCoeff * 2.0 * M_PI + baseAngle, 2.0 * \
M_PI): @@ -87,7 +84,7 @@ void KisPressureRotationOption::readOptionSetting(const \
KisPropertiesConfigurati
void KisPressureRotationOption::applyFanCornersInfo(KisPaintOp *op)
{
- KisDynamicSensorDrawingAngle *sensor = \
dynamic_cast<KisDynamicSensorDrawingAngle*>(this->sensor(DrawingAngleId.id(), true)); \
+ KisDynamicSensorDrawingAngle *sensor = \
dynamic_cast<KisDynamicSensorDrawingAngle*>(this->sensor(DrawingAngleId.id(), \
true).data());
/**
* A special case for the Drawing Angle sensor, because it
diff --git a/krita/plugins/paintops/libpaintop/tests/kis_sensors_test.cpp \
b/krita/plugins/paintops/libpaintop/tests/kis_sensors_test.cpp index 2f18d33..4f6dc27 \
100644
--- a/krita/plugins/paintops/libpaintop/tests/kis_sensors_test.cpp
+++ b/krita/plugins/paintops/libpaintop/tests/kis_sensors_test.cpp
@@ -35,11 +35,11 @@ KisSensorsTest::KisSensorsTest()
void KisSensorsTest::testDrawingAngle()
{
- KisDynamicSensor *sensor = KisDynamicSensor::id2Sensor(DrawingAngleId);
+ KisDynamicSensorSP sensor = KisDynamicSensor::id2Sensor(DrawingAngleId);
testBound(sensor);
}
-void KisSensorsTest::testBound(KisDynamicSensor *sensor)
+void KisSensorsTest::testBound(KisDynamicSensorSP sensor)
{
foreach(const KisPaintInformation & pi, paintInformations) {
double v = sensor->parameter(pi);
diff --git a/krita/plugins/paintops/libpaintop/tests/kis_sensors_test.h \
b/krita/plugins/paintops/libpaintop/tests/kis_sensors_test.h index c6b1ccc..71cabb1 \
100644
--- a/krita/plugins/paintops/libpaintop/tests/kis_sensors_test.h
+++ b/krita/plugins/paintops/libpaintop/tests/kis_sensors_test.h
@@ -22,8 +22,7 @@
#include <QtTest>
#include "kis_paint_information.h"
-
-class KisDynamicSensor;
+#include "kis_dynamic_sensor.h"
class KisSensorsTest : public QObject
{
@@ -34,7 +33,7 @@ private slots:
void testDrawingAngle();
private:
- void testBound(KisDynamicSensor *sensor);
+ void testBound(KisDynamicSensorSP sensor);
private:
QList<KisPaintInformation> paintInformations;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic