[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:       2009-11-03 22:30:25
Message-ID: 1257287425.626413.4848.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1044510 by lukast:

* Feature: Shift+Mouse Drag call the KisPaintOpSettings::changePaintopSize, every \
                paintop can implement reaction
* Spray implements the KisPaintOpSettings::changePaintOpSize (changes the diameter of \
                the brush)
* clean-up old unused code for 3D brush
* clean-up hidden methods in settings object

 M  +7 -0      image/brushengine/kis_paintop_settings.cpp  
 M  +2 -0      image/brushengine/kis_paintop_settings.h  
 M  +18 -21    plugins/paintops/spray/kis_spray_paintop_settings.cpp  
 M  +2 -3      plugins/paintops/spray/kis_spray_paintop_settings.h  
 M  +5 -0      plugins/paintops/spray/kis_sprayop_option.cpp  
 M  +2 -0      plugins/paintops/spray/kis_sprayop_option.h  
 M  +1 -1      plugins/paintops/spray/spray_brush.cpp  
 M  +27 -31    ui/tool/kis_tool_freehand.cc  
 M  +3 -0      ui/tool/kis_tool_freehand.h  
 M  +2 -1      ui/tool/kis_tool_paint.h  


--- trunk/koffice/krita/image/brushengine/kis_paintop_settings.cpp #1044509:1044510
@@ -126,6 +126,13 @@
     Q_UNUSED(_mode);
 }
 
+
+void KisPaintOpSettings::changePaintOpSize(qreal x, qreal y) const
+{
+    Q_UNUSED(x);
+    Q_UNUSED(y);
+}
+
 #if defined(HAVE_OPENGL)
 QString KisPaintOpSettings::modelName() const
 {
--- trunk/koffice/krita/image/brushengine/kis_paintop_settings.h #1044509:1044510
@@ -139,6 +139,8 @@
      */
     virtual void paintOutline(const QPointF& pos, KisImageWSP image, QPainter \
&painter, const KoViewConverter &converter, OutlineMode _mode) const;  
+    virtual void changePaintOpSize(qreal x, qreal y) const;
+    
 #if defined(HAVE_OPENGL)
     virtual QString modelName() const;
 #endif
--- trunk/koffice/krita/plugins/paintops/spray/kis_spray_paintop_settings.cpp \
#1044509:1044510 @@ -58,25 +58,7 @@
     delete settings;
 }
 
-QRectF KisSprayPaintOpSettings::paintOutlineRect(const QPointF& pos, KisImageWSP \
                image) const
-{
-    qreal size = diameter();
-    size += 2;
-    return image->pixelToDocument(
-               QRectF(0, 0, size, size)
-           ).translated(pos - QPointF(size * 0.5 , size * 0.5));
-}
 
-void KisSprayPaintOpSettings::paintOutline(const QPointF& pos, KisImageWSP image, \
                QPainter &painter, const KoViewConverter &converter) const
-{
-    qreal size = diameter();
-    QRectF brushSize(0, 0, size, size);
-    painter.setPen(Qt::black);
-    //painter.translate(converter.documentToView( pos - image->pixelToDocument( \
                QPointF( size * 0.5,size * 0.5 ) + QPointF(0.5, 0.5) )) );
-    painter.drawEllipse(converter.documentToView(image->pixelToDocument(brushSize).translated(pos \
                - QPointF(size * 0.5, size * 0.5))));
