[Digikam-devel] [Bug 131170] New: add grid/auxiliary lines for perspective correction tool

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[Digikam-devel] [Bug 131170] New: add grid/auxiliary lines for perspective correction tool

Bugzilla from mikmach@wp.pl
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=131170         
           Summary: add grid/auxiliary lines for perspective correction tool
           Product: digikamimageplugins
           Version: unspecified
          Platform: Compiled Sources
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: wishlist
          Priority: NOR
         Component: general
        AssignedTo: digikam-devel kde org
        ReportedBy: mikmach wp pl


Version:           0.9-svn (using KDE KDE 3.5.3)
Installed from:    Compiled From Sources
Compiler:          gcc4.0.1
OS:                Linux

To make perspective correct you need some paragon. Without that corrction tool is just waving in an air. Currently I am using kruler to get sense of vertical or horizontal lines but it has many drawbacks (wide, nontransparent object). The best solution would be customizable grid but probably easier to make would be auxiliary lines known from Free Rotation tool.
TIA
_______________________________________________
Digikam-devel mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-devel
Reply | Threaded
Open this post in threaded view
|

[Digikam-devel] [Bug 131170] add grid/auxiliary lines for perspective correction tool

Gilles Caulier
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=131170         
caulier.gilles free fr changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|general                     |Perspective
_______________________________________________
Digikam-devel mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-devel
Reply | Threaded
Open this post in threaded view
|

[Digikam-devel] [Bug 131170] add grid/auxiliary lines for perspective correction tool

Bugzilla from owner@bugs.kde.org
In reply to this post by Bugzilla from mikmach@wp.pl
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=131170         
caulier.gilles kdemail net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ari.reads gmail com



------- Additional Comments From caulier.gilles kdemail net  2006-12-18 07:51 -------
*** Bug 138946 has been marked as a duplicate of this bug. ***
_______________________________________________
Digikam-devel mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-devel
Reply | Threaded
Open this post in threaded view
|

[Digikam-devel] [Bug 131170] add grid/auxiliary lines for perspective correction tool

Gilles Caulier-2
In reply to this post by Bugzilla from mikmach@wp.pl
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=131170         
caulier.gilles kdemail net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |FIXED



------- Additional Comments From caulier.gilles kdemail net  2007-01-18 15:49 -------
SVN commit 624957 by cgilles:

digikam from trunk : Perspective tool :

- Add new option to draw a guide grid (15x15).
- Fix Restore/Save settings between plugin sessions.

CCMAIL: digikam-devel kde org
BUG: 131170
BUG: 137545




 M  +20 -16    imageeffect_perspective.cpp  
 M  +4 -3      imageeffect_perspective.h  
 M  +231 -183  perspectivewidget.cpp  
 M  +7 -0      perspectivewidget.h
_______________________________________________
Digikam-devel mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-devel
Reply | Threaded
Open this post in threaded view
|

[Digikam-devel] [Bug 131170] add grid/auxiliary lines for perspective correction tool

Gilles Caulier-2
In reply to this post by Bugzilla from mikmach@wp.pl
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=131170         




------- Additional Comments From caulier.gilles kdemail net  2007-01-18 20:08 -------
SVN commit 625037 by cgilles:

digikam from trunk : Perspective Tool : add Horizontal/Vertical guide lines like with Free Rotation tool

CCMAIL: digikam-devel kde org

CCBUGS: 137545, 131170



 M  +37 -7     imageeffect_perspective.cpp  
 M  +7 -0      imageeffect_perspective.h  
 M  +58 -4     perspectivewidget.cpp  
 M  +12 -3     perspectivewidget.h  


--- trunk/extragear/graphics/digikamimageplugins/perspective/imageeffect_perspective.cpp #625036:625037
 @ -25,6 +25,7  @
 
 #include <qvgroupbox.h>
 #include <qlabel.h>
+#include <qspinbox.h>
 #include <qpushbutton.h>
 #include <qwhatsthis.h>
 #include <qlayout.h>
 @ -33,6 +34,7  @
 
 // KDE includes.
 
+#include <kcolorbutton.h>
 #include <kcursor.h>
 #include <kconfig.h>
 #include <klocale.h>
 @ -83,7 +85,7  @
     
     QFrame *frame = new QFrame(plainPage());
     frame->setFrameStyle(QFrame::Panel|QFrame::Sunken);
