internal static GoPenInfo GetPenInfo(System.Drawing.Pen p) { GoPenInfo info3; if (p == null) { return(null); } lock (DiagramGraph.myDrawers) { WeakHashRef ref1 = new WeakHashRef(p); WeakReference reference1 = (WeakReference)DiagramGraph.myDrawers[ref1]; GoPenInfo info1 = null; if (reference1 != null) { if (reference1.IsAlive) { info1 = reference1.Target as GoPenInfo; } else { DiagramGraph.myDrawers.Remove(ref1); } } if (info1 == null) { info1 = new GoPenInfo(); if (!info1.SetPen(p)) { return(info1); } WeakHashRef ref2 = new WeakHashRef(info1); reference1 = (WeakHashRef)DiagramGraph.myInfos[ref2]; if (reference1 != null) { if (reference1.IsAlive) { GoPenInfo info2 = reference1.Target as GoPenInfo; if (info2 != null) { return(info2); } } else { DiagramGraph.myInfos.Remove(ref2); } } DiagramGraph.myDrawers[ref1] = new WeakReference(info1); DiagramGraph.myInfos[ref2] = ref2; DiagramGraph.CleanInfos(); } info3 = info1; } return(info3); }
public static float GetPenWidth(System.Drawing.Pen pen, DiagramView view) { if (pen == null) { return(0f); } GoPenInfo info1 = DiagramGraph.GetPenInfo(pen); float single1 = info1.Width; if (((single1 == 0f) && (view != null)) && (view.DocScale > 0f)) { return(1f / view.DocScale); } return(single1); }
internal static GoPenInfo GetPenInfo(System.Drawing.Pen p) { GoPenInfo info3; if (p == null) { return null; } lock (DiagramGraph.myDrawers) { WeakHashRef ref1 = new WeakHashRef(p); WeakReference reference1 = (WeakReference)DiagramGraph.myDrawers[ref1]; GoPenInfo info1 = null; if (reference1 != null) { if (reference1.IsAlive) { info1 = reference1.Target as GoPenInfo; } else { DiagramGraph.myDrawers.Remove(ref1); } } if (info1 == null) { info1 = new GoPenInfo(); if (!info1.SetPen(p)) { return info1; } WeakHashRef ref2 = new WeakHashRef(info1); reference1 = (WeakHashRef)DiagramGraph.myInfos[ref2]; if (reference1 != null) { if (reference1.IsAlive) { GoPenInfo info2 = reference1.Target as GoPenInfo; if (info2 != null) { return info2; } } else { DiagramGraph.myInfos.Remove(ref2); } } DiagramGraph.myDrawers[ref1] = new WeakReference(info1); DiagramGraph.myInfos[ref2] = ref2; DiagramGraph.CleanInfos(); } info3 = info1; } return info3; }