[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [krita/tantsevov/T6224-watercolor] plugins/paintops/watercolor: Fixed plane updates
From:       Grigory Tantsevov <null () kde ! org>
Date:       2017-08-31 23:21:03
Message-ID: E1dnYlj-0003Gf-R6 () code ! kde ! org
[Download RAW message or body]

Git commit 4fbea5b9f201456ebd4728dbef2f3bcc3f2fe534 by Grigory Tantsevov.
Committed on 31/08/2017 at 23:20.
Pushed by tantsevov into branch 'tantsevov/T6224-watercolor'.

Fixed plane updates

Ref T6224

M  +9    -1    plugins/paintops/watercolor/kis_base_splats_plane.cpp
M  +4    -1    plugins/paintops/watercolor/kis_base_splats_plane.h
M  +9    -4    plugins/paintops/watercolor/kis_fixed_splats_plane.cpp
M  +0    -2    plugins/paintops/watercolor/kis_fixed_splats_plane.h
M  +24   -1    plugins/paintops/watercolor/kis_splat.cpp
M  +1    -0    plugins/paintops/watercolor/kis_splat.h
M  +5    -1    plugins/paintops/watercolor/kis_watercolor_paintop_settings.cpp
M  +3    -3    plugins/paintops/watercolor/kis_watercolor_paintop_settings.h
M  +2    -15   plugins/paintops/watercolor/kis_watercolorop_option.cpp

https://commits.kde.org/krita/4fbea5b9f201456ebd4728dbef2f3bcc3f2fe534

diff --git a/plugins/paintops/watercolor/kis_base_splats_plane.cpp \
b/plugins/paintops/watercolor/kis_base_splats_plane.cpp index \
                ff162f5bed9..eea58db66ce 100644
--- a/plugins/paintops/watercolor/kis_base_splats_plane.cpp
+++ b/plugins/paintops/watercolor/kis_base_splats_plane.cpp
@@ -26,6 +26,7 @@ KisBaseSplatsPlane::KisBaseSplatsPlane(bool useCaching, \
KisBaseSplatsPlane *lowL  {
     if (useCaching)
         m_cachedPD = new KisPaintDevice(colorSpace);
+    m_splatsTree = new KoRTree<KisSplat*>(4, 2);
 }
 
 KisBaseSplatsPlane::~KisBaseSplatsPlane()
@@ -36,6 +37,7 @@ KisBaseSplatsPlane::~KisBaseSplatsPlane()
 void KisBaseSplatsPlane::add(KisSplat *splat)
 {
     m_splats << splat;
+    m_splatsTree->insert(splat->boundingRect().toAlignedRect(), splat);
     if (m_useCaching) {
         KisPainter *painter = new KisPainter(m_cachedPD);
         splat->doPaint(painter);
@@ -45,6 +47,7 @@ void KisBaseSplatsPlane::add(KisSplat *splat)
 void KisBaseSplatsPlane::remove(KisSplat *splat)
 {
     m_splats.removeOne(splat);
+    m_splatsTree->remove(splat);
     if (m_useCaching) {
         m_cachedPD->clear(splat->boundingRect().toAlignedRect());
     }
@@ -61,7 +64,7 @@ void KisBaseSplatsPlane::paint(KisPainter *gc, QRect rect)
                    rect);
     } else {
         Q_FOREACH (KisSplat *splat, m_splats) {
-            if (rect.contains(splat->boundingRect().toAlignedRect()))
+//            if (rect.contains(splat->boundingRect().toAlignedRect()))
                 splat->doPaint(gc);
         }
     }
@@ -90,3 +93,8 @@ QRect KisBaseSplatsPlane::update(KisWetMap *wetMap)
 
     return dirtyRect;
 }
+
+KoRTree<KisSplat *> *KisBaseSplatsPlane::splatsTree() const
+{
+    return m_splatsTree;
+}
diff --git a/plugins/paintops/watercolor/kis_base_splats_plane.h \
b/plugins/paintops/watercolor/kis_base_splats_plane.h index 4cc21529a99..6f93b32c8b5 \
                100644
--- a/plugins/paintops/watercolor/kis_base_splats_plane.h
+++ b/plugins/paintops/watercolor/kis_base_splats_plane.h
@@ -25,6 +25,7 @@
 #include "kis_wetmap.h"
 #include "kis_paint_device.h"
 #include <QRect>
+#include "KoRTree.h"
 
 /**
  * Base class for the splats' containers in watercolor
@@ -71,11 +72,13 @@ public:
      */
     virtual QRect update(KisWetMap *wetMap);
 
-
 protected:
     QList<KisSplat*> m_splats;
+    KoRTree<KisSplat *> *m_splatsTree;
     KisBaseSplatsPlane *m_lowLvlPlane;
 
+    KoRTree<KisSplat *> *splatsTree() const;
+
 protected:
     bool m_useCaching;
     KisPaintDeviceSP m_cachedPD;
diff --git a/plugins/paintops/watercolor/kis_fixed_splats_plane.cpp \
b/plugins/paintops/watercolor/kis_fixed_splats_plane.cpp index \
                aab37362603..6e78f0eef68 100644
--- a/plugins/paintops/watercolor/kis_fixed_splats_plane.cpp
+++ b/plugins/paintops/watercolor/kis_fixed_splats_plane.cpp
@@ -19,8 +19,7 @@
 #include "kis_fixed_splats_plane.h"
 
 KisFixedSplatsPlane::KisFixedSplatsPlane(KisBaseSplatsPlane *driedPlane, const \
                KoColorSpace *colorSpace)
-    : KisBaseSplatsPlane(true, driedPlane, colorSpace),
-      m_splatsTree(4, 2)
+    : KisBaseSplatsPlane(true, driedPlane, colorSpace)
 {
 }
 
@@ -35,8 +34,15 @@ QRect KisFixedSplatsPlane::update(KisWetMap *wetMap)
             {
                 // move to protected call to parent class
                 it = m_splats.erase(it);
+                splatsTree()->remove(splat);
                 m_cachedPD->clear(splat->boundingRect().toAlignedRect());
                 dirtyRect |= splat->boundingRect().toAlignedRect();
+                QList<KisSplat *> rePaint = \
splatsTree()->intersects(splat->boundingRect().toAlignedRect()); +                \
KisPainter *painter = new KisPainter(m_cachedPD); +                Q_FOREACH(KisSplat \
*reSplat, rePaint) { +                    if (reSplat != splat)
+                        reSplat->doPaint(painter, \
splat->boundingRect().toAlignedRect()); +                }
             }
         } else {
             ++it;
@@ -51,11 +57,10 @@ void KisFixedSplatsPlane::rewet(KisWetMap *wetMap, QPointF pos, \
qreal rad, KisBa  QRectF rect(pos.x() - rad, pos.y() - rad,
                 rad * 2, rad * 2);
 
-    QList<KisSplat *> reweted = m_splatsTree.intersects(rect);\
+    QList<KisSplat *> reweted = splatsTree()->intersects(rect);\
     Q_FOREACH(KisSplat *splat, reweted) {
         splat->rewet(wetMap, pos, rad);
         remove(splat);
-        m_splatsTree.remove(splat);
         flowingPlane->add(splat);
     }
 }
diff --git a/plugins/paintops/watercolor/kis_fixed_splats_plane.h \
b/plugins/paintops/watercolor/kis_fixed_splats_plane.h index 8f6fbb8653c..14829b4264e \
                100644
--- a/plugins/paintops/watercolor/kis_fixed_splats_plane.h
+++ b/plugins/paintops/watercolor/kis_fixed_splats_plane.h
@@ -20,7 +20,6 @@
 #define KISFIXEDSPLATSPLANE_H
 
 #include "kis_base_splats_plane.h"
-#include "KoRTree.h"
 
 class KisFixedSplatsPlane : public KisBaseSplatsPlane
 {
@@ -33,7 +32,6 @@ public:
 
 private:
     KisBaseSplatsPlane *m_flowingPlane;
-    KoRTree<KisSplat *> m_splatsTree;
 };
 
 #endif // KISFIXEDSPLATSPLANE_H
diff --git a/plugins/paintops/watercolor/kis_splat.cpp \
b/plugins/paintops/watercolor/kis_splat.cpp index 1dda8bdc2f8..4604a7c4ff1 100644
--- a/plugins/paintops/watercolor/kis_splat.cpp
+++ b/plugins/paintops/watercolor/kis_splat.cpp
@@ -151,6 +151,29 @@ void KisSplat::doPaint(KisPainter *painter)
     painter->setPaintColor(oldColor);
 }
 
+void KisSplat::doPaint(KisPainter *painter, QRectF rect)
+{
+    qreal multiply = m_initSize / CalcSize();
+    if (multiply < 0.f || multiply > 1.f)
+        multiply = 1;
+
+    qint8 oldOpacity = painter->opacity();
+    KisPainter::FillStyle oldFillStyle = painter->fillStyle();
+    KoColor oldColor = painter->paintColor();
+
+    painter->setOpacity(START_OPACITY * multiply);
+    painter->setFillStyle(KisPainter::FillStyleForegroundColor);
+    painter->setPaintColor(m_initColor);
+    QPainterPath rectPath;
+    rectPath.addRect(rect);
+    QPainterPath shapeIn = shape().intersected(rectPath);
+    painter->fillPainterPath(shapeIn);
+
+    painter->setOpacity(oldOpacity);
+    painter->setFillStyle(oldFillStyle);
+    painter->setPaintColor(oldColor);
+}
+
 QPainterPath KisSplat::shape() const
 {
     QPainterPath path;
@@ -194,7 +217,7 @@ int KisSplat::update(KisWetMap *wetMap)
         QPointF v = m_velocities[i];
         QPointF d = (1.f - alpha) * m_motionBias + alpha / get_random(1.f, 1.f + \
m_roughness) * v;  
-        QPointF x1 = x + m_flow * d + QPointF(m_gravityX / 12, m_gravityY / 12)/*
+        QPointF x1 = x + m_flow * d + QPointF(m_gravityX / 10, m_gravityY / 10)/*
                 + QPointF(get_random(-m_roughness, m_roughness) / 5,
                           get_random(-m_roughness, m_roughness) / 5)*/;
         newVertices.push_back(x1);
diff --git a/plugins/paintops/watercolor/kis_splat.h \
b/plugins/paintops/watercolor/kis_splat.h index ae7cef7e919..4c6c6ea1b08 100644
--- a/plugins/paintops/watercolor/kis_splat.h
+++ b/plugins/paintops/watercolor/kis_splat.h
@@ -52,6 +52,7 @@ public:
              int gravityX, int gravityY);
 
     void doPaint(KisPainter *painter);
+    void doPaint(KisPainter *painter, QRectF rect);
 
     QPainterPath shape() const;
     QRectF boundingRect() const;
diff --git a/plugins/paintops/watercolor/kis_watercolor_paintop_settings.cpp \
b/plugins/paintops/watercolor/kis_watercolor_paintop_settings.cpp index \
                db6de566f16..1a1c57ad64a 100644
--- a/plugins/paintops/watercolor/kis_watercolor_paintop_settings.cpp
+++ b/plugins/paintops/watercolor/kis_watercolor_paintop_settings.cpp
@@ -46,16 +46,20 @@ bool KisWatercolorPaintOpSettings::paintIncremental()
 
 void KisWatercolorPaintOpSettings::setPaintOpSize(qreal value)
 {
+    qDebug() << "\n setSize";
     WatercolorOption op;
     op.readOptionSettingImpl(this);
-    op.radius = qRound(0.5 * value);
+    op.radius = value;
+    qDebug() << ppVar(op.radius);
     op.writeOptionSettingImpl(this);
 }
 
 qreal KisWatercolorPaintOpSettings::paintOpSize() const
 {
+    qDebug() << "\nreadSize";
     WatercolorOption op;
     op.readOptionSettingImpl(this);
+    qDebug() << ppVar(op.radius);
     return op.radius;
 
 }
diff --git a/plugins/paintops/watercolor/kis_watercolor_paintop_settings.h \
b/plugins/paintops/watercolor/kis_watercolor_paintop_settings.h index \
                7d901a1b9b1..91dbf8e88c9 100644
--- a/plugins/paintops/watercolor/kis_watercolor_paintop_settings.h
+++ b/plugins/paintops/watercolor/kis_watercolor_paintop_settings.h
@@ -32,15 +32,15 @@ public:
 
     bool paintIncremental() override;
 
-    void setPaintOpSize(qreal value) override;
-    qreal paintOpSize() const override;
-
     QList<KisUniformPaintOpPropertySP> uniformProperties(KisPaintOpSettingsSP \
settings);  
     bool needsContinuedStroke() override;
 
     QPainterPath brushOutline(const KisPaintInformation &info, OutlineMode mode) \
override;  
+    void setPaintOpSize(qreal value) override;
+    qreal paintOpSize() const override;
+
 private:
     struct Private;
     const QScopedPointer<Private> m_d;
diff --git a/plugins/paintops/watercolor/kis_watercolorop_option.cpp \
b/plugins/paintops/watercolor/kis_watercolorop_option.cpp index \
                63e76ab3499..222cc66daaf 100644
--- a/plugins/paintops/watercolor/kis_watercolorop_option.cpp
+++ b/plugins/paintops/watercolor/kis_watercolorop_option.cpp
@@ -43,8 +43,8 @@ public:
         gravityY->setSingleStep(1.0);
 
         radius->setRange(0.0, 1000.0);
-        radius->setPrefix("px");
-        radius->setValue(25);
+        radius->setSuffix(i18n(" px"));
+        radius->setValue(100.0);
         radius->setSingleStep(1.0);
     }
 };
@@ -75,23 +75,10 @@ void \
                KisWatercolorOpOption::writeOptionSetting(KisPropertiesConfigurationSP \
                sett
     setting->setProperty(WATERCOLOR_GRAVITY_Y, m_options->gravityY->value());
     setting->setProperty(WATERCOLOR_TYPE, m_options->brushType->currentIndex());
     setting->setProperty(WATERCOLOR_RADIUS, m_options->radius->value());
-//    WatercolorOption op;
-
-//    op.gravityX = m_options->gravityX->value();
-//    op.gravityY = m_options->gravityY->value();
-
-//    op.type = m_options->brushType->currentIndex();
-
-//    op.radius = m_options->radius->value();
-
-//    op.writeOptionSettingImpl(setting);
 }
 
 void KisWatercolorOpOption::readOptionSetting(const KisPropertiesConfigurationSP \
setting)  {
-//    WatercolorOption op;
-//    op.readOptionSettingImpl(setting);
-
     m_options->gravityX->setValue(setting->getDouble(WATERCOLOR_GRAVITY_X));
     m_options->gravityY->setValue(setting->getDouble(WATERCOLOR_GRAVITY_Y));
     m_options->brushType->setCurrentIndex(setting->getInt(WATERCOLOR_TYPE));


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic