own treelayout class
diff --git a/demo/treelayout.cpp b/demo/treelayout.cpp
new file mode 100644
index 0000000..0a40484
--- /dev/null
+++ b/demo/treelayout.cpp
@@ -0,0 +1,20 @@
+#include "treelayout.h"
+
+void
+OneLevelTreeLayout::setOneLevelLayout(std::vector<Coordinate> &childNodesCo)
+{
+ if (childNodesCo.empty())
+ {
+ return;
+ }
+ double y = getLevelDistance();
+ double sd = getSiblingDistance();
+ int n = childNodesCo.size();
+ double x = - (n - 1) * sd / 2;
+ for (int i = 0; i < n; i++)
+ {
+ childNodesCo[i].x = x;
+ childNodesCo[i].y = y;
+ x += sd;
+ }
+}
diff --git a/demo/treelayout.h b/demo/treelayout.h
new file mode 100644
index 0000000..e72ef0e
--- /dev/null
+++ b/demo/treelayout.h
@@ -0,0 +1,32 @@
+#ifndef TREELAYOUT_H
+#define TREELAYOUT_H
+#include <vector>
+
+class TreeLayout
+{
+public:
+ struct Coordinate
+ {
+ double x;
+ double y;
+ };
+ TreeLayout(){}
+ virtual void setOneLevelLayout(std::vector<Coordinate> &childNodesCo){};
+ void setSiblingDistance(int d) {m_siblingDistance = d;}
+ void setLevelDistance(int d) {m_levelDistance = d;}
+ int getSiblingDistance() {return m_siblingDistance;}
+ int getLevelDistance() {return m_levelDistance;}
+ virtual ~TreeLayout(){}
+private:
+ int m_siblingDistance;
+ int m_levelDistance;
+};
+
+class OneLevelTreeLayout: public TreeLayout
+{
+public:
+ OneLevelTreeLayout(){}
+ virtual void setOneLevelLayout(std::vector<Coordinate> &v, int childNumber);
+ virtual ~OneLevelTreeLayout(){}
+};
+#endif