class BarcodeEANSUPP extends Barcode {

    /**
     * The barcode with the EAN/UPC.
     */
    protected Barcode ean;
    /**
     * The barcode with the supplemental.
     */
    protected Barcode supp;

    /**
     * Creates new combined barcode.
     *
     * @param ean  the EAN/UPC barcode
     * @param supp the supplemental barcode
     */
    public BarcodeEANSUPP(Barcode ean, Barcode supp) {
        n = 8; // horizontal distance between the two barcodes
        this.ean = ean;
        this.supp = supp;
    }

    /**
     * Gets the maximum area that the barcode and the text, if any, will occupy. The lower left corner is always (0,
     * 0).
     *
     * @return the size the barcode occupies.
     */
    public Rectangle getBarcodeSize() {
        Rectangle rect = ean.getBarcodeSize();
        rect.setRight(rect.getWidth() + supp.getBarcodeSize().getWidth() + n);
        return rect;
    }

    /**
     * Places the barcode in a <CODE>PdfContentByte</CODE>. The barcode is always placed at coordinates (0, 0). Use the
     * translation matrix to move it elsewhere.
     * <p> The bars and text are written in the following colors:</p>
     * <TABLE BORDER=1>
     * <CAPTION>table of the colors of the bars and text</CAPTION>
     * <TR>
     * <TH><P><CODE>barColor</CODE></TH>
     * <TH><P><CODE>textColor</CODE></TH>
     * <TH><P>Result</TH>
     * </TR>
     * <TR>
     * <TD><P><CODE>null</CODE></TD>
     * <TD><P><CODE>null</CODE></TD>
     * <TD><P>bars and text painted with current fill color</TD>
     * </TR>
     * <TR>
     * <TD><P><CODE>barColor</CODE></TD>
     * <TD><P><CODE>null</CODE></TD>
     * <TD><P>bars and text painted with <CODE>barColor</CODE></TD>
     * </TR>
     * <TR>
     * <TD><P><CODE>null</CODE></TD>
     * <TD><P><CODE>textColor</CODE></TD>
     * <TD><P>bars painted with current color<br>text painted with <CODE>textColor</CODE></TD>
     * </TR>
     * <TR>
     * <TD><P><CODE>barColor</CODE></TD>
     * <TD><P><CODE>textColor</CODE></TD>
     * <TD><P>bars painted with <CODE>barColor</CODE><br>text painted with <CODE>textColor</CODE></TD>
     * </TR>
     * </TABLE>
     *
     * @param cb        the <CODE>PdfContentByte</CODE> where the barcode will be placed
     * @param barColor  the color of the bars. It can be <CODE>null</CODE>
     * @param textColor the color of the text. It can be <CODE>null</CODE>
     * @return the dimensions the barcode occupies
     */
    public Rectangle placeBarcode(PdfContentByte cb, Color barColor, Color textColor) {<FILL_FUNCTION_BODY>}

    /**
     * Creates a <CODE>java.awt.Image</CODE>. This image only contains the bars without any text.
     *
     * @param foreground the color of the bars
     * @param background the color of the background
     * @return the image
     */
    public java.awt.Image createAwtImage(Color foreground, Color background) {
        throw new UnsupportedOperationException(
                MessageLocalization.getComposedMessage("the.two.barcodes.must.be.composed.externally"));
    }
}

        if (supp.getFont() != null) {
            supp.setBarHeight(ean.getBarHeight() + supp.getBaseline() - supp.getFont()
                    .getFontDescriptor(BaseFont.CAPHEIGHT, supp.getSize()));
        } else {
            supp.setBarHeight(ean.getBarHeight());
        }
        Rectangle eanR = ean.getBarcodeSize();
        cb.saveState();
        ean.placeBarcode(cb, barColor, textColor);
        cb.restoreState();
        cb.saveState();
        cb.concatCTM(1, 0, 0, 1, eanR.getWidth() + n, eanR.getHeight() - ean.getBarHeight());
        supp.placeBarcode(cb, barColor, textColor);
        cb.restoreState();
        return getBarcodeSize();
    
<methods>public non-sealed void <init>() ,public abstract java.awt.Image createAwtImage(java.awt.Color, java.awt.Color) ,public com.lowagie.text.Image createImageWithBarcode(com.lowagie.text.pdf.PdfContentByte, java.awt.Color, java.awt.Color) ,public com.lowagie.text.pdf.PdfTemplate createTemplateWithBarcode(com.lowagie.text.pdf.PdfContentByte, java.awt.Color, java.awt.Color) ,public java.lang.String getAltText() ,public float getBarHeight() ,public abstract com.lowagie.text.Rectangle getBarcodeSize() ,public float getBaseline() ,public java.lang.String getCode() ,public int getCodeType() ,public com.lowagie.text.pdf.BaseFont getFont() ,public float getInkSpreading() ,public float getN() ,public float getSize() ,public int getTextAlignment() ,public float getX() ,public boolean isChecksumText() ,public boolean isExtended() ,public boolean isGenerateChecksum() ,public boolean isGuardBars() ,public boolean isStartStopText() ,public abstract com.lowagie.text.Rectangle placeBarcode(com.lowagie.text.pdf.PdfContentByte, java.awt.Color, java.awt.Color) ,public void setAltText(java.lang.String) ,public void setBarHeight(float) ,public void setBaseline(float) ,public void setChecksumText(boolean) ,public void setCode(java.lang.String) ,public void setCodeType(int) ,public void setExtended(boolean) ,public void setFont(com.lowagie.text.pdf.BaseFont) ,public void setGenerateChecksum(boolean) ,public void setGuardBars(boolean) ,public void setInkSpreading(float) ,public void setN(float) ,public void setSize(float) ,public void setStartStopText(boolean) ,public void setTextAlignment(int) ,public void setX(float) <variables>public static final int CODABAR,public static final int CODE128,public static final int CODE128_RAW,public static final int CODE128_UCC,public static final int EAN13,public static final int EAN8,public static final int PLANET,public static final int POSTNET,public static final int SUPP2,public static final int SUPP5,public static final int UPCA,public static final int UPCE,protected java.lang.String altText,protected float barHeight,protected float baseline,protected boolean checksumText,protected java.lang.String code,protected int codeType,protected boolean extended,protected com.lowagie.text.pdf.BaseFont font,protected boolean generateChecksum,protected boolean guardBars,protected float inkSpreading,protected float n,protected float size,protected boolean startStopText,protected int textAlignment,protected float x