1 /* 2 * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 package javax.print.attribute.standard; 26 27 import javax.print.attribute.Attribute; 28 import javax.print.attribute.IntegerSyntax; 29 import javax.print.attribute.DocAttribute; 30 import javax.print.attribute.PrintRequestAttribute; 31 import javax.print.attribute.PrintJobAttribute; 32 33 /** 34 * Class NumberUp is an integer valued printing attribute class that specifies 35 * the number of print-stream pages to impose upon a single side of an 36 * instance of a selected medium. That is, if the NumberUp value is <I>n,</I> 37 * the printer must place <I>n</I> print-stream pages on a single side of 38 * an instance of the 39 * selected medium. To accomplish this, the printer may add some sort of 40 * translation, scaling, or rotation. This attribute primarily controls the 41 * translation, scaling and rotation of print-stream pages. 42 * <P> 43 * The effect of a NumberUp attribute on a multidoc print job (a job with 44 * multiple documents) depends on whether all the docs have the same number up 45 * values specified or whether different docs have different number up values 46 * specified, and on the (perhaps defaulted) value of the {@link 47 * MultipleDocumentHandling MultipleDocumentHandling} attribute. 48 * <UL> 49 * <LI> 50 * If all the docs have the same number up value <I>n</I> specified, then any 51 * value of {@link MultipleDocumentHandling MultipleDocumentHandling} makes 52 * sense, and the printer's processing depends on the {@link 53 * MultipleDocumentHandling MultipleDocumentHandling} value: 54 * <UL> 55 * <LI> 56 * SINGLE_DOCUMENT -- All the input docs will be combined together into one 57 * output document. Each media impression will consist of <I>n</I>m 58 * print-stream pages from the output document. 59 * 60 * <LI> 61 * SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together 62 * into one output document. Each media impression will consist of <I>n</I> 63 * print-stream pages from the output document. However, the first impression of 64 * each input doc will always start on a new media sheet; this means the last 65 * impression of an input doc may have fewer than <I>n</I> print-stream pages 66 * on it. 67 * 68 * <LI> 69 * SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The input docs will remain separate. 70 * Each media impression will consist of <I>n</I> print-stream pages from the 71 * input doc. Since the input docs are separate, the first impression of each 72 * input doc will always start on a new media sheet; this means the last 73 * impression of an input doc may have fewer than <I>n</I> print-stream pages on 74 * it. 75 * 76 * <LI> 77 * SEPARATE_DOCUMENTS_COLLATED_COPIES -- The input docs will remain separate. 78 * Each media impression will consist of <I>n</I> print-stream pages from the 79 * input doc. Since the input docs are separate, the first impression of each 80 * input doc will always start on a new media sheet; this means the last 81 * impression of an input doc may have fewer than <I>n</I> print-stream pages 82 * on it. 83 * </UL> 84 * <UL> 85 * <LI> 86 * SINGLE_DOCUMENT -- All the input docs will be combined together into one 87 * output document. Each media impression will consist of <I>n<SUB>i</SUB></I> 88 * print-stream pages from the output document, where <I>i</I> is the number of 89 * the input doc corresponding to that point in the output document. When the 90 * next input doc has a different number up value from the previous input doc, 91 * the first print-stream page of the next input doc goes at the start of the 92 * next media impression, possibly leaving fewer than the full number of 93 * print-stream pages on the previous media impression. 94 * 95 * <LI> 96 * SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together 97 * into one output document. Each media impression will consist of <I>n</I> 98 * print-stream pages from the output document. However, the first impression of 99 * each input doc will always start on a new media sheet; this means the last 100 * impression of an input doc may have fewer than <I>n</I> print-stream pages 101 * on it. 102 * 103 * <LI> 104 * SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The input docs will remain separate. 105 * For input doc <I>i,</I> each media impression will consist of 106 * <I>n<SUB>i</SUB></I> print-stream pages from the input doc. Since the input 107 * docs are separate, the first impression of each input doc will always start 108 * on a new media sheet; this means the last impression of an input doc may have 109 * fewer than <I>n<SUB>i</SUB></I> print-stream pages on it. 110 * 111 * <LI> 112 * SEPARATE_DOCUMENTS_COLLATED_COPIES -- The input docs will remain separate. 113 * For input doc <I>i,</I> each media impression will consist of 114 * <I>n<SUB>i</SUB></I> print-stream pages from the input doc. Since the input 115 * docs are separate, the first impression of each input doc will always start 116 * on a new media sheet; this means the last impression of an input doc may 117 * have fewer than <I>n<SUB>i</SUB></I> print-stream pages on it. 118 * </UL> 119 * </UL> 120 * <B>IPP Compatibility:</B> The integer value gives the IPP integer value. 121 * The category name returned by {@code getName()} gives the IPP 122 * attribute name. 123 * 124 * @author Alan Kaminsky 125 */ 126 public final class NumberUp extends IntegerSyntax 127 implements DocAttribute, PrintRequestAttribute, PrintJobAttribute { 128 129 private static final long serialVersionUID = -3040436486786527811L; 130 131 132 /** 133 * Construct a new number up attribute with the given integer value. 134 * 135 * @param value Integer value. 136 * 137 * @exception IllegalArgumentException 138 * (Unchecked exception) Thrown if {@code value} is less than 1. 139 */ 140 public NumberUp(int value) { 141 super (value, 1, Integer.MAX_VALUE); 142 } 143 144 /** 145 * Returns whether this number up attribute is equivalent to the passed in 146 * object. To be equivalent, all of the following conditions must be true: 147 * <OL TYPE=1> 148 * <LI> 149 * {@code object} is not null. 150 * <LI> 151 * {@code object} is an instance of class NumberUp. 152 * <LI> 153 * This number up attribute's value and {@code object}'s value are 154 * equal. 155 * </OL> 156 * 157 * @param object Object to compare to. 158 * 159 * @return True if {@code object} is equivalent to this number up 160 * attribute, false otherwise. 161 */ 162 public boolean equals(Object object) { 163 return (super.equals(object) && object instanceof NumberUp); 164 } 165 166 /** 167 * Get the printing attribute class which is to be used as the "category" 168 * for this printing attribute value. 169 * <P> 170 * For class NumberUp, the category is class NumberUp itself. 171 * 172 * @return Printing attribute class (category), an instance of class 173 * {@link java.lang.Class java.lang.Class}. 174 */ 175 public final Class<? extends Attribute> getCategory() { 176 return NumberUp.class; 177 } 178 179 /** 180 * Get the name of the category of which this attribute value is an 181 * instance. 182 * <P> 183 * For class NumberUp, the category name is {@code "number-up"}. 184 * 185 * @return Attribute category name. 186 */ 187 public final String getName() { 188 return "number-up"; 189 } 190 191 } | 1 /* 2 * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package javax.print.attribute.standard; 27 28 import javax.print.attribute.Attribute; 29 import javax.print.attribute.DocAttribute; 30 import javax.print.attribute.IntegerSyntax; 31 import javax.print.attribute.PrintJobAttribute; 32 import javax.print.attribute.PrintRequestAttribute; 33 34 /** 35 * Class {@code NumberUp} is an integer valued printing attribute class that 36 * specifies the number of print-stream pages to impose upon a single side of an 37 * instance of a selected medium. That is, if the NumberUp value is <i>n,</i> 38 * the printer must place <i>n</i> print-stream pages on a single side of an 39 * instance of the selected medium. To accomplish this, the printer may add some 40 * sort of translation, scaling, or rotation. This attribute primarily controls 41 * the translation, scaling and rotation of print-stream pages. 42 * <p> 43 * The effect of a {@code NumberUp} attribute on a multidoc print job (a job 44 * with multiple documents) depends on whether all the docs have the same number 45 * up values specified or whether different docs have different number up values 46 * specified, and on the (perhaps defaulted) value of the 47 * {@link MultipleDocumentHandling MultipleDocumentHandling} attribute. 48 * <ul> 49 * <li>If all the docs have the same number up value <i>n</i> specified, then 50 * any value of {@link MultipleDocumentHandling MultipleDocumentHandling} 51 * makes sense, and the printer's processing depends on the 52 * {@link MultipleDocumentHandling MultipleDocumentHandling} value: 53 * <ul> 54 * <li>{@code SINGLE_DOCUMENT} -- All the input docs will be combined 55 * together into one output document. Each media impression will consist of 56 * <i>n</i>m print-stream pages from the output document. 57 * <li>{@code SINGLE_DOCUMENT_NEW_SHEET} -- All the input docs will be 58 * combined together into one output document. Each media impression will 59 * consist of <i>n</i> print-stream pages from the output document. However, 60 * the first impression of each input doc will always start on a new media 61 * sheet; this means the last impression of an input doc may have fewer than 62 * <i>n</i> print-stream pages on it. 63 * <li>{@code SEPARATE_DOCUMENTS_UNCOLLATED_COPIES} -- The input docs will 64 * remain separate. Each media impression will consist of <i>n</i> 65 * print-stream pages from the input doc. Since the input docs are separate, 66 * the first impression of each input doc will always start on a new media 67 * sheet; this means the last impression of an input doc may have fewer than 68 * <i>n</i> print-stream pages on it. 69 * <li>{@code SEPARATE_DOCUMENTS_COLLATED_COPIES} -- The input docs will 70 * remain separate. Each media impression will consist of <i>n</i> 71 * print-stream pages from the input doc. Since the input docs are separate, 72 * the first impression of each input doc will always start on a new media 73 * sheet; this means the last impression of an input doc may have fewer than 74 * <i>n</i> print-stream pages on it. 75 * </ul> 76 * <ul> 77 * <li>{@code SINGLE_DOCUMENT} -- All the input docs will be combined 78 * together into one output document. Each media impression will consist of 79 * <i>n<sub>i</sub></i> print-stream pages from the output document, where 80 * <i>i</i> is the number of the input doc corresponding to that point in 81 * the output document. When the next input doc has a different number up 82 * value from the previous input doc, the first print-stream page of the 83 * next input doc goes at the start of the next media impression, possibly 84 * leaving fewer than the full number of print-stream pages on the previous 85 * media impression. 86 * <li>{@code SINGLE_DOCUMENT_NEW_SHEET} -- All the input docs will be 87 * combined together into one output document. Each media impression will 88 * consist of <i>n</i> print-stream pages from the output document. However, 89 * the first impression of each input doc will always start on a new media 90 * sheet; this means the last impression of an input doc may have fewer than 91 * <i>n</i> print-stream pages on it. 92 * <li>{@code SEPARATE_DOCUMENTS_UNCOLLATED_COPIES} -- The input docs will 93 * remain separate. For input doc <i>i,</i> each media impression will 94 * consist of <i>n<sub>i</sub></i> print-stream pages from the input doc. 95 * Since the input docs are separate, the first impression of each input doc 96 * will always start on a new media sheet; this means the last impression of 97 * an input doc may have fewer than <i>n<sub>i</sub></i> print-stream pages 98 * on it. 99 * <li>{@code SEPARATE_DOCUMENTS_COLLATED_COPIES} -- The input docs will 100 * remain separate. For input doc <i>i,</i> each media impression will 101 * consist of <i>n<sub>i</sub></i> print-stream pages from the input doc. 102 * Since the input docs are separate, the first impression of each input doc 103 * will always start on a new media sheet; this means the last impression of 104 * an input doc may have fewer than <i>n<sub>i</sub></i> print-stream pages 105 * on it. 106 * </ul> 107 * </ul> 108 * <b>IPP Compatibility:</b> The integer value gives the IPP integer value. The 109 * category name returned by {@code getName()} gives the IPP attribute name. 110 * 111 * @author Alan Kaminsky 112 */ 113 public final class NumberUp extends IntegerSyntax 114 implements DocAttribute, PrintRequestAttribute, PrintJobAttribute { 115 116 /** 117 * Use serialVersionUID from JDK 1.4 for interoperability. 118 */ 119 private static final long serialVersionUID = -3040436486786527811L; 120 121 /** 122 * Construct a new number up attribute with the given integer value. 123 * 124 * @param value Integer value 125 * @throws IllegalArgumentException if {@code value < 1} 126 */ 127 public NumberUp(int value) { 128 super (value, 1, Integer.MAX_VALUE); 129 } 130 131 /** 132 * Returns whether this number up attribute is equivalent to the passed in 133 * object. To be equivalent, all of the following conditions must be true: 134 * <ol type=1> 135 * <li>{@code object} is not {@code null}. 136 * <li>{@code object} is an instance of class {@code NumberUp}. 137 * <li>This number up attribute's value and {@code object}'s value are 138 * equal. 139 * </ol> 140 * 141 * @param object {@code Object} to compare to 142 * @return {@code true} if {@code object} is equivalent to this number up 143 * attribute, {@code false} otherwise 144 */ 145 public boolean equals(Object object) { 146 return (super.equals(object) && object instanceof NumberUp); 147 } 148 149 /** 150 * Get the printing attribute class which is to be used as the "category" 151 * for this printing attribute value. 152 * <p> 153 * For class {@code NumberUp}, the category is class {@code NumberUp} 154 * itself. 155 * 156 * @return printing attribute class (category), an instance of class 157 * {@link Class java.lang.Class} 158 */ 159 public final Class<? extends Attribute> getCategory() { 160 return NumberUp.class; 161 } 162 163 /** 164 * Get the name of the category of which this attribute value is an 165 * instance. 166 * <p> 167 * For class {@code NumberUp}, the category name is {@code "number-up"}. 168 * 169 * @return attribute category name 170 */ 171 public final String getName() { 172 return "number-up"; 173 } 174 } |