private void AtomAdded(Atom atom) { if (!chemicalVisuals.ContainsKey(atom)) //it's not already in the list { if (atom.Element is FunctionalGroup) { chemicalVisuals[atom] = new FunctionalGroupVisual(atom, ShowAtomsInColour); } else { chemicalVisuals[atom] = new AtomVisual(atom, ShowAtomsInColour, ShowImplicitHydrogens, ShowAllCarbonAtoms); } } var cv = chemicalVisuals[atom]; if (cv is FunctionalGroupVisual fgv) { if (fgv.RefCount == 0) // it hasn't been added before { fgv.ChemicalVisuals = chemicalVisuals; fgv.BackgroundColor = Background; fgv.SymbolSize = ViewModel.SymbolSize; fgv.SubscriptSize = ViewModel.SymbolSize * ViewModel.ScriptScalingFactor; fgv.SuperscriptSize = ViewModel.SymbolSize * ViewModel.ScriptScalingFactor; fgv.Standoff = ViewModel.Standoff; fgv.Render(); AddVisual(fgv); } fgv.RefCount++; } else if (cv is AtomVisual av) { if (av.RefCount == 0) // it hasn't been added before { av.ChemicalVisuals = chemicalVisuals; av.SymbolSize = ViewModel.SymbolSize; av.SubscriptSize = ViewModel.SymbolSize * ViewModel.ScriptScalingFactor; av.SuperscriptSize = ViewModel.SymbolSize * ViewModel.ScriptScalingFactor; av.BackgroundColor = Background; av.DisplayOverbonding = DisplayOverbondedAtoms; av.Render(); AddVisual(av); } av.RefCount++; } }
private void AtomAdded(Atom atom) { if (!chemicalVisuals.ContainsKey(atom)) //it's not already in the list { if (atom.Element is FunctionalGroup fg) { chemicalVisuals[atom] = new FunctionalGroupVisual(atom); } else { chemicalVisuals[atom] = new AtomVisual(atom); } } var cv = chemicalVisuals[atom]; if (cv is FunctionalGroupVisual fgv) { if (fgv.RefCount == 0) // it hasn't been added before { fgv.ChemicalVisuals = chemicalVisuals; fgv.BackgroundColor = Background; fgv.Render(); AddVisual(fgv); } fgv.RefCount++; } else if (cv is AtomVisual av) { if (av.RefCount == 0) // it hasn't been added before { av.ChemicalVisuals = chemicalVisuals; av.BackgroundColor = Background; av.Render(); AddVisual(av); } av.RefCount++; } }