[Digikam-devel] extragear/graphics/digikam

Gilles Caulier caulier.gilles at free.fr
Fri Feb 3 12:17:49 GMT 2006


SVN commit 505183 by cgilles:

digiKam from trunk : widget to compare image with all colors correction tools : Add an utimate new preview rendering mode : when the mouse is over image area, target image is displayed, else original image !!!

Thanks to Julien Narboux for this suggestion (:=)))

CCMAIL: digikam-devel at kde.org, Julien.Narboux at inria.fr


 M  +1 -1      imageplugins/pics/Makefile.am  
 M  +43 -18    libs/widgets/imageguidewidget.cpp  
 M  +4 -1      libs/widgets/imageguidewidget.h  
 M  +11 -0     libs/widgets/imagewidget.cpp  


--- trunk/extragear/graphics/digikam/imageplugins/pics/Makefile.am #505182:505183
@@ -4,4 +4,4 @@
 	                       bwgreen.png bwred.png bwyellow.png bworange.png autolevels.png normalize.png \
 	                       equalize.png stretchcontrast.png centerwidth.png centerheight.png target.png \
 	                       bothvert.png bothhorz.png curvefree.png curvemooth.png original.png \
-	                       duplicatebothvert.png duplicatebothhorz.png 
+	                       duplicatebothvert.png duplicatebothhorz.png tooglemouseover.png 
--- trunk/extragear/graphics/digikam/libs/widgets/imageguidewidget.cpp #505182:505183
@@ -54,27 +54,28 @@
 
     ImageGuideWidgetPriv()
     {
-        pixmap               = 0;
-        iface                = 0;
-        flicker              = 0;
-        timerID              = 0;
-        focus                = false;
-        renderingPreviewMode = ImageGuideWidget::NoPreviewMode;
+        pixmap                    = 0;
+        iface                     = 0;
+        flicker                   = 0;
+        timerID                   = 0;
+        focus                     = false;
+        onMouseMovePreviewToogled = false;
+        renderingPreviewMode      = ImageGuideWidget::NoPreviewMode;
     }
 
+    bool                 sixteenBit;
+    bool                 focus;
+    bool                 spotVisible;
+    bool                 onMouseMovePreviewToogled;
+    
     int                  width;
     int                  height;
-    
     int                  timerID;
     int                  guideMode;
     int                  guideSize;
     int                  flicker;
     int                  renderingPreviewMode;
 
-    bool                 sixteenBit;
-    bool                 focus;
-    bool                 spotVisible;
-    
     // Current spot position in preview coordinates.
     QPoint               spot;
     
@@ -213,7 +214,8 @@
     
     d->pixmap->fill(colorGroup().background());
     
-    if (d->renderingPreviewMode == PreviewOriginalImage)
+    if (d->renderingPreviewMode == PreviewOriginalImage ||
+       (d->renderingPreviewMode == PreviewToogleOnMouseOver && d->onMouseMovePreviewToogled == false ))
     {
         p.drawPixmap(d->rect, d->preview.convertToPixmap());
 
@@ -225,12 +227,13 @@
         p.drawRect(textRect);
         p.drawText(textRect, Qt::AlignCenter, text);
     }
