KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > fop > fonts > type1 > PFMInputStream


1 /*
2  * $Id: PFMInputStream.java,v 1.1.2.2 2003/02/25 13:13:21 jeremias Exp $
3  * ============================================================================
4  * The Apache Software License, Version 1.1
5  * ============================================================================
6  *
7  * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without modifica-
10  * tion, are permitted provided that the following conditions are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright notice,
13  * this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright notice,
16  * this list of conditions and the following disclaimer in the documentation
17  * and/or other materials provided with the distribution.
18  *
19  * 3. The end-user documentation included with the redistribution, if any, must
20  * include the following acknowledgment: "This product includes software
21  * developed by the Apache Software Foundation (http://www.apache.org/)."
22  * Alternately, this acknowledgment may appear in the software itself, if
23  * and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. The names "FOP" and "Apache Software Foundation" must not be used to
26  * endorse or promote products derived from this software without prior
27  * written permission. For written permission, please contact
28  * apache@apache.org.
29  *
30  * 5. Products derived from this software may not be called "Apache", nor may
31  * "Apache" appear in their name, without prior written permission of the
32  * Apache Software Foundation.
33  *
34  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
35  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
36  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
37  * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
38  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
39  * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
40  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
41  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
42  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
43  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
44  * ============================================================================
45  *
46  * This software consists of voluntary contributions made by many individuals
47  * on behalf of the Apache Software Foundation and was originally created by
48  * James Tauber <jtauber@jtauber.com>. For more information on the Apache
49  * Software Foundation, please see <http://www.apache.org/>.
50  */

51 package org.apache.fop.fonts.type1;
52
53 import java.io.IOException JavaDoc;
54 import java.io.InputStream JavaDoc;
55 import java.io.InputStreamReader JavaDoc;
56 import java.io.DataInputStream JavaDoc;
57
58 /**
59  * This is a helper class for reading PFM files. It defines functions for
60  * extracting specific values out of the stream.
61  */

62 public class PFMInputStream extends java.io.FilterInputStream JavaDoc {
63
64     DataInputStream JavaDoc inStream;
65
66     /**
67      * Constructs a PFMInputStream based on an InputStream representing the PFM file.
68      *
69      * @param inStream The stream from which to read the PFM file.
70      */

71     public PFMInputStream(InputStream JavaDoc in) {
72         super(in);
73         inStream = new DataInputStream JavaDoc(in);
74     }
75
76     /**
77      * Parses a one byte value out of the stream.
78      *
79      * @return The value extracted.
80      */

81     public short readByte() throws IOException JavaDoc {
82         short s = inStream.readByte();
83         // Now, we've got to trick Java into forgetting the sign
84
int s1 = (((s & 0xF0) >>> 4) << 4) + (s & 0x0F);
85         return (short)s1;
86     }
87
88     /**
89      * Parses a two byte value out of the stream.
90      *
91      * @return The value extracted.
92      */

93     public int readShort() throws IOException JavaDoc {
94         int i = inStream.readShort();
95
96         // Change byte order
97
int high = (i & 0xFF00) >>> 8;
98         int low = (i & 0x00FF) << 8;
99         return low + high;
100     }
101
102     /**
103      * Parses a four byte value out of the stream.
104      *
105      * @return The value extracted.
106      */

107     public long readInt() throws IOException JavaDoc {
108         int i = inStream.readInt();
109
110         // Change byte order
111
int i1 = (i & 0xFF000000) >>> 24;
112         int i2 = (i & 0x00FF0000) >>> 8;
113         int i3 = (i & 0x0000FF00) << 8;
114         int i4 = (i & 0x000000FF) << 24;
115         return i1 + i2 + i3 + i4;
116     }
117
118     /**
119      * Parses a zero-terminated string out of the stream.
120      *
121      * @return The value extracted.
122      */

123     public String JavaDoc readString() throws IOException JavaDoc {
124         InputStreamReader JavaDoc reader = new InputStreamReader JavaDoc(in, "ISO-8859-1");
125         StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
126         int ch = reader.read();
127         while (ch != 0) {
128             buf.append((char)ch);
129             ch = reader.read();
130         }
131         return buf.toString();
132     }
133
134 }
135
Popular Tags