Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
 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;
 }