-    else if (d->renderingPreviewMode == PreviewTargetImage || d->renderingPreviewMode == NoPreviewMode)
+    else if (d->renderingPreviewMode == PreviewTargetImage || d->renderingPreviewMode == NoPreviewMode ||
+            (d->renderingPreviewMode == PreviewToogleOnMouseOver && d->onMouseMovePreviewToogled == true ))
     {
         d->iface->paint(d->pixmap, d->rect.x(), d->rect.y(),
                         d->rect.width(), d->rect.height());
 
-        if (d->renderingPreviewMode == PreviewTargetImage)
+        if (d->renderingPreviewMode == PreviewTargetImage || d->renderingPreviewMode == PreviewToogleOnMouseOver)
         {
             text = i18n("Target");
             fontRect = fontMt.boundingRect(0, 0, d->rect.width(), d->rect.height(), 0, text);
@@ -545,17 +548,39 @@
 {
     if ( d->rect.contains( e->x(), e->y() ) && !d->focus && d->spotVisible )
     {
-       setCursor( KCursor::crossCursor() );
+        setCursor( KCursor::crossCursor() );
     }
     else if ( d->rect.contains( e->x(), e->y() ) && d->focus && d->spotVisible )
     {
-       d->spot.setX(e->x()-d->rect.x());
-       d->spot.setY(e->y()-d->rect.y());
+        d->spot.setX(e->x()-d->rect.x());
+        d->spot.setY(e->y()-d->rect.y());
     }
     else
-       setCursor( KCursor::arrowCursor() );
+    {
+        setCursor( KCursor::arrowCursor() );
+    }
 }
 
+void ImageGuideWidget::enterEvent( QEvent * )
+{
+    if ( !d->focus && d->renderingPreviewMode == PreviewToogleOnMouseOver )
+    {
+        d->onMouseMovePreviewToogled = true;
+        updatePixmap();
+        repaint(false);
+    }
+}
+
+void ImageGuideWidget::leaveEvent( QEvent * )
+{
+    if ( !d->focus && d->renderingPreviewMode == PreviewToogleOnMouseOver )
+    {
+        d->onMouseMovePreviewToogled = false;
+        updatePixmap();
+        repaint(false);
+    }
+}
+
 }  // NameSpace Digikam
 
 #include "imageguidewidget.moc"
--- trunk/extragear/graphics/digikam/libs/widgets/imageguidewidget.h #505182:505183
@@ -62,6 +62,7 @@
         PreviewBothImagesHorzCont,  // Horizontal with original and target in contiguous.
         PreviewBothImagesVertCont,  // Vertical with original and target in contiguous.
         PreviewTargetImage,         // Target image only.
+        PreviewToogleOnMouseOver,   // Target image if mouse is over image area, else original image.
         NoPreviewMode               // Target image only without information displayed.
     };
 
@@ -108,7 +109,9 @@
     void mousePressEvent( QMouseEvent * e );
     void mouseReleaseEvent( QMouseEvent * e );
     void mouseMoveEvent( QMouseEvent * e );
-
+    void enterEvent ( QEvent * e );
+    void leaveEvent ( QEvent * e );
+    
 private:
 
     void updatePixmap( void );
--- trunk/extragear/graphics/digikam/libs/widgets/imagewidget.cpp #505182:505183
@@ -136,6 +136,16 @@
     QToolTip::add( previewtargetButton, i18n( "<p>If you enable this option, you will see "
                                               "the target image." ) );
 
+    QPushButton *previewToogleMouseOverButton = new QPushButton( d->previewButtons );
+    d->previewButtons->insert(previewToogleMouseOverButton, ImageGuideWidget::PreviewToogleOnMouseOver);
+    KGlobal::dirs()->addResourceType("tooglemouseover", KGlobal::dirs()->kde_default("data") + "digikam/data");
+    directory = KGlobal::dirs()->findResourceDir("tooglemouseover", "tooglemouseover.png");
+    previewToogleMouseOverButton->setPixmap( QPixmap( directory + "tooglemouseover.png" ) );
+    previewToogleMouseOverButton->setToggleButton(true);
+    QToolTip::add( previewToogleMouseOverButton, i18n( "<p>If you enable this option, you will see "
+                                                       "the target image when the mouse is over image area, "
+                                                       "else the original image." ) );
+
     QFrame *frame    = new QFrame(this);
     frame->setFrameStyle(QFrame::Panel|QFrame::Sunken);
     QVBoxLayout* l   = new QVBoxLayout(frame, 5, 0);
@@ -176,6 +186,7 @@
 
     // -------------------------------------------------------------
     
+    //setRenderingPreviewMode(ImageGuideWidget::PreviewBothImagesVertCont);
     setRenderingPreviewMode(ImageGuideWidget::PreviewBothImagesVertCont);
 }
 



More information about the Digikam-devel mailing list