-    QVBoxLayout* l = new QVBoxLayout(frame, 5, 0);
+    QVBoxLayout* l  = new QVBoxLayout(frame, 5, 0);
     m_previewWidget = new PerspectiveWidget(525, 350, frame);
     l->addWidget(m_previewWidget);
     QWhatsThis::add( m_previewWidget, i18n("<p>This is the perspective transformation operation preview. "
 @ -97,7 +99,7  @
     Digikam::ImageIface iface(0, 0);
 
     QWidget *gbox2          = new QWidget(plainPage());
-    QGridLayout *gridLayout = new QGridLayout( gbox2, 11, 2, marginHint(), spacingHint());
+    QGridLayout *gridLayout = new QGridLayout( gbox2, 13, 2, marginHint(), spacingHint());
 
     QLabel *label1  = new QLabel(i18n("New width:"), gbox2);
     m_newWidthLabel = new QLabel(temp.setNum( iface.originalWidth()) + i18n(" px"), gbox2);
 @ -148,8 +150,23  @
     m_drawGridCheckBox = new QCheckBox(i18n("Draw grid"), gbox2);
     gridLayout->addMultiCellWidget(m_drawGridCheckBox, 10, 10, 0, 2);
 
-    gridLayout->setRowStretch(11, 10);
+    // -------------------------------------------------------------
 
+    QLabel *label7 = new QLabel(i18n("Guide color:"), gbox2);
+    m_guideColorBt = new KColorButton( QColor( Qt::red ), gbox2 );
+    QWhatsThis::add( m_guideColorBt, i18n("<p>Set here the color used to draw guides dashed-lines."));
+    gridLayout->addMultiCellWidget(label7, 11, 11, 0, 0);
+    gridLayout->addMultiCellWidget(m_guideColorBt, 11, 11, 2, 2);
+
+    QLabel *label8 = new QLabel(i18n("Guide width:"), gbox2);
+    m_guideSize    = new QSpinBox( 1, 5, 1, gbox2);
+    QWhatsThis::add( m_guideSize, i18n("<p>Set here the width in pixels used to draw guides dashed-lines."));
+    gridLayout->addMultiCellWidget(label8, 12, 12, 0, 0);
+    gridLayout->addMultiCellWidget(m_guideSize, 12, 12, 2, 2);
+
+    gridLayout->setColStretch(1, 10);
+    gridLayout->setRowStretch(13, 10);
+
     setUserAreaWidget(gbox2);
 
     // -------------------------------------------------------------
 @ -158,10 +175,16  @
             this, SLOT(slotUpdateInfo(QRect, float, float, float, float)));  
 
     connect(m_drawWhileMovingCheckBox, SIGNAL(toggled(bool)),
-            m_previewWidget, SLOT(toggleDrawWhileMoving(bool)));
+            m_previewWidget, SLOT(slotToggleDrawWhileMoving(bool)));
 
     connect(m_drawGridCheckBox, SIGNAL(toggled(bool)),
-            m_previewWidget, SLOT(toggleDrawGrid(bool)));
+            m_previewWidget, SLOT(slotToggleDrawGrid(bool)));
+
+    connect(m_guideColorBt, SIGNAL(changed(const QColor &)),
+            m_previewWidget, SLOT(slotChangeGuideColor(const QColor &)));
+
+    connect(m_guideSize, SIGNAL(valueChanged(int)),
+            m_previewWidget, SLOT(slotChangeGuideSize(int)));
 }
 
 ImageEffect_Perspective::~ImageEffect_Perspective()
 @ -170,12 +193,17  @
 
 void ImageEffect_Perspective::readUserSettings(void)
 {
+    QColor defaultGuideColor(Qt::red);
     KConfig *config = kapp->config();
     config->setGroup("perspective Tool Dialog");
     m_drawWhileMovingCheckBox->setChecked(config->readBoolEntry("Draw While Moving", true));
     m_drawGridCheckBox->setChecked(config->readBoolEntry("Draw Grid", false));
-    m_previewWidget->toggleDrawWhileMoving(m_drawWhileMovingCheckBox->isChecked());
-    m_previewWidget->toggleDrawGrid(m_drawGridCheckBox->isChecked());
+    m_guideColorBt->setColor(config->readColorEntry("Guide Color", &defaultGuideColor));
+    m_guideSize->setValue(config->readNumEntry("Guide Width", 1));
+    m_previewWidget->slotToggleDrawWhileMoving(m_drawWhileMovingCheckBox->isChecked());
+    m_previewWidget->slotToggleDrawGrid(m_drawGridCheckBox->isChecked());
+    m_previewWidget->slotChangeGuideColor(m_guideColorBt->color());
+    m_previewWidget->slotChangeGuideSize(m_guideSize->value());
 }
 
 void ImageEffect_Perspective::writeUserSettings(void)
 @ -184,6 +212,8  @
     config->setGroup("perspective Tool Dialog");
     config->writeEntry("Draw While Moving", m_drawWhileMovingCheckBox->isChecked());
     config->writeEntry("Draw Grid", m_drawGridCheckBox->isChecked());
