diff options
Diffstat (limited to 'core/java/android/print/PrintAttributes.java')
-rw-r--r-- | core/java/android/print/PrintAttributes.java | 1253 |
1 files changed, 332 insertions, 921 deletions
diff --git a/core/java/android/print/PrintAttributes.java b/core/java/android/print/PrintAttributes.java index caa10ae..f975ebd 100644 --- a/core/java/android/print/PrintAttributes.java +++ b/core/java/android/print/PrintAttributes.java @@ -18,10 +18,11 @@ package android.print; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; -import android.content.res.Resources; +import android.content.res.Resources.NotFoundException; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; +import android.util.Log; import com.android.internal.R; @@ -29,60 +30,20 @@ import com.android.internal.R; * This class represents the attributes of a print job. */ public final class PrintAttributes implements Parcelable { - /** Duplex mode: No duplexing */ - public static final int DUPLEX_MODE_NONE = 1 << 0; - /** Duplex mode: Turn a page along its long edge, e.g. like a book */ - public static final int DUPLEX_MODE_LONG_EDGE = 1 << 1; - /** Duplex mode: Turn a page along its short edge, e.g. like a notepad */ - public static final int DUPLEX_MODE_SHORT_EDGE = 1 << 2; - - - /** Orientation: Portrait page orientation. */ - public static final int ORIENTATION_PORTRAIT = 1 << 0; - /** Orientation: Landscape page orientation. */ - public static final int ORIENTATION_LANDSCAPE = 1 << 1; - /** Color mode: Monochrome color scheme, e.g. one color is used. */ public static final int COLOR_MODE_MONOCHROME = 1 << 0; /** Color mode: Color color scheme, e.g. many colors are used. */ public static final int COLOR_MODE_COLOR = 1 << 1; - - /** Fitting mode: No fitting. */ - public static final int FITTING_MODE_NONE = 1 << 0; - /** Fitting mode: Scale the content to fit in the page - * without cropping it in any dimension. */ - public static final int FITTING_MODE_SCALE_TO_FIT = 1 << 1; - /** - * Fitting mode: Uniformly scale the content to fill the entire page - * potentially cropping the content if it overflows in one dimension. - */ - public static final int FITTING_MODE_SCALE_TO_FILL = 1 << 2; - - - private static final int VALID_DUPLEX_MODES = - DUPLEX_MODE_NONE | DUPLEX_MODE_LONG_EDGE | DUPLEX_MODE_SHORT_EDGE; - private static final int VALID_COLOR_MODES = COLOR_MODE_MONOCHROME | COLOR_MODE_COLOR; - private static final int VALID_FITTING_MODES = - FITTING_MODE_NONE | FITTING_MODE_SCALE_TO_FIT | FITTING_MODE_SCALE_TO_FILL; - - private static final int VALID_ORIENTATIONS = - ORIENTATION_PORTRAIT | ORIENTATION_LANDSCAPE; - private MediaSize mMediaSize; private Resolution mResolution; private Margins mMargins; - private Tray mInputTray; - private Tray mOutputTray; - private int mDuplexMode; private int mColorMode; - private int mFittingMode; - private int mOrientation; PrintAttributes() { /* hide constructor */ @@ -92,12 +53,7 @@ public final class PrintAttributes implements Parcelable { mMediaSize = (parcel.readInt() == 1) ? MediaSize.createFromParcel(parcel) : null; mResolution = (parcel.readInt() == 1) ? Resolution.createFromParcel(parcel) : null; mMargins = (parcel.readInt() == 1) ? Margins.createFromParcel(parcel) : null; - mInputTray = (parcel.readInt() == 1) ? Tray.createFromParcel(parcel) : null; - mOutputTray = (parcel.readInt() == 1) ? Tray.createFromParcel(parcel) : null; - mDuplexMode = parcel.readInt(); mColorMode = parcel.readInt(); - mFittingMode = parcel.readInt(); - mOrientation = parcel.readInt(); } /** @@ -161,71 +117,6 @@ public final class PrintAttributes implements Parcelable { } /** - * Sets the input tray. - * - * @return The input tray or <code>null</code> if not set. - */ - public Tray getInputTray() { - return mInputTray; - } - - /** - * Gets the input tray. - * - * @param The input tray. - * - * @hide - */ - public void setInputTray(Tray inputTray) { - mInputTray = inputTray; - } - - /** - * Gets the output tray. - * - * @return The output tray or <code>null</code> if not set. - */ - public Tray getOutputTray() { - return mOutputTray; - } - - /** - * Sets the output tray. - * - * @param The output tray. - * - * @hide - */ - public void setOutputTray(Tray outputTray) { - mOutputTray = outputTray; - } - - /** - * Gets the duplex mode. - * - * @return The duplex mode or zero if not set. - * - * @see #DUPLEX_MODE_NONE - * @see #DUPLEX_MODE_SHORT_EDGE - * @see #DUPLEX_MODE_LONG_EDGE - */ - public int getDuplexMode() { - return mDuplexMode; - } - - /** - * Sets the duplex mode. - * - * @param The duplex mode. - * - * @hide - */ - public void setDuplexMode(int duplexMode) { - enforceValidDuplexMode(duplexMode); - mDuplexMode = duplexMode; - } - - /** * Gets the color mode. * * @return The color mode or zero if not set. @@ -252,62 +143,6 @@ public final class PrintAttributes implements Parcelable { mColorMode = colorMode; } - /** - * Gets the fitting mode. - * - * @return The fitting mode or zero if not set. - * - * @see #FITTING_MODE_NONE - * @see #FITTING_MODE_SCALE_TO_FILL - * @see #FITTING_MODE_SCALE_TO_FIT - */ - public int getFittingMode() { - return mFittingMode; - } - - /** - * Sets the fitting mode. - * - * @param The fitting mode. - * - * @see #FITTING_MODE_NONE - * @see #FITTING_MODE_SCALE_TO_FILL - * @see #FITTING_MODE_SCALE_TO_FIT - * - * @hide - */ - public void setFittingMode(int fittingMode) { - enforceValidFittingMode(fittingMode); - mFittingMode = fittingMode; - } - - /** - * Gets the orientation. - * - * @return The orientation or zero if not set. - * - * @see #ORIENTATION_PORTRAIT - * @see #ORIENTATION_LANDSCAPE - */ - public int getOrientation() { - return mOrientation; - } - - /** - * Sets the orientation. - * - * @param The orientation. - * - * @see #ORIENTATION_PORTRAIT - * @see #ORIENTATION_LANDSCAPE - * - * @hide - */ - public void setOrientation(int orientation) { - enforceValidOrientation(orientation); - mOrientation = orientation; - } - @Override public void writeToParcel(Parcel parcel, int flags) { if (mMediaSize != null) { @@ -328,22 +163,7 @@ public final class PrintAttributes implements Parcelable { } else { parcel.writeInt(0); } - if (mInputTray != null) { - parcel.writeInt(1); - mInputTray.writeToParcel(parcel); - } else { - parcel.writeInt(0); - } - if (mOutputTray != null) { - parcel.writeInt(1); - mOutputTray.writeToParcel(parcel); - } else { - parcel.writeInt(0); - } - parcel.writeInt(mDuplexMode); parcel.writeInt(mColorMode); - parcel.writeInt(mFittingMode); - parcel.writeInt(mOrientation); } @Override @@ -356,13 +176,8 @@ public final class PrintAttributes implements Parcelable { final int prime = 31; int result = 1; result = prime * result + mColorMode; - result = prime * result + mDuplexMode; - result = prime * result + mFittingMode; - result = prime * result + mOrientation; - result = prime * result + ((mInputTray == null) ? 0 : mInputTray.hashCode()); result = prime * result + ((mMargins == null) ? 0 : mMargins.hashCode()); result = prime * result + ((mMediaSize == null) ? 0 : mMediaSize.hashCode()); - result = prime * result + ((mOutputTray == null) ? 0 : mOutputTray.hashCode()); result = prime * result + ((mResolution == null) ? 0 : mResolution.hashCode()); return result; } @@ -382,29 +197,6 @@ public final class PrintAttributes implements Parcelable { if (mColorMode != other.mColorMode) { return false; } - if (mDuplexMode != other.mDuplexMode) { - return false; - } - if (mFittingMode != other.mFittingMode) { - return false; - } - if (mOrientation != other.mOrientation) { - return false; - } - if (mInputTray == null) { - if (other.mInputTray != null) { - return false; - } - } else if (!mInputTray.equals(other.mInputTray)) { - return false; - } - if (mOutputTray == null) { - if (other.mOutputTray != null) { - return false; - } - } else if (!mOutputTray.equals(other.mOutputTray)) { - return false; - } if (mMargins == null) { if (other.mMargins != null) { return false; @@ -436,12 +228,7 @@ public final class PrintAttributes implements Parcelable { builder.append("mediaSize: ").append(mMediaSize); builder.append(", resolution: ").append(mResolution); builder.append(", margins: ").append(mMargins); - builder.append(", inputTray: ").append(mInputTray); - builder.append(", outputTray: ").append(mOutputTray); builder.append(", colorMode: ").append(colorModeToString(mColorMode)); - builder.append(", duplexMode: ").append(duplexModeToString(mDuplexMode)); - builder.append(", fittingMode: ").append(fittingModeToString(mFittingMode)); - builder.append(", orientation: ").append(orientationToString(mOrientation)); builder.append("}"); return builder.toString(); } @@ -451,12 +238,7 @@ public final class PrintAttributes implements Parcelable { mMediaSize = null; mResolution = null; mMargins = null; - mInputTray = null; - mOutputTray = null; - mDuplexMode = 0; mColorMode = 0; - mFittingMode = 0; - mOrientation = 0; } /** @@ -466,485 +248,201 @@ public final class PrintAttributes implements Parcelable { mMediaSize = other.mMediaSize; mResolution = other.mResolution; mMargins = other.mMargins; - mInputTray = other.mInputTray; - mOutputTray = other.mOutputTray; - mDuplexMode = other.mDuplexMode; mColorMode = other.mColorMode; - mFittingMode = other.mFittingMode; - mOrientation = other.mOrientation; } /** * This class specifies a supported media size. */ public static final class MediaSize { + private static final String LOG_TAG = "MediaSize"; // TODO: Verify media sizes and add more standard ones. // ISO sizes - /** - * ISO A0 media size: 841mm x 1189mm (33.11" x 46.81") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_A0 = 1; - - /** - * ISO A1 media size: 594mm x 841mm (23.39" x 33.11") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_A1 = 2; - - /** - * - *ISO A2 media size: 420mm x 594mm (16.54" x 23.39") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_A2 = 3; - - /** - * ISO A3 media size: 297mm x 420mm (11.69" x 16.54") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_A3 = 4; - - /** - * ISO A4 media size: 210mm x 297mm (8.27" x 11.69") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_A4 = 5; - - /** - * ISO A5 media size: 148mm x 210mm (5.83" x 8.27") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_A5 = 6; - - /** - * ISO A6 media size: 105mm x 148mm (4.13" x 5.83") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_A6 = 7; - - /** - * ISO A7 media size: 74mm x 105mm (2.91" x 4.13") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_A7 = 8; - - /** - * ISO A8 media size: 52mm x 74mm (2.05" x 2.91") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_A8 = 9; - - /** - * ISO A9 media size: 37mm x 52mm (1.46" x 2.05") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_A9 = 10; - - /** - * ISO A10 media size: 26mm x 37mm (1.02" x 1.46") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_A10 = 11; - - - /** - * ISO B0 media size: 1000mm x 1414mm (39.37" x 55.67") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_B0 = 100; - - /** - * ISO B1 media size: 707mm x 1000mm (27.83" x 39.37") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_B1 = 101; - - /** - * ISO B2 media size: 500mm x 707mm (19.69" x 27.83") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_B2 = 102; - - /** - * ISO B3 media size: 353mm x 500mm (13.90" x 19.69") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_B3 = 103; - - /** - * ISO B4 media size: 250mm x 353mm (9.84" x 13.90") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_B4 = 104; - - /** - * ISO B5 media size: 176mm x 250mm (6.93" x 9.84") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_B5 = 105; - - /** - * ISO B6 media size: 125mm x 176mm (4.92" x 6.93") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_B6 = 106; - - /** - * ISO B7 media size: 88mm x 125mm (3.46" x 4.92") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_B7 = 107; - - /** ISO B8 media size: 62mm x 88mm (2.44" x 3.46") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_B8 = 108; - - /** - * ISO B9 media size: 44mm x 62mm (1.73" x 2.44") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_B9 = 109; - - /** - * ISO B10 media size: 31mm x 44mm (1.22" x 1.73") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_B10 = 110; - - - /** - * ISO C0 media size: 917mm x 1297mm (36.10" x 51.06") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_C0 = 200; - - /** - * ISO C1 media size: 648mm x 917mm (25.51" x 36.10") - * - * @see #createMediaSize(PackageManager, int) - */ - - public static final int ISO_C1 = 201; - /** - * ISO C2 media size: 458mm x 648mm (18.03" x 25.51") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_C2 = 202; - - /** - * ISO C3 media size: 324mm x 458mm (12.76" x 18.03") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_C3 = 203; - - /** - * ISO C4 media size: 229mm x 324mm (9.02" x 12.76") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_C4 = 204; - - /** - * ISO C5 media size: 162mm x 229mm (6.38" x 9.02") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_C5 = 205; - - /** - * ISO C6 media size: 114mm x 162mm (4.49" x 6.38") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_C6 = 206; - - /** - * ISO C7 media size: 81mm x 114mm (3.19" x 4.49") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_C7 = 207; - - /** - * ISO C8 media size: 57mm x 81mm (2.24" x 3.19") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_C8 = 208; - - /** - * ISO C9 media size: 40mm x 57mm (1.57" x 2.24") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_C9 = 209; - - /** - * ISO C10 media size: 28mm x 40mm (1.10" x 1.57") - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int ISO_C10 = 210; - + /** ISO A0 media size: 841mm x 1189mm (33.11" x 46.81") */ + public static final MediaSize ISO_A0 = + new MediaSize("ISO_A0", "android", R.string.mediaSize_iso_a0, 33110, 46810); + /** ISO A1 media size: 594mm x 841mm (23.39" x 33.11") */ + public static final MediaSize ISO_A1 = + new MediaSize("ISO_A1", "android", R.string.mediaSize_iso_a1, 23390, 33110); + /** ISO A2 media size: 420mm x 594mm (16.54" x 23.39") */ + public static final MediaSize ISO_A2 = + new MediaSize("ISO_A2", "android", R.string.mediaSize_iso_a2, 16540, 23390); + /** ISO A3 media size: 297mm x 420mm (11.69" x 16.54") */ + public static final MediaSize ISO_A3 = + new MediaSize("ISO_A3", "android", R.string.mediaSize_iso_a3, 11690, 16540); + /** ISO A4 media size: 210mm x 297mm (8.27" x 11.69") */ + public static final MediaSize ISO_A4 = + new MediaSize("ISO_A4", "android", R.string.mediaSize_iso_a4, 8270, 11690); + /** ISO A5 media size: 148mm x 210mm (5.83" x 8.27") */ + public static final MediaSize ISO_A5 = + new MediaSize("ISO_A5", "android", R.string.mediaSize_iso_a5, 5830, 8270); + /** ISO A6 media size: 105mm x 148mm (4.13" x 5.83") */ + public static final MediaSize ISO_A6 = + new MediaSize("ISO_A6", "android", R.string.mediaSize_iso_a6, 4130, 5830); + /** ISO A7 media size: 74mm x 105mm (2.91" x 4.13") */ + public static final MediaSize ISO_A7 = + new MediaSize("ISO_A7", "android", R.string.mediaSize_iso_a7, 2910, 4130); + /** ISO A8 media size: 52mm x 74mm (2.05" x 2.91") */ + public static final MediaSize ISO_A8 = + new MediaSize("ISO_A8", "android", R.string.mediaSize_iso_a8, 2050, 2910); + /** ISO A9 media size: 37mm x 52mm (1.46" x 2.05") */ + public static final MediaSize ISO_A9 = + new MediaSize("ISO_A9", "android", R.string.mediaSize_iso_a9, 1460, 2050); + /** ISO A10 media size: 26mm x 37mm (1.02" x 1.46") */ + public static final MediaSize ISO_A10 = + new MediaSize("ISO_A10", "android", R.string.mediaSize_iso_a10, 1020, 1460); + + /** ISO B0 media size: 1000mm x 1414mm (39.37" x 55.67") */ + public static final MediaSize ISO_B0 = + new MediaSize("ISO_B0", "android", R.string.mediaSize_iso_b0, 39370, 55670); + /** ISO B1 media size: 707mm x 1000mm (27.83" x 39.37") */ + public static final MediaSize ISO_B1 = + new MediaSize("ISO_B1", "android", R.string.mediaSize_iso_b1, 27830, 39370); + /** ISO B2 media size: 500mm x 707mm (19.69" x 27.83") */ + public static final MediaSize ISO_B2 = + new MediaSize("ISO_B2", "android", R.string.mediaSize_iso_b2, 19690, 27830); + /** ISO B3 media size: 353mm x 500mm (13.90" x 19.69") */ + public static final MediaSize ISO_B3 = + new MediaSize("ISO_B3", "android", R.string.mediaSize_iso_b3, 13900, 19690); + /** ISO B4 media size: 250mm x 353mm (9.84" x 13.90") */ + public static final MediaSize ISO_B4 = + new MediaSize("ISO_B4", "android", R.string.mediaSize_iso_b4, 9840, 13900); + /** ISO B5 media size: 176mm x 250mm (6.93" x 9.84") */ + public static final MediaSize ISO_B5 = + new MediaSize("ISO_B5", "android", R.string.mediaSize_iso_b5, 6930, 9840); + /** ISO B6 media size: 125mm x 176mm (4.92" x 6.93") */ + public static final MediaSize ISO_B6 = + new MediaSize("ISO_B6", "android", R.string.mediaSize_iso_b6, 4920, 6930); + /** ISO B7 media size: 88mm x 125mm (3.46" x 4.92") */ + public static final MediaSize ISO_B7 = + new MediaSize("ISO_B7", "android", R.string.mediaSize_iso_b7, 3460, 4920); + /** ISO B8 media size: 62mm x 88mm (2.44" x 3.46") */ + public static final MediaSize ISO_B8 = + new MediaSize("ISO_B8", "android", R.string.mediaSize_iso_b8, 2440, 3460); + /** ISO B9 media size: 44mm x 62mm (1.73" x 2.44") */ + public static final MediaSize ISO_B9 = + new MediaSize("ISO_B9", "android", R.string.mediaSize_iso_b9, 1730, 2440); + /** ISO B10 media size: 31mm x 44mm (1.22" x 1.73") */ + public static final MediaSize ISO_B10 = + new MediaSize("ISO_B10", "android", R.string.mediaSize_iso_b10, 1220, 1730); + + /** ISO C0 media size: 917mm x 1297mm (36.10" x 51.06") */ + public static final MediaSize ISO_C0 = + new MediaSize("ISO_C0", "android", R.string.mediaSize_iso_c0, 36100, 51060); + /** ISO C1 media size: 648mm x 917mm (25.51" x 36.10") */ + public static final MediaSize ISO_C1 = + new MediaSize("ISO_C1", "android", R.string.mediaSize_iso_c1, 25510, 36100); + /** ISO C2 media size: 458mm x 648mm (18.03" x 25.51") */ + public static final MediaSize ISO_C2 = + new MediaSize("ISO_C2", "android", R.string.mediaSize_iso_c2, 18030, 25510); + /** ISO C3 media size: 324mm x 458mm (12.76" x 18.03") */ + public static final MediaSize ISO_C3 = + new MediaSize("ISO_C3", "android", R.string.mediaSize_iso_c3, 12760, 18030); + /** ISO C4 media size: 229mm x 324mm (9.02" x 12.76") */ + public static final MediaSize ISO_C4 = + new MediaSize("ISO_C4", "android", R.string.mediaSize_iso_c4, 9020, 12760); + /** ISO C5 media size: 162mm x 229mm (6.38" x 9.02") */ + public static final MediaSize ISO_C5 = + new MediaSize("ISO_C5", "android", R.string.mediaSize_iso_c5, 6380, 9020); + /** ISO C6 media size: 114mm x 162mm (4.49" x 6.38") */ + public static final MediaSize ISO_C6 = + new MediaSize("ISO_C6", "android", R.string.mediaSize_iso_c6, 4490, 6380); + /** ISO C7 media size: 81mm x 114mm (3.19" x 4.49") */ + public static final MediaSize ISO_C7 = + new MediaSize("ISO_C7", "android", R.string.mediaSize_iso_c7, 3190, 4490); + /** ISO C8 media size: 57mm x 81mm (2.24" x 3.19") */ + public static final MediaSize ISO_C8 = + new MediaSize("ISO_C8", "android", R.string.mediaSize_iso_c8, 2240, 3190); + /** ISO C9 media size: 40mm x 57mm (1.57" x 2.24") */ + public static final MediaSize ISO_C9 = + new MediaSize("ISO_C9", "android", R.string.mediaSize_iso_c9, 1570, 2240); + /** ISO C10 media size: 28mm x 40mm (1.10" x 1.57") */ + public static final MediaSize ISO_C10 = + new MediaSize("ISO_C10", "android", R.string.mediaSize_iso_c10, 1100, 1570); // North America - /** - * North America Letter media size: 8.5" x 11" - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int NA_LETTER = 300; - - /** - * North America Government-Letter media size: 8.0" x 10.5" - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int NA_GOVT_LETTER = 301; - - /** - * North America Legal media size: 8.5" x 14" - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int NA_LEGAL = 302; + /** North America Letter media size: 8.5" x 11" */ + public static final MediaSize NA_LETTER = + new MediaSize("NA_LETTER", "android", R.string.mediaSize_na_letter, 8500, 11000); + /** North America Government-Letter media size: 8.0" x 10.5" */ + public static final MediaSize NA_GOVT_LETTER = + new MediaSize("NA_GOVT_LETTER", "android", + R.string.mediaSize_na_gvrnmt_letter, 8000, 10500); + /** North America Legal media size: 8.5" x 14" */ + public static final MediaSize NA_LEGAL = + new MediaSize("NA_LEGAL", "android", R.string.mediaSize_na_legal, 8500, 14000); + /** North America Junior Legal media size: 8.0" x 5.0" */ + public static final MediaSize NA_JUNIOR_LEGAL = + new MediaSize("NA_JUNIOR_LEGAL", "android", + R.string.mediaSize_na_junior_legal, 8000, 5000); + /** North America Ledger media size: 17" x 11" */ + public static final MediaSize NA_LEDGER = + new MediaSize("NA_LEDGER", "android", R.string.mediaSize_na_ledger, 17000, 11000); + /** North America Tabloid media size: 11" x 17" */ + public static final MediaSize NA_TBLOID = + new MediaSize("NA_TABLOID", "android", + R.string.mediaSize_na_tabloid, 11000, 17000); - /** - * North America Junior Legal media size: 8.0" x 5.0" - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int NA_JUNIOR_LEGAL = 303; - - /** - * North America Ledger media size: 17" x 11" - * - * @see #createMediaSize(PackageManager, int) - */ - public static final int NA_LEDGER = 304; + private final String mId; + /**@hide */ + public final String mLabel; + /**@hide */ + public final String mPackageName; + /**@hide */ + public final int mLabelResId; + private final int mWidthMils; + private final int mHeightMils; /** - * North America Tabloid media size: 11" x 17" + * Creates a new instance. This is the preferred constructor since + * it enables the media size label to be shown in a localized fashion + * on a locale change. * - * @see #createMediaSize(PackageManager, int) - */ - public static final int NA_TBLOID = 305; - - /** - * Creates a standard media size with a localized label. + * @param id The unique media size id. + * @param packageName The name of the creating package. + * @param labelResId The resource if of a human readable label. + * @param widthMils The width in mils (thousands of an inch). + * @param heightMils The height in mils (thousands of an inch). * - * @param pm Package manager used to load the label. - * @param mediaSize Media size constant. - * @return A {@link MediaSize} instance with a localized label. + * @throws IllegalArgumentException If the id is empty. + * @throws IllegalArgumentException If the label is empty. + * @throws IllegalArgumentException If the widthMils is less than or equal to zero. + * @throws IllegalArgumentException If the heightMils is less than or equal to zero. */ - public static MediaSize createMediaSize(PackageManager pm, int mediaSize) { - final Resources resources; - try { - resources = pm.getResourcesForApplication("android"); - } catch (NameNotFoundException nnfe) { - return null; + public MediaSize(String id, String packageName, int labelResId, + int widthMils, int heightMils) { + if (TextUtils.isEmpty(id)) { + throw new IllegalArgumentException("id cannot be empty."); } - switch (mediaSize) { - case ISO_A0: { - return new MediaSize("ISO_A0", resources - .getString(R.string.mediaSize_iso_a0), 33110, 46810); - } - case ISO_A1: { - return new MediaSize("ISO_A1", resources - .getString(R.string.mediaSize_iso_a1), 23390, 33110); - } - case ISO_A2: { - return new MediaSize("ISO_A2", resources - .getString(R.string.mediaSize_iso_a2), 16540, 23390); - } - case ISO_A3: { - return new MediaSize("ISO_A3", resources - .getString(R.string.mediaSize_iso_a3), 11690, 16540); - } - case ISO_A4: { - return new MediaSize("ISO_A4", resources - .getString(R.string.mediaSize_iso_a4), 8270, 11690); - } - case ISO_A5: { - return new MediaSize("ISO_A5", resources - .getString(R.string.mediaSize_iso_a5), 5830, 8270); - } - case ISO_A6: { - return new MediaSize("ISO_A6", resources - .getString(R.string.mediaSize_iso_a6), 4130, 5830); - } - case ISO_A7: { - return new MediaSize("ISO_A7", resources - .getString(R.string.mediaSize_iso_a7), 2910, 4130); - } - case ISO_A8: { - return new MediaSize("ISO_A8", resources - .getString(R.string.mediaSize_iso_a8), 2050, 2910); - } - case ISO_A9: { - return new MediaSize("ISO_A9", resources - .getString(R.string.mediaSize_iso_a9), 1460, 2050); - } - case ISO_A10: { - return new MediaSize("ISO_A10", resources - .getString(R.string.mediaSize_iso_a10), 1020, 1460); - } - case ISO_B0: { - return new MediaSize("ISO_B0", resources - .getString(R.string.mediaSize_iso_b0), 39370, 55670); - } - case ISO_B1: { - return new MediaSize("ISO_B1", resources - .getString(R.string.mediaSize_iso_b1), 27830, 39370); - } - case ISO_B2: { - return new MediaSize("ISO_B2", resources - .getString(R.string.mediaSize_iso_b2), 19690, 27830); - } - case ISO_B3: { - return new MediaSize("ISO_B3", resources - .getString(R.string.mediaSize_iso_b3), 13900, 19690); - } - case ISO_B4: { - return new MediaSize("ISO_B4", resources - .getString(R.string.mediaSize_iso_b4), 9840, 13900); - } - case ISO_B5: { - return new MediaSize("ISO_B5", resources - .getString(R.string.mediaSize_iso_b5), 6930, 9840); - } - case ISO_B6: { - return new MediaSize("ISO_B6", resources - .getString(R.string.mediaSize_iso_b6), 4920, 6930); - } - case ISO_B7: { - return new MediaSize("ISO_B7", resources - .getString(R.string.mediaSize_iso_b7), 3460, 4920); - } - case ISO_B8: { - return new MediaSize("ISO_B8", resources - .getString(R.string.mediaSize_iso_b8), 2440, 3460); - } - case ISO_B9: { - return new MediaSize("ISO_B9", resources - .getString(R.string.mediaSize_iso_b9), 1730, 2440); - } - case ISO_B10: { - return new MediaSize("ISO_B10", resources - .getString(R.string.mediaSize_iso_b10), 1220, 1730); - } - case ISO_C0: { - return new MediaSize("ISO_C0", resources - .getString(R.string.mediaSize_iso_c0), 36100, 51060); - } - case ISO_C1: { - return new MediaSize("ISO_C1", resources - .getString(R.string.mediaSize_iso_c1), 25510, 36100); - } - case ISO_C2: { - return new MediaSize("ISO_C2", resources - .getString(R.string.mediaSize_iso_c2), 18030, 25510); - } - case ISO_C3: { - return new MediaSize("ISO_C3", resources - .getString(R.string.mediaSize_iso_c3), 12760, 18030); - } - case ISO_C4: { - return new MediaSize("ISO_C4", resources - .getString(R.string.mediaSize_iso_c4), 9020, 12760); - } - case ISO_C5: { - return new MediaSize("ISO_C5", resources - .getString(R.string.mediaSize_iso_c5), 6380, 9020); - } - case ISO_C6: { - return new MediaSize("ISO_C6", resources - .getString(R.string.mediaSize_iso_c6), 4490, 6380); - } - case ISO_C7: { - return new MediaSize("ISO_C7", resources - .getString(R.string.mediaSize_iso_c7), 3190, 4490); - } - case ISO_C8: { - return new MediaSize("ISO_C8", resources - .getString(R.string.mediaSize_iso_c8), 2240, 3190); - } - case ISO_C9: { - return new MediaSize("ISO_C9", resources - .getString(R.string.mediaSize_iso_c9), 1570, 2240); - } - case ISO_C10: { - return new MediaSize("ISO_C10", resources - .getString(R.string.mediaSize_iso_c10), 1100, 1570); - } - case NA_LETTER: { - return new MediaSize("NA_LETTER", resources - .getString(R.string.mediaSize_na_letter), 8500, 11000); - } - case NA_GOVT_LETTER: { - return new MediaSize("NA_GOVT_LETTER", resources - .getString(R.string.mediaSize_na_gvrnmt_letter), 8000, 10500); - } - case NA_LEGAL: { - return new MediaSize("NA_LEGAL", resources - .getString(R.string.mediaSize_na_legal), 8500, 14000); - } - case NA_JUNIOR_LEGAL: { - return new MediaSize("NA_JUNIOR_LEGAL", resources - .getString(R.string.mediaSize_na_junior_legal), 8000, 5000); - } - case NA_LEDGER: { - return new MediaSize("NA_LEDGER", resources - .getString(R.string.mediaSize_na_ledger), 17000, 11000); - } - case NA_TBLOID: { - return new MediaSize("NA_TABLOID", resources - .getString(R.string.mediaSize_na_tabloid), 11000, 17000); - } - default: { - throw new IllegalArgumentException("Unknown media size."); - } + if (TextUtils.isEmpty(packageName)) { + throw new IllegalArgumentException("packageName cannot be empty."); + } + if (labelResId <= 0) { + throw new IllegalArgumentException("labelResId must be greater than zero."); } + if (widthMils <= 0) { + throw new IllegalArgumentException("widthMils " + + "cannot be less than or equal to zero."); + } + if (heightMils <= 0) { + throw new IllegalArgumentException("heightMils " + + "cannot be less than or euqual to zero."); + } + mPackageName = packageName; + mId = id; + mLabelResId = labelResId; + mWidthMils = widthMils; + mHeightMils = heightMils; + mLabel = null; } - private final String mId; - private final String mLabel; - private final int mWidthMils; - private final int mHeightMils; - /** - * Creates a new instance. + * Creates a new instance. You should use this constructor as a fallback + * in cases when you do not have a localized string for the label. * * @param id The unique media size id. * @param label The <strong>internationalized</strong> human readable label. @@ -975,6 +473,19 @@ public final class PrintAttributes implements Parcelable { mLabel = label; mWidthMils = widthMils; mHeightMils = heightMils; + mLabelResId = 0; + mPackageName = null; + } + + /** @hide */ + public MediaSize(String id, String label, String packageName, + int widthMils, int heightMils, int labelResId) { + mPackageName = packageName; + mId = id; + mLabelResId = labelResId; + mWidthMils = widthMils; + mHeightMils = heightMils; + mLabel = label; } /** @@ -989,9 +500,22 @@ public final class PrintAttributes implements Parcelable { /** * Gets the human readable media size label. * + * @param packageManager The package manager for loading the label. * @return The human readable label. */ - public String getLabel() { + public String getLabel(PackageManager packageManager) { + if (!TextUtils.isEmpty(mPackageName) && mLabelResId > 0) { + try { + return packageManager.getResourcesForApplication( + mPackageName).getString(mLabelResId); + } catch (NotFoundException nfe) { + Log.w(LOG_TAG, "Could not load resouce" + mLabelResId + + " from package " + mPackageName); + } catch (NameNotFoundException nnfee) { + Log.w(LOG_TAG, "Could not load resouce" + mLabelResId + + " from package " + mPackageName); + } + } return mLabel; } @@ -1013,17 +537,62 @@ public final class PrintAttributes implements Parcelable { return mHeightMils; } + /** + * Gets whether this media size is in portrait which is the + * height is greater or equal to the width. + * + * @return True if the media size is in portrait, false if + * it is in landscape. + */ + public boolean isPortrait() { + return mHeightMils >= mWidthMils; + } + + /** + * Returns a new media size in a portrait orientation + * which is the height is the lesser dimension. + * + * @return New instance in landscape orientation. + */ + public MediaSize asPortrait() { + if (!TextUtils.isEmpty(mPackageName) && mLabelResId > 0) { + return new MediaSize(mId, mPackageName, mLabelResId, + Math.min(mWidthMils, mHeightMils), + Math.max(mWidthMils, mHeightMils)); + } else { + return new MediaSize(mId, mLabel, + Math.min(mWidthMils, mHeightMils), + Math.max(mWidthMils, mHeightMils)); + } + } + + /** + * Returns a new media size in a landscape orientation + * which is the height is the greater dimension. + * + * @return New instance in landscape orientation. + */ + public MediaSize asLandscape() { + return new MediaSize(mId, mLabel, + Math.max(mWidthMils, mHeightMils), + Math.min(mWidthMils, mHeightMils)); + } + void writeToParcel(Parcel parcel) { parcel.writeString(mId); parcel.writeString(mLabel); + parcel.writeString(mPackageName); parcel.writeInt(mWidthMils); parcel.writeInt(mHeightMils); + parcel.writeInt(mLabelResId); } static MediaSize createFromParcel(Parcel parcel) { return new MediaSize( parcel.readString(), parcel.readString(), + parcel.readString(), + parcel.readInt(), parcel.readInt(), parcel.readInt()); } @@ -1033,7 +602,6 @@ public final class PrintAttributes implements Parcelable { final int prime = 31; int result = 1; result = prime * result + ((mId == null) ? 0 : mId.hashCode()); - result = prime * result + ((mLabel == null) ? 0 : mLabel.hashCode()); result = prime * result + mWidthMils; result = prime * result + mHeightMils; return result; @@ -1054,9 +622,6 @@ public final class PrintAttributes implements Parcelable { if (!TextUtils.equals(mId, other.mId)) { return false; } - if (!TextUtils.equals(mLabel, other.mLabel)) { - return false; - } if (mWidthMils != other.mWidthMils) { return false; } @@ -1072,8 +637,10 @@ public final class PrintAttributes implements Parcelable { builder.append("MediaSize{"); builder.append("id: ").append(mId); builder.append(", label: ").append(mLabel); + builder.append(", packageName: ").append(mPackageName); builder.append(", heightMils: ").append(mHeightMils); builder.append(", widthMils: ").append(mWidthMils); + builder.append(", labelResId: ").append(mLabelResId); builder.append("}"); return builder.toString(); } @@ -1083,13 +650,64 @@ public final class PrintAttributes implements Parcelable { * This class specifies a supported resolution in dpi (dots per inch). */ public static final class Resolution { + private static final String LOG_TAG = "Resolution"; + private final String mId; - private final String mLabel; + /**@hide */ + public final String mLabel; + /**@hide */ + public final String mPackageName; + /**@hide */ + public final int mLabelResId; private final int mHorizontalDpi; private final int mVerticalDpi; /** - * Creates a new instance. + * Creates a new instance. This is the preferred constructor since + * it enables the resolution label to be shown in a localized fashion + * on a locale change. + * + * @param id The unique resolution id. + * @param packageName The name of the creating package. + * @param labelResId The resource id of a human readable label. + * @param horizontalDpi The horizontal resolution in dpi. + * @param verticalDpi The vertical resolution in dpi. + * + * @throws IllegalArgumentException If the id is empty. + * @throws IllegalArgumentException If the label is empty. + * @throws IllegalArgumentException If the horizontalDpi is less than or equal to zero. + * @throws IllegalArgumentException If the verticalDpi is less than or equal to zero. + */ + public Resolution(String id, String packageName, int labelResId, + int horizontalDpi, int verticalDpi) { + if (TextUtils.isEmpty(id)) { + throw new IllegalArgumentException("id cannot be empty."); + } + if (TextUtils.isEmpty(packageName)) { + throw new IllegalArgumentException("packageName cannot be empty."); + } + if (labelResId <= 0) { + throw new IllegalArgumentException("labelResId must be greater than zero."); + } + if (horizontalDpi <= 0) { + throw new IllegalArgumentException("horizontalDpi " + + "cannot be less than or equal to zero."); + } + if (verticalDpi <= 0) { + throw new IllegalArgumentException("verticalDpi" + + " cannot be less than or equal to zero."); + } + mId = id; + mPackageName = packageName; + mLabelResId = labelResId; + mHorizontalDpi = horizontalDpi; + mVerticalDpi = verticalDpi; + mLabel = null; + } + + /** + * Creates a new instance. You should use this constructor as a fallback + * in cases when you do not have a localized string for the label. * * @param id The unique resolution id. * @param label The <strong>internationalized</strong> human readable label. @@ -1120,6 +738,19 @@ public final class PrintAttributes implements Parcelable { mLabel = label; mHorizontalDpi = horizontalDpi; mVerticalDpi = verticalDpi; + mPackageName = null; + mLabelResId = 0; + } + + /** @hide */ + public Resolution(String id, String label, String packageName, + int horizontalDpi, int verticalDpi, int labelResId) { + mId = id; + mPackageName = packageName; + mLabelResId = labelResId; + mHorizontalDpi = horizontalDpi; + mVerticalDpi = verticalDpi; + mLabel = label; } /** @@ -1134,14 +765,27 @@ public final class PrintAttributes implements Parcelable { /** * Gets the resolution human readable label. * + * @param packageManager The package manager for loading the label. * @return The human readable label. */ - public String getLabel() { + public String getLabel(PackageManager packageManager) { + if (!TextUtils.isEmpty(mPackageName) && mLabelResId > 0) { + try { + return packageManager.getResourcesForApplication( + mPackageName).getString(mLabelResId); + } catch (NotFoundException nfe) { + Log.w(LOG_TAG, "Could not load resouce" + mLabelResId + + " from package " + mPackageName); + } catch (NameNotFoundException nnfee) { + Log.w(LOG_TAG, "Could not load resouce" + mLabelResId + + " from package " + mPackageName); + } + } return mLabel; } /** - * Gets the horizontal resolution in dpi. + * Gets the vertical resolution in dpi. * * @return The horizontal resolution. */ @@ -1161,14 +805,18 @@ public final class PrintAttributes implements Parcelable { void writeToParcel(Parcel parcel) { parcel.writeString(mId); parcel.writeString(mLabel); + parcel.writeString(mPackageName); parcel.writeInt(mHorizontalDpi); parcel.writeInt(mVerticalDpi); + parcel.writeInt(mLabelResId); } static Resolution createFromParcel(Parcel parcel) { return new Resolution( parcel.readString(), parcel.readString(), + parcel.readString(), + parcel.readInt(), parcel.readInt(), parcel.readInt()); } @@ -1178,7 +826,6 @@ public final class PrintAttributes implements Parcelable { final int prime = 31; int result = 1; result = prime * result + ((mId == null) ? 0 : mId.hashCode()); - result = prime * result + ((mLabel == null) ? 0 : mLabel.hashCode()); result = prime * result + mHorizontalDpi; result = prime * result + mVerticalDpi; return result; @@ -1199,9 +846,6 @@ public final class PrintAttributes implements Parcelable { if (!TextUtils.equals(mId, other.mId)) { return false; } - if (!TextUtils.equals(mLabel, other.mLabel)) { - return false; - } if (mHorizontalDpi != other.mHorizontalDpi) { return false; } @@ -1217,8 +861,10 @@ public final class PrintAttributes implements Parcelable { builder.append("Resolution{"); builder.append("id: ").append(mId); builder.append(", label: ").append(mLabel); + builder.append(", packageName: ").append(mPackageName); builder.append(", horizontalDpi: ").append(mHorizontalDpi); builder.append(", verticalDpi: ").append(mVerticalDpi); + builder.append(", labelResId: ").append(mLabelResId); builder.append("}"); return builder.toString(); } @@ -1358,120 +1004,6 @@ public final class PrintAttributes implements Parcelable { } } - /** - * Represents a printer tray. - */ - public static final class Tray { - private final String mId; - private final String mLabel; - - /** - * Creates a new instance. - * - * @param id The unique tray id. - * @param label The <strong>internationalized</strong> human readable label. - * - * @throws IllegalArgumentException If the id is empty. - * @throws IllegalArgumentException If the label is empty. - */ - public Tray(String id, String label) { - if (TextUtils.isEmpty(id)) { - throw new IllegalArgumentException("id cannot be empty."); - } - if (TextUtils.isEmpty(label)) { - throw new IllegalArgumentException("label cannot be empty."); - } - mId = id; - mLabel = label; - } - - /** - * Gets the unique tray id. - * - * @return The unique tray id. - */ - public String getId() { - return mId; - } - - /** - * Gets the tray human readable label. - * - * @return The human readable label. - */ - public String getLabel() { - return mLabel; - } - - void writeToParcel(Parcel parcel) { - parcel.writeString(mId); - parcel.writeString(mLabel); - } - - static Tray createFromParcel(Parcel parcel) { - return new Tray( - parcel.readString(), - parcel.readString()); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((mId == null) ? 0 : mId.hashCode()); - result = prime * result + ((mLabel == null) ? 0 : mLabel.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - Tray other = (Tray) obj; - if (!TextUtils.equals(mId, other.mId)) { - return false; - } - if (!TextUtils.equals(mLabel, other.mLabel)) { - return false; - } - return true; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("Tray{"); - builder.append("id: ").append(mId); - builder.append("id: ").append(mId); - builder.append(", label: ").append(mLabel); - builder.append("}"); - return builder.toString(); - } - } - - static String duplexModeToString(int duplexMode) { - switch (duplexMode) { - case DUPLEX_MODE_NONE: { - return "DUPLEX_MODE_NONE"; - } - case DUPLEX_MODE_LONG_EDGE: { - return "DUPLEX_MODE_LONG_EDGE"; - } - case DUPLEX_MODE_SHORT_EDGE: { - return "DUPLEX_MODE_SHORT_EDGE"; - } - default: - return "DUPLEX_MODE_UNKNOWN"; - } - } - static String colorModeToString(int colorMode) { switch (colorMode) { case COLOR_MODE_MONOCHROME: { @@ -1485,59 +1017,12 @@ public final class PrintAttributes implements Parcelable { } } - static String orientationToString(int orientation) { - switch (orientation) { - case ORIENTATION_PORTRAIT: { - return "ORIENTATION_PORTRAIT"; - } - case ORIENTATION_LANDSCAPE: { - return "ORIENTATION_LANDSCAPE"; - } - default: - return "ORIENTATION_UNKNOWN"; - } - } - - static String fittingModeToString(int fittingMode) { - switch (fittingMode) { - case FITTING_MODE_NONE: { - return "FITTING_MODE_NONE"; - } - case FITTING_MODE_SCALE_TO_FIT: { - return "FITTING_MODE_SCALE_TO_FIT"; - } - case FITTING_MODE_SCALE_TO_FILL: { - return "FITTING_MODE_SCALE_TO_FILL"; - } - default: - return "FITTING_MODE_UNKNOWN"; - } - } - - static void enforceValidDuplexMode(int duplexMode) { - if ((duplexMode & VALID_DUPLEX_MODES) == 0 && Integer.bitCount(duplexMode) == 1) { - throw new IllegalArgumentException("invalid duplex mode: " + duplexMode); - } - } - static void enforceValidColorMode(int colorMode) { if ((colorMode & VALID_COLOR_MODES) == 0 && Integer.bitCount(colorMode) == 1) { throw new IllegalArgumentException("invalid color mode: " + colorMode); } } - static void enforceValidFittingMode(int fittingMode) { - if ((fittingMode & VALID_FITTING_MODES) == 0 && Integer.bitCount(fittingMode) == 1) { - throw new IllegalArgumentException("invalid fitting mode: " + fittingMode); - } - } - - static void enforceValidOrientation(int orientation) { - if ((orientation & VALID_ORIENTATIONS) == 0 && Integer.bitCount(orientation) == 1) { - throw new IllegalArgumentException("invalid orientation: " + orientation); - } - } - /** * Builder for creating {@link PrintAttributes}. */ @@ -1578,46 +1063,6 @@ public final class PrintAttributes implements Parcelable { } /** - * Sets the input tray. - * - * @param inputTray The tray. - * @return This builder. - */ - public Builder setInputTray(Tray inputTray) { - mAttributes.setInputTray(inputTray); - return this; - } - - /** - * Sets the output tray. - * - * @param outputTray The tray. - * @return This builder. - */ - public Builder setOutputTray(Tray outputTray) { - mAttributes.setOutputTray(outputTray); - return this; - } - - /** - * Sets the duplex mode. - * - * @param duplexMode A valid duplex mode or zero. - * @return This builder. - * - * @see PrintAttributes#DUPLEX_MODE_NONE - * @see PrintAttributes#DUPLEX_MODE_SHORT_EDGE - * @see PrintAttributes#DUPLEX_MODE_LONG_EDGE - */ - public Builder setDuplexMode(int duplexMode) { - if (Integer.bitCount(duplexMode) > 1) { - throw new IllegalArgumentException("can specify at most one duplexMode bit."); - } - mAttributes.setDuplexMode(duplexMode); - return this; - } - - /** * Sets the color mode. * * @param colorMode A valid color mode or zero. @@ -1635,40 +1080,6 @@ public final class PrintAttributes implements Parcelable { } /** - * Sets the fitting mode. - * - * @param fittingMode A valid fitting mode or zero. - * @return This builder. - * - * @see PrintAttributes#FITTING_MODE_NONE - * @see PrintAttributes#FITTING_MODE_FIT_TO_PAGE - */ - public Builder setFittingMode(int fittingMode) { - if (Integer.bitCount(fittingMode) > 1) { - throw new IllegalArgumentException("can specify at most one fittingMode bit."); - } - mAttributes.setFittingMode(fittingMode); - return this; - } - - /** - * Sets the orientation. - * - * @param orientation A valid orientation or zero. - * @return This builder. - * - * @see PrintAttributes#ORIENTATION_PORTRAIT - * @see PrintAttributes#ORIENTATION_LANDSCAPE - */ - public Builder setOrientation(int orientation) { - if (Integer.bitCount(orientation) > 1) { - throw new IllegalArgumentException("can specify at most one orientation bit."); - } - mAttributes.setOrientation(orientation); - return this; - } - - /** * Creates a new {@link PrintAttributes} instance. * * @return The new instance. |