⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 link.h

📁 EDA PCB 电路设计工具源码 c/c++ for Linux, Windows, Mac, 2008.8 最新
💻 H
字号:
/*! \file kbool/include/kbool/link.h    \brief Part of a graph, connection between nodes (Header)    \author Probably Klaas Holwerda or Julian Smart    Copyright: 2001-2004 (C) Probably Klaas Holwerda    Licence: wxWidgets Licence    RCS-ID: $Id: link.h,v 1.1 2005/05/24 19:13:37 titato Exp $*/#ifndef LINK_H#define LINK_H#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)#pragma interface#endif#include "../include/booleng.h"#include "../include/_lnk_itr.h"enum LinkStatus {IS_LEFT,IS_ON,IS_RIGHT};class LPoint;class Node;class Record;//!   segment within a graph /*   A Graph contains a list of KBoolLink, the KBoolLink or connected by Node's.    Several KBoolLink can be connected to one Node.    A KBoolLink has a direction defined by its begin and end node.   Node do have a list of connected KBoolLink's.   So one can walk trough a graph in two ways:   1- via its KBoolLink list    2- via the node connected to the KBoolLink's */class A2DKBOOLDLLEXP KBoolLink{   protected:      Bool_Engine* _GC;	public:		//! contructors 		KBoolLink(Bool_Engine* GC);		//! contructors 		KBoolLink(int graphnr, Node* begin, Node* end, Bool_Engine* GC);		//! contructors 		KBoolLink(Node *begin, Node *end, Bool_Engine* GC);		//! destructors		~KBoolLink();      //! Merges the other node with argument		void MergeNodes(Node* const);      				      //! outproduct of two links      LinkStatus OutProduct(KBoolLink* const two,double accur);              		      //! link three compared to this and two      LinkStatus PointOnCorner(KBoolLink* const, KBoolLink* const);	      //! Removes argument from the link		void Remove(Node*);		            //! replaces olddone in the link by newnode		void Replace(Node* oldnode, Node* newnode);		      //!top hole marking		void SetTopHole(bool value);      //!top hole marking		bool IsTopHole();      //! Marking functions		void UnMark();      //! Marking functions		void Mark();      //! Marking functions		void SetMark(bool);      //! Marking functions		bool IsMarked();      //! holelink Marking functions      void SetHoleLink(bool val){ m_holelink = val;};      //! holelink Marking functions      bool GetHoleLink(){ return m_holelink;};      //! Bin functions		void SetNotBeenHere();      //! Bin functions		void SetBeenHere();      //! Have you been here ??		bool BeenHere();										      //! Removes all the references to this		void	UnLink();														//! functions for maximum performance		Node*	GetBeginNode();      				  	      //! Datamember access functions		Node*	GetEndNode();		Node*	GetLowNode();		Node*	GetHighNode();      //! Returns a next link beginning with argument		KBoolLink* Forth(Node*); 	      		int GetGraphNum();		bool GetInc();      bool GetLeftA();		bool GetLeftB();		bool GetRightA();		bool GetRightB();		void GetLRO(LPoint*, int&, int&, double);      //! Return a node not equal to arg.		Node*	GetOther(const Node* const);			      //! Is this link unused ?		bool IsUnused();									      //! Used for given operation ?		bool IsMarked(BOOL_OP operation);                  //! return true if Left side is marked true for operation		bool IsMarkedLeft(BOOL_OP operation);                  //! return true if Right side is marked true for operation		bool IsMarkedRight(BOOL_OP operation);                  //! is this a hole link for given operation		bool IsHole(BOOL_OP operation);				            //! set the hole mark      void SetHole(bool);      //! is the hole mark set?		bool GetHole();      //! Are the nodes on about the same coordinates ?		bool IsZero(B_INT marge );				bool ShorterThan(B_INT marge );      //! Resets the link		void Reset(Node* begin, Node* end, int graphnr = 0);			void Set(Node* begin, Node* end);		void SetBeginNode(Node*);		void SetEndNode(Node*);		void SetGraphNum(int);		void SetInc(bool);      void SetLeftA(bool);		void SetLeftB(bool);		void SetRightA(bool);		void SetRightB(bool);		void SetGroup(GroupType);		GroupType Group();      //! Flag calculation (internal only)		void SetLineTypes();		void Reset();		void Reset_flags();      //!put in this direction      void Redirect(Node* a_node);       void TakeOverOperationFlags( KBoolLink* link );      void SetRecordNode( DL_Node<Record*>* recordNode ) { m_record = recordNode; }      DL_Node<Record*>* GetRecordNode() { return m_record; }	protected:      //! The mainitems of a link		Node 	*m_beginnode, *m_endnode;      //! Marker for walking over the graph		bool	m_bin    	: 1;				      //! Is this a part of hole ?		bool	m_hole     : 1;				      //! link that is toplink of hole?		bool	m_hole_top : 1;				      //! going in one more time in this graph if true  else going out one time		bool 	m_Inc   	: 1;    			      //! Is left in polygongroup A      bool 	m_LeftA 	: 1;    			      //! Is right in polygon group A		bool 	m_RightA	: 1;    			      //! Is left in polygon group B		bool 	m_LeftB 	: 1;    			      //! Is right in polygongroup B		bool	m_RightB	: 1;    			      //! General purose marker, internally unused		bool	m_mark		: 1;    			      //! link for linking holes		bool	m_holelink : 1;    				      //! Marker for Merge Left		bool m_merge_L 	: 1;				      //! Marker for substract a-b Left		bool m_a_substract_b_L: 1;	  		      //! Marker for substract b-a Left		bool m_b_substract_a_L: 1;	  		      //! Marker for intersect Left		bool m_intersect_L: 1;				      //! Marker for X-OR Left		bool m_exor_L: 1;				      //! Marker for Merge Right		bool m_merge_R 	: 1;				      //! Marker for substract a-b Right		bool m_a_substract_b_R: 1;	  		      //! Marker for substract b-a Right		bool m_b_substract_a_R: 1;	  		      //! Marker for intersect Right		bool m_intersect_R: 1;				      //! Marker for X-OR Right		bool m_exor_R: 1;				      //! belongs to group A or B		GroupType m_group : 1;                  //! belongs to this polygon part in the graph.		int m_graphnum;      DL_Node<Record*>* m_record; };#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -