[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