use of sun.print.CustomMediaSizeName 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;
}
}
Aggregations