GME  13
ArEdgeLs.h
Go to the documentation of this file.
00001 //COM'd by Tamas (check AutoRouterEdge.h)
00002 //#ifndef __AREDGELS_H
00003 //#define __AREDGELS_H
00004 //
00005 //class CArBox;
00006 //class CArPort;
00007 //class CArPath;
00008 //class CArGraph;
00009 //
00010 //
00012 //
00013 //class CArEdgeList;
00014 //struct SArEdge
00015 //{
00016 //      friend CArEdgeList;
00017 //      friend CArGraph;
00018 //private:
00019 //
00020 //      CObject* owner;
00021 //      CPoint* startpoint_prev;
00022 //      CPoint* startpoint;
00023 //      CPoint* endpoint;
00024 //      CPoint* endpoint_next;
00025 //
00026 //      float position_y;
00027 //      long position_x1;
00028 //      long position_x2;
00029 //      int bracket_closing : 1;
00030 //      int bracket_opening : 1;
00031 //      
00032 //      SArEdge* order_next;
00033 //      SArEdge* order_prev;
00034 //
00035 //      long section_x1;
00036 //      long section_x2;
00037 //      SArEdge* section_next;
00038 //      SArEdge* section_down;
00039 //
00040 //      unsigned int edge_fixed : 1;
00041 //      unsigned int edge_canpassed : 1;
00042 //
00043 //      SArEdge* block_prev;
00044 //      SArEdge* block_next;
00045 //      SArEdge* block_trace;
00046 //
00047 //      SArEdge* closest_prev;
00048 //      SArEdge* closest_next;
00049 //};
00050 //
00051 //
00053 //
00054 //
00055 //class CArEdgeList
00056 //{
00057 //private:
00058 //      CArEdgeList(int ishorizontal);
00059 //      ~CArEdgeList();
00060 //
00061 //      friend CArGraph;
00062 //
00063 //private:
00064 //      CArGraph* owner;
00065 //
00067 //
00068 //private:
00069 //      SArEdge* CreateEdge() const;
00070 //      void AddEdges(CArPath* path);
00071 //      void AddEdges(CArBox* box);
00072 //      void AddEdges(CArPort* port);
00073 //      void AddEdges(CArGraph* graph);
00074 //      void DeleteEdges(CObject* object);
00075 //      void DeleteAllEdges();
00076 //
00077 //      int IsEmpty() const;
00078 //
00079 //private:
00080 //      int ishorizontal;
00081 //
00082 //private:
00083 //      SArEdge* GetEdge(CPoint* startpoint, CPoint* endpoint) const;
00084 //      SArEdge* GetEdgeAt(CPoint point, int nearness = 0) const;
00085 //
00086 //#ifdef _DEBUG
00087 //public:
00088 //      void AssertValidPathEdges(CArPath* path) const;
00089 //#endif _DEBUG
00090 //
00092 //
00093 //private:
00094 //      long Position_GetRealY(const SArEdge* edge) const;
00095 //      void Position_SetRealY(SArEdge* edge, long y) const;
00096 //      void Position_GetRealX(const SArEdge* edge, long& x1, long& x2) const;
00097 //      void Position_GetRealO(const SArEdge* edge, long& o1, long& o2) const;
00098 //
00099 //      void Position_LoadY(SArEdge* edge) const;
00100 //      void Position_LoadB(SArEdge* edge) const;
00101 //      void PositionAll_StoreY() const;
00102 //
00103 //      void PositionAll_LoadX() const;
00104 //
00105 //#ifdef _DEBUG
00106 //private:
00107 //      void AssertValidPositions() const;
00108 //#endif
00109 //
00111 //
00112 //private:
00113 //      void Con_Order();
00114 //      void Des_Order();
00115 //
00116 //private:
00117 //      void InsertBefore(SArEdge* edge, SArEdge* before);
00118 //      void InsertAfter(SArEdge* edge, SArEdge* after);
00119 //      void InsertLast(SArEdge* edge);
00120 //      void Insert(SArEdge* edge);
00121 //      void Remove(SArEdge* edge);
00122 //      void Delete(SArEdge* edge);
00123 //
00124 //      SArEdge* SlideButNotPassEdges(SArEdge* edge, float y);
00125 //
00126 //private:
00127 //      SArEdge* order_first;
00128 //      SArEdge* order_last;
00129 //
00130 //#ifdef _DEBUG
00131 //private:
00132 //      void AssertValidOrder() const;
00133 //#endif
00134 //
00136 //
00137 //private:
00138 //      void Con_Section();
00139 //      void Des_Section();
00140 //
00141 //private:
00142 //      void Section_Reset();
00143 //      void Section_BeginScan(SArEdge* blocker);
00144 //      int Section_HasBlockedEdge();
00145 //      SArEdge* Section_GetBlockedEdge();
00146 //      int Section_IsImmediate();
00147 //
00148 //private:
00149 //      SArEdge* section_first;
00150 //      SArEdge* section_blocker;
00151 //      SArEdge** section_ptr2blocked;
00152 //
00153 //#ifdef _DEBUG
00154 //public:
00155 //      void Section_AssertLevel(SArEdge* level, long x1, long x2) const;
00156 //      void AssertValidSection() const;
00157 //      void AssertSectionReady() const;
00158 //#endif
00159 //
00161 //
00162 //private:
00163 //      int Bracket_IsClosing(const SArEdge* edge) const;
00164 //      int Bracket_IsOpening(const SArEdge* edge) const;
00165 //      int Bracket_IsSmallGap(const SArEdge* blocked, const SArEdge* blocker) const;
00166 //
00167 //      int Bracket_ShouldBeSwitched(const SArEdge* edge, const SArEdge* next) const;
00168 //
00170 //
00171 //private:
00172 //      int Block_PushBackward(SArEdge* blocked, SArEdge* blocker);
00173 //      int Block_PushForward(SArEdge* blocked, SArEdge* blocker);
00174 //      int Block_ScanForward();
00175 //      int Block_ScanBackward();
00176 //
00177 //      int Block_SwitchWrongs();
00178 //};
00179 //
00180 //
00181 //#endif//__AREDGELS_H