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

List:       kde-commits
Subject:    koffice/krita
From:       Lukáš Tvrdý <lukast.dev () gmail ! com>
Date:       2010-08-28 19:53:26
Message-ID: 20100828195326.E68CEAC857 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1169245 by lukast:

Fix deserialization of the soft brush mask generator in Auto brush

 M  +23 -12    image/kis_base_mask_generator.cpp  
 M  +15 -1     image/kis_base_mask_generator.h  
 M  +1 -1      image/kis_circle_mask_generator.cpp  
 M  +0 -1      image/kis_circle_mask_generator.h  
 M  +2 -2      image/kis_curve_circle_mask_generator.cpp  
 M  +2 -2      image/kis_curve_rect_mask_generator.cpp  
 M  +1 -1      image/kis_rect_mask_generator.cpp  
 M  +11 -1     plugins/paintops/libpaintop/kis_auto_brush_widget.cpp  
 M  +1 -12     plugins/paintops/libpaintop/wdgautobrush.ui  


--- trunk/koffice/krita/image/kis_base_mask_generator.cpp #1169244:1169245
@@ -29,7 +29,7 @@
 #include "kis_curve_circle_mask_generator.h"
 #include "kis_curve_rect_mask_generator.h"
 
-KisMaskGenerator::KisMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int spikes, Type type) \
: d(new Private) +KisMaskGenerator::KisMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int \
spikes, Type type, const KoID& id) : d(new Private), m_id(id)  {
     d->m_radius = radius;
     d->m_ratio = ratio;
@@ -61,7 +61,7 @@
     e.setAttribute("hfade", horizontalFade());
     e.setAttribute("vfade", verticalFade());
     e.setAttribute("spikes", d->m_spikes);
-
+    e.setAttribute("id", id());
 }
 
 KisMaskGenerator* KisMaskGenerator::fromXML(const QDomElement& elt)
@@ -72,27 +72,31 @@
     double vfade = elt.attribute("vfade", "0.0").toDouble();
     int spikes = elt.attribute("spikes", "2").toInt();
     QString typeShape = elt.attribute("type", "circle");
+    QString id = elt.attribute("id", DefaultId.id());
 
-    
-    if (typeShape == "curve_circle"){
-        KisCubicCurve curve;
-        curve.fromString(elt.attribute("softness_curve","0,0;1,1"));
-        return new KisCurveCircleMaskGenerator(radius, ratio, hfade, vfade, spikes, curve);
+    if (id == DefaultId.id()){
+        if (typeShape == "circle"){
+            return new KisCircleMaskGenerator(radius, ratio, hfade, vfade, spikes);
+        }else{
+            return new KisRectangleMaskGenerator(radius, ratio, hfade, vfade, spikes);
     }
+    }
     
-    if (typeShape == "curve_rect"){
+    if (id == SoftId.id()){
         KisCubicCurve curve;
         curve.fromString(elt.attribute("softness_curve","0,0;1,1"));
-        return new KisCurveRectangleMaskGenerator(radius, ratio, hfade, vfade, spikes, curve);
-    }
     
     if (typeShape == "circle") {
-        return new KisCircleMaskGenerator(radius, ratio, hfade, vfade, spikes);
+            return new KisCurveCircleMaskGenerator(radius, ratio, hfade, vfade, spikes, curve);
     } else {
-        return new KisRectangleMaskGenerator(radius, ratio, hfade, vfade, spikes);
+            return new KisCurveRectangleMaskGenerator(radius, ratio, hfade, vfade, spikes, curve);
     }
 }
 
+    // if unknown
+    return new KisCircleMaskGenerator(radius, ratio, hfade, vfade, spikes);
+}
+
 qreal KisMaskGenerator::width() const
 {
     return d->m_radius;
@@ -147,3 +151,10 @@
 {
     return d->type;
 }
+
+QList< KoID > KisMaskGenerator::maskGeneratorIds()
+{
+    QList<KoID> ids;
+    ids << DefaultId << SoftId;
+    return ids;
+}
--- trunk/koffice/krita/image/kis_base_mask_generator.h #1169244:1169245
@@ -20,11 +20,17 @@
 #ifndef _KIS_MASK_GENERATOR_H_
 #define _KIS_MASK_GENERATOR_H_
 
+#include <KoID.h>
+#include <klocale.h>
+
 #include "krita_export.h"
 
 class QDomElement;
 class QDomDocument;
 
+const KoID DefaultId("default", i18n("Default")); ///< generate Krita default mask generator
+const KoID SoftId("soft", i18n("Soft brush")); ///< generate brush mask from former softbrush paintop, \
where softness is based on curve +
 /**
  * This is the base class for mask shapes
  * You should subclass it if you want to create a new
@@ -45,7 +51,7 @@
      * @param fh horizontal fade (fh \< w / 2 )
      * @param fv vertical fade (fv \< h / 2 )
      */
-    KisMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int spikes, Type type);
+    KisMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int spikes, Type type, const KoID& \
id = DefaultId);  
     virtual ~KisMaskGenerator();
 
