PrintDocumentInfo.java revision aec1417ca9eb63209668ac17da90cf8a07c6076c
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; 63a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 64a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 65a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Creates a new instance. 66a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 67a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov private PrintDocumentInfo() { 68aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /* do nothing */ 69a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 70a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 71a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 72a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Creates a new instance. 73a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 74a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @param Prototype from which to clone. 75a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 76a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov private PrintDocumentInfo(PrintDocumentInfo prototype) { 77798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov mName = prototype.mName; 78a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mPageCount = prototype.mPageCount; 79a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mContentType = prototype.mContentType; 80aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mOrientation = prototype.mOrientation; 81aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mFittingMode = prototype.mFittingMode; 82aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mColorMode = prototype.mColorMode; 83aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mMargins = prototype.mMargins; 84aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mMediaSize = prototype.mMediaSize; 85a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 86a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 87a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 88a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Creates a new instance. 89a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 90a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @param parcel Data from which to initialize. 91a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 92a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov private PrintDocumentInfo(Parcel parcel) { 93798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov mName = parcel.readString(); 94a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mPageCount = parcel.readInt(); 95a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mContentType = parcel.readInt(); 96aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mOrientation = parcel.readInt(); 97aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mFittingMode = parcel.readInt(); 98aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mColorMode = parcel.readInt(); 99aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mMargins = Margins.createFromParcel(parcel); 100aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mMediaSize = MediaSize.createFromParcel(parcel); 101a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 102a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 103a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 104798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * Gets the document name. 105798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * 106798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * @return The document name. 107798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov */ 108798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov public String getName() { 109798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov return mName; 110798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 111798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov 112798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov /** 113a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Gets the total number of pages. 114a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 115a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @return The number of pages. 116a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 117a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #PAGE_COUNT_UNKNOWN 118a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 119a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public int getPageCount() { 120a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return mPageCount; 121a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 122a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 123a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 124a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Gets the content type. 125a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 126a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @return The content type. 127a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 128a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_UNKNOWN 129a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_DOCUMENT 130a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_PHOTO 131a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 132a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public int getContentType() { 133a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return mContentType; 134a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 135a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 136aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 137aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Gets the document orientation. 138aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 139aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @return The orientation. 140aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 141aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#ORIENTATION_PORTRAIT PrintAttributes.ORIENTATION_PORTRAIT 142aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#ORIENTATION_LANDSCAPE PrintAttributes.ORIENTATION_LANDSCAPE 143aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 144aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public int getOrientation() { 145aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return mOrientation; 146aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 147aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 148aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 149aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Gets the document fitting mode. 150aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 151aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @return The fitting mode. 152aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 153aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#FITTING_MODE_NONE PrintAttributes.FITTING_MODE_NONE 154aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#FITTING_MODE_SCALE_TO_FILL PrintAttributes.FITTING_MODE_SCALE_TO_FILL 155aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#FITTING_MODE_SCALE_TO_FIT PrintAttributes.FITTING_MODE_SCALE_TO_FIT 156aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 157aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public int getFittingMode() { 158aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return mFittingMode; 159aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 160aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 161aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 162aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Gets document color mode. 163aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 164aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @return The color mode. 165aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 166aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#COLOR_MODE_COLOR PrintAttributes.COLOR_MODE_COLOR 167aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#COLOR_MODE_MONOCHROME PrintAttributes.COLOR_MODE_MONOCHROME 168aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 169aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public int getColorMode() { 170aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return mColorMode; 171aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 172aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 173aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 174aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Gets the document margins. 175aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 176aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @return The margins. 177aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 178aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public Margins getMargins() { 179aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return mMargins; 180aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 181aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 182aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 183aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Gets the media size. 184aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 185aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @return The media size. 186aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 187aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public MediaSize getMediaSize() { 188aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return mMediaSize; 189aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 190aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 191a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov @Override 192a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public int describeContents() { 193a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return 0; 194a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 195a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 196a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov @Override 197a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public void writeToParcel(Parcel parcel, int flags) { 198798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov parcel.writeString(mName); 199a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov parcel.writeInt(mPageCount); 200a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov parcel.writeInt(mContentType); 201aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov parcel.writeInt(mOrientation); 202aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov parcel.writeInt(mFittingMode); 203aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov parcel.writeInt(mColorMode); 204aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mMargins.writeToParcel(parcel); 205aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mMediaSize.writeToParcel(parcel); 206a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 207a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 20888d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov @Override 20985b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov public int hashCode() { 21085b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov final int prime = 31; 21185b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov int result = 1; 212798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov result = prime * result + ((mName != null) ? mName.hashCode() : 0); 21385b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov result = prime * result + mContentType; 21485b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov result = prime * result + mPageCount; 215aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov result = prime * result + mOrientation; 216aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov result = prime * result + mFittingMode; 217aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov result = prime * result + mColorMode; 218aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov result = prime * result + (mMargins != null ? mMargins.hashCode() : 0); 219aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov result = prime * result + (mMediaSize != null ? mMediaSize.hashCode() : 0); 22085b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov return result; 22185b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 22285b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov 22385b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov @Override 22485b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov public boolean equals(Object obj) { 22585b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov if (this == obj) { 22685b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov return true; 22785b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 22885b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov if (obj == null) { 22985b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov return false; 23085b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 23185b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov if (getClass() != obj.getClass()) { 23285b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov return false; 23385b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 23485b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov PrintDocumentInfo other = (PrintDocumentInfo) obj; 235798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov if (!TextUtils.equals(mName, other.mName)) { 236798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov return false; 237798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 23885b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov if (mContentType != other.mContentType) { 23985b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov return false; 24085b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 24185b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov if (mPageCount != other.mPageCount) { 24285b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov return false; 24385b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 244aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (mOrientation != other.mOrientation) { 245aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return false; 246aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 247aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (mFittingMode != other.mFittingMode) { 248aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return false; 249aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 250aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (mColorMode != other.mColorMode) { 251aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return false; 252aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 253aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (mMargins == null) { 254aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (other.mMargins != null) { 255aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return false; 256aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 257aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } else if (!mMargins.equals(other.mMargins)) { 258aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return false; 259aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 260aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (mMediaSize == null) { 261aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (other.mMediaSize != null) { 262aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return false; 263aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 264aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } else if (!mMediaSize.equals(other.mMediaSize)) { 265aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return false; 266aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 26785b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov return true; 26885b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 26985b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov 27085b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov @Override 27188d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov public String toString() { 27288d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov StringBuilder builder = new StringBuilder(); 27388d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov builder.append("PrintDocumentInfo{"); 274798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov builder.append("name=").append(mName); 275798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov builder.append(", pageCount=").append(mPageCount); 276798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov builder.append(", contentType=").append(contentTyepToString(mContentType)); 277aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov builder.append(", orientation=").append(PrintAttributes.orientationToString(mOrientation)); 278aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov builder.append(", fittingMode=").append(PrintAttributes.fittingModeToString(mFittingMode)); 279aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov builder.append(", colorMode=").append(PrintAttributes.colorModeToString(mColorMode)); 280aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov builder.append(", margins=").append(mMargins); 281aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov builder.append(", mediaSize=").append(mMediaSize); 28288d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov builder.append("}"); 28388d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov return builder.toString(); 28488d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov } 28588d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov 286798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov private String contentTyepToString(int contentType) { 287798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov switch (contentType) { 288798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov case CONTENT_TYPE_DOCUMENT: { 289798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov return "CONTENT_TYPE_DOCUMENT"; 290798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 291798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov case CONTENT_TYPE_PHOTO: { 292798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov return "CONTENT_TYPE_PHOTO"; 293798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 294798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov default: { 295798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov return "CONTENT_TYPE_UNKNOWN"; 296798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 297798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 298798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 299798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov 300a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 301a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Builder for creating an {@link PrintDocumentInfo}. 302a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 303a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public static final class Builder { 304798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov private final PrintDocumentInfo mPrototype; 305798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov 306798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov /** 307798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * Constructor. 308aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 309aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * The values of the relevant properties are initialized from the 310aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * provided print attributes. For example, the orientation is set 311aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * to be the same as the orientation returned by calling {@link 312aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * PrintAttributes#getOrientation() PrintAttributes.getOrientation()}. 313aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 314798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * 315798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * @param name The document name. Cannot be empty. 316aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @param attributes Print attributes. Cannot be null. 317798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * 318798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * @throws IllegalArgumentException If the name is empty. 319798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov */ 320aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public Builder(String name, PrintAttributes attributes) { 321aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (TextUtils.isEmpty(name)) { 322aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov throw new IllegalArgumentException("name cannot be empty"); 323aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 324aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (attributes == null) { 325aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov throw new IllegalArgumentException("attributes cannot be null"); 326aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 327aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype = new PrintDocumentInfo(); 328aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mName = name; 329aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mOrientation = attributes.getOrientation(); 330aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mFittingMode = attributes.getFittingMode(); 331aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mColorMode = attributes.getColorMode(); 332aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mMargins = attributes.getMargins(); 333aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mMediaSize = attributes.getMediaSize(); 334aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 335aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 336aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 337aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Constructor. 338aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 339aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * The values of the relevant properties are initialized with default 340aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * values. Please refer to the documentation of the individual setters 341aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * for information about the default values. 342aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 343aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 344aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @param name The document name. Cannot be empty. 345aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 346798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov public Builder(String name) { 347798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov if (TextUtils.isEmpty(name)) { 348798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov throw new IllegalArgumentException("name cannot be empty"); 349798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 350798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov mPrototype = new PrintDocumentInfo(); 351798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov mPrototype.mName = name; 352aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mOrientation = PrintAttributes.ORIENTATION_PORTRAIT; 353aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mFittingMode = PrintAttributes.FITTING_MODE_NONE; 354aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mColorMode = PrintAttributes.COLOR_MODE_COLOR; 355aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mMargins = Margins.NO_MARGINS; 356aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mMediaSize = MEDIA_SIZE_UNKNOWN; 357798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 358a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 359a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 360a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Sets the total number of pages. 361aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 362aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <strong>Default: </strong> {@link #PAGE_COUNT_UNKNOWN} 363aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 364a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 365a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @param pageCount The number of pages. Must be greater than 366a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * or equal to zero or {@link PrintDocumentInfo#PAGE_COUNT_UNKNOWN}. 367a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 368a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public Builder setPageCount(int pageCount) { 369a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov if (pageCount < 0 && pageCount != PAGE_COUNT_UNKNOWN) { 370a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov throw new IllegalArgumentException("pageCount" 371a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov + " must be greater than or euqal to zero or" 372a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov + " DocumentInfo#PAGE_COUNT_UNKNOWN"); 373a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 374a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mPrototype.mPageCount = pageCount; 375a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return this; 376a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 377a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 378a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 379a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Sets the content type. 380aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 381aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <strong>Default: </strong> {@link #CONTENT_TYPE_UNKNOWN} 382aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 383a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 384a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @param type The content type. 385a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 386a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_UNKNOWN 387a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_DOCUMENT 388a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_PHOTO 389a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 390a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public Builder setContentType(int type) { 391a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mPrototype.mContentType = type; 392a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return this; 393a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 394a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 395a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 396aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Sets the orientation. 397aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 398aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <strong>Default: </strong> {@link PrintAttributes#ORIENTATION_PORTRAIT 399aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * PrintAttributes.ORIENTATION_PORTRAIT} 400aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 401aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 402aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @param orientation The orientation. 403aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 404aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#ORIENTATION_PORTRAIT PrintAttributes.ORIENTATION_PORTRAIT 405aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#ORIENTATION_LANDSCAPE PrintAttributes.ORIENTATION_LANDSCAPE 406aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 407aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public Builder setOrientation(int orientation) { 408aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov PrintAttributes.enforceValidOrientation(orientation); 409aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mOrientation = orientation; 410aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return this; 411aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 412aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 413aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 414aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Sets the content fitting mode. 415aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 416aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <strong>Default: </strong> {@link PrintAttributes#FITTING_MODE_NONE 417aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * PrintAttributes.FITTING_MODE_NONE} 418aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 419aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 420aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @param fittingMode The fitting mode. 421aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 422aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#FITTING_MODE_NONE PrintAttributes.FITTING_MODE_NONE 423aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#FITTING_MODE_SCALE_TO_FILL PrintAttributes.FITTING_MODE_SCALE_TO_FILL 424aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#FITTING_MODE_SCALE_TO_FIT PrintAttributes.FITTING_MODE_SCALE_TO_FIT 425aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 426aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public Builder setFittingMode(int fittingMode) { 427aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov PrintAttributes.enforceValidFittingMode(fittingMode); 428aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mFittingMode = fittingMode; 429aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return this; 430aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 431aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 432aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 433aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Sets the content color mode. 434aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 435aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <strong>Default: </strong> {@link PrintAttributes#COLOR_MODE_COLOR 436aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * PrintAttributes.COLOR_MODE_COLOR} 437aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 438aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 439aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @param colorMode The color mode. 440aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 441aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#COLOR_MODE_COLOR PrintAttributes.COLOR_MODE_COLOR 442aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see PrintAttributes#COLOR_MODE_MONOCHROME PrintAttributes.COLOR_MODE_MONOCHROME 443aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 444aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public Builder setColorMode(int colorMode) { 445aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov PrintAttributes.enforceValidColorMode(colorMode); 446aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mColorMode = colorMode; 447aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return this; 448aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 449aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 450aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 451aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Sets the document margins. 452aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 453aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <strong>Default: </strong> {@link PrintAttributes.Margins#NO_MARGINS Margins.NO_MARGINS} 454aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 455aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 456aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @param margins The margins. Cannot be null. 457aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 458aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public Builder setMargins(Margins margins) { 459aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (margins == null) { 460aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov throw new IllegalArgumentException("margins cannot be null"); 461aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 462aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mMargins = margins; 463aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return this; 464aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 465aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 466aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 467aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * Sets the document media size. 468aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <p> 469aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * <strong>Default: </strong>#MEDIA_SIZE_UNKNOWN 470aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * </p> 471aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 472aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @param mediaSize The media size. Cannot be null. 473aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * 474aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov * @see #MEDIA_SIZE_UNKNOWN 475aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov */ 476aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov public Builder setMediaSize(MediaSize mediaSize) { 477aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov if (mediaSize == null) { 478aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov throw new IllegalArgumentException("media size cannot be null"); 479aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 480aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov mPrototype.mMediaSize = mediaSize; 481aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov return this; 482aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov } 483aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov 484aec1417ca9eb63209668ac17da90cf8a07c6076cSvetoslav Ganov /** 485a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Creates a new {@link PrintDocumentInfo} instance. 486a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 487a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @return The new instance. 488a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 489a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public PrintDocumentInfo create() { 490a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return new PrintDocumentInfo(mPrototype); 491a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 492a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 493a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 494a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public static final Parcelable.Creator<PrintDocumentInfo> CREATOR = 495a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov new Creator<PrintDocumentInfo>() { 496a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov @Override 497a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public PrintDocumentInfo createFromParcel(Parcel parcel) { 498a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return new PrintDocumentInfo(parcel); 499a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 500a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 501a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov @Override 502a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public PrintDocumentInfo[] newArray(int size) { 503a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return new PrintDocumentInfo[size]; 504a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 505a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov }; 506a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov} 507