test_class.declarator: font          = new Font("Verdana", Font.PLAIN, 12)
test_class.modifier: private final
test_class.original_string: private final Font                  font          = new Font("Verdana", Font.PLAIN, 12);
test_class.type: Font
test_class.var_name: font
test_class.declarator: element       = new TextOutline("N", font)
test_class.modifier: private final
test_class.original_string: private final TextOutline           element       = new TextOutline("N", font);
test_class.type: TextOutline
test_class.var_name: element
test_class.declarator: hydrogen      = new TextOutline("H", font)
test_class.modifier: private final
test_class.original_string: private final TextOutline           hydrogen      = new TextOutline("H", font);
test_class.type: TextOutline
test_class.var_name: hydrogen
test_class.declarator: atomGenerator = new StandardAtomGenerator(font)
test_class.modifier: private final
test_class.original_string: private final StandardAtomGenerator atomGenerator = new StandardAtomGenerator(font);
test_class.type: StandardAtomGenerator
test_class.var_name: atomGenerator
test_class.file: display/renderbasic/src/test/java/org/openscience/cdk/renderer/generators/standard/StandardAtomGeneratorTest.java
test_class.identifier: StandardAtomGeneratorTest
test_case.body: @Test
      public void generateWithChargeAdjunct() {
          AtomSymbol symbol = atomGenerator.generatePeriodicSymbol(7, 0, -1, 1, 0, HydrogenPosition.Right, null);
          assertThat(symbol.getOutlines().size(), is(2));
      }
test_case.class_method_signature: StandardAtomGeneratorTest.generateWithChargeAdjunct()
test_case.full_signature: @Test public void generateWithChargeAdjunct()
test_case.identifier: generateWithChargeAdjunct
test_case.invocations: generatePeriodicSymbol assertThat size getOutlines is
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void generateWithChargeAdjunct()
focal_class.declarator: DEFAULT_ADJUNCT_SPACING_RATIO = 0.15d
focal_class.modifier: private final static
focal_class.original_string: private final static double DEFAULT_ADJUNCT_SPACING_RATIO = 0.15d;
focal_class.type: double
focal_class.var_name: DEFAULT_ADJUNCT_SPACING_RATIO
focal_class.declarator: DEFAULT_SUBSCRIPT_SIZE        = 0.6d
focal_class.modifier: private final static
focal_class.original_string: private final static double DEFAULT_SUBSCRIPT_SIZE        = 0.6d;
focal_class.type: double
focal_class.var_name: DEFAULT_SUBSCRIPT_SIZE
focal_class.declarator: font
focal_class.modifier: private final
focal_class.original_string: private final Font font;
focal_class.type: Font
focal_class.var_name: font
focal_class.declarator: scriptSize
focal_class.modifier: private final
focal_class.original_string: private final double scriptSize;
focal_class.type: double
focal_class.var_name: scriptSize
focal_class.declarator: padding
focal_class.modifier: private final
focal_class.original_string: private final double padding;
focal_class.type: double
focal_class.var_name: padding
focal_class.declarator: defaultHydrogenLabel
focal_class.modifier: private final
focal_class.original_string: private final TextOutline defaultHydrogenLabel;
focal_class.type: TextOutline
focal_class.var_name: defaultHydrogenLabel
focal_class.declarator: BULLET = '•', 
focal_class.modifier: private static final
focal_class.original_string: private static final char BULLET = '•', // '\u2022'
              PLUS                     = '+', MINUS = '−'; /
