diff --git a/examples/ScatterCtrl_Demo/ScatterCtrl_Demo.h b/examples/ScatterCtrl_Demo/ScatterCtrl_Demo.h index 194c3e146..04b3b8bfa 100644 --- a/examples/ScatterCtrl_Demo/ScatterCtrl_Demo.h +++ b/examples/ScatterCtrl_Demo/ScatterCtrl_Demo.h @@ -104,6 +104,8 @@ public: void Init(); void FormatX(String& s, int i, double d); + void FormatXGridUnits(String& s, int i, double d); + void SetGridLinesX(Vector& unitsX); virtual ScatterCtrl &Scatter() {return scatter;}; private: diff --git a/examples/ScatterCtrl_Demo/tab6_Logarithmic.cpp b/examples/ScatterCtrl_Demo/tab6_Logarithmic.cpp index 371f5de31..4516783ed 100644 --- a/examples/ScatterCtrl_Demo/tab6_Logarithmic.cpp +++ b/examples/ScatterCtrl_Demo/tab6_Logarithmic.cpp @@ -9,15 +9,40 @@ void Tab6_Logarithmic::Init() scatter.SetRange(6,100); scatter.SetMajorUnits(1,20); scatter.ShowInfo(); + scatter.SetMouseHandling(false, false); s1 <= 1 && val <= 1e5) + s = FormatDoubleExp(val, 0); +} + +void Tab6_Logarithmic::FormatXGridUnits(String& s, int i, double d) +{ + double val = pow(10, d); + int valint = fround(val); + if (abs(val - double(valint)) < 0.0001) { + while (valint < -9 || valint > 9) + valint /= 10; + if (valint == 1) + s = FormatDoubleExp(pow(10, d), 0); + } +} + +void Tab6_Logarithmic::SetGridLinesX(Vector& unitsX) +{ + for(int i = 0; scatter.GetXMinUnit() + i*scatter.GetMajorUnitsX() <= scatter.GetXRange(); i++) { + for (int ii = 0; ii < 9; ++ii) + unitsX << scatter.GetXMinUnit() + i*scatter.GetMajorUnitsX() + (log10((ii+1)*10)-1)*scatter.GetMajorUnitsX(); + } } ScatterDemo *Construct6()