Search in sources :

Example 1 with CustomMediaTray

use of sun.print.CustomMediaTray in project jdk8u_jdk by JetBrains.

the class CUPSPrinter method initMedia.

/**
     * Initialize media by translating PPD info to PrintService attributes.
     */
private synchronized void initMedia() {
    if (initialized) {
        return;
    } else {
        initialized = true;
    }
    if (pageSizes == null) {
        return;
    }
    cupsMediaPrintables = new MediaPrintableArea[nPageSizes];
    cupsMediaSNames = new MediaSizeName[nPageSizes];
    cupsCustomMediaSNames = new CustomMediaSizeName[nPageSizes];
    CustomMediaSizeName msn;
    MediaPrintableArea mpa;
    float length, width, x, y, w, h;
    // initialize names and printables
    for (int i = 0; i < nPageSizes; i++) {
        // media width and length
        width = (float) (pageSizes[i * 6] / PRINTER_DPI);
        length = (float) (pageSizes[i * 6 + 1] / PRINTER_DPI);
        // media printable area
        x = (float) (pageSizes[i * 6 + 2] / PRINTER_DPI);
        h = (float) (pageSizes[i * 6 + 3] / PRINTER_DPI);
        w = (float) (pageSizes[i * 6 + 4] / PRINTER_DPI);
        y = (float) (pageSizes[i * 6 + 5] / PRINTER_DPI);
        msn = new CustomMediaSizeName(media[i * 2], media[i * 2 + 1], width, length);
        // add to list of standard MediaSizeNames
        if ((cupsMediaSNames[i] = msn.getStandardMedia()) == null) {
            // add custom if no matching standard media
            cupsMediaSNames[i] = msn;
            // add this new custom msn to MediaSize array
            if ((width > 0.0) && (length > 0.0)) {
                try {
                    new MediaSize(width, length, Size2DSyntax.INCH, msn);
                } catch (IllegalArgumentException e) {
                    /* PDF printer in Linux for Ledger paper causes
                        "IllegalArgumentException: X dimension > Y dimension".
                        We rotate based on IPP spec. */
                    new MediaSize(length, width, Size2DSyntax.INCH, msn);
                }
            }
        }
        // add to list of custom MediaSizeName
        // for internal use of IPPPrintService
        cupsCustomMediaSNames[i] = msn;
        mpa = null;
        try {
            mpa = new MediaPrintableArea(x, y, w, h, MediaPrintableArea.INCH);
        } catch (IllegalArgumentException e) {
            if (width > 0 && length > 0) {
                mpa = new MediaPrintableArea(0, 0, width, length, MediaPrintableArea.INCH);
            }
        }
        cupsMediaPrintables[i] = mpa;
    }
    // initialize trays
    cupsMediaTrays = new MediaTray[nTrays];
    MediaTray mt;
    for (int i = 0; i < nTrays; i++) {
        mt = new CustomMediaTray(media[(nPageSizes + i) * 2], media[(nPageSizes + i) * 2 + 1]);
        cupsMediaTrays[i] = mt;
    }
}
Also used : MediaPrintableArea(javax.print.attribute.standard.MediaPrintableArea) MediaSize(javax.print.attribute.standard.MediaSize) CustomMediaTray(sun.print.CustomMediaTray) MediaTray(javax.print.attribute.standard.MediaTray) CustomMediaTray(sun.print.CustomMediaTray) CustomMediaSizeName(sun.print.CustomMediaSizeName)

Aggregations

MediaPrintableArea (javax.print.attribute.standard.MediaPrintableArea)1 MediaSize (javax.print.attribute.standard.MediaSize)1 MediaTray (javax.print.attribute.standard.MediaTray)1 CustomMediaSizeName (sun.print.CustomMediaSizeName)1 CustomMediaTray (sun.print.CustomMediaTray)1