1 /* 2 * Copyright (c) 2000, 2004, 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.EnumSyntax; 29 import javax.print.attribute.DocAttribute; 30 import javax.print.attribute.PrintRequestAttribute; 31 import javax.print.attribute.PrintJobAttribute; 32 33 /** 34 * Class OrientationRequested is a printing attribute class, an enumeration, 35 * that indicates the desired orientation for printed print-stream pages; it 36 * does not describe the orientation of the client-supplied print-stream 37 * pages. 38 * <P> 39 * For some document formats (such as <CODE>"application/postscript"</CODE>), 40 * the desired orientation of the print-stream pages is specified within the 41 * document data. This information is generated by a device driver prior to 42 * the submission of the print job. Other document formats (such as 43 * <CODE>"text/plain"</CODE>) do not include the notion of desired orientation 44 * within the document data. In the latter case it is possible for the printer 45 * to bind the desired orientation to the document data after it has been 46 * submitted. It is expected that a printer would only support the 47 * OrientationRequested attribute for some document formats (e.g., 48 * <CODE>"text/plain"</CODE> or <CODE>"text/html"</CODE>) but not others (e.g. 49 * <CODE>"application/postscript"</CODE>). This is no different from any other 50 * job template attribute, since a print job can always impose constraints 51 * among the values of different job template attributes. 52 * However, a special mention 53 * is made here since it is very likely that a printer will support the 54 * OrientationRequested attribute for only a subset of the supported document 55 * formats. 56 * <P> 57 * <B>IPP Compatibility:</B> The category name returned by 58 * <CODE>getName()</CODE> is the IPP attribute name. The enumeration's 59 * integer value is the IPP enum value. The <code>toString()</code> method 60 * returns the IPP string representation of the attribute value. 61 * <P> 62 * 63 * @author Alan Kaminsky 64 */ 65 public final class OrientationRequested extends EnumSyntax 66 implements DocAttribute, PrintRequestAttribute, PrintJobAttribute { 67 68 private static final long serialVersionUID = -4447437289862822276L; 69 70 /** 71 * The content will be imaged across the short edge of the medium. 72 */ 73 public static final OrientationRequested 74 PORTRAIT = new OrientationRequested(3); 75 76 /** 77 * The content will be imaged across the long edge of the medium. 78 * Landscape is defined to be a rotation of the print-stream page to be 79 * imaged by +90 degrees with respect to the medium 80 * (i.e. anti-clockwise) from the 81 * portrait orientation. <I>Note:</I> The +90 direction was chosen because 82 * simple finishing on the long edge is the same edge whether portrait or 83 * landscape. 84 */ 85 public static final OrientationRequested 86 LANDSCAPE = new OrientationRequested(4); 87 88 /** 89 * The content will be imaged across the long edge of the medium, but in 90 * the opposite manner from landscape. Reverse-landscape is defined to be 91 * a rotation of the print-stream page to be imaged by -90 degrees with 92 * respect to the medium (i.e. clockwise) from the portrait orientation. 93 * <I>Note:</I> The REVERSE_LANDSCAPE value was added because some 94 * applications rotate landscape -90 degrees from portrait, rather than 95 * +90 degrees. 96 */ 97 public static final OrientationRequested 98 REVERSE_LANDSCAPE = new OrientationRequested(5); 99 100 /** 101 * The content will be imaged across the short edge of the medium, but in 102 * the opposite manner from portrait. Reverse-portrait is defined to be a 103 * rotation of the print-stream page to be imaged by 180 degrees with 104 * respect to the medium from the portrait orientation. <I>Note:</I> The 105 * REVERSE_PORTRAIT value was added for use with the {@link 106 * Finishings Finishings} attribute in cases where the 107 * opposite edge is desired for finishing a portrait document on simple 108 * finishing devices that have only one finishing position. Thus a 109 * <CODE>"text/plain"</CODE> portrait document can be stapled "on the 110 * right" by a simple finishing device as is common use with some 111 * Middle Eastern languages such as Hebrew. 112 */ 113 public static final OrientationRequested 114 REVERSE_PORTRAIT = new OrientationRequested(6); 115 116 /** 117 * Construct a new orientation requested enumeration value with the given 118 * integer value. 119 * 120 * @param value Integer value. 121 */ 122 protected OrientationRequested(int value) { 123 super(value); 124 } 125 126 private static final String[] myStringTable = { 127 "portrait", 128 "landscape", 129 "reverse-landscape", 130 "reverse-portrait" 131 }; 132 133 private static final OrientationRequested[] myEnumValueTable = { 134 PORTRAIT, 135 LANDSCAPE, 136 REVERSE_LANDSCAPE, 137 REVERSE_PORTRAIT 138 }; 139 140 /** 141 * Returns the string table for class OrientationRequested. 142 */ 143 protected String[] getStringTable() { 144 return myStringTable; 145 } 146 147 /** 148 * Returns the enumeration value table for class OrientationRequested. 149 */ 150 protected EnumSyntax[] getEnumValueTable() { 151 return myEnumValueTable; 152 } 153 154 /** 155 * Returns the lowest integer value used by class OrientationRequested. 156 */ 157 protected int getOffset() { 158 return 3; 159 } 160 161 /** 162 * Get the printing attribute class which is to be used as the "category" 163 * for this printing attribute value. 164 * <P> 165 * For class OrientationRequested, the 166 * category is class OrientationRequested itself. 167 * 168 * @return Printing attribute class (category), an instance of class 169 * {@link java.lang.Class java.lang.Class}. 170 */ 171 public final Class<? extends Attribute> getCategory() { 172 return OrientationRequested.class; 173 } 174 175 /** 176 * Get the name of the category of which this attribute value is an 177 * instance. 178 * <P> 179 * For class OrientationRequested, the 180 * category name is <CODE>"orientation-requested"</CODE>. 181 * 182 * @return Attribute category name. 183 */ 184 public final String getName() { 185 return "orientation-requested"; 186 } 187 188 }