public void encode(SheetGraphics graphics, ReportContent reportContent, Bounds bounds)
     throws DocumentException {
   GhostPassionContent content = createContent(reportContent);
   float groupSpacing = traitEncoder.getTraitHeight() / 2;
   float x = bounds.x;
   float y = bounds.getMaxY() - 2 * groupSpacing;
   float width = bounds.getWidth();
   for (NamedValue passion : content.getPrintPassions()) {
     Position position = new Position(x, y);
     y -= traitEncoder.encode(graphics, passion, position, width, content.getTraitMaximum());
   }
 }
public class PassionEncoder extends AbstractBoxContentEncoder<GhostPassionContent> {

  private final PdfTraitEncoder traitEncoder = PdfTraitEncoder.createSmallTraitEncoder();

  public PassionEncoder() {
    super(GhostPassionContent.class);
  }

  public void encode(SheetGraphics graphics, ReportContent reportContent, Bounds bounds)
      throws DocumentException {
    GhostPassionContent content = createContent(reportContent);
    float groupSpacing = traitEncoder.getTraitHeight() / 2;
    float x = bounds.x;
    float y = bounds.getMaxY() - 2 * groupSpacing;
    float width = bounds.getWidth();
    for (NamedValue passion : content.getPrintPassions()) {
      Position position = new Position(x, y);
      y -= traitEncoder.encode(graphics, passion, position, width, content.getTraitMaximum());
    }
  }
}