History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/java/awt/print/PageFormat.java (1 of 18352 files). Show all

Unified · Split

java/pkg/java/awt/print/PageFormat.java+363−0
@@ -0,0 +1,363 @@
1+/*
2+ * Copyright (c) 1997, 2000, 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 java.awt.print;
27+
28+import java.awt.geom.AffineTransform;
29+import java.awt.geom.Point2D;
30+import java.awt.geom.Rectangle2D;
31+
32+/**
33+ * The <code>PageFormat</code> class describes the size and
34+ * orientation of a page to be printed.
35+ */
36+public class PageFormat implements Cloneable
37+{
38+
39+ /* Class Constants */
40+
41+ /**
42+ * The origin is at the bottom left of the paper with
43+ * x running bottom to top and y running left to right.
44+ * Note that this is not the Macintosh landscape but
45+ * is the Window's and PostScript landscape.
46+ */
47+ public static final int LANDSCAPE = 0;
48+
49+ /**
50+ * The origin is at the top left of the paper with
51+ * x running to the right and y running down the
52+ * paper.
53+ */
54+ public static final int PORTRAIT = 1;
55+
56+ /**
57+ * The origin is at the top right of the paper with x
58+ * running top to bottom and y running right to left.
59+ * Note that this is the Macintosh landscape.
60+ */
61+ public static final int REVERSE_LANDSCAPE = 2;
62+
63+ /* Instance Variables */
64+
65+ /**
66+ * A description of the physical piece of paper.
67+ */
68+ private Paper mPaper;
69+
70+ /**
71+ * The orientation of the current page. This will be
72+ * one of the constants: PORTRIAT, LANDSCAPE, or
73+ * REVERSE_LANDSCAPE,
74+ */
75+ private int mOrientation = PORTRAIT;
76+
77+ /* Constructors */
78+
79+ /**
80+ * Creates a default, portrait-oriented
81+ * <code>PageFormat</code>.
82+ */
83+ public PageFormat()
84+ {
85+ mPaper = new Paper();
86+ }
87+
88+ /* Instance Methods */
89+
90+ /**
91+ * Makes a copy of this <code>PageFormat</code> with the same
92+ * contents as this <code>PageFormat</code>.
93+ * @return a copy of this <code>PageFormat</code>.
94+ */
95+ public Object clone() {
96+ PageFormat newPage;
97+
98+ try {
99+ newPage = (PageFormat) super.clone();
100+ newPage.mPaper = (Paper)mPaper.clone();
101+
102+ } catch (CloneNotSupportedException e) {
103+ e.printStackTrace();
104+ newPage = null; // should never happen.
105+ }
106+
107+ return newPage;
108+ }
109+
110+
111+ /**
112+ * Returns the width, in 1/72nds of an inch, of the page.
113+ * This method takes into account the orientation of the
114+ * page when determining the width.
115+ * @return the width of the page.
116+ */
117+ public double getWidth() {
118+ double width;
119+ int orientation = getOrientation();
120+
121+ if (orientation == PORTRAIT) {
122+ width = mPaper.getWidth();
123+ } else {
124+ width = mPaper.getHeight();
125+ }
126+
127+ return width;
128+ }
129+
130+ /**
131+ * Returns the height, in 1/72nds of an inch, of the page.
132+ * This method takes into account the orientation of the
133+ * page when determining the height.
134+ * @return the height of the page.
135+ */
136+ public double getHeight() {
137+ double height;
138+ int orientation = getOrientation();
139+
140+ if (orientation == PORTRAIT) {
141+ height = mPaper.getHeight();
142+ } else {
143+ height = mPaper.getWidth();
144+ }
145+
146+ return height;
147+ }
148+
149+ /**
150+ * Returns the x coordinate of the upper left point of the
151+ * imageable area of the <code>Paper</code> object
152+ * associated with this <code>PageFormat</code>.
153+ * This method takes into account the
154+ * orientation of the page.
155+ * @return the x coordinate of the upper left point of the
156+ * imageable area of the <code>Paper</code> object
157+ * associated with this <code>PageFormat</code>.
158+ */
159+ public double getImageableX() {
160+ double x;
161+
162+ switch (getOrientation()) {
163+
164+ case LANDSCAPE:
165+ x = mPaper.getHeight()
166+ - (mPaper.getImageableY() + mPaper.getImageableHeight());
167+ break;
168+
169+ case PORTRAIT:
170+ x = mPaper.getImageableX();
171+ break;
172+
173+ case REVERSE_LANDSCAPE:
174+ x = mPaper.getImageableY();
175+ break;
176+
177+ default:
178+ /* This should never happen since it signifies that the
179+ * PageFormat is in an invalid orientation.
180+ */
181+ throw new InternalError("unrecognized orientation");
182+
183+ }
184+
185+ return x;
186+ }
187+
188+ /**
189+ * Returns the y coordinate of the upper left point of the
190+ * imageable area of the <code>Paper</code> object
191+ * associated with this <code>PageFormat</code>.
192+ * This method takes into account the
193+ * orientation of the page.
194+ * @return the y coordinate of the upper left point of the
195+ * imageable area of the <code>Paper</code> object
196+ * associated with this <code>PageFormat</code>.
197+ */
198+ public double getImageableY() {
199+ double y;
200+
201+ switch (getOrientation()) {
202+
203+ case LANDSCAPE:
204+ y = mPaper.getImageableX();
205+ break;
206+
207+ case PORTRAIT:
208+ y = mPaper.getImageableY();
209+ break;
210+
211+ case REVERSE_LANDSCAPE:
212+ y = mPaper.getWidth()
213+ - (mPaper.getImageableX() + mPaper.getImageableWidth());
214+ break;
215+
216+ default:
217+ /* This should never happen since it signifies that the
218+ * PageFormat is in an invalid orientation.
219+ */
220+ throw new InternalError("unrecognized orientation");
221+
222+ }
223+
224+ return y;
225+ }
226+
227+ /**
228+ * Returns the width, in 1/72nds of an inch, of the imageable
229+ * area of the page. This method takes into account the orientation
230+ * of the page.
231+ * @return the width of the page.
232+ */
233+ public double getImageableWidth() {
234+ double width;
235+
236+ if (getOrientation() == PORTRAIT) {
237+ width = mPaper.getImageableWidth();
238+ } else {
239+ width = mPaper.getImageableHeight();
240+ }
241+
242+ return width;
243+ }
244+
245+ /**
246+ * Return the height, in 1/72nds of an inch, of the imageable
247+ * area of the page. This method takes into account the orientation
248+ * of the page.
249+ * @return the height of the page.
250+ */
251+ public double getImageableHeight() {
252+ double height;
253+
254+ if (getOrientation() == PORTRAIT) {
255+ height = mPaper.getImageableHeight();
256+ } else {
257+ height = mPaper.getImageableWidth();
258+ }
259+
260+ return height;
261+ }
262+
263+
264+ /**
265+ * Returns a copy of the {@link Paper} object associated
266+ * with this <code>PageFormat</code>. Changes made to the
267+ * <code>Paper</code> object returned from this method do not
268+ * affect the <code>Paper</code> object of this
269+ * <code>PageFormat</code>. To update the <code>Paper</code>
270+ * object of this <code>PageFormat</code>, create a new
271+ * <code>Paper</code> object and set it into this
272+ * <code>PageFormat</code> by using the {@link #setPaper(Paper)}
273+ * method.
274+ * @return a copy of the <code>Paper</code> object associated
275+ * with this <code>PageFormat</code>.
276+ * @see #setPaper
277+ */
278+ public Paper getPaper() {
279+ return (Paper)mPaper.clone();
280+ }
281+
282+ /**
283+ * Sets the <code>Paper</code> object for this
284+ * <code>PageFormat</code>.
285+ * @param paper the <code>Paper</code> object to which to set
286+ * the <code>Paper</code> object for this <code>PageFormat</code>.
287+ * @exception <code>NullPointerException</code>
288+ * a null paper instance was passed as a parameter.
289+ * @see #getPaper
290+ */
291+ public void setPaper(Paper paper) {
292+ mPaper = (Paper)paper.clone();
293+ }
294+
295+ /**
296+ * Sets the page orientation. <code>orientation</code> must be
297+ * one of the constants: PORTRAIT, LANDSCAPE,
298+ * or REVERSE_LANDSCAPE.
299+ * @param orientation the new orientation for the page
300+ * @throws IllegalArgumentException if
301+ * an unknown orientation was requested
302+ * @see #getOrientation
303+ */
304+ public void setOrientation(int orientation) throws IllegalArgumentException
305+ {
306+ if (0 <= orientation && orientation <= REVERSE_LANDSCAPE) {
307+ mOrientation = orientation;
308+ } else {
309+ throw new IllegalArgumentException();
310+ }
311+ }
312+
313+ /**
314+ * Returns the orientation of this <code>PageFormat</code>.
315+ * @return this <code>PageFormat</code> object's orientation.
316+ * @see #setOrientation
317+ */
318+ public int getOrientation() {
319+ return mOrientation;
320+ }
321+
322+ /**
323+ * Returns a transformation matrix that translates user
324+ * space rendering to the requested orientation
325+ * of the page. The values are placed into the
326+ * array as
327+ * {&nbsp;m00,&nbsp;m10,&nbsp;m01,&nbsp;m11,&nbsp;m02,&nbsp;m12} in
328+ * the form required by the {@link AffineTransform}
329+ * constructor.
330+ * @return the matrix used to translate user space rendering
331+ * to the orientation of the page.
332+ * @see java.awt.geom.AffineTransform
333+ */
334+ public double[] getMatrix() {
335+ double[] matrix = new double[6];
336+
337+ switch (mOrientation) {
338+
339+ case LANDSCAPE:
340+ matrix[0] = 0; matrix[1] = -1;
341+ matrix[2] = 1; matrix[3] = 0;
342+ matrix[4] = 0; matrix[5] = mPaper.getHeight();
343+ break;
344+
345+ case PORTRAIT:
346+ matrix[0] = 1; matrix[1] = 0;
347+ matrix[2] = 0; matrix[3] = 1;
348+ matrix[4] = 0; matrix[5] = 0;
349+ break;
350+
351+ case REVERSE_LANDSCAPE:
352+ matrix[0] = 0; matrix[1] = 1;
353+ matrix[2] = -1; matrix[3] = 0;
354+ matrix[4] = mPaper.getWidth(); matrix[5] = 0;
355+ break;
356+
357+ default:
358+ throw new IllegalArgumentException();
359+ }
360+
361+ return matrix;
362+ }
363+}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t