focal_class.type: char
focal_class.var_name: BULLET
focal_class.file: display/renderbasic/src/main/java/org/openscience/cdk/renderer/generators/standard/StandardAtomGenerator.java
focal_class.identifier: StandardAtomGenerator
focal_class.class_method_signature: StandardAtomGenerator.StandardAtomGenerator(Font font)
focal_class.full_signature:   StandardAtomGenerator(Font font)
focal_class.identifier: StandardAtomGenerator
focal_class.parameters: (Font font)
focal_class.signature:  StandardAtomGenerator(Font font)
focal_class.class_method_signature: StandardAtomGenerator.StandardAtomGenerator(Font font, double adjunctSpacing, double scriptSize)
focal_class.full_signature: private  StandardAtomGenerator(Font font, double adjunctSpacing, double scriptSize)
focal_class.identifier: StandardAtomGenerator
focal_class.modifiers: private
focal_class.parameters: (Font font, double adjunctSpacing, double scriptSize)
focal_class.signature:  StandardAtomGenerator(Font font, double adjunctSpacing, double scriptSize)
focal_class.class_method_signature: StandardAtomGenerator.generateSymbol(IAtomContainer container, IAtom atom, HydrogenPosition position, RendererModel model)
focal_class.full_signature:  AtomSymbol generateSymbol(IAtomContainer container, IAtom atom, HydrogenPosition position, RendererModel model)
focal_class.identifier: generateSymbol
focal_class.parameters: (IAtomContainer container, IAtom atom, HydrogenPosition position, RendererModel model)
focal_class.return: AtomSymbol
focal_class.signature: AtomSymbol generateSymbol(IAtomContainer container, IAtom atom, HydrogenPosition position, RendererModel model)
focal_class.class_method_signature: StandardAtomGenerator.generatePseudoSymbol(String label, HydrogenPosition position, RendererModel model)
focal_class.full_signature:  AtomSymbol generatePseudoSymbol(String label, HydrogenPosition position, RendererModel model)
focal_class.identifier: generatePseudoSymbol
focal_class.parameters: (String label, HydrogenPosition position, RendererModel model)
focal_class.return: AtomSymbol
focal_class.signature: AtomSymbol generatePseudoSymbol(String label, HydrogenPosition position, RendererModel model)
focal_class.class_method_signature: StandardAtomGenerator.isUpperCase(char c)
focal_class.full_signature: private boolean isUpperCase(char c)
focal_class.identifier: isUpperCase
focal_class.modifiers: private
focal_class.parameters: (char c)
focal_class.return: boolean
focal_class.signature: boolean isUpperCase(char c)
focal_class.class_method_signature: StandardAtomGenerator.isLowerCase(char c)
focal_class.full_signature: private boolean isLowerCase(char c)
focal_class.identifier: isLowerCase
focal_class.modifiers: private
focal_class.parameters: (char c)
focal_class.return: boolean
focal_class.signature: boolean isLowerCase(char c)
focal_class.class_method_signature: StandardAtomGenerator.isDigit(char c)
focal_class.full_signature: private boolean isDigit(char c)
focal_class.identifier: isDigit
focal_class.modifiers: private
focal_class.parameters: (char c)
focal_class.return: boolean
focal_class.signature: boolean isDigit(char c)
focal_class.class_method_signature: StandardAtomGenerator.generateAbbreviatedSymbol(String label, HydrogenPosition position)
focal_class.full_signature:  AtomSymbol generateAbbreviatedSymbol(String label, HydrogenPosition position)
focal_class.identifier: generateAbbreviatedSymbol
focal_class.parameters: (String label, HydrogenPosition position)
focal_class.return: AtomSymbol
focal_class.signature: AtomSymbol generateAbbreviatedSymbol(String label, HydrogenPosition position)
focal_class.class_method_signature: StandardAtomGenerator.generateAbbreviationSymbol(List<String> tokens, HydrogenPosition position)
focal_class.full_signature:  AtomSymbol generateAbbreviationSymbol(List<String> tokens, HydrogenPosition position)
focal_class.identifier: generateAbbreviationSymbol
focal_class.parameters: (List<String> tokens, HydrogenPosition position)
focal_class.return: AtomSymbol
focal_class.signature: AtomSymbol generateAbbreviationSymbol(List<String> tokens, HydrogenPosition position)
focal_class.class_method_signature: StandardAtomGenerator.generatePeriodicSymbol(final int number, final int hydrogens, int mass, final int charge,
                                        final int unpaired, HydrogenPosition position,
                                        RendererModel opts)
focal_class.full_signature:  AtomSymbol generatePeriodicSymbol(final int number, final int hydrogens, int mass, final int charge,
                                        final int unpaired, HydrogenPosition position,
                                        RendererModel opts)
focal_class.identifier: generatePeriodicSymbol
focal_class.parameters: (final int number, final int hydrogens, int mass, final int charge,
                                        final int unpaired, HydrogenPosition position,
                                        RendererModel opts)
focal_class.return: AtomSymbol
focal_class.signature: AtomSymbol generatePeriodicSymbol(final int number, final int hydrogens, int mass, final int charge,
                                        final int unpaired, HydrogenPosition position,
                                        RendererModel opts)
