00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _mitkPathNetwork_h
00011 #define _mitkPathNetwork_h
00012
00013 #include "mitkRCPtr.h"
00014 #include "mitkPath.h"
00015
00016 struct MITK_COMMON_API PathNode
00017 {
00018 PathNode();
00019 PathNode(const PathNode& pn);
00020 ~PathNode();
00021
00022 mitkRCPtr<mitkPath> path;
00023 int startHinge, termHinge;
00024 };
00025
00026 struct MITK_COMMON_API HingeNode
00027 {
00028 HingeNode(int numOfPaths);
00029 HingeNode(const HingeNode& hn);
00030
00031 ~HingeNode();
00032
00033 int numOfPaths;
00034 int* Paths;
00035 };
00036
00037 class PathList;
00038 class HingeList;
00039
00040 class MITK_COMMON_API mitkPathNetwork : public mitkObject
00041 {
00042 public:
00043 MITK_TYPE(mitkPathNetwork, mitkObject)
00044 mitkPathNetwork();
00045
00046 void DeepCopy(const mitkPathNetwork& source);
00047
00048 int AddPath(const PathNode& path);
00049 int AddHinge(const HingeNode& hinge);
00050
00051 int GetPathNum() const;
00052 PathNode& GetPath(int index);
00053
00054 int GetHingeNum() const;
00055 HingeNode& GetHinge(int index);
00056
00057 protected:
00058 virtual ~mitkPathNetwork();
00059
00060 private:
00061 mitkPathNetwork(const mitkPathNetwork&);
00062 void operator = (const mitkPathNetwork&);
00063
00064 PathList* m_PathList;
00065 HingeList* m_HingeList;
00066
00067 };
00068
00069 #endif