+ //// New banching attachment code, 24/9/98
+
+ //
+ // |________|
+ // | <- root
+ // | <- neck
+ // shoulder1 ->---------<- shoulder2
+ // | | | | |<- stem
+ // <- branching attachment point N-1
+
+ // This function gets the root point at the given attachment.
+ virtual wxRealPoint GetBranchingAttachmentRoot(int attachment);
+
+ // This function gets information about where branching connections go (calls GetBranchingAttachmentRoot)
+ virtual bool GetBranchingAttachmentInfo(int attachment, wxRealPoint& root, wxRealPoint& neck,
+ wxRealPoint& shoulder1, wxRealPoint& shoulder2);
+
+ // n is the number of the adjoining line, from 0 to N-1 where N is the number of lines
+ // at this attachment point.
+ // attachmentPoint is where the arc meets the stem, and stemPoint is where the stem meets the
+ // shoulder.
+ virtual bool GetBranchingAttachmentPoint(int attachment, int n, wxRealPoint& attachmentPoint,
+ wxRealPoint& stemPoint);
+
+ // Get the number of lines at this attachment position.
+ virtual int GetAttachmentLineCount(int attachment) const;
+
+ // Draw the branches (not the actual arcs though)
+ virtual void OnDrawBranches(wxDC& dc, int attachment, bool erase = FALSE);
+ virtual void OnDrawBranches(wxDC& dc, bool erase = FALSE);
+
+ // Branching attachment settings
+ inline void SetBranchNeckLength(int len) { m_branchNeckLength = len; }
+ inline int GetBranchNeckLength() const { return m_branchNeckLength; }
+
+ inline void SetBranchStemLength(int len) { m_branchStemLength = len; }
+ inline int GetBranchStemLength() const { return m_branchStemLength; }
+
+ inline void SetBranchSpacing(int len) { m_branchSpacing = len; }
+ inline int GetBranchSpacing() const { return m_branchSpacing; }
+
+ // Further detail on branching style, e.g. blobs on interconnections
+ inline void SetBranchStyle(long style) { m_branchStyle = style; }
+ inline long GetBranchStyle() const { return m_branchStyle; }
+
+ // Rotate the standard attachment point from physical (0 is always North)
+ // to logical (0 -> 1 if rotated by 90 degrees)
+ virtual int PhysicalToLogicalAttachment(int physicalAttachment) const;
+
+ // Rotate the standard attachment point from logical
+ // to physical (0 is always North)
+ virtual int LogicalToPhysicalAttachment(int logicalAttachment) const;
+