-    qDebug() << "pos:" << pos;
-}
-
 int KisSprayPaintOpSettings::diameter() const
 {
     return m_options->m_sprayOption->diameter();
@@ -192,7 +174,7 @@
 QRectF KisSprayPaintOpSettings::paintOutlineRect(const QPointF& pos, KisImageWSP \
image, OutlineMode _mode) const  {
     if (_mode != CURSOR_IS_OUTLINE) return QRectF();
-    qreal size = diameter();
+    qreal size = diameter() * scale();
     size += 10;
     return image->pixelToDocument(QRectF(0, 0, size, size).translated(- QPoint(size \
* 0.5, size * 0.5))).translated(pos);  }
@@ -200,8 +182,9 @@
 void KisSprayPaintOpSettings::paintOutline(const QPointF& pos, KisImageWSP image, \
QPainter &painter, const KoViewConverter &converter, OutlineMode _mode) const  {
     if (_mode != CURSOR_IS_OUTLINE) return;
-    qreal size = diameter();
-    painter.setPen(Qt::black);
+    qreal size = diameter() * scale();
+    painter.setPen(QColor(255,128,255));
+    painter.setCompositionMode(QPainter::RasterOp_SourceXorDestination);
     painter.drawEllipse(converter.documentToView(image->pixelToDocument(QRectF(0, 0, \
size, size).translated(- QPoint(size * 0.5, size * 0.5))).translated(pos)));  }
 
@@ -234,3 +217,17 @@
 {
     return m_options->m_ColorOption->sampleInputColor();
 }
+
+
+void KisSprayPaintOpSettings::changePaintOpSize(qreal x, qreal y) const
+{
+    if (qAbs(x) > qAbs(y)){
+            // recoginze the left/right movement
+            if (x > 0){
+                m_options->m_sprayOption->setDiamter( diameter() + qRound(x) );
+            }else{
+                m_options->m_sprayOption->setDiamter( diameter() + qRound(x) );
+            }
+    }else{
+    }
+}
--- trunk/koffice/krita/plugins/paintops/spray/kis_spray_paintop_settings.h \
#1044509:1044510 @@ -40,6 +40,8 @@
     virtual QRectF paintOutlineRect(const QPointF& pos, KisImageWSP image, \
                OutlineMode _mode) const;
     virtual void paintOutline(const QPointF& pos, KisImageWSP image, QPainter \
&painter, const KoViewConverter &converter, OutlineMode _mode) const;  
+    virtual void changePaintOpSize(qreal x, qreal y) const;
+    
     bool paintIncremental();
 
     using KisPropertiesConfiguration::fromXML;
@@ -48,9 +50,6 @@
     virtual void fromXML(const QDomElement&);
     virtual void toXML(QDomDocument&, QDomElement&) const;
 
-    QRectF paintOutlineRect(const QPointF& pos, KisImageWSP image) const;
-    void paintOutline(const QPointF& pos, KisImageWSP image, QPainter &painter, \
                const KoViewConverter &converter) const;
-
     KisPaintOpSettingsSP clone() const;
 
     /// brush settings
--- trunk/koffice/krita/plugins/paintops/spray/kis_sprayop_option.cpp \
#1044509:1044510 @@ -118,3 +118,8 @@
 }
 
 
+void KisSprayOpOption::setDiamter(int diameter) const
+{
+    m_options->diameterSpinBox->setValue(diameter);
+}
+
--- trunk/koffice/krita/plugins/paintops/spray/kis_sprayop_option.h #1044509:1044510
@@ -30,6 +30,8 @@
     ~KisSprayOpOption();
 
     int diameter() const;
+    void setDiamter(int diameter) const;
+    
     int particleCount() const;
 
     qreal coverage() const;
--- trunk/koffice/krita/plugins/paintops/spray/spray_brush.cpp #1044509:1044510
@@ -96,7 +96,7 @@
     qreal lengthX;
     qreal lengthY;
 
-    int steps = 36;
+    int steps = 118;
     bool shouldColor = true;
     if (m_settings->fillBackground()){
         m_painter->setPaintColor(bgColor);
--- trunk/koffice/krita/ui/tool/kis_tool_freehand.cc #1044509:1044510
@@ -117,7 +117,7 @@
     //    dbgUI << "mousePressEvent" << m_mode;
     //     if (!currentImage())
     //    return;
-
+    
     if (!currentNode())
         return;
 
@@ -132,6 +132,12 @@
         }
     }
 
+    if (e->modifiers() == Qt::ShiftModifier){
+        m_mode = EDIT_BRUSH;
+        m_prevMousePos = e->point;
+        m_originalPos = e->globalPos();
+        return;
+    }
 
     if (e->button() == Qt::LeftButton) {
         initPaint(e);
@@ -217,7 +223,14 @@
         }
 
         m_previousPaintInformation = info;
+    }else if (m_mode == EDIT_BRUSH){
+        qreal dx = m_prevMousePos.x() - e->point.x();
+        qreal dy = m_prevMousePos.y() - e->point.y();
+        currentPaintOpPreset()->settings()->changePaintOpSize(dx,dy);
     }
+    
+    
+    
     KisConfig cfg;
     KisPaintOpSettings::OutlineMode outlineMode;
     if (m_mode != PAINT && cfg.cursorStyle() == CURSOR_STYLE_OUTLINE) {
@@ -247,6 +260,11 @@
     if (!oldOutlineRect.isEmpty()) {
         m_canvas->updateCanvas(oldOutlineRect); // erase the old guy
     }
+    
+    if (m_mode == EDIT_BRUSH){
+        // do not move the cursor
+        QCursor::setPos(m_originalPos);
+    }
 }
 
 void KisToolFreehand::mouseReleaseEvent(KoPointerEvent* e)
@@ -254,7 +272,10 @@
     //    dbgUI << "mouseReleaseEvent" << m_mode << " " << e->button() << " " << \
e->button();  if (e->button() == Qt::LeftButton && m_mode == PAINT) {
         endPaint();
-    } else {
+    } else if (m_mode == EDIT_BRUSH){
+        m_mode = HOVER;
+    } else    
+    {
         KisToolPaint::mouseReleaseEvent(e);
     }
 }
@@ -522,35 +543,8 @@
             }
 
             if (glIsList(m_displayList)) {
-                dbgUI << "I have list to draw!";
                 QPointF pos = converter.documentToView(mousePos);
 
-                /*        KisImageWSP img = currentImage();
-                        glEnable(GL_LIGHT0);
-                        glEnable(GL_LIGHT1);
-                        glEnable(GL_LIGHT2);
-                        glEnable(GL_LIGHT3);
-                        glEnable(GL_LIGHT4);
-
-                        QPointF pos0(0,0); pos0 = converter.documentToView( pos0 );
-                        QPointF pos1(0,img->height()); pos1 = \
                converter.documentToView( pos1 );
-                        QPointF pos2(img->width(),img->height()); pos2 = \
                converter.documentToView( pos2 );
-                        QPointF pos3(img->width(),0); pos3 = \
                converter.documentToView( pos3 );
-
-                        GLfloat position[] = { 0.0f, 0.0f, ZET };
-                        position[0] = pos.x();
-                        position[1] = pos.y();
-                        glLightfv(GL_LIGHT0, GL_POSITION, position);
-                        position[0] = pos1.x();
-                        position[1] = pos1.y();
-                        glLightfv(GL_LIGHT1, GL_POSITION, position);
-                        position[0] = pos2.x();
-                        position[1] = pos2.y();
-                        glLightfv(GL_LIGHT2, GL_POSITION, position);
-                        position[0] = pos3.x();
-                        position[1] = pos3.y();
-                        glLightfv(GL_LIGHT3, GL_POSITION, position);*/
-
                 glColor3f(0.0, 1.0, 0.0);
                 glShadeModel(GL_SMOOTH);
 
@@ -580,6 +574,7 @@
                 m_prevyTilt = m_yTilt;
 
             } else {
+                dbgUI << "Warning: I don't have list to draw!";
                 dbgUI << "Default model will be used";
                 Kis3DObjectModel * model;
                 m_brushModelName = currentPaintOpPreset()->settings()->modelName();
@@ -587,13 +582,14 @@
                 // here is the default 3d model filename for brushes
                 if (m_brushModelName.isEmpty()) {
                     model = new Kis3DObjectModel("3d-deform-brush.obj" , \
                "3d-deform-brush.mtl");
-                    dbgUI << "isEmpty()";
                 } else {
                     model = new Kis3DObjectModel(m_brushModelName + ".obj" , \
m_brushModelName + ".mtl");  }
                 m_displayList = model->displayList();
+                if (!glIsList(m_displayList)){
+                    dbgUI << "Default model has not been found!";
+                }
                 delete model;
-
             }
         }
     }
--- trunk/koffice/krita/ui/tool/kis_tool_freehand.h #1044509:1044510
@@ -131,6 +131,9 @@
 #endif
 
     QPointF mousePos;
+    QPointF m_prevMousePos;
+    QPoint m_originalPos;
+    
     QRectF oldOutlineRect;
     bool m_paintedOutline;
     QRegion m_incrementalDirtyRegion;
--- trunk/koffice/krita/ui/tool/kis_tool_paint.h #1044509:1044510
@@ -59,7 +59,8 @@
     PAINT_STYLUS,
     ERASE,
     ERASE_STYLUS,
-    HOVER
+    HOVER,
+    EDIT_BRUSH
 };
 
 class KRITAUI_EXPORT KisToolPaint


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

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