Skip to content

Commit 862d83c

Browse files
committed
fix: shade series crash hoffstadt#1736
1 parent 8f900e5 commit 862d83c

File tree

2 files changed

+33
-13
lines changed

2 files changed

+33
-13
lines changed

DearPyGui/src/ui/AppItems/mvPlotting.cpp

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1768,9 +1768,15 @@ DearPyGui::set_positional_configuration(PyObject* inDict, mvBasicSeriesConfig& o
17681768
//if (!VerifyRequiredArguments(GetParsers()[GetEntityCommand(mvAppItemType::mvLineSeries)], inDict))
17691769
// return;
17701770

1771-
(*outConfig.value)[0] = ToDoubleVect(PyTuple_GetItem(inDict, 0));
1772-
if(PyTuple_Size(inDict) > 1)
1773-
(*outConfig.value)[1] = ToDoubleVect(PyTuple_GetItem(inDict, 1));
1771+
for(int i = 0; i < PyTuple_Size(inDict); i++)
1772+
(*outConfig.value)[i] = ToDoubleVect(PyTuple_GetItem(inDict, i));
1773+
1774+
if (outConfig.type == mvAppItemType::mvShadeSeries)
1775+
{
1776+
(*outConfig.value)[2] = (*outConfig.value)[1];
1777+
for (auto& item : (*outConfig.value)[2])
1778+
item = 0.0;
1779+
}
17741780
}
17751781

17761782
void
@@ -1984,9 +1990,22 @@ DearPyGui::set_configuration(PyObject* inDict, mvBasicSeriesConfig& outConfig)
19841990
if (inDict == nullptr)
19851991
return;
19861992

1987-
if (PyObject* item = PyDict_GetItemString(inDict, "x")) { (*outConfig.value)[0] = ToDoubleVect(item); }
1988-
if (PyObject* item = PyDict_GetItemString(inDict, "y")) { (*outConfig.value)[1] = ToDoubleVect(item); }
1993+
bool valueChanged = false;
1994+
if (PyObject* item = PyDict_GetItemString(inDict, "x")) { valueChanged = true; (*outConfig.value)[0] = ToDoubleVect(item); }
1995+
if (PyObject* item = PyDict_GetItemString(inDict, "y")) { valueChanged = true; (*outConfig.value)[1] = ToDoubleVect(item); }
1996+
if (PyObject* item = PyDict_GetItemString(inDict, "y1")) { valueChanged = true; (*outConfig.value)[1] = ToDoubleVect(item); }
1997+
if (PyObject* item = PyDict_GetItemString(inDict, "y2")) { valueChanged = true; (*outConfig.value)[2] = ToDoubleVect(item); }
1998+
1999+
if (valueChanged && outConfig.type == mvAppItemType::mvShadeSeries)
2000+
{
2001+
if ((*outConfig.value)[1].size() != (*outConfig.value)[2].size())
2002+
{
2003+
(*outConfig.value)[2].clear();
2004+
for (size_t i = 0; i < (*outConfig.value)[1].size(); i++)
2005+
(*outConfig.value)[2].push_back(0.0);
19892006

2007+
}
2008+
}
19902009
}
19912010

19922011
void

DearPyGui/src/ui/AppItems/mvPlotting.h

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ namespace DearPyGui
108108