+    config->writeEntry("Guide Color", m_guideColorBt->color());
+    config->writeEntry("Guide Width", m_guideSize->value());
     config->sync();
 }
 
--- trunk/extragear/graphics/digikamimageplugins/perspective/imageeffect_perspective.h #625036:625037
 @ -32,7 +32,10  @
 
 class QLabel;
 class QCheckBox;
+class QSpinBox;
 
+class KColorButton;
+
 namespace DigikamPerspectiveImagesPlugin
 {
 
 @ -71,6 +74,10  @
     QCheckBox         *m_drawWhileMovingCheckBox;
     QCheckBox         *m_drawGridCheckBox;
 
+    QSpinBox          *m_guideSize;
+
+    KColorButton      *m_guideColorBt;
+
     PerspectiveWidget *m_previewWidget;
 };
 
--- trunk/extragear/graphics/digikamimageplugins/perspective/perspectivewidget.cpp #625036:625037
 @ -65,6 +65,8  @
     m_drawGrid        = false;
     m_drawWhileMoving = true;
     m_currentResizing = ResizingNone;
+    m_guideColor      = Qt::red;
+    m_guideSize       = 1;
 
     m_iface        = new Digikam::ImageIface(w, h);
     uchar *data    = m_iface->setPreviewImageSize(w, h);
 @ -168,6 +170,9  @
     m_bottomRightPoint.setX(m_w-1);
     m_bottomRightPoint.setY(m_h-1);
 
+    m_spot.setX(m_w / 2);
+    m_spot.setY(m_h / 2);
+
     m_antiAlias = true;
     updatePixmap();
     repaint(false);
 @ -196,25 +201,39  @
                               targetImg.bits(), targetImg.width(), targetImg.height());
 }
 
-void PerspectiveWidget::toggleAntiAliasing(bool a)
+void PerspectiveWidget::slotToggleAntiAliasing(bool a)
 {
     m_antiAlias = a;
     updatePixmap();
     repaint(false);
 }
 
-void PerspectiveWidget::toggleDrawWhileMoving(bool draw)
+void PerspectiveWidget::slotToggleDrawWhileMoving(bool draw)
 {
     m_drawWhileMoving = draw;
 }
 
-void PerspectiveWidget::toggleDrawGrid(bool grid)
+void PerspectiveWidget::slotToggleDrawGrid(bool grid)
 {
     m_drawGrid = grid;
     updatePixmap();
     repaint(false);
 }
 