@@ -77,6 +83,11 @@
     int spikes() const;
     Type type() const;
     
+    inline QString id() const { return m_id.id(); }
+    inline QString name() const { return m_id.name(); }
+
+    static QList<KoID> maskGeneratorIds();
+    
     qreal softness() const;
     virtual void setSoftness(qreal softness);
     
@@ -92,6 +103,9 @@
     };
 
     Private* const d;
+    
+private:
+    const KoID& m_id;
 };
 
 #endif
--- trunk/koffice/krita/image/kis_circle_mask_generator.cpp #1169244:1169245
@@ -32,7 +32,7 @@
 };
 
 KisCircleMaskGenerator::KisCircleMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int \
                spikes)
-        : KisMaskGenerator(radius, ratio, fh, fv, spikes, CIRCLE), d(new Private)
+        : KisMaskGenerator(radius, ratio, fh, fv, spikes, CIRCLE, DefaultId), d(new Private)
 {
     d->xcoef = 2.0 / width();
     d->ycoef = 2.0 / (KisMaskGenerator::d->m_ratio * width());
--- trunk/koffice/krita/image/kis_circle_mask_generator.h #1169244:1169245
@@ -33,7 +33,6 @@
 {
 
 public:
-
     KisCircleMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int spikes);
     virtual ~KisCircleMaskGenerator();
 
--- trunk/koffice/krita/image/kis_curve_circle_mask_generator.cpp #1169244:1169245
@@ -39,7 +39,7 @@
 };
 
 KisCurveCircleMaskGenerator::KisCurveCircleMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, \
                int spikes, const KisCubicCurve &curve)
-        : KisMaskGenerator(radius, ratio, fh, fv, spikes, CIRCLE), d(new Private)
+        : KisMaskGenerator(radius, ratio, fh, fv, spikes, CIRCLE, SoftId), d(new Private)
 {
     d->xcoef = 2.0 / width();
     d->ycoef = 2.0 / (KisMaskGenerator::d->m_ratio * width());
@@ -91,7 +91,7 @@
 void KisCurveCircleMaskGenerator::toXML(QDomDocument& doc, QDomElement& e) const
 {
     KisMaskGenerator::toXML(doc, e);
-    e.setAttribute("type", "curve_circle");
+    e.setAttribute("type", "circle");
     e.setAttribute("softness_curve", d->curve);
 }
 
--- trunk/koffice/krita/image/kis_curve_rect_mask_generator.cpp #1169244:1169245
@@ -34,7 +34,7 @@
 };
 
 KisCurveRectangleMaskGenerator::KisCurveRectangleMaskGenerator(qreal radius, qreal ratio, qreal fh, \
                qreal fv, int spikes, const KisCubicCurve &curve)
