internal override PointF getAnchorPos(int anchorIdx) { if (row == -1) { RectangleF nodeRect = getNodeRect(false); if (getNode().AnchorPattern != null) { AnchorPoint ap = getNode().AnchorPattern.Points[anchorIdx]; return(ap.getPos(nodeRect)); } else { return(getInitialPt()); } } AnchorPattern rowap = table.getRowAnchorPattern(row); RectangleF rowRect = table.getRowRect(row); if (rowap != null) { AnchorPoint ap = rowap.Points[anchorIdx]; return(ap.getPos(rowRect)); } else { return(getInitialPt()); } }
public MarkDrawArgs(Graphics g, PointF location, Node node, AnchorPattern anchorPattern, int anchorIndex) { this.graphics = g; this.location = location; this.node = node; this.anchorPattern = anchorPattern; this.anchorIndex = anchorIndex; }
public object Clone() { AnchorPattern clone = new AnchorPattern(); foreach (AnchorPoint ap in this.points) { clone.points.Add((AnchorPoint)ap.Clone()); } return(clone); }
internal void saveAnchorPattern(AnchorPattern ap) { if (ap == null) { writer.Write(Constants.NoAnchorPattern); } else { int regIndex = ap.getRegIndex(); writer.Write(regIndex); if (regIndex == -1) { ap.saveTo(writer, this); } } }
internal override bool getAnchorPos(int anchorIdx, ref PointF point) { if (row == -1) { return(base.getAnchorPos(anchorIdx, ref point)); } AnchorPattern rowap = table.getRowAnchorPattern(row); if (rowap != null && anchorIdx >= 0 && anchorIdx < rowap.Points.Count) { AnchorPoint ap = rowap.Points[anchorIdx]; RectangleF targetRect = (ap.Column == -1) ? table.getRowRect(row) : table.getSpannedCellRect(row, ap.Column); point = ap.getPos(targetRect); return(true); } return(false); }
internal AnchorPattern loadAnchorPattern() { AnchorPattern anchorPattern = null; int regIndex = reader.ReadInt32(); if (regIndex == Constants.NoAnchorPattern) { anchorPattern = null; } else { if (regIndex != -1) { anchorPattern = AnchorPattern.getRegisteredPattern(regIndex); } else { (anchorPattern = new AnchorPattern()).loadFrom(reader, this); } } return(anchorPattern); }
internal override PointF getEndPoint() { RectangleF rc = table.getRowRect(row); PointF ptp = relativePosition; if (row != -1) { rc = table.getRowRect(row); } else { rc = table.getBoundingRect(); } // use anchor point position if available if (row != -1) { AnchorPattern rowap = table.getRowAnchorPattern(row); if (rowap != null) { // check DestAnchor for incoming arrow if (incoming && arrow.DestAnchor != -1) { AnchorPoint ap = rowap.Points[arrow.DestAnchor]; ptp = new PointF(ap.X, ap.Y); if (ap.Column != -1) { rc = table.getSpannedCellRect(row, ap.Column); } } // check OrgnAnchor for outgoing arrow if (!incoming && arrow.OrgnAnchor != -1) { AnchorPoint ap = rowap.Points[arrow.OrgnAnchor]; ptp = new PointF(ap.X, ap.Y); if (ap.Column != -1) { rc = table.getSpannedCellRect(row, ap.Column); } } } } // calculate point coordinates PointF pt = Utilities.rectPtFromPercent(ptp, rc); // stay within table boundaries RectangleF rcTable = table.getBoundingRect(); if (pt.Y > rcTable.Bottom) { pt.Y = rcTable.Bottom; } if (pt.X > rcTable.Right) { pt.X = rcTable.Right; } return(pt); }
internal AnchorPattern loadAnchorPattern() { AnchorPattern anchorPattern = null; int regIndex = reader.ReadInt32(); if (regIndex == Constants.NoAnchorPattern) { anchorPattern = null; } else { if (regIndex != -1) anchorPattern = AnchorPattern.getRegisteredPattern(regIndex); else (anchorPattern = new AnchorPattern()).loadFrom(reader, this); } return anchorPattern; }
private AnchorPattern ReadAnchorPatternElement( System.Xml.XmlReader reader) { int regIndex = XmlConvert.ToInt32(reader.GetAttribute("RegIndex")); AnchorPattern pattern = null; if (regIndex == Constants.NoAnchorPattern) pattern = null; if (regIndex != -1) pattern = AnchorPattern.getRegisteredPattern(regIndex); // Load the pattern if (regIndex == -1) { AnchorPointCollection points = new AnchorPointCollection(); reader.Read(); int count = XmlConvert.ToInt32(reader.GetAttribute("Count")); for (int i = 0; i < count; i++) { AnchorPoint point = new AnchorPoint(0, 0); reader.Read(); ReadProperties(reader, point, reader.Depth + 1); points.Add(point); } // Points closing tag if (count > 0) reader.Read(); // Anchor pattern closing tag reader.Read(); pattern = new AnchorPattern(points); } return pattern; }
public virtual void loadFrom(BinaryReader reader, PersistContext ctx) { height = (float)reader.ReadDouble(); ctx.loadReference(this); ctx.loadReference(this); ctx.loadReference(this); ctx.loadReference(this); ctx.loadReference(this); if (ctx.FileVersion > 5) { // new in save format 6 anchorPattern = ctx.loadAnchorPattern(); if (ctx.FileVersion > 21) { // new in save format 22 header = reader.ReadBoolean(); expanded = reader.ReadBoolean(); } } }
public static void Register(AnchorPattern pattern) { registeredPatterns.Add(pattern); pattern.regIndex = registeredPatterns.Count - 1; }
internal override void restoreProperties(ItemProperties props) { NodeProperties nprops = (NodeProperties)props; anchorPattern = nprops.anchorPattern; expanded = nprops.expanded; expandable = nprops.expandable; obstacle = nprops.obstacle; Constraints = nprops.contraints == null ? null : (NodeConstraints)nprops.contraints.Clone(); enabledHandles = nprops.enabledHandles; boolValues = nprops.boolValues; base.restoreProperties(props); }
public object Clone() { AnchorPattern clone = new AnchorPattern(); foreach (AnchorPoint ap in this.points) clone.points.Add((AnchorPoint)ap.Clone()); return clone; }
private void WriteAnchorPatternElement(string name, System.Xml.XmlWriter writer, AnchorPattern pattern) { writer.WriteStartElement(name); if (pattern == null) { // Write NoPattern constant writer.WriteAttributeString("RegIndex", XmlConvert.FromInt32(Constants.NoAnchorPattern)); } else { // Write the pattern reg index writer.WriteAttributeString("RegIndex", XmlConvert.FromInt32(pattern.getRegIndex())); if (pattern.getRegIndex() == -1) { // Save the pattern points writer.WriteStartElement("Points"); writer.WriteAttributeString("Count", XmlConvert.FromInt32(pattern.Points.Count)); AnchorPoint point; for(int i = 0; i < pattern.Points.Count; i++) { point = pattern.Points[i]; writer.WriteStartElement("AnchorPoint"); // Write points properties WriteProperties(writer, point, new string[] { "AllowIncoming", "AllowOutgoing", "Color", "Column", "MarkStyle", "ToolTip", "X", "Y" }, null); // Write tag WriteTagElement(writer, point); writer.WriteEndElement(); } writer.WriteEndElement(); } } writer.WriteEndElement(); }
internal void saveAnchorPattern(AnchorPattern ap) { if (ap == null) { writer.Write(Constants.NoAnchorPattern); } else { int regIndex = ap.getRegIndex(); writer.Write(regIndex); if (regIndex == -1) ap.saveTo(writer, this); } }