focal_class.class_method_signature: StandardAtomGenerator.positionHydrogenLabel(HydrogenPosition position, TextOutline element, TextOutline hydrogen)
focal_class.full_signature:  TextOutline positionHydrogenLabel(HydrogenPosition position, TextOutline element, TextOutline hydrogen)
focal_class.identifier: positionHydrogenLabel
focal_class.parameters: (HydrogenPosition position, TextOutline element, TextOutline hydrogen)
focal_class.return: TextOutline
focal_class.signature: TextOutline positionHydrogenLabel(HydrogenPosition position, TextOutline element, TextOutline hydrogen)
focal_class.class_method_signature: StandardAtomGenerator.positionSubscript(TextOutline label, TextOutline subscript)
focal_class.full_signature:  TextOutline positionSubscript(TextOutline label, TextOutline subscript)
focal_class.identifier: positionSubscript
focal_class.parameters: (TextOutline label, TextOutline subscript)
focal_class.return: TextOutline
focal_class.signature: TextOutline positionSubscript(TextOutline label, TextOutline subscript)
focal_class.class_method_signature: StandardAtomGenerator.positionSuperscript(TextOutline label, TextOutline superscript)
focal_class.full_signature:  TextOutline positionSuperscript(TextOutline label, TextOutline superscript)
focal_class.identifier: positionSuperscript
focal_class.parameters: (TextOutline label, TextOutline superscript)
focal_class.return: TextOutline
focal_class.signature: TextOutline positionSuperscript(TextOutline label, TextOutline superscript)
focal_class.class_method_signature: StandardAtomGenerator.positionAfter(TextOutline before, TextOutline after)
focal_class.full_signature:  TextOutline positionAfter(TextOutline before, TextOutline after)
focal_class.identifier: positionAfter
focal_class.parameters: (TextOutline before, TextOutline after)
focal_class.return: TextOutline
focal_class.signature: TextOutline positionAfter(TextOutline before, TextOutline after)
focal_class.class_method_signature: StandardAtomGenerator.positionChargeLabel(int hydrogens,
                                      HydrogenPosition position,
                                      TextOutline charge,
                                      TextOutline element,
                                      TextOutline hydrogen)
focal_class.full_signature:  TextOutline positionChargeLabel(int hydrogens,
                                      HydrogenPosition position,
                                      TextOutline charge,
                                      TextOutline element,
                                      TextOutline hydrogen)
focal_class.identifier: positionChargeLabel
focal_class.parameters: (int hydrogens,
                                      HydrogenPosition position,
                                      TextOutline charge,
                                      TextOutline element,
                                      TextOutline hydrogen)
focal_class.return: TextOutline
focal_class.signature: TextOutline positionChargeLabel(int hydrogens,
                                      HydrogenPosition position,
                                      TextOutline charge,
                                      TextOutline element,
                                      TextOutline hydrogen)
focal_class.class_method_signature: StandardAtomGenerator.positionMassLabel(TextOutline massLabel, TextOutline elementLabel)
focal_class.full_signature:  TextOutline positionMassLabel(TextOutline massLabel, TextOutline elementLabel)
focal_class.identifier: positionMassLabel
focal_class.parameters: (TextOutline massLabel, TextOutline elementLabel)
focal_class.return: TextOutline
focal_class.signature: TextOutline positionMassLabel(TextOutline massLabel, TextOutline elementLabel)
focal_class.class_method_signature: StandardAtomGenerator.hydrogenXDodge(int hydrogens, int mass, TextOutline elementLabel, TextOutline hydrogenLabel,
                                    TextOutline hydrogenCount, TextOutline massLabel)
focal_class.full_signature: private double hydrogenXDodge(int hydrogens, int mass, TextOutline elementLabel, TextOutline hydrogenLabel,
                                    TextOutline hydrogenCount, TextOutline massLabel)
focal_class.identifier: hydrogenXDodge
focal_class.modifiers: private
focal_class.parameters: (int hydrogens, int mass, TextOutline elementLabel, TextOutline hydrogenLabel,
                                    TextOutline hydrogenCount, TextOutline massLabel)
focal_class.return: double
focal_class.signature: double hydrogenXDodge(int hydrogens, int mass, TextOutline elementLabel, TextOutline hydrogenLabel,
                                    TextOutline hydrogenCount, TextOutline massLabel)