-        : KisMaskGenerator(radius, ratio, fh, fv, spikes, RECTANGLE), d(new Private)
+        : KisMaskGenerator(radius, ratio, fh, fv, spikes, RECTANGLE, SoftId), d(new Private)
 {
     d->curveResolution = qRound(width());
     d->curveData = curve.floatTransfer( d->curveResolution + 1); 
@@ -73,7 +73,7 @@
 void KisCurveRectangleMaskGenerator::toXML(QDomDocument& doc, QDomElement& e) const
 {
     KisMaskGenerator::toXML(doc, e);
-    e.setAttribute("type", "curve_rect");
+    e.setAttribute("type", "rect");
     e.setAttribute("softness_curve", d->curve);
 }
 
--- trunk/koffice/krita/image/kis_rect_mask_generator.cpp #1169244:1169245
@@ -27,7 +27,7 @@
 };
 
 KisRectangleMaskGenerator::KisRectangleMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int \
                spikes)
-        : KisMaskGenerator(radius, ratio, fh, fv, spikes, RECTANGLE), d(new Private)
+        : KisMaskGenerator(radius, ratio, fh, fv, spikes, RECTANGLE, DefaultId), d(new Private)
 {
     if (KisMaskGenerator::d->m_fv == 0 &&
             KisMaskGenerator::d->m_fh == 0) {
--- trunk/koffice/krita/plugins/paintops/libpaintop/kis_auto_brush_widget.cpp #1169244:1169245
@@ -102,8 +102,14 @@
     m_brush = QImage(1, 1, QImage::Format_RGB32);
 
     connect(brushPreview, SIGNAL(clicked()), SLOT(paramChanged()));
+    
+    QList<KoID> ids = KisMaskGenerator::maskGeneratorIds();
+    for (int i=0;i<ids.size();i++){
+        comboBoxMaskType->insertItem(i,ids[i].name());
+    }
+    
     connect(comboBoxMaskType, SIGNAL(activated(int)), SLOT(paramChanged()));
-    connect(comboBoxMaskType, SIGNAL(activated(int)), stackedWidget, SLOT(setCurrentIndex(int)));
+    connect(comboBoxMaskType, SIGNAL(currentIndexChanged(int)), stackedWidget, \
SLOT(setCurrentIndex(int)));   
     brushPreview->setIconSize(QSize(100, 100));
 
@@ -209,6 +215,9 @@
     }else /*if (aBrush->maskGenerator()->type() == KisMaskGenerator::RECTANGLE) */ {
         comboBoxShape->setCurrentIndex(1);
     }
+    
+    comboBoxMaskType->setCurrentIndex( comboBoxMaskType->findText( aBrush->maskGenerator()->name() ) );
+    
     inputRadius->setValue(aBrush->maskGenerator()->radius());
     inputRatio->setValue(aBrush->maskGenerator()->ratio());
     inputHFade->setValue(aBrush->maskGenerator()->horizontalFade());
@@ -219,6 +228,7 @@
     inputSpacing->setExponentRatio(3.0);
     inputRandomness->setValue(aBrush->randomness() * 100);
     density->setValue(aBrush->density() * 100);
+    
 }
 
 
--- trunk/koffice/krita/plugins/paintops/libpaintop/wdgautobrush.ui #1169244:1169245
@@ -48,20 +48,9 @@
       </widget>
      </item>
      <item>
-      <widget class="QComboBox" name="comboBoxMaskType">
-       <item>
-        <property name="text">
-         <string>default</string>
-        </property>
+      <widget class="QComboBox" name="comboBoxMaskType"/>
        </item>
        <item>
-        <property name="text">
-         <string>soft brush</string>
-        </property>
-       </item>
-      </widget>
-     </item>
-     <item>
       <widget class="QComboBox" name="comboBoxShape">
        <property name="focusPolicy">
         <enum>Qt::ClickFocus</enum>


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

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