From a6a829295df6417fd9b29c37a665847c9af75b04 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Mon, 7 Oct 2019 16:12:56 +1300 Subject: [PATCH] SED-ML L1V4: updated the way we keep track of / retrieve a curve's symbol's settings (#2053). --- models/tests/sedml/noble_1962_V_iK.sedml | 32 +---- models/tests/sedml/noble_1962_V_time.sedml | 32 +---- models/tests/sedml/noble_1962_gL_time.sedml | 32 +---- models/tests/sedml/noble_1962_iK_V.sedml | 32 +---- models/tests/sedml/noble_1962_iK_time.sedml | 32 +---- models/tests/sedml/noble_1962_local.sedml | 56 +------- models/tests/sedml/noble_1962_remote.sedml | 56 +------- models/tests/sedml/noble_1962_time_V.sedml | 32 +---- models/tests/sedml/noble_1962_time_gL.sedml | 32 +---- models/tests/sedml/noble_1962_time_iK.sedml | 32 +---- models/tests/sedml/noble_1962_time_time.sedml | 32 +---- ...mulationexperimentviewsimulationwidget.cpp | 96 ++++++++----- .../support/SEDMLSupport/src/sedmlsupport.cpp | 132 ++++++++++++++++++ .../support/SEDMLSupport/src/sedmlsupport.h | 3 + .../support/SEDMLSupport/tests/tests.cpp | 37 +++++ 15 files changed, 286 insertions(+), 382 deletions(-) diff --git a/models/tests/sedml/noble_1962_V_iK.sedml b/models/tests/sedml/noble_1962_V_iK.sedml index f1b8daf0ba..b3808255ea 100644 --- a/models/tests/sedml/noble_1962_V_iK.sedml +++ b/models/tests/sedml/noble_1962_V_iK.sedml @@ -147,13 +147,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -204,13 +197,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -261,13 +247,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -318,13 +297,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -334,15 +306,19 @@ diff --git a/models/tests/sedml/noble_1962_V_time.sedml b/models/tests/sedml/noble_1962_V_time.sedml index 3688e0537c..925f1c8a8a 100644 --- a/models/tests/sedml/noble_1962_V_time.sedml +++ b/models/tests/sedml/noble_1962_V_time.sedml @@ -147,13 +147,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -204,13 +197,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -261,13 +247,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -318,13 +297,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -334,15 +306,19 @@ diff --git a/models/tests/sedml/noble_1962_gL_time.sedml b/models/tests/sedml/noble_1962_gL_time.sedml index 380521bdda..7f6d45050a 100644 --- a/models/tests/sedml/noble_1962_gL_time.sedml +++ b/models/tests/sedml/noble_1962_gL_time.sedml @@ -147,13 +147,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -204,13 +197,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -261,13 +247,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -318,13 +297,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -334,15 +306,19 @@ diff --git a/models/tests/sedml/noble_1962_iK_V.sedml b/models/tests/sedml/noble_1962_iK_V.sedml index 178fdb622d..63c723e700 100644 --- a/models/tests/sedml/noble_1962_iK_V.sedml +++ b/models/tests/sedml/noble_1962_iK_V.sedml @@ -147,13 +147,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -204,13 +197,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -261,13 +247,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -318,13 +297,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -334,15 +306,19 @@ diff --git a/models/tests/sedml/noble_1962_iK_time.sedml b/models/tests/sedml/noble_1962_iK_time.sedml index 17ed947953..9af88359d2 100644 --- a/models/tests/sedml/noble_1962_iK_time.sedml +++ b/models/tests/sedml/noble_1962_iK_time.sedml @@ -147,13 +147,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -204,13 +197,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -261,13 +247,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -318,13 +297,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -334,15 +306,19 @@ diff --git a/models/tests/sedml/noble_1962_local.sedml b/models/tests/sedml/noble_1962_local.sedml index 99018aaf4b..dff0024fe2 100644 --- a/models/tests/sedml/noble_1962_local.sedml +++ b/models/tests/sedml/noble_1962_local.sedml @@ -195,13 +195,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -252,13 +245,6 @@ true - - - 8 - #108001 - true - #66ff66 - @@ -266,13 +252,6 @@ true - - - 8 - #108001 - true - #66ff66 - @@ -280,13 +259,6 @@ true - - - 8 - #108001 - true - #66ff66 - @@ -337,13 +309,6 @@ true - - - 8 - #800002 - true - #fd6666 - @@ -351,13 +316,6 @@ true - - - 8 - #800002 - true - #fd6666 - @@ -365,13 +323,6 @@ true - - - 8 - #800002 - true - #fd6666 - @@ -381,24 +332,31 @@ diff --git a/models/tests/sedml/noble_1962_remote.sedml b/models/tests/sedml/noble_1962_remote.sedml index 824e34312e..c569f8680f 100644 --- a/models/tests/sedml/noble_1962_remote.sedml +++ b/models/tests/sedml/noble_1962_remote.sedml @@ -195,13 +195,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -252,13 +245,6 @@ true - - - 8 - #108001 - true - #66ff66 - @@ -266,13 +252,6 @@ true - - - 8 - #108001 - true - #66ff66 - @@ -280,13 +259,6 @@ true - - - 8 - #108001 - true - #66ff66 - @@ -337,13 +309,6 @@ true - - - 8 - #800002 - true - #fd6666 - @@ -351,13 +316,6 @@ true - - - 8 - #800002 - true - #fd6666 - @@ -365,13 +323,6 @@ true - - - 8 - #800002 - true - #fd6666 - @@ -381,24 +332,31 @@ diff --git a/models/tests/sedml/noble_1962_time_V.sedml b/models/tests/sedml/noble_1962_time_V.sedml index 5b168f44bc..fb38902cd7 100644 --- a/models/tests/sedml/noble_1962_time_V.sedml +++ b/models/tests/sedml/noble_1962_time_V.sedml @@ -147,13 +147,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -204,13 +197,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -261,13 +247,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -318,13 +297,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -334,15 +306,19 @@ diff --git a/models/tests/sedml/noble_1962_time_gL.sedml b/models/tests/sedml/noble_1962_time_gL.sedml index 659b01c04c..387bebc185 100644 --- a/models/tests/sedml/noble_1962_time_gL.sedml +++ b/models/tests/sedml/noble_1962_time_gL.sedml @@ -147,13 +147,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -204,13 +197,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -261,13 +247,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -318,13 +297,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -334,15 +306,19 @@ diff --git a/models/tests/sedml/noble_1962_time_iK.sedml b/models/tests/sedml/noble_1962_time_iK.sedml index fbc70dcf49..0bf25e72d9 100644 --- a/models/tests/sedml/noble_1962_time_iK.sedml +++ b/models/tests/sedml/noble_1962_time_iK.sedml @@ -147,13 +147,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -204,13 +197,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -261,13 +247,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -318,13 +297,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -334,15 +306,19 @@ diff --git a/models/tests/sedml/noble_1962_time_time.sedml b/models/tests/sedml/noble_1962_time_time.sedml index 1298b8b744..d71773420e 100644 --- a/models/tests/sedml/noble_1962_time_time.sedml +++ b/models/tests/sedml/noble_1962_time_time.sedml @@ -147,13 +147,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -204,13 +197,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -261,13 +247,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -318,13 +297,6 @@ true - - - 8 - #000080 - true - #ffffff - @@ -334,15 +306,19 @@ diff --git a/src/plugins/simulation/SimulationExperimentView/src/simulationexperimentviewsimulationwidget.cpp b/src/plugins/simulation/SimulationExperimentView/src/simulationexperimentviewsimulationwidget.cpp index d5d5fc4ae0..2412faa46d 100644 --- a/src/plugins/simulation/SimulationExperimentView/src/simulationexperimentviewsimulationwidget.cpp +++ b/src/plugins/simulation/SimulationExperimentView/src/simulationexperimentviewsimulationwidget.cpp @@ -2078,11 +2078,27 @@ bool SimulationExperimentViewSimulationWidget::createSedmlFile(SEDMLSupport::Sed sedmlLine->setThickness(lineProperties[1]->doubleValue()); sedmlLine->setColor(SEDMLSupport::sedmlColor(lineProperties[2]->colorValue())); + libsedml::SedMarker *sedmlMarker = sedmlStyle->createMarker(); + Core::Properties symbolProperties = properties[5]->properties(); + + sedmlMarker->setStyle(SEDMLSupport::sedmlMarkerStyle(symbolProperties[0]->listValueIndex())); + sedmlMarker->setSize(symbolProperties[1]->doubleValue()); + sedmlMarker->setLineColor(SEDMLSupport::sedmlColor(symbolProperties[2]->colorValue())); + sedmlMarker->setFill(symbolProperties[3]->booleanValue()? + SEDMLSupport::sedmlColor(symbolProperties[4]->colorValue()): + ""); + sedmlCurve->setStyle(sedmlStyle->getId()); // Customise our curve using an annotation - Core::Properties symbolProperties = properties[5]->properties(); + QString symbolAnnotation; + + if (!symbolProperties[3]->booleanValue()) { + symbolAnnotation = SedmlProperty.arg(SEDMLSupport::Symbol) + .arg(SedmlProperty.arg(SEDMLSupport::FillColor) + .arg(symbolProperties[4]->stringValue())); + } sedmlCurve->appendAnnotation(QString(R"(<%1 xmlns="%2">)" " %3" @@ -2092,17 +2108,7 @@ bool SimulationExperimentViewSimulationWidget::createSedmlFile(SEDMLSupport::Sed .arg(property->isChecked()? TrueValue: FalseValue) - +SedmlProperty.arg(SEDMLSupport::Symbol) - .arg( SedmlProperty.arg(SEDMLSupport::Style) - .arg(SEDMLSupport::stringSymbolStyle(symbolProperties[0]->listValueIndex())) - +SedmlProperty.arg(SEDMLSupport::Size) - .arg(symbolProperties[1]->stringValue()) - +SedmlProperty.arg(SEDMLSupport::Color) - .arg(symbolProperties[2]->stringValue()) - +SedmlProperty.arg(SEDMLSupport::Filled) - .arg(symbolProperties[3]->stringValue()) - +SedmlProperty.arg(SEDMLSupport::FillColor) - .arg(symbolProperties[4]->stringValue()))).toStdString()); + +symbolAnnotation).toStdString()); } } @@ -3150,6 +3156,11 @@ bool SimulationExperimentViewSimulationWidget::furtherInitialize() Qt::PenStyle lineStyle = GraphPanelWidget::DefaultGraphLineStyle; int lineWidth = GraphPanelWidget::DefaultGraphLineWidth; QColor lineColor = GraphPanelWidget::DefaultGraphLineColor; + QwtSymbol::Style symbolStyle = GraphPanelWidget::DefaultGraphSymbolStyle; + int symbolSize = GraphPanelWidget::DefaultGraphSymbolSize; + QColor symbolColor = GraphPanelWidget::DefaultGraphSymbolColor; + bool symbolFilled = GraphPanelWidget::DefaultGraphSymbolFilled; + QColor symbolFillColor = GraphPanelWidget::DefaultGraphSymbolFillColor; if (isL1V4OrLaterSedmlDocument) { // Title @@ -3166,6 +3177,18 @@ bool SimulationExperimentViewSimulationWidget::furtherInitialize() lineWidth = int(sedmlLine->getThickness()); lineColor = SEDMLSupport::color(sedmlLine->getColor()); } + + // Symbol + + libsedml::SedMarker *sedmlMarker = (sedmlStyle != nullptr)?sedmlStyle->getMarker():nullptr; + + if (sedmlMarker != nullptr) { + symbolStyle = SEDMLSupport::symbolStyle(sedmlMarker->getStyle()); + symbolSize = int(sedmlMarker->getSize()); + symbolColor = SEDMLSupport::color(sedmlMarker->getLineColor()); + symbolFillColor = SEDMLSupport::color(sedmlMarker->getFill()); + symbolFilled = symbolFillColor != QColor(); + } } libsedml::SedVariable *xVariable = sedmlDocument->getDataGenerator(sedmlCurve->getXDataReference())->getVariable(0); @@ -3207,11 +3230,6 @@ bool SimulationExperimentViewSimulationWidget::furtherInitialize() } bool selected = GraphPanelWidget::DefaultGraphSelected; - QwtSymbol::Style symbolStyle = GraphPanelWidget::DefaultGraphSymbolStyle; - int symbolSize = GraphPanelWidget::DefaultGraphSymbolSize; - QColor symbolColor = GraphPanelWidget::DefaultGraphSymbolColor; - bool symbolFilled = GraphPanelWidget::DefaultGraphSymbolFilled; - QColor symbolFillColor = GraphPanelWidget::DefaultGraphSymbolFillColor; annotation = sedmlCurve->getAnnotation(); @@ -3258,21 +3276,35 @@ bool SimulationExperimentViewSimulationWidget::furtherInitialize() // Symbol } else if (curvePropertyNodeName == SEDMLSupport::Symbol) { - for (uint m = 0, mMax = curvePropertyNode.getNumChildren(); m < mMax; ++m) { - const libsbml::XMLNode &symbolPropertyNode = curvePropertyNode.getChild(m); - QString symbolPropertyNodeName = QString::fromStdString(symbolPropertyNode.getName()); - QString symbolPropertyNodeValue = QString::fromStdString(symbolPropertyNode.getChild(0).getCharacters()); - - if (symbolPropertyNodeName == SEDMLSupport::Style) { - symbolStyle = SEDMLSupport::symbolStyle(symbolPropertyNodeValue); - } else if (symbolPropertyNodeName == SEDMLSupport::Size) { - symbolSize = symbolPropertyNodeValue.toInt(); - } else if (symbolPropertyNodeName == SEDMLSupport::Color) { - symbolColor.setNamedColor(symbolPropertyNodeValue); - } else if (symbolPropertyNodeName == SEDMLSupport::Filled) { - symbolFilled = symbolPropertyNodeValue == TrueValue; - } else if (symbolPropertyNodeName == SEDMLSupport::FillColor) { - symbolFillColor.setNamedColor(symbolPropertyNodeValue); + if (isL1V4OrLaterSedmlDocument) { + if (!symbolFilled) { + for (uint m = 0, mMax = curvePropertyNode.getNumChildren(); m < mMax; ++m) { + const libsbml::XMLNode &symbolPropertyNode = curvePropertyNode.getChild(m); + QString symbolPropertyNodeName = QString::fromStdString(symbolPropertyNode.getName()); + QString symbolPropertyNodeValue = QString::fromStdString(symbolPropertyNode.getChild(0).getCharacters()); + + if (symbolPropertyNodeName == SEDMLSupport::FillColor) { + symbolFillColor.setNamedColor(symbolPropertyNodeValue); + } + } + } + } else { + for (uint m = 0, mMax = curvePropertyNode.getNumChildren(); m < mMax; ++m) { + const libsbml::XMLNode &symbolPropertyNode = curvePropertyNode.getChild(m); + QString symbolPropertyNodeName = QString::fromStdString(symbolPropertyNode.getName()); + QString symbolPropertyNodeValue = QString::fromStdString(symbolPropertyNode.getChild(0).getCharacters()); + + if (symbolPropertyNodeName == SEDMLSupport::Style) { + symbolStyle = SEDMLSupport::symbolStyle(symbolPropertyNodeValue); + } else if (symbolPropertyNodeName == SEDMLSupport::Size) { + symbolSize = symbolPropertyNodeValue.toInt(); + } else if (symbolPropertyNodeName == SEDMLSupport::Color) { + symbolColor.setNamedColor(symbolPropertyNodeValue); + } else if (symbolPropertyNodeName == SEDMLSupport::Filled) { + symbolFilled = symbolPropertyNodeValue == TrueValue; + } else if (symbolPropertyNodeName == SEDMLSupport::FillColor) { + symbolFillColor.setNamedColor(symbolPropertyNodeValue); + } } } } diff --git a/src/plugins/support/SEDMLSupport/src/sedmlsupport.cpp b/src/plugins/support/SEDMLSupport/src/sedmlsupport.cpp index 472963efeb..e120a58174 100644 --- a/src/plugins/support/SEDMLSupport/src/sedmlsupport.cpp +++ b/src/plugins/support/SEDMLSupport/src/sedmlsupport.cpp @@ -340,10 +340,138 @@ Qt::PenStyle lineStyle(libsedml::LineType_t pSedmlLineStyle) //============================================================================== +libsedml::MarkerType_t sedmlMarkerStyle(int pIndexSymbolStyle) +{ + // Return the given index symbol style as a SED-ML marker style + // Note: if the given index symbol style is invalid then we return the + // SED-ML marker style for no marker... + + if (pIndexSymbolStyle == 0) { + return libsedml::SEDML_MARKERTYPE_NONE; + } + + if (pIndexSymbolStyle == 1) { + return libsedml::SEDML_MARKERTYPE_CIRCLE; + } + + if (pIndexSymbolStyle == 2) { + return libsedml::SEDML_MARKERTYPE_SQUARE; + } + + if (pIndexSymbolStyle == 3) { + return libsedml::SEDML_MARKERTYPE_DIAMOND; + } + + if (pIndexSymbolStyle == 4) { + return libsedml::SEDML_MARKERTYPE_TRIANGLEUP; + } + + if (pIndexSymbolStyle == 5) { + return libsedml::SEDML_MARKERTYPE_TRIANGLEDOWN; + } + + if (pIndexSymbolStyle == 6) { + return libsedml::SEDML_MARKERTYPE_TRIANGLELEFT; + } + + if (pIndexSymbolStyle == 7) { + return libsedml::SEDML_MARKERTYPE_TRIANGLERIGHT; + } + + if (pIndexSymbolStyle == 8) { + return libsedml::SEDML_MARKERTYPE_PLUS; + } + + if (pIndexSymbolStyle == 9) { + return libsedml::SEDML_MARKERTYPE_XCROSS; + } + + if (pIndexSymbolStyle == 10) { + return libsedml::SEDML_MARKERTYPE_HDASH; + } + + if (pIndexSymbolStyle == 11) { + return libsedml::SEDML_MARKERTYPE_VDASH; + } + + if (pIndexSymbolStyle == 12) { + return libsedml::SEDML_MARKERTYPE_STAR; + } + + return libsedml::SEDML_MARKERTYPE_NONE; +} + +//============================================================================== + +QwtSymbol::Style symbolStyle(libsedml::MarkerType_t pSedmlSymbolStyle) +{ + // Return the SED-ML marker style as a symbol style + + if (pSedmlSymbolStyle == libsedml::SEDML_MARKERTYPE_NONE) { + return QwtSymbol::NoSymbol; + } + + if (pSedmlSymbolStyle == libsedml::SEDML_MARKERTYPE_CIRCLE) { + return QwtSymbol::Ellipse; + } + + if (pSedmlSymbolStyle == libsedml::SEDML_MARKERTYPE_SQUARE) { + return QwtSymbol::Rect; + } + + if (pSedmlSymbolStyle == libsedml::SEDML_MARKERTYPE_DIAMOND) { + return QwtSymbol::Diamond; + } + + if (pSedmlSymbolStyle == libsedml::SEDML_MARKERTYPE_TRIANGLEUP) { + return QwtSymbol::Triangle; + } + + if (pSedmlSymbolStyle == libsedml::SEDML_MARKERTYPE_TRIANGLEDOWN) { + return QwtSymbol::DTriangle; + } + + if (pSedmlSymbolStyle == libsedml::SEDML_MARKERTYPE_TRIANGLELEFT) { + return QwtSymbol::LTriangle; + } + + if (pSedmlSymbolStyle == libsedml::SEDML_MARKERTYPE_TRIANGLERIGHT) { + return QwtSymbol::RTriangle; + } + + if (pSedmlSymbolStyle == libsedml::SEDML_MARKERTYPE_PLUS) { + return QwtSymbol::Cross; + } + + if (pSedmlSymbolStyle == libsedml::SEDML_MARKERTYPE_XCROSS) { + return QwtSymbol::XCross; + } + + if (pSedmlSymbolStyle == libsedml::SEDML_MARKERTYPE_HDASH) { + return QwtSymbol::HLine; + } + + if (pSedmlSymbolStyle == libsedml::SEDML_MARKERTYPE_VDASH) { + return QwtSymbol::VLine; + } + + if (pSedmlSymbolStyle == libsedml::SEDML_MARKERTYPE_STAR) { + return QwtSymbol::Star1; + } + + return QwtSymbol::NoSymbol; +} + +//============================================================================== + std::string sedmlColor(const QColor &pColor) { // Return the given colour as a SED-ML colour + if (pColor == QColor()) { + return {}; + } + QString res = pColor.name(QColor::HexArgb); res.remove(0, 1); @@ -365,6 +493,10 @@ QColor color(const std::string &pSedmlColor) { // Return the given SED-ML colour as a colour + if (pSedmlColor == "") { + return QColor(); + } + QString alpha; if (pSedmlColor.length() == 8) { diff --git a/src/plugins/support/SEDMLSupport/src/sedmlsupport.h b/src/plugins/support/SEDMLSupport/src/sedmlsupport.h index 0b88140c1f..4e136b06b0 100644 --- a/src/plugins/support/SEDMLSupport/src/sedmlsupport.h +++ b/src/plugins/support/SEDMLSupport/src/sedmlsupport.h @@ -77,6 +77,9 @@ QwtSymbol::Style SEDMLSUPPORT_EXPORT symbolStyle(const QString &pStringSymbolSty libsedml::LineType_t SEDMLSUPPORT_EXPORT sedmlLineStyle(int pIndexLineStyle); Qt::PenStyle SEDMLSUPPORT_EXPORT lineStyle(libsedml::LineType_t pSedmlLineStyle); +libsedml::MarkerType_t SEDMLSUPPORT_EXPORT sedmlMarkerStyle(int pIndexSymbolStyle); +QwtSymbol::Style SEDMLSUPPORT_EXPORT symbolStyle(libsedml::MarkerType_t pSedmlSymbolStyle); + std::string SEDMLSUPPORT_EXPORT sedmlColor(const QColor &pColor); QColor SEDMLSUPPORT_EXPORT color(const std::string &pSedmlColor); diff --git a/src/plugins/support/SEDMLSupport/tests/tests.cpp b/src/plugins/support/SEDMLSupport/tests/tests.cpp index e86ff48221..a451dd818e 100644 --- a/src/plugins/support/SEDMLSupport/tests/tests.cpp +++ b/src/plugins/support/SEDMLSupport/tests/tests.cpp @@ -289,14 +289,51 @@ void Tests::sedmlTests() // QCOMPARE(OpenCOR::SEDMLSupport::lineStyle(libsedml::SEDML_LINETYPE_DASHDOTDOT), Qt::DashDotDotLine); QCOMPARE(OpenCOR::SEDMLSupport::lineStyle(libsedml::SEDML_LINETYPE_INVALID), Qt::SolidLine); + // Convert an index symbol style to a SED-ML marker style + + QCOMPARE(OpenCOR::SEDMLSupport::sedmlMarkerStyle(-1), libsedml::SEDML_MARKERTYPE_NONE); + QCOMPARE(OpenCOR::SEDMLSupport::sedmlMarkerStyle(0), libsedml::SEDML_MARKERTYPE_NONE); + QCOMPARE(OpenCOR::SEDMLSupport::sedmlMarkerStyle(1), libsedml::SEDML_MARKERTYPE_CIRCLE); + QCOMPARE(OpenCOR::SEDMLSupport::sedmlMarkerStyle(2), libsedml::SEDML_MARKERTYPE_SQUARE); + QCOMPARE(OpenCOR::SEDMLSupport::sedmlMarkerStyle(3), libsedml::SEDML_MARKERTYPE_DIAMOND); + QCOMPARE(OpenCOR::SEDMLSupport::sedmlMarkerStyle(4), libsedml::SEDML_MARKERTYPE_TRIANGLEUP); + QCOMPARE(OpenCOR::SEDMLSupport::sedmlMarkerStyle(5), libsedml::SEDML_MARKERTYPE_TRIANGLEDOWN); + QCOMPARE(OpenCOR::SEDMLSupport::sedmlMarkerStyle(6), libsedml::SEDML_MARKERTYPE_TRIANGLELEFT); + QCOMPARE(OpenCOR::SEDMLSupport::sedmlMarkerStyle(7), libsedml::SEDML_MARKERTYPE_TRIANGLERIGHT); + QCOMPARE(OpenCOR::SEDMLSupport::sedmlMarkerStyle(8), libsedml::SEDML_MARKERTYPE_PLUS); + QCOMPARE(OpenCOR::SEDMLSupport::sedmlMarkerStyle(9), libsedml::SEDML_MARKERTYPE_XCROSS); + QCOMPARE(OpenCOR::SEDMLSupport::sedmlMarkerStyle(10), libsedml::SEDML_MARKERTYPE_HDASH); + QCOMPARE(OpenCOR::SEDMLSupport::sedmlMarkerStyle(11), libsedml::SEDML_MARKERTYPE_VDASH); + QCOMPARE(OpenCOR::SEDMLSupport::sedmlMarkerStyle(12), libsedml::SEDML_MARKERTYPE_STAR); + QCOMPARE(OpenCOR::SEDMLSupport::sedmlMarkerStyle(13), libsedml::SEDML_MARKERTYPE_NONE); + + // Convert a SED-ML marker style to a symbol style + + QCOMPARE(OpenCOR::SEDMLSupport::symbolStyle(libsedml::SEDML_MARKERTYPE_NONE), QwtSymbol::NoSymbol); + QCOMPARE(OpenCOR::SEDMLSupport::symbolStyle(libsedml::SEDML_MARKERTYPE_CIRCLE), QwtSymbol::Ellipse); + QCOMPARE(OpenCOR::SEDMLSupport::symbolStyle(libsedml::SEDML_MARKERTYPE_SQUARE), QwtSymbol::Rect); + QCOMPARE(OpenCOR::SEDMLSupport::symbolStyle(libsedml::SEDML_MARKERTYPE_DIAMOND), QwtSymbol::Diamond); + QCOMPARE(OpenCOR::SEDMLSupport::symbolStyle(libsedml::SEDML_MARKERTYPE_TRIANGLEUP), QwtSymbol::Triangle); + QCOMPARE(OpenCOR::SEDMLSupport::symbolStyle(libsedml::SEDML_MARKERTYPE_TRIANGLEDOWN), QwtSymbol::DTriangle); + QCOMPARE(OpenCOR::SEDMLSupport::symbolStyle(libsedml::SEDML_MARKERTYPE_TRIANGLELEFT), QwtSymbol::LTriangle); + QCOMPARE(OpenCOR::SEDMLSupport::symbolStyle(libsedml::SEDML_MARKERTYPE_TRIANGLERIGHT), QwtSymbol::RTriangle); + QCOMPARE(OpenCOR::SEDMLSupport::symbolStyle(libsedml::SEDML_MARKERTYPE_PLUS), QwtSymbol::Cross); + QCOMPARE(OpenCOR::SEDMLSupport::symbolStyle(libsedml::SEDML_MARKERTYPE_XCROSS), QwtSymbol::XCross); + QCOMPARE(OpenCOR::SEDMLSupport::symbolStyle(libsedml::SEDML_MARKERTYPE_HDASH), QwtSymbol::HLine); + QCOMPARE(OpenCOR::SEDMLSupport::symbolStyle(libsedml::SEDML_MARKERTYPE_VDASH), QwtSymbol::VLine); + QCOMPARE(OpenCOR::SEDMLSupport::symbolStyle(libsedml::SEDML_MARKERTYPE_STAR), QwtSymbol::Star1); + QCOMPARE(OpenCOR::SEDMLSupport::symbolStyle(libsedml::SEDML_MARKERTYPE_INVALID), QwtSymbol::NoSymbol); + // Convert a Qt colour to a SED-ML colour + QCOMPARE(OpenCOR::SEDMLSupport::sedmlColor(QColor()), ""); QCOMPARE(OpenCOR::SEDMLSupport::sedmlColor(QColor("#1a2b3c")), "1A2B3C"); QCOMPARE(OpenCOR::SEDMLSupport::sedmlColor(QColor("#ff1a2b3c")), "1A2B3C"); QCOMPARE(OpenCOR::SEDMLSupport::sedmlColor(QColor("#7e1a2b3c")), "1A2B3C7E"); // Convert a SED-ML colour to a Qt colour + QCOMPARE(OpenCOR::SEDMLSupport::color(""), QColor()); QCOMPARE(OpenCOR::SEDMLSupport::color("1A2B3C"), QColor("#1a2b3c")); QCOMPARE(OpenCOR::SEDMLSupport::color("1A2B3C7E"), QColor("#7e1a2b3c")); }