mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-18 21:30:38 +01:00
[python/matplotlib] Validate the plot parameters
This commit is contained in:
committed by
Émilie Feral
parent
6a796f5f7c
commit
6f3d3f62de
@@ -35,7 +35,8 @@ void modpyplot_gc_collect() {
|
|||||||
* Returns : xmin, xmax, ymin, ymax : float */
|
* Returns : xmin, xmax, ymin, ymax : float */
|
||||||
|
|
||||||
mp_obj_t modpyplot_axis(mp_obj_t arg) {
|
mp_obj_t modpyplot_axis(mp_obj_t arg) {
|
||||||
mp_obj_is_type(arg, &mp_type_enumerate);
|
assert(sPlotStore != nullptr);
|
||||||
|
|
||||||
#warning Use mp_obj_is_bool when upgrading uPy
|
#warning Use mp_obj_is_bool when upgrading uPy
|
||||||
if (mp_obj_is_type(arg, &mp_type_bool)) {
|
if (mp_obj_is_type(arg, &mp_type_bool)) {
|
||||||
sPlotStore->setGrid(mp_obj_is_true(arg));
|
sPlotStore->setGrid(mp_obj_is_true(arg));
|
||||||
@@ -59,9 +60,18 @@ mp_obj_t modpyplot_axis(mp_obj_t arg) {
|
|||||||
|
|
||||||
mp_obj_t modpyplot_plot(mp_obj_t x, mp_obj_t y) {
|
mp_obj_t modpyplot_plot(mp_obj_t x, mp_obj_t y) {
|
||||||
assert(sPlotStore != nullptr);
|
assert(sPlotStore != nullptr);
|
||||||
|
|
||||||
|
// Input parameter validation
|
||||||
|
size_t xLength, yLength;
|
||||||
|
mp_obj_t * xItems, yItems;
|
||||||
|
mp_obj_get_array(x, &xLength, &xItems);
|
||||||
|
mp_obj_get_array(y, &yLength, &yItems);
|
||||||
|
if (xLength != yLength) {
|
||||||
|
mp_raise_msg_varg(&mp_type_ValueError, "x and y must have same dimension");
|
||||||
|
}
|
||||||
|
|
||||||
sPlotStore->addDots(x, y);
|
sPlotStore->addDots(x, y);
|
||||||
// Ensure x and y are arrays
|
|
||||||
// "Push" x and y on bigger arrays
|
|
||||||
return mp_const_none;
|
return mp_const_none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,9 +16,6 @@ void PlotStore::addDots(mp_obj_t x, mp_obj_t y) {
|
|||||||
mp_obj_t items[2] = {x, y};
|
mp_obj_t items[2] = {x, y};
|
||||||
mp_obj_t tuple = mp_obj_new_tuple(2, items);
|
mp_obj_t tuple = mp_obj_new_tuple(2, items);
|
||||||
mp_obj_list_append(m_dots, tuple);
|
mp_obj_list_append(m_dots, tuple);
|
||||||
|
|
||||||
//mp_obj_tuple_t * t = static_cast<mp_obj_tuple_t *>(MP_OBJ_TO_PTR(mp_obj_new_tuple(3, NULL)));
|
|
||||||
//t->items[0] = MP_OBJ_NEW_SMALL_INT(r);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PlotStore::Dot PlotStore::dotAtIndex(int i) {
|
PlotStore::Dot PlotStore::dotAtIndex(int i) {
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ public:
|
|||||||
void setGrid(bool grid) { m_grid = grid; }
|
void setGrid(bool grid) { m_grid = grid; }
|
||||||
bool grid() { return m_grid; }
|
bool grid() { return m_grid; }
|
||||||
private:
|
private:
|
||||||
mp_obj_t m_dots;
|
mp_obj_t m_dots; // A list of (x,y), where x and y are lists of numbers
|
||||||
bool m_grid;
|
bool m_grid;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user