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

List:       kde-commits
Subject:    [labplot/gsoc2015-datapicker] src: Error section corrections
From:       Ankit Wagadre <wagadre.ankit () gmail ! com>
Date:       2015-07-01 0:40:23
Message-ID: E1ZA64d-0003Pq-2c () scm ! kde ! org
[Download RAW message or body]

Git commit a2ea542cb9c7d5045f5c0d7a18d313f4d452de6e by Ankit Wagadre.
Committed on 01/07/2015 at 00:20.
Pushed by ankitw into branch 'gsoc2015-datapicker'.

Error section corrections

M  +9    -3    src/backend/core/Datapicker.cpp
M  +4    -0    src/backend/core/Transform.cpp
M  +1    -0    src/backend/core/Transform.h
M  +12   -13   src/backend/worksheet/CustomItem.cpp
M  +4    -4    src/backend/worksheet/CustomItem.h
M  +18   -18   src/commonfrontend/datapicker/ImageView.cpp
M  +1    -1    src/kdefrontend/widgets/CustomItemWidget.cpp

http://commits.kde.org/labplot/a2ea542cb9c7d5045f5c0d7a18d313f4d452de6e

diff --git a/src/backend/core/Datapicker.cpp b/src/backend/core/Datapicker.cpp
index 31b07fc..d98f494 100644
--- a/src/backend/core/Datapicker.cpp
+++ b/src/backend/core/Datapicker.cpp
@@ -33,6 +33,12 @@ QWidget* Datapicker::view() const {
 }
 
 void Datapicker::initDefault() {
+    m_datasheet = new Spreadsheet(0, i18n("Data"));
+    m_datasheet->setUndoAware(false);
+    m_datasheet->column(0)->setName("x");
+    m_datasheet->column(1)->setName("y");
+    addChild(m_datasheet);
+    m_datasheet->setUndoAware(true);
     m_image = new Image(0, i18n("Image"));
 	setUndoAware(false);
     addChild(m_image);
@@ -108,24 +114,24 @@ void Datapicker::addDataToSheet(double data, int col, int row, \
const QString& co  //add spreadsheet if it's not present
     int count = childCount<Spreadsheet>();
     if (!count) {
+        m_datasheet->setUndoAware(false);
         m_datasheet = new Spreadsheet(0, i18n("Data"));
         m_datasheet->column(0)->setName("x");
         m_datasheet->column(1)->setName("y");
         addChild(m_datasheet);
+        m_datasheet->setUndoAware(true);
     }
 
+    m_datasheet->setUndoAware(false);
     //add column if it's not present
     if( col >= m_datasheet->columnCount()) {
         m_datasheet->appendColumns(col - m_datasheet->columnCount() + 1);
         m_datasheet->column(col)->setName(colName);
     }
-
     //add row if it's not present
     if(row >= m_datasheet->rowCount()) {
         m_datasheet->appendRows(row - m_datasheet->rowCount() + 1);
     }
-
-    m_datasheet->setUndoAware(false);
     m_datasheet->column(col)->setValueAt(row, data);
     m_datasheet->setUndoAware(true);
 }
diff --git a/src/backend/core/Transform.cpp b/src/backend/core/Transform.cpp
index da768d8..93ef983 100644
--- a/src/backend/core/Transform.cpp
+++ b/src/backend/core/Transform.cpp
@@ -73,6 +73,10 @@ QPointF Transform::mapSceneToLogical(const QPointF& scenePoint, \
const Image::Ref  return QPointF();
 }
 
+QPointF Transform::mapSceneLengthToLogical(const QPointF& errorSpan, const \
Image::ReferencePoints& axisPoints) { +    return mapSceneToLogical(errorSpan, \
axisPoints) - mapSceneToLogical(QPointF(0,0), axisPoints); +}
+
 QPointF Transform::mapCartesianToType(const QPointF& point){
     if (m_points.type == Image::Logarithmic) {
         return QPointF(exp(point.x()), point.y());
diff --git a/src/backend/core/Transform.h b/src/backend/core/Transform.h
index 6e1a8c1..650500c 100644
--- a/src/backend/core/Transform.h
+++ b/src/backend/core/Transform.h
@@ -7,6 +7,7 @@ class Transform {
     public:
         Transform();
         QPointF mapSceneToLogical(const QPointF&,const Image::ReferencePoints&);
+        QPointF mapSceneLengthToLogical(const QPointF&,const \
Image::ReferencePoints&);  
     private:
         bool mapTypeToCartesian();
diff --git a/src/backend/worksheet/CustomItem.cpp \
b/src/backend/worksheet/CustomItem.cpp index 9da765e..e24686f 100644
--- a/src/backend/worksheet/CustomItem.cpp
+++ b/src/backend/worksheet/CustomItem.cpp
@@ -33,7 +33,7 @@ void CustomItem::init() {
     d->position.point.setY( group.readEntry("PositionYValue", \
Worksheet::convertToSceneUnits(1, Worksheet::Centimeter)) );  d->scaleFactor = \
                Worksheet::convertToSceneUnits(1, Worksheet::Point);
     d->itemsStyle = (CustomItem::ItemsStyle)group.readEntry("ItemStyle", \
                (int)CustomItem::Circle);
-    d->itemsSize = group.readEntry("ItemSize", Worksheet::convertToSceneUnits(3, \
Worksheet::Point)); +    d->itemsSize = group.readEntry("ItemSize", \
Worksheet::convertToSceneUnits(2, Worksheet::Point));  d->itemsRotationAngle = \
group.readEntry("ItemRotation", 0.0);  d->itemsOpacity = \
                group.readEntry("ItemOpacity", 1.0);
     d->itemsBrush.setStyle( (Qt::BrushStyle)group.readEntry("ItemFillingStyle", \
(int)Qt::SolidPattern) ); @@ -282,20 +282,20 @@ QString \
CustomItem::itemsNameFromStyle(CustomItem::ItemsStyle style) {  
 QPainterPath CustomItem::errorBarsPath() {
     QPainterPath path;
-    QPolygon polygon;
+    QPolygonF polygon;
     if (itemErrorBar().minusDeltaX || itemErrorBar().plusDeltaX) {
-        polygon<<QPoint(-itemErrorBar().minusDeltaX, \
                2)<<QPoint(-itemErrorBar().minusDeltaX, -2)
-              <<QPoint(-itemErrorBar().minusDeltaX, \
                0)<<QPoint(itemErrorBar().plusDeltaX, 0)
-             <<QPoint(itemErrorBar().plusDeltaX, \
                2)<<QPoint(itemErrorBar().plusDeltaX, -2)
-            <<QPoint(itemErrorBar().plusDeltaX, 0)<<QPoint(0,0);
+        polygon<<QPointF(-itemErrorBar().minusDeltaX, \
0)<<QPointF(-itemErrorBar().minusDeltaX, 5) +              \
<<QPointF(-itemErrorBar().minusDeltaX, -5)<<QPointF(-itemErrorBar().minusDeltaX, 0) + \
<<QPointF(itemErrorBar().plusDeltaX, 0)<<QPointF(itemErrorBar().plusDeltaX, 5) +      \
<<QPointF(itemErrorBar().plusDeltaX, -5)<<QPointF(itemErrorBar().plusDeltaX, \
0)<<QPointF(0,0);  path.addPolygon(polygon);
     }
 
     if (itemErrorBar().minusDeltaY || itemErrorBar().minusDeltaY) {
-        polygon<<QPoint(0, -itemErrorBar().minusDeltaY)<<QPoint(2, \
                -itemErrorBar().minusDeltaY)
-              <<QPoint(-2,-itemErrorBar().minusDeltaY)<<QPoint(0, \
                -itemErrorBar().minusDeltaY)
-             <<QPoint(0, itemErrorBar().plusDeltaY)<<QPoint(2, \
                itemErrorBar().plusDeltaY)
-            <<QPoint(-2, itemErrorBar().plusDeltaY);
+        polygon<<QPointF(0, -itemErrorBar().minusDeltaY)<<QPointF(5, \
-itemErrorBar().minusDeltaY) +              \
<<QPointF(-5,-itemErrorBar().minusDeltaY)<<QPointF(0, -itemErrorBar().minusDeltaY) +  \
<<QPointF(0, itemErrorBar().plusDeltaY)<<QPointF(5, itemErrorBar().plusDeltaY) +      \
<<QPointF(-5, itemErrorBar().plusDeltaY);  path.addPolygon(polygon);
     }
 
@@ -475,7 +475,6 @@ void CustomItemPrivate::recalcShapeAndBoundingRect(){
     matrix.rotate(-itemsRotationAngle);
     matrix.scale(scaleFactor,scaleFactor);
     transformedBoundingRectangle = matrix.mapRect(boundingRectangle);
-
     itemShape = QPainterPath();
     itemShape.addRect(transformedBoundingRectangle);
 }
@@ -490,19 +489,19 @@ void CustomItemPrivate::paint(QPainter *painter, const \
QStyleOptionGraphicsItem  QPainterPath errorBar = q->errorBarsPath();
     QTransform trafo;
     trafo.scale(itemsSize, itemsSize);
+    trafo.scale(scaleFactor, scaleFactor);
     path = trafo.map(path);
     trafo.reset();
     if (itemsRotationAngle != 0) {
         trafo.rotate(-itemsRotationAngle);
         path = trafo.map(path);
     }
-    path.addPath(errorBar);
     painter->save();
     painter->setPen(itemsPen);
     painter->setBrush(itemsBrush);
     painter->setOpacity(itemsOpacity);
-    painter->scale(scaleFactor, scaleFactor);
     painter->drawPath(path);
+    painter->drawPath(errorBar);
     painter->restore();
 
     if (m_suppressHoverEvents) {
diff --git a/src/backend/worksheet/CustomItem.h b/src/backend/worksheet/CustomItem.h
index 0ba6a5f..8c1c0b3 100644
--- a/src/backend/worksheet/CustomItem.h
+++ b/src/backend/worksheet/CustomItem.h
@@ -27,10 +27,10 @@ class CustomItem : public WorksheetElement{
 		};
 
         struct ErrorBar{
-            int plusDeltaX;
-            int minusDeltaX;
-            int plusDeltaY;
-            int minusDeltaY;
+            qreal plusDeltaX;
+            qreal minusDeltaX;
+            qreal plusDeltaY;
+            qreal minusDeltaY;
         };
 
 		explicit CustomItem(const QString& name );
diff --git a/src/commonfrontend/datapicker/ImageView.cpp \
b/src/commonfrontend/datapicker/ImageView.cpp index 25f3651..6383f58 100644
--- a/src/commonfrontend/datapicker/ImageView.cpp
+++ b/src/commonfrontend/datapicker/ImageView.cpp
@@ -262,8 +262,8 @@ void ImageView::mousePressEvent(QMouseEvent* event) {
             addCustomItem(eventPos);
 
             Image::ReferencePoints points = m_image->axisPoints();
-            points.scenePos[childItems.count() - 1].setX(eventPos.x());
-            points.scenePos[childItems.count() - 1].setY(eventPos.y());
+            points.scenePos[childItems.count()].setX(eventPos.x());
+            points.scenePos[childItems.count()].setY(eventPos.y());
             m_image->setAxisPoints(points);
         } else if (m_image->plotPointsType() == Image::CurvePoints) {
 
@@ -272,29 +272,29 @@ void ImageView::mousePressEvent(QMouseEvent* event) {
             } else {
                 lastCurvePoint = childItems.last();
                 CustomItem::ErrorBar errorBar = lastCurvePoint->itemErrorBar();
-                QPoint errorSpan = event->pos() - \
mapFromScene(lastCurvePoint->position().point); +                QPointF errorSpan = \
eventPos - lastCurvePoint->position().point;  
                 if (m_image->plotErrors().x == Image::AsymmetricError && \
!errorBar.minusDeltaX) {  if (!errorBar.plusDeltaX)
-                        errorBar.plusDeltaX = abs(errorSpan.x());
+                        errorBar.plusDeltaX = qAbs(errorSpan.x());
                     else
-                        errorBar.minusDeltaX = abs(errorSpan.x());
+                        errorBar.minusDeltaX = qAbs(errorSpan.x());
 
                     lastCurvePoint->setItemErrorBar(errorBar);
                 } else if (m_image->plotErrors().x == Image::SymmetricError && \
                !errorBar.plusDeltaX) {
-                    errorBar.plusDeltaX = abs(errorSpan.x());
+                    errorBar.plusDeltaX = qAbs(errorSpan.x());
                     errorBar.minusDeltaX = errorBar.plusDeltaX;
 
                     lastCurvePoint->setItemErrorBar(errorBar);
                 } else if (m_image->plotErrors().y == Image::AsymmetricError && \
!errorBar.minusDeltaY) {  if (!errorBar.plusDeltaY)
-                        errorBar.plusDeltaY = abs(errorSpan.y());
+                        errorBar.plusDeltaY = qAbs(errorSpan.y());
                     else
-                        errorBar.minusDeltaY = abs(errorSpan.y());
+                        errorBar.minusDeltaY = qAbs(errorSpan.y());
 
                     lastCurvePoint->setItemErrorBar(errorBar);
                 } else if (m_image->plotErrors().y == Image::SymmetricError && \
                !errorBar.plusDeltaY) {
-                    errorBar.plusDeltaY = abs(errorSpan.y());
+                    errorBar.plusDeltaY = qAbs(errorSpan.y());
                     errorBar.minusDeltaY = errorBar.plusDeltaY;
 
                     lastCurvePoint->setItemErrorBar(errorBar);
@@ -501,33 +501,33 @@ void ImageView::updateDatasheet() {
 void ImageView::updateData(const CustomItem *item) {
     m_image->updateAxisPoints();
 
-    QPointF data;
     Datapicker* datapicker = dynamic_cast<Datapicker*>(m_image->parentAspect());
     int row = m_image->childCount<CustomItem>(AbstractAspect::IncludeHidden) - 4;
 
     int colCount = 0;
+    QPointF data;
     if (datapicker) {
         data = m_transform->mapSceneToLogical(item->position().point, \
m_image->axisPoints());  datapicker->addDataToSheet(data.x(), colCount++, row, "x");
         datapicker->addDataToSheet(data.y(), colCount++, row, "y");
 
         if (m_image->plotErrors().x != Image::NoError) {
-            data = m_transform->mapSceneToLogical(mapToScene(QPoint(item->itemErrorBar().plusDeltaX, \
                0)), m_image->axisPoints());
-            datapicker->addDataToSheet(data.x(), colCount++, row, "+delta_x");
+            data = m_transform->mapSceneLengthToLogical(QPointF(item->itemErrorBar().plusDeltaX, \
0), m_image->axisPoints()); +            datapicker->addDataToSheet(qAbs(data.x()), \
colCount++, row, "+delta_x");  
             if (m_image->plotErrors().x == Image::AsymmetricError) {
-                data = \
m_transform->mapSceneToLogical(mapToScene(QPoint(item->itemErrorBar().minusDeltaX, \
                0)), m_image->axisPoints());
-                datapicker->addDataToSheet(data.x(), colCount++, row, "-delta_x");
+                data = \
m_transform->mapSceneLengthToLogical(QPointF(item->itemErrorBar().minusDeltaX, 0), \
m_image->axisPoints()); +                datapicker->addDataToSheet(qAbs(data.x()), \
colCount++, row, "-delta_x");  }
         }
 
         if (m_image->plotErrors().y != Image::NoError) {
-            data = m_transform->mapSceneToLogical(mapToScene(QPoint(0, \
                item->itemErrorBar().plusDeltaY)), m_image->axisPoints());
-            datapicker->addDataToSheet(data.y(), colCount++, row, "+delta_y");
+            data = m_transform->mapSceneLengthToLogical(QPointF(0, \
item->itemErrorBar().plusDeltaY), m_image->axisPoints()); +            \
datapicker->addDataToSheet(qAbs(data.y()), colCount++, row, "+delta_y");  
             if (m_image->plotErrors().y == Image::AsymmetricError) {
-                data = m_transform->mapSceneToLogical(mapToScene(QPoint(0, \
                item->itemErrorBar().minusDeltaY)), m_image->axisPoints());
-                datapicker->addDataToSheet(data.y(), colCount++, row, "-delta_y");
+                data = m_transform->mapSceneLengthToLogical(QPointF(0, \
item->itemErrorBar().minusDeltaY), m_image->axisPoints()); +                \
datapicker->addDataToSheet(qAbs(data.y()), colCount++, row, "-delta_y");  }
         }
     }
diff --git a/src/kdefrontend/widgets/CustomItemWidget.cpp \
b/src/kdefrontend/widgets/CustomItemWidget.cpp index 69098ad..ce1bb62 100644
--- a/src/kdefrontend/widgets/CustomItemWidget.cpp
+++ b/src/kdefrontend/widgets/CustomItemWidget.cpp
@@ -112,7 +112,7 @@ void CustomItemWidget::hidePositionWidgets() {
 }
 
 void CustomItemWidget::updateItemList(QList<CustomItem*> list) {
-    if (m_itemList.isEmpty()) {
+    if (!m_itemList.isEmpty()) {
         m_itemList = list;
         m_item = list.first();
         this->setEnabled(true);


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

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