00001
00002
00003
00004
00005
00006
00007 #ifndef GRAPH_H
00008 #define GRAPH_H
00009
00010 #ifdef __GNUG__
00011 #pragma interface
00012 #endif
00013
00014 #include <assert.h>
00015 #include "misc.h"
00016 #include "link.h"
00017 #include "line.h"
00018 #include "scanbeam.h"
00019 #include "_lnk_itr.h"
00020
00021 class Node;
00022
00023 class GraphList;
00024
00025 class Graph
00026
00027 {
00028 public:
00029 friend class Debug_driver;
00030 Graph();
00031 Graph(Link*);
00032 ~Graph();
00033
00034 bool GetBin() { return _bin; };
00035 void SetBin(bool b) { _bin = b; };
00036
00037 void Prepare();
00038 void Round(B_INT grid);
00039 void Rotate(bool plus90);
00040 void AddLink(Node *begin,Node *end);
00041 void AddLink(Link *a_link);
00042 bool AreZeroLines(B_INT Marge);
00043 void DeleteDoubles();
00044 bool DeleteZeroLines(B_INT Marge);
00045 bool RemoveNullLinks();
00046
00047 void ProcessCrossings();
00048 void Set_Operation_Flags();
00049
00050 void Remove_IN_Links();
00051 void ReverseAllLinks();
00052
00053 bool Simplify(B_INT Marge );
00054
00055 bool Smoothen(B_INT Marge);
00056
00057 void TakeOver(Graph*);
00058
00059
00060
00061 Link* GetFirstLink();
00062 Node* GetTopNode();
00063 void SetBeenHere(bool);
00064 void Graph::Reset_flags();
00065 void SetGroup(GroupType);
00066 void SetNumber(const int);
00067 void Reset_Mark_and_Bin();
00068 bool GetBeenHere();
00069 int GetGraphNum();
00070 int GetNumberOfLinks();
00071
00072 void Boolean(BOOL_OP operation,GraphList* Result);
00073 void Correction(GraphList* Result,B_INT factor);
00074 void MakeRing(GraphList* Result,B_INT factor);
00075 void CreateRing(GraphList *ring,B_INT factor);
00076 void CreateRing_fast(GraphList *ring,B_INT factor);
00077 void CreateArc(Node* center, Line* incoming, Node* end,double radius,double aber);
00078 void CreateArc(Node* center, Node* begin, Node* end,double radius,bool clock,double aber);
00079 void MakeOneDirection();
00080 void Make_Rounded_Shape(Link* a_link, B_INT factor);
00081 bool MakeClockWise();
00082 bool writegraph(bool linked);
00083 bool writeintersections();
00084
00085 protected:
00086 void Extract_Simples(BOOL_OP operation, bool detecthole);
00087
00088 void Split(GraphList* partlist);
00089 void CollectGraph(Node *current_node, BOOL_OP operation, bool detecthole,int graphnumber);
00090
00091 Node* GetMostTopLeft(TDLI<Link>* _LI);
00092 void CalculateCrossings(B_INT Marge);
00093 int Merge_NodeToNode(B_INT Marge);
00094 int ScanGraph2(SCANTYPE scantype);
00095 void DeleteNonCond(BOOL_OP operation);
00096 bool checksort();
00097 bool Small(B_INT howsmall);
00098
00099
00100 bool _bin;
00101
00102 DL_List<void*>* _linklist;
00103
00104 };
00105
00106 #endif
00107
graph.h Source File -- Thu Nov 28 21:24:56 2002 -- 28 Nov 2002 -- 1.2.18 -- -- . --