+void PerspectiveWidget::slotChangeGuideColor(const QColor &color)
+{
+    m_guideColor = color;
+    updatePixmap();
+    repaint(false);
+}
+
+void PerspectiveWidget::slotChangeGuideSize(int size)
+{
+    m_guideSize = size;
+    updatePixmap();
+    repaint(false);
+}
+
 void PerspectiveWidget::updatePixmap(void)
 {
     m_topLeftCorner.setRect(m_topLeftPoint.x() + m_rect.topLeft().x(),
 @ -314,6 +333,17  @
     p.drawEllipse( m_transformedCenter.x()+m_rect.topLeft().x(),
                    m_transformedCenter.y()+m_rect.topLeft().y(), 4, 4 );
 
+    // Drawing vertical and horizontal guide lines.
+
+    int xspot = m_spot.x() + m_rect.x();
+    int yspot = m_spot.y() + m_rect.y();
+    p.setPen(QPen(Qt::white, m_guideSize, Qt::SolidLine));
+    p.drawLine(xspot, m_rect.top(), xspot, m_rect.bottom());
+    p.drawLine(m_rect.left(), yspot, m_rect.right(), yspot);
+    p.setPen(QPen(m_guideColor, m_guideSize, Qt::DotLine));
+    p.drawLine(xspot, m_rect.top(), xspot, m_rect.bottom());
+    p.drawLine(m_rect.left(), yspot, m_rect.right(), yspot);
+
     p.end();
 
     emit signalPerspectiveChanged(getTargetSize(), getAngleTopLeft(), getAngleTopRight(),
 @ -603,6 +633,9  @
 
 void PerspectiveWidget::resizeEvent(QResizeEvent * e)
 {
+    int old_w = m_w;
+    int old_h = m_h;
+
     delete m_pixmap;
     int w          = e->size().width();
     int h          = e->size().height();
 @ -629,6 +662,9  @
     m_transformedCenter = QPoint(lroundf(m_transformedCenter.x()*xFactor),
                                  lroundf(m_transformedCenter.y()*yFactor));
 
+    m_spot.setX((int)((float)m_spot.x() * ( (float)m_w / (float)old_w)));
+    m_spot.setY((int)((float)m_spot.y() * ( (float)m_h / (float)old_h)));
+
     updatePixmap();
 }
 
 @ -645,10 +681,15  @
             m_currentResizing = ResizingTopRight;
         else if ( m_bottomLeftCorner.contains( e->x(), e->y() ) )
             m_currentResizing = ResizingBottomLeft;
+        else
+        {
+            m_spot.setX(e->x()-m_rect.x());
+            m_spot.setY(e->y()-m_rect.y());
+        }
     }
 }
 
-void PerspectiveWidget::mouseReleaseEvent ( QMouseEvent * )
+void PerspectiveWidget::mouseReleaseEvent ( QMouseEvent * e )
 {
     if ( m_currentResizing != ResizingNone )
     {
 @ -662,6 +703,13  @
             repaint(false);
         }
     }
+    else
+    {
+        m_spot.setX(e->x()-m_rect.x());
+        m_spot.setY(e->y()-m_rect.y());
+        updatePixmap();
+        repaint(false);
+    }
 }
 
 void PerspectiveWidget::mouseMoveEvent ( QMouseEvent * e )
 @ -758,6 +806,12  @
                 setCursor( KCursor::sizeFDiagCursor() );
             }
 
+            else
+            {
+                m_spot.setX(e->x()-m_rect.x());
+                m_spot.setY(e->y()-m_rect.y());
+            }
+
             updatePixmap();
             repaint(false);
         }
--- trunk/extragear/graphics/digikamimageplugins/perspective/perspectivewidget.h #625036:625037
 @ -30,6 +30,7  @
 
 #include <qwidget.h>
 #include <qpoint.h>
+#include <qcolor.h>
 #include <qrect.h>
 
 // Digikam includes.
 @ -77,10 +78,13  @
 
 public slots:
 
-    void toggleAntiAliasing(bool a);
-    void toggleDrawWhileMoving(bool draw);
-    void toggleDrawGrid(bool grid);
+    void slotToggleAntiAliasing(bool a);
+    void slotToggleDrawWhileMoving(bool draw);
+    void slotToggleDrawGrid(bool grid);
 
+    void slotChangeGuideColor(const QColor &color);
+    void slotChangeGuideSize(int size);    
+
 signals:
 
     void signalPerspectiveChanged( QRect newSize, float topLeftAngle, float topRightAngle,
 @ -130,6 +134,8  @
 
     int                  m_currentResizing;
 
+    int                  m_guideSize;
+
     QRect                m_rect;
 
     // Tranformed center area for mouse position control.
 @ -147,7 +153,10  @
     QPoint               m_topRightPoint;
     QPoint               m_bottomLeftPoint;
     QPoint               m_bottomRightPoint;
+    QPoint               m_spot;
 
+    QColor               m_guideColor;
+
     // 60 points will be stored to compute a grid of 15x15 lines.
     QPointArray          m_grid;
_______________________________________________
Digikam-devel mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-devel
Reply | Threaded
Open this post in threaded view
|

[Digikam-devel] [Bug 131170] add grid/auxiliary lines for perspective correction tool

Bugzilla from mikmach@wp.pl
In reply to this post by Bugzilla from mikmach@wp.pl
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=131170         




------- Additional Comments From mikmach wp pl  2007-01-18 22:20 -------
Thanks :)
I am using this plugin really often and lack of feedback was big
problem.
_______________________________________________
Digikam-devel mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-devel