109109
struct mvBasicSeriesConfig
110110
{
111+
mvAppItemType type = mvAppItemType::All;
111112
mvRef<std::vector<std::vector<double>>> value = CreateRef<std::vector<std::vector<double>>>(
112113
std::vector<std::vector<double>>{ std::vector<double>{},
113114
std::vector<double>{},
@@ -375,7 +376,7 @@ class mvLineSeries : public mvAppItem
375376
{
376377
public:
377378
mvBasicSeriesConfig configData{};
378-
explicit mvLineSeries(mvUUID uuid) : mvAppItem(uuid) {}
379+
explicit mvLineSeries(mvUUID uuid) : mvAppItem(uuid) { configData.type = mvAppItemType::mvLineSeries; }
379380
void handleSpecificPositionalArgs(PyObject* dict) override { DearPyGui::set_positional_configuration(dict, configData); }
380381
void draw(ImDrawList* drawlist, float x, float y) override { DearPyGui::draw_line_series(drawlist, *this, configData); }
381382
void handleSpecificKeywordArgs(PyObject* dict) override { DearPyGui::set_configuration(dict, configData); }
@@ -390,8 +391,8 @@ class mvLineSeries : public mvAppItem
390391
class mvScatterSeries : public mvAppItem
391392
{
392393
public:
393-
mvBasicSeriesConfig configData{};
394-
explicit mvScatterSeries(mvUUID uuid) : mvAppItem(uuid) {}
394+
mvBasicSeriesConfig configData{ };
395+
explicit mvScatterSeries(mvUUID uuid) : mvAppItem(uuid) { configData.type = mvAppItemType::mvScatterSeries; }
395396
void handleSpecificPositionalArgs(PyObject* dict) override { DearPyGui::set_positional_configuration(dict, configData); }
396397
void draw(ImDrawList* drawlist, float x, float y) override { DearPyGui::draw_scatter_series(drawlist, *this, configData); }
397398
void handleSpecificKeywordArgs(PyObject* dict) override { DearPyGui::set_configuration(dict, configData); }
@@ -407,7 +408,7 @@ class mvShadeSeries : public mvAppItem
407408
{
408409
public:
409410
mvBasicSeriesConfig configData{};
410-
explicit mvShadeSeries(mvUUID uuid) : mvAppItem(uuid) {}
411+
explicit mvShadeSeries(mvUUID uuid) : mvAppItem(uuid) { configData.type = mvAppItemType::mvShadeSeries; }
411412
void handleSpecificPositionalArgs(PyObject* dict) override { DearPyGui::set_positional_configuration(dict, configData); }
412413
void draw(ImDrawList* drawlist, float x, float y) override { DearPyGui::draw_shade_series(drawlist, *this, configData); }
413414
void handleSpecificKeywordArgs(PyObject* dict) override { DearPyGui::set_configuration(dict, configData); }
@@ -423,7 +424,7 @@ class mvVLineSeries : public mvAppItem
423424
{
424425
public:
425426
mvBasicSeriesConfig configData{};
426-
explicit mvVLineSeries(mvUUID uuid) : mvAppItem(uuid) {}
427+
explicit mvVLineSeries(mvUUID uuid) : mvAppItem(uuid) { configData.type = mvAppItemType::mvVLineSeries; }
427428
void handleSpecificPositionalArgs(PyObject* dict) override { DearPyGui::set_positional_configuration(dict, configData); }
428429
void draw(ImDrawList* drawlist, float x, float y) override { DearPyGui::draw_vline_series(drawlist, *this, configData); }
429430
void handleSpecificKeywordArgs(PyObject* dict) override { DearPyGui::set_configuration(dict, configData); }
@@ -439,7 +440,7 @@ class mvHLineSeries : public mvAppItem
439440
{
440441
public:
441442
mvBasicSeriesConfig configData{};
442-
explicit mvHLineSeries(mvUUID uuid) : mvAppItem(uuid) {}
443+
explicit mvHLineSeries(mvUUID uuid) : mvAppItem(uuid) { configData.type = mvAppItemType::mvHLineSeries; }
443444
void handleSpecificPositionalArgs(PyObject* dict) override { DearPyGui::set_positional_configuration(dict, configData); }
444445
void draw(ImDrawList* drawlist, float x, float y) override { DearPyGui::draw_hline_series(drawlist, *this, configData); }
445446
void handleSpecificKeywordArgs(PyObject* dict) override { DearPyGui::set_configuration(dict, configData); }
@@ -455,7 +456,7 @@ class mvStairSeries : public mvAppItem
455456
{
456457
public:
457458
mvBasicSeriesConfig configData{};
458-
explicit mvStairSeries(mvUUID uuid) : mvAppItem(uuid) {}
459+
explicit mvStairSeries(mvUUID uuid) : mvAppItem(uuid) { configData.type = mvAppItemType::mvStairSeries; }
459460
void handleSpecificPositionalArgs(PyObject* dict) override { DearPyGui::set_positional_configuration(dict, configData); }
460461
void draw(ImDrawList* drawlist, float x, float y) override { DearPyGui::draw_stair_series(drawlist, *this, configData); }
461462
void handleSpecificKeywordArgs(PyObject* dict) override { DearPyGui::set_configuration(dict, configData); }
@@ -471,7 +472,7 @@ class mvStemSeries : public mvAppItem
471472
{
472473
public:
473474
mvBasicSeriesConfig configData{};
474-
explicit mvStemSeries(mvUUID uuid) : mvAppItem(uuid) {}
475+
explicit mvStemSeries(mvUUID uuid) : mvAppItem(uuid) { configData.type = mvAppItemType::mvStemSeries; }
475476
void handleSpecificPositionalArgs(PyObject* dict) override { DearPyGui::set_positional_configuration(dict, configData); }
476477
void draw(ImDrawList* drawlist, float x, float y) override { DearPyGui::draw_stem_series(drawlist, *this, configData); }
477478
void handleSpecificKeywordArgs(PyObject* dict) override { DearPyGui::set_configuration(dict, configData); }

0 commit comments

Comments
 (0)