]> git.sesse.net Git - kdenlive/blobdiff - src/vectorscope.cpp
audiosignal now dockable and horizontal-/verticalable
[kdenlive] / src / vectorscope.cpp
index b046fa13f8c971a6f6b5226a7a6a69e3bcf82a4c..f81066335457ba1742d9e54e958ee3ffa0ee1e08 100644 (file)
@@ -43,7 +43,7 @@ const QPointF YPbPr_Yl(-.5, .081);
 
 
 Vectorscope::Vectorscope(Monitor *projMonitor, Monitor *clipMonitor, QWidget *parent) :
-    AbstractScopeWidget(projMonitor, clipMonitor, parent),
+    AbstractScopeWidget(projMonitor, clipMonitor, true, parent),
     m_gain(1)
 {
     ui = new Ui::Vectorscope_UI();
@@ -63,7 +63,7 @@ Vectorscope::Vectorscope(Monitor *projMonitor, Monitor *clipMonitor, QWidget *pa
     ui->backgroundMode->addItem(i18n("None"), QVariant(BG_NONE));
     ui->backgroundMode->addItem(i18n("YUV"), QVariant(BG_YUV));
     ui->backgroundMode->addItem(i18n("Modified YUV (Chroma)"), QVariant(BG_CHROMA));
-    ui->backgroundMode->addItem("YPbPr", QVariant(BG_YPbPr)); // TODO translate after 0.7.8 release
+    ui->backgroundMode->addItem(i18n("YPbPr"), QVariant(BG_YPbPr));
 
     ui->sliderGain->setMinimum(0);
     ui->sliderGain->setMaximum(40);
@@ -94,11 +94,10 @@ Vectorscope::Vectorscope(Monitor *projMonitor, Monitor *clipMonitor, QWidget *pa
     m_menu->addAction(m_aAxisEnabled);
     b &= connect(m_aAxisEnabled, SIGNAL(changed()), this, SLOT(forceUpdateBackground()));
 
-    // TODO use i18n after the 0.7.8 release
-    m_menu->addSeparator()->setText("Color Space");
-    m_aColorSpace_YPbPr = new QAction("YPbPr", this);
+    m_menu->addSeparator()->setText(i18n("Color Space"));
+    m_aColorSpace_YPbPr = new QAction(i18n("YPbPr"), this);
     m_aColorSpace_YPbPr->setCheckable(true);
-    m_aColorSpace_YUV = new QAction("YUV", this);
+    m_aColorSpace_YUV = new QAction(i18n("YUV"), this);
     m_aColorSpace_YUV->setCheckable(true);
     m_agColorSpace = new QActionGroup(this);
     m_agColorSpace->addAction(m_aColorSpace_YPbPr);
@@ -186,6 +185,12 @@ QRect Vectorscope::scopeRect()
     pCy75 = m_vectorscopeGenerator->mapToCircle(scopeRect.size(), P75*VectorscopeGenerator::scaling*YUV_Cy);
     pMg75 = m_vectorscopeGenerator->mapToCircle(scopeRect.size(), P75*VectorscopeGenerator::scaling*YUV_Mg);
     pYl75 = m_vectorscopeGenerator->mapToCircle(scopeRect.size(), P75*VectorscopeGenerator::scaling*YUV_Yl);
+    qR75 = m_vectorscopeGenerator->mapToCircle(scopeRect.size(), P75*VectorscopeGenerator::scaling*YPbPr_R);
+    qG75 = m_vectorscopeGenerator->mapToCircle(scopeRect.size(), P75*VectorscopeGenerator::scaling*YPbPr_G);
+    qB75 = m_vectorscopeGenerator->mapToCircle(scopeRect.size(), P75*VectorscopeGenerator::scaling*YPbPr_B);
+    qCy75 = m_vectorscopeGenerator->mapToCircle(scopeRect.size(), P75*VectorscopeGenerator::scaling*YPbPr_Cy);
+    qMg75 = m_vectorscopeGenerator->mapToCircle(scopeRect.size(), P75*VectorscopeGenerator::scaling*YPbPr_Mg);
+    qYl75 = m_vectorscopeGenerator->mapToCircle(scopeRect.size(), P75*VectorscopeGenerator::scaling*YPbPr_Yl);
 
     return scopeRect;
 }
@@ -382,22 +387,40 @@ QImage Vectorscope::renderBackground(uint)
 
     // Draw 75% box
     if (m_a75PBox->isChecked()) {
-        davinci.drawLine(pR75, pYl75);
-        davinci.drawLine(pYl75, pG75);
-        davinci.drawLine(pG75, pCy75);
-        davinci.drawLine(pCy75, pB75);
-        davinci.drawLine(pB75, pMg75);
-        davinci.drawLine(pMg75, pR75);
+        if (m_aColorSpace_YUV->isChecked()) {
+            davinci.drawLine(pR75, pYl75);
+            davinci.drawLine(pYl75, pG75);
+            davinci.drawLine(pG75, pCy75);
+            davinci.drawLine(pCy75, pB75);
+            davinci.drawLine(pB75, pMg75);
+            davinci.drawLine(pMg75, pR75);
+        } else {
+            davinci.drawLine(qR75, qYl75);
+            davinci.drawLine(qYl75, qG75);
+            davinci.drawLine(qG75, qCy75);
+            davinci.drawLine(qCy75, qB75);
+            davinci.drawLine(qB75, qMg75);
+            davinci.drawLine(qMg75, qR75);
+        }
     }
 
     // Draw RGB/CMY points with 75% chroma (for NTSC)
     davinci.setPen(penThin);
-    davinci.drawEllipse(pR75, 3,3);
-    davinci.drawEllipse(pG75, 3,3);
-    davinci.drawEllipse(pB75, 3,3);
-    davinci.drawEllipse(pCy75, 3,3);
-    davinci.drawEllipse(pMg75, 3,3);
-    davinci.drawEllipse(pYl75, 3,3);
+    if (m_aColorSpace_YUV->isChecked()) {
+        davinci.drawEllipse(pR75, 3,3);
+        davinci.drawEllipse(pG75, 3,3);
+        davinci.drawEllipse(pB75, 3,3);
+        davinci.drawEllipse(pCy75, 3,3);
+        davinci.drawEllipse(pMg75, 3,3);
+        davinci.drawEllipse(pYl75, 3,3);
+    } else {
+        davinci.drawEllipse(qR75, 3,3);
+        davinci.drawEllipse(qG75, 3,3);
+        davinci.drawEllipse(qB75, 3,3);
+        davinci.drawEllipse(qCy75, 3,3);
+        davinci.drawEllipse(qMg75, 3,3);
+        davinci.drawEllipse(qYl75, 3,3);
+    }
 
     // Draw realtime factor (number of skipped pixels)
     if (m_aRealtime->isChecked()) {