focal_class.class_method_signature: StandardAtomGenerator.isMajorIsotope(int number, int mass)
focal_class.full_signature: private boolean isMajorIsotope(int number, int mass)
focal_class.identifier: isMajorIsotope
focal_class.modifiers: private
focal_class.parameters: (int number, int mass)
focal_class.return: boolean
focal_class.signature: boolean isMajorIsotope(int number, int mass)
focal_class.class_method_signature: StandardAtomGenerator.unboxSafely(Integer value, int defaultValue)
focal_class.full_signature: private static int unboxSafely(Integer value, int defaultValue)
focal_class.identifier: unboxSafely
focal_class.modifiers: private static
focal_class.parameters: (Integer value, int defaultValue)
focal_class.return: int
focal_class.signature: int unboxSafely(Integer value, int defaultValue)
focal_class.class_method_signature: StandardAtomGenerator.chargeAdjunctText(final int charge, final int unpaired)
focal_class.full_signature: static String chargeAdjunctText(final int charge, final int unpaired)
focal_class.identifier: chargeAdjunctText
focal_class.modifiers: static
focal_class.parameters: (final int charge, final int unpaired)
focal_class.return: String
focal_class.signature: String chargeAdjunctText(final int charge, final int unpaired)
focal_class.class_method_signature: StandardAtomGenerator.accessPseudoLabel(IPseudoAtom atom, String defaultLabel)
focal_class.full_signature: static String accessPseudoLabel(IPseudoAtom atom, String defaultLabel)
focal_class.identifier: accessPseudoLabel
focal_class.modifiers: static
focal_class.parameters: (IPseudoAtom atom, String defaultLabel)
focal_class.return: String
focal_class.signature: String accessPseudoLabel(IPseudoAtom atom, String defaultLabel)
focal_method.body: AtomSymbol generatePeriodicSymbol(final int number, final int hydrogens, int mass, final int charge,
                                        final int unpaired, HydrogenPosition position,
                                        RendererModel opts) {
  
          Font myfont = font;
          final String label;
          switch (number) {
              case 0:
                  label = "*";
                  myfont = font.deriveFont(Font.BOLD);
                  break;
              case 1:
                  if (mass == 2 && opts.get(DeuteriumSymbol.class)) {
                      label = "D";
                      mass = 0;
                  } else {
                      label = Elements.ofNumber(number).symbol();
                  }
                  break;
              default:
                  label = Elements.ofNumber(number).symbol();
                  break;
          }
          TextOutline element = new TextOutline(label, myfont);
          TextOutline hydrogenAdjunct = defaultHydrogenLabel;
  
          // the hydrogen count, charge, and mass adjuncts are script size
          TextOutline hydrogenCount = new TextOutline(Integer.toString(hydrogens), font).resize(scriptSize, scriptSize);
          TextOutline chargeAdjunct = new TextOutline(chargeAdjunctText(charge, unpaired), font).resize(scriptSize,
                                                                                                        scriptSize);
          TextOutline massAdjunct = new TextOutline(Integer.toString(mass), font).resize(scriptSize, scriptSize);
  
          // position each adjunct relative to the element label and each other
          hydrogenAdjunct = positionHydrogenLabel(position, element, hydrogenAdjunct);
          hydrogenCount = positionSubscript(hydrogenAdjunct, hydrogenCount);
          chargeAdjunct = positionChargeLabel(hydrogens, position, chargeAdjunct, element, hydrogenAdjunct);
          massAdjunct = positionMassLabel(massAdjunct, element);
  
          // when the hydrogen label is positioned to the left we may need to nudge it
          // over to account for the hydrogen count and/or the mass adjunct colliding
          // with the element label, we also need to move the charge too '+H3N'
          if (position == Left) {
              final double nudgeX = hydrogenXDodge(hydrogens, mass, element, hydrogenAdjunct, hydrogenCount, massAdjunct);
              hydrogenAdjunct = hydrogenAdjunct.translate(nudgeX, 0);
              hydrogenCount = hydrogenCount.translate(nudgeX, 0);
              chargeAdjunct = chargeAdjunct.translate(nudgeX, 0);
          }
  
          final List<TextOutline> adjuncts = new ArrayList<TextOutline>(4);
  
          if (hydrogens > 0) adjuncts.add(hydrogenAdjunct);
          if (hydrogens > 1) adjuncts.add(hydrogenCount);
          if (charge != 0 || unpaired > 0) adjuncts.add(chargeAdjunct);
          if (mass > 0) adjuncts.add(massAdjunct);
  
          return new AtomSymbol(element, adjuncts);
      }
focal_method.class_method_signature: StandardAtomGenerator.generatePeriodicSymbol(final int number, final int hydrogens, int mass, final int charge,
                                        final int unpaired, HydrogenPosition position,
                                        RendererModel opts)
focal_method.full_signature:  AtomSymbol generatePeriodicSymbol(final int number, final int hydrogens, int mass, final int charge,
                                        final int unpaired, HydrogenPosition position,
                                        RendererModel opts)
focal_method.identifier: generatePeriodicSymbol
focal_method.invocations: deriveFont get symbol ofNumber symbol ofNumber resize toString resize chargeAdjunctText resize toString positionHydrogenLabel positionSubscript positionChargeLabel positionMassLabel hydrogenXDodge translate translate translate add add add add
focal_method.parameters: (final int number, final int hydrogens, int mass, final int charge,
                                        final int unpaired, HydrogenPosition position,
                                        RendererModel opts)
focal_method.return: AtomSymbol
focal_method.signature: AtomSymbol generatePeriodicSymbol(final int number, final int hydrogens, int mass, final int charge,
                                        final int unpaired, HydrogenPosition position,
                                        RendererModel opts)