PrintDocumentInfo.java revision d26d4898fcc9b78f4b66118895c375384098205e
1a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov/* 2a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Copyright (C) 2013 The Android Open Source Project 3a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 4a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Licensed under the Apache License, Version 2.0 (the "License"); 5a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * you may not use this file except in compliance with the License. 6a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * You may obtain a copy of the License at 7a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 8a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * http://www.apache.org/licenses/LICENSE-2.0 9a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 10a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Unless required by applicable law or agreed to in writing, software 11a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * distributed under the License is distributed on an "AS IS" BASIS, 12a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * See the License for the specific language governing permissions and 14a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * limitations under the License. 15a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 16a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 17a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganovpackage android.print; 18a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 19a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganovimport android.os.Parcel; 20a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganovimport android.os.Parcelable; 21aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganovimport android.print.PrintAttributes.Margins; 22aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganovimport android.print.PrintAttributes.MediaSize; 23798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganovimport android.text.TextUtils; 24a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 25a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov/** 26a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * This class encapsulates information about a printed document. 27a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 28a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganovpublic final class PrintDocumentInfo implements Parcelable { 29a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 30a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 31aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Constant for an unknown media size. 32aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 33aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public static final MediaSize MEDIA_SIZE_UNKNOWN = new MediaSize("Unknown", "Unknown", 1, 1); 34aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 35aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 36aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Constant for unknown page count.. 37a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 38a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public static final int PAGE_COUNT_UNKNOWN = -1; 39a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 40a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 41aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Content type: unknown. 42a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 43a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public static final int CONTENT_TYPE_UNKNOWN = -1; 44a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 45a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 46a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Content type: document. 47a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 48a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public static final int CONTENT_TYPE_DOCUMENT = 0; 49a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 50a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 51a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Content type: photo. 52a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 53a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public static final int CONTENT_TYPE_PHOTO = 1; 54a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 55798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov private String mName; 56a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov private int mPageCount; 57a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov private int mContentType; 58aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov private int mOrientation; 59aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov private int mFittingMode; 60aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov private int mColorMode; 61aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov private Margins mMargins; 62aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov private MediaSize mMediaSize; 63d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov private long mDataSize; 64a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 65a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 66a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Creates a new instance. 67a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 68a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov private PrintDocumentInfo() { 69aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /* do nothing */ 70a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 71a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 72a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 73a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Creates a new instance. 74a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 75a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @param Prototype from which to clone. 76a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 77a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov private PrintDocumentInfo(PrintDocumentInfo prototype) { 78798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov mName = prototype.mName; 79a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mPageCount = prototype.mPageCount; 80a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mContentType = prototype.mContentType; 81aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mOrientation = prototype.mOrientation; 82aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mFittingMode = prototype.mFittingMode; 83aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mColorMode = prototype.mColorMode; 84aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mMargins = prototype.mMargins; 85aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mMediaSize = prototype.mMediaSize; 86d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov mDataSize = prototype.mDataSize; 87a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 88a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 89a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 90a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Creates a new instance. 91a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 92a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @param parcel Data from which to initialize. 93a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 94a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov private PrintDocumentInfo(Parcel parcel) { 95798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov mName = parcel.readString(); 96a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mPageCount = parcel.readInt(); 97a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mContentType = parcel.readInt(); 98aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mOrientation = parcel.readInt(); 99aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mFittingMode = parcel.readInt(); 100aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mColorMode = parcel.readInt(); 101aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mMargins = Margins.createFromParcel(parcel); 102aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mMediaSize = MediaSize.createFromParcel(parcel); 103d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov mDataSize = parcel.readLong(); 104a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 105a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 106a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 107798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * Gets the document name. 108798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * 109798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * @return The document name. 110798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov */ 111798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov public String getName() { 112798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov return mName; 113798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 114798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov 115798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov /** 116a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Gets the total number of pages. 117a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 118a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @return The number of pages. 119a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 120a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #PAGE_COUNT_UNKNOWN 121a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 122a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public int getPageCount() { 123a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return mPageCount; 124a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 125a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 126a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 127a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Gets the content type. 128a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 129a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @return The content type. 130a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 131a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_UNKNOWN 132a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_DOCUMENT 133a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_PHOTO 134a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 135a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public int getContentType() { 136a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return mContentType; 137a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 138a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 139aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 140aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Gets the document orientation. 141aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 142aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @return The orientation. 143aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 144aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#ORIENTATION_PORTRAIT PrintAttributes.ORIENTATION_PORTRAIT 145aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#ORIENTATION_LANDSCAPE PrintAttributes.ORIENTATION_LANDSCAPE 146aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 147aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public int getOrientation() { 148aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return mOrientation; 149aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 150aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 151aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 152aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Gets the document fitting mode. 153aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 154aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @return The fitting mode. 155aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 156aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#FITTING_MODE_NONE PrintAttributes.FITTING_MODE_NONE 157aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#FITTING_MODE_SCALE_TO_FILL PrintAttributes.FITTING_MODE_SCALE_TO_FILL 158aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#FITTING_MODE_SCALE_TO_FIT PrintAttributes.FITTING_MODE_SCALE_TO_FIT 159aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 160aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public int getFittingMode() { 161aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return mFittingMode; 162aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 163aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 164aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 165aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Gets document color mode. 166aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 167aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @return The color mode. 168aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 169aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#COLOR_MODE_COLOR PrintAttributes.COLOR_MODE_COLOR 170aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#COLOR_MODE_MONOCHROME PrintAttributes.COLOR_MODE_MONOCHROME 171aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 172aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public int getColorMode() { 173aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return mColorMode; 174aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 175aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 176aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 177aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Gets the document margins. 178aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 179aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @return The margins. 180aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 181aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public Margins getMargins() { 182aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return mMargins; 183aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 184aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 185aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 186aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Gets the media size. 187aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 188aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @return The media size. 189aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 190aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public MediaSize getMediaSize() { 191aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return mMediaSize; 192aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 193aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 194d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov /** 195d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * Gets the document data size in bytes. 196d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * 197d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * @return The data size. 198d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov */ 199d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov public long getDataSize() { 200d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov return mDataSize; 201d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov } 202d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov 203d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov /** 204d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * Sets the document data size in bytes. 205d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * 206d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * @param dataSize The data size. 207d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * 208d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * @hide 209d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov */ 210d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov public void setDataSize(long dataSize) { 211d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov mDataSize = dataSize; 212d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov } 213d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov 214a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov @Override 215a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public int describeContents() { 216a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return 0; 217a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 218a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 219a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov @Override 220a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public void writeToParcel(Parcel parcel, int flags) { 221798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov parcel.writeString(mName); 222a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov parcel.writeInt(mPageCount); 223a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov parcel.writeInt(mContentType); 224aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov parcel.writeInt(mOrientation); 225aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov parcel.writeInt(mFittingMode); 226aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov parcel.writeInt(mColorMode); 227aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mMargins.writeToParcel(parcel); 228aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mMediaSize.writeToParcel(parcel); 229d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov parcel.writeLong(mDataSize); 230a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 231a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 23288d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov @Override 23385b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov public int hashCode() { 23485b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov final int prime = 31; 23585b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov int result = 1; 236798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov result = prime * result + ((mName != null) ? mName.hashCode() : 0); 23785b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov result = prime * result + mContentType; 23885b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov result = prime * result + mPageCount; 239aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov result = prime * result + mOrientation; 240aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov result = prime * result + mFittingMode; 241aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov result = prime * result + mColorMode; 242aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov result = prime * result + (mMargins != null ? mMargins.hashCode() : 0); 243aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov result = prime * result + (mMediaSize != null ? mMediaSize.hashCode() : 0); 244d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov result = prime * result + (int) mDataSize; 245d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov result = prime * result + (int) mDataSize >> 32; 24685b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov return result; 24785b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 24885b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov 24985b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov @Override 25085b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov public boolean equals(Object obj) { 25185b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov if (this == obj) { 25285b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov return true; 25385b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 25485b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov if (obj == null) { 25585b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov return false; 25685b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 25785b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov if (getClass() != obj.getClass()) { 25885b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov return false; 25985b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 26085b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov PrintDocumentInfo other = (PrintDocumentInfo) obj; 261798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov if (!TextUtils.equals(mName, other.mName)) { 262798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov return false; 263798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 26485b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov if (mContentType != other.mContentType) { 26585b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov return false; 26685b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 26785b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov if (mPageCount != other.mPageCount) { 26885b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov return false; 26985b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 270aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (mOrientation != other.mOrientation) { 271aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return false; 272aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 273aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (mFittingMode != other.mFittingMode) { 274aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return false; 275aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 276aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (mColorMode != other.mColorMode) { 277aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return false; 278aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 279aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (mMargins == null) { 280aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (other.mMargins != null) { 281aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return false; 282aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 283aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } else if (!mMargins.equals(other.mMargins)) { 284aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return false; 285aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 286aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (mMediaSize == null) { 287aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (other.mMediaSize != null) { 288aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return false; 289aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 290aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } else if (!mMediaSize.equals(other.mMediaSize)) { 291aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return false; 292aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 293d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov if (mDataSize != other.mDataSize) { 294d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov return false; 295d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov } 29685b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov return true; 29785b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 29885b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov 29985b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov @Override 30088d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov public String toString() { 30188d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov StringBuilder builder = new StringBuilder(); 30288d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov builder.append("PrintDocumentInfo{"); 303798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov builder.append("name=").append(mName); 304798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov builder.append(", pageCount=").append(mPageCount); 305798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov builder.append(", contentType=").append(contentTyepToString(mContentType)); 306aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov builder.append(", orientation=").append(PrintAttributes.orientationToString(mOrientation)); 307aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov builder.append(", fittingMode=").append(PrintAttributes.fittingModeToString(mFittingMode)); 308aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov builder.append(", colorMode=").append(PrintAttributes.colorModeToString(mColorMode)); 309aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov builder.append(", margins=").append(mMargins); 310aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov builder.append(", mediaSize=").append(mMediaSize); 311d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov builder.append(", size=").append(mDataSize); 31288d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov builder.append("}"); 31388d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov return builder.toString(); 31488d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov } 31588d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov 316798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov private String contentTyepToString(int contentType) { 317798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov switch (contentType) { 318798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov case CONTENT_TYPE_DOCUMENT: { 319798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov return "CONTENT_TYPE_DOCUMENT"; 320798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 321798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov case CONTENT_TYPE_PHOTO: { 322798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov return "CONTENT_TYPE_PHOTO"; 323798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 324798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov default: { 325798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov return "CONTENT_TYPE_UNKNOWN"; 326798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 327798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 328798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 329798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov 330a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 331a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Builder for creating an {@link PrintDocumentInfo}. 332a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 333a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public static final class Builder { 334798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov private final PrintDocumentInfo mPrototype; 335798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov 336798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov /** 337798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * Constructor. 338aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 339aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * The values of the relevant properties are initialized from the 340aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * provided print attributes. For example, the orientation is set 341aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * to be the same as the orientation returned by calling {@link 342aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * PrintAttributes#getOrientation() PrintAttributes.getOrientation()}. 343aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 344798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * 345798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * @param name The document name. Cannot be empty. 346aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @param attributes Print attributes. Cannot be null. 347798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * 348798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * @throws IllegalArgumentException If the name is empty. 349798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov */ 350aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public Builder(String name, PrintAttributes attributes) { 351aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (TextUtils.isEmpty(name)) { 352aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov throw new IllegalArgumentException("name cannot be empty"); 353aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 354aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (attributes == null) { 355aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov throw new IllegalArgumentException("attributes cannot be null"); 356aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 357aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype = new PrintDocumentInfo(); 358aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mName = name; 359aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mOrientation = attributes.getOrientation(); 360aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mFittingMode = attributes.getFittingMode(); 361aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mColorMode = attributes.getColorMode(); 362aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mMargins = attributes.getMargins(); 363aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mMediaSize = attributes.getMediaSize(); 364aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 365aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 366aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 367aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Constructor. 368aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 369aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * The values of the relevant properties are initialized with default 370aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * values. Please refer to the documentation of the individual setters 371aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * for information about the default values. 372aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 373aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 374aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @param name The document name. Cannot be empty. 375aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 376798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov public Builder(String name) { 377798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov if (TextUtils.isEmpty(name)) { 378798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov throw new IllegalArgumentException("name cannot be empty"); 379798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 380798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov mPrototype = new PrintDocumentInfo(); 381798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov mPrototype.mName = name; 382aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mOrientation = PrintAttributes.ORIENTATION_PORTRAIT; 383aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mFittingMode = PrintAttributes.FITTING_MODE_NONE; 384aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mColorMode = PrintAttributes.COLOR_MODE_COLOR; 385aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mMargins = Margins.NO_MARGINS; 386aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mMediaSize = MEDIA_SIZE_UNKNOWN; 387798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 388a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 389a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 390a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Sets the total number of pages. 391aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 392aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <strong>Default: </strong> {@link #PAGE_COUNT_UNKNOWN} 393aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 394a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 395a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @param pageCount The number of pages. Must be greater than 396a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * or equal to zero or {@link PrintDocumentInfo#PAGE_COUNT_UNKNOWN}. 397a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 398a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public Builder setPageCount(int pageCount) { 399a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov if (pageCount < 0 && pageCount != PAGE_COUNT_UNKNOWN) { 400a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov throw new IllegalArgumentException("pageCount" 401a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov + " must be greater than or euqal to zero or" 402a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov + " DocumentInfo#PAGE_COUNT_UNKNOWN"); 403a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 404a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mPrototype.mPageCount = pageCount; 405a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return this; 406a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 407a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 408a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 409a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Sets the content type. 410aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 411aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <strong>Default: </strong> {@link #CONTENT_TYPE_UNKNOWN} 412aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 413a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 414a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @param type The content type. 415a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 416a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_UNKNOWN 417a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_DOCUMENT 418a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_PHOTO 419a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 420a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public Builder setContentType(int type) { 421a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mPrototype.mContentType = type; 422a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return this; 423a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 424a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 425a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 426aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Sets the orientation. 427aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 428aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <strong>Default: </strong> {@link PrintAttributes#ORIENTATION_PORTRAIT 429aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * PrintAttributes.ORIENTATION_PORTRAIT} 430aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 431aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 432aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @param orientation The orientation. 433aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 434aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#ORIENTATION_PORTRAIT PrintAttributes.ORIENTATION_PORTRAIT 435aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#ORIENTATION_LANDSCAPE PrintAttributes.ORIENTATION_LANDSCAPE 436aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 437aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public Builder setOrientation(int orientation) { 438aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov PrintAttributes.enforceValidOrientation(orientation); 439aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mOrientation = orientation; 440aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return this; 441aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 442aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 443aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 444aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Sets the content fitting mode. 445aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 446aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <strong>Default: </strong> {@link PrintAttributes#FITTING_MODE_NONE 447aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * PrintAttributes.FITTING_MODE_NONE} 448aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 449aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 450aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @param fittingMode The fitting mode. 451aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 452aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#FITTING_MODE_NONE PrintAttributes.FITTING_MODE_NONE 453aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#FITTING_MODE_SCALE_TO_FILL PrintAttributes.FITTING_MODE_SCALE_TO_FILL 454aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#FITTING_MODE_SCALE_TO_FIT PrintAttributes.FITTING_MODE_SCALE_TO_FIT 455aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 456aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public Builder setFittingMode(int fittingMode) { 457aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov PrintAttributes.enforceValidFittingMode(fittingMode); 458aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mFittingMode = fittingMode; 459aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return this; 460aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 461aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 462aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 463aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Sets the content color mode. 464aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 465aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <strong>Default: </strong> {@link PrintAttributes#COLOR_MODE_COLOR 466aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * PrintAttributes.COLOR_MODE_COLOR} 467aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 468aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 469aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @param colorMode The color mode. 470aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 471aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#COLOR_MODE_COLOR PrintAttributes.COLOR_MODE_COLOR 472aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#COLOR_MODE_MONOCHROME PrintAttributes.COLOR_MODE_MONOCHROME 473aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 474aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public Builder setColorMode(int colorMode) { 475aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov PrintAttributes.enforceValidColorMode(colorMode); 476aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mColorMode = colorMode; 477aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return this; 478aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 479aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 480aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 481aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Sets the document margins. 482aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 483aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <strong>Default: </strong> {@link PrintAttributes.Margins#NO_MARGINS Margins.NO_MARGINS} 484aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 485aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 486aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @param margins The margins. Cannot be null. 487aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 488aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public Builder setMargins(Margins margins) { 489aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (margins == null) { 490aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov throw new IllegalArgumentException("margins cannot be null"); 491aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 492aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mMargins = margins; 493aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return this; 494aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 495aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 496aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 497aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Sets the document media size. 498aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 499aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <strong>Default: </strong>#MEDIA_SIZE_UNKNOWN 500aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 501aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 502aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @param mediaSize The media size. Cannot be null. 503aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 504aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see #MEDIA_SIZE_UNKNOWN 505aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 506aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public Builder setMediaSize(MediaSize mediaSize) { 507aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (mediaSize == null) { 508aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov throw new IllegalArgumentException("media size cannot be null"); 509aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 510aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mMediaSize = mediaSize; 511aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return this; 512aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 513aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 514aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 515a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Creates a new {@link PrintDocumentInfo} instance. 516a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 517a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @return The new instance. 518a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 519a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public PrintDocumentInfo create() { 520a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return new PrintDocumentInfo(mPrototype); 521a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 522a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 523a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 524a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public static final Parcelable.Creator<PrintDocumentInfo> CREATOR = 525a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov new Creator<PrintDocumentInfo>() { 526a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov @Override 527a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public PrintDocumentInfo createFromParcel(Parcel parcel) { 528a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return new PrintDocumentInfo(parcel); 529a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 530a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 531a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov @Override 532a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public PrintDocumentInfo[] newArray(int size) { 533a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return new PrintDocumentInfo[size]; 534a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 535a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov }; 536a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov} 537