ScatterDraw: Added SetDataSourceInternal()

git-svn-id: svn://ultimatepp.org/upp/trunk@14512 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
koldo 2020-05-29 21:23:06 +00:00
parent c82a0d054d
commit 8a44cab4d2
3 changed files with 28 additions and 7 deletions

View file

@ -418,6 +418,10 @@ public:
class Spline {
public:
Spline() {}
Spline(const Vector<double> &x, const Vector<double> &y) {Fit(x, y);}
Spline(const Eigen::VectorXd &x, const Eigen::VectorXd &y) {Fit(x, y);}
Spline(const double *x, const double *y, int n) {Fit(x, y, n);}
void Fit(const Vector<double> &x, const Vector<double> &y) {Fit(x.begin(), y.begin(), x.GetCount());}
void Fit(const Eigen::VectorXd &x, const Eigen::VectorXd &y) {Fit(x.data(), y.data(), int(x.size()));}
void Fit(const double *x, const double *y, int n);
@ -426,7 +430,7 @@ public:
private:
struct Coeff {double a, b, c, d, x;};
Buffer<Coeff> coeff;
int ncoeff;
int ncoeff = 0;
};
class SplineEquation : public ExplicitEquation, public Spline {

View file

@ -1104,7 +1104,19 @@ bool ScatterDraw::IsDataPrimaryY(int index) {
return series[index].primaryY;
}
/*
void ScatterDraw::SetDataSourceInternal() {
for (int i = 0; i < series.GetCount(); ++i)
series[i].SetDataSource_Internal(true);
}*/
bool ScatterDraw::ThereAreSecondaryY() {
for (int i = 0; i < series.GetCount(); ++i)
if (!series[i].primaryY)
return true;
return false;
}
void ScatterDraw::SetSequentialX(int index, bool sequential) {
ASSERT(IsValid(index));
ASSERT(!series[index].IsDeleted());

View file

@ -229,10 +229,12 @@ protected:
pD = pointsData;
owns = ownsData;
}
void SetDataSource_Internal(bool copy = true) {
void SetDataSourceInternal() {
CopyInternal();
DeletePD();
pD = &dataS;
if (copy)
CopyInternal();
serializeData = true;
owns = false;
}
DataSource &Data() {return *(~pD);}
const DataSource &Data() const {return *(~pD);}
@ -707,8 +709,11 @@ public:
void SetDataPrimaryY(int index, bool primary = true);
ScatterDraw &SetDataPrimaryY(bool primary = true);
void SetDataSecondaryY(int index, bool secondary = true);
ScatterDraw &SetDataSecondaryY(bool secondary = true);
ScatterDraw &SetDataSecondaryY(bool secondary = true);
void SetRightY(int index) {SetDataSecondaryY(index);}
ScatterDraw &SetRightY() {return SetDataSecondaryY();}
bool IsDataPrimaryY(int index);
bool ThereAreSecondaryY();
void SetSequentialX(int index, bool sequential);
ScatterDraw &SetSequentialX(bool sequential = true);
@ -847,12 +852,12 @@ public:
return *this;
}
ScatterDraw& SetDataSource_Internal(bool copy = true) {
ScatterDraw& SetDataSourceInternal() {
for (int i = 0; i < series.GetCount(); ++i) {
ScatterSeries &serie = series[i];
if (serie.IsDeleted())
continue;
serie.SetDataSource_Internal(copy);
serie.SetDataSourceInternal();
}
return *this;
}