diff options
author | Jeremias Maerki <jeremias@apache.org> | 2003-03-11 13:25:33 +0000 |
---|---|---|
committer | Jeremias Maerki <jeremias@apache.org> | 2003-03-11 13:25:33 +0000 |
commit | 77930a96151d680333f3c11b8dcb5f7c9b6761e7 (patch) | |
tree | 2bd2afef42926ee98914666ef27ae08ef0c98edd /src/org/apache/fop/util | |
parent | b7052c02f1a0da7b6d2c04a799e947e8f9227d81 (diff) | |
download | xmlgraphics-fop-77930a96151d680333f3c11b8dcb5f7c9b6761e7.tar.gz xmlgraphics-fop-77930a96151d680333f3c11b8dcb5f7c9b6761e7.zip |
Moved sources from src/org/** to src/java/org/**
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196064 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/org/apache/fop/util')
-rw-r--r-- | src/org/apache/fop/util/CharUtilities.java | 232 | ||||
-rw-r--r-- | src/org/apache/fop/util/StreamUtilities.java | 243 |
2 files changed, 0 insertions, 475 deletions
diff --git a/src/org/apache/fop/util/CharUtilities.java b/src/org/apache/fop/util/CharUtilities.java deleted file mode 100644 index d612b9e38..000000000 --- a/src/org/apache/fop/util/CharUtilities.java +++ /dev/null @@ -1,232 +0,0 @@ -/* - * $Id$ - * ============================================================================ - * The Apache Software License, Version 1.1 - * ============================================================================ - * - * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modifica- - * tion, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The end-user documentation included with the redistribution, if any, must - * include the following acknowledgment: "This product includes software - * developed by the Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, if - * and wherever such third-party acknowledgments normally appear. - * - * 4. The names "FOP" and "Apache Software Foundation" must not be used to - * endorse or promote products derived from this software without prior - * written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", nor may - * "Apache" appear in their name, without prior written permission of the - * Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- - * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * ============================================================================ - * - * This software consists of voluntary contributions made by many individuals - * on behalf of the Apache Software Foundation and was originally created by - * James Tauber <jtauber@jtauber.com>. For more information on the Apache - * Software Foundation, please see <http://www.apache.org/>. - */ -package org.apache.fop.util; - -import org.apache.fop.layout.FontState; - -/** - * This class provides utilities to distinguish various kinds of Unicode - * whitespace and to get character widths in a given FontState. - */ -public class CharUtilities { - - /** Character code used to signal a character boundary in - * inline content, such as an inline with borders and padding - * or a nested block object. - */ - public static final char CODE_EOT = 0; - - /** - * Character class: Unicode white space - */ - public static final int UCWHITESPACE = 0; - /** - * Character class: Line feed - */ - public static final int LINEFEED = 1; - /** - * Character class: Boundary between text runs - */ - public static final int EOT = 2; - /** - * Character class: non-whitespace - */ - public static final int NONWHITESPACE = 3; - /** - * Character class: XML whitespace - */ - public static final int XMLWHITESPACE = 4; - - - /** - * Return the appropriate CharClass constant for the type - * of the passed character. - * @param c character to inspect - * @return int the determined character class - */ - public static int classOf(char c) { - if (c == CODE_EOT) { return EOT; } - if (c == '\n') { return LINEFEED; } - if (c == ' ' || c == '\r' || c == '\t') { return XMLWHITESPACE; } - if (isAnySpace(c)) { return UCWHITESPACE; } - return NONWHITESPACE; - } - - /** - * Helper method for getting the width of a unicode char - * from the current fontstate. - * This also performs some guessing on widths on various - * versions of space that might not exists in the font. - * @param c character to inspect - * @param fs FontState to use - * @return int the width of the character - */ - public static int getCharWidth(char c, FontState fs) { - int width; - - if ((c == '\n') || (c == '\r') || (c == '\t') || (c == '\u00A0')) { - width = getCharWidth(' ', fs); - } else { - width = fs.getWidth(fs.mapChar(c)); - if (width <= 0) { - // Estimate the width of spaces not represented in - // the font - int em = fs.getWidth(fs.mapChar('m')); - int en = fs.getWidth(fs.mapChar('n')); - if (em <= 0) { - em = 500 * fs.getFontSize(); - } - if (en <= 0) { - en = em - 10; - } - - if (c == ' ') { - width = em; - } - if (c == '\u2000') { - width = en; - } - if (c == '\u2001') { - width = em; - } - if (c == '\u2002') { - width = em / 2; - } - if (c == '\u2003') { - width = fs.getFontSize(); - } - if (c == '\u2004') { - width = em / 3; - } - if (c == '\u2005') { - width = em / 4; - } - if (c == '\u2006') { - width = em / 6; - } - if (c == '\u2007') { - width = getCharWidth(' ', fs); - } - if (c == '\u2008') { - width = getCharWidth('.', fs); - } - if (c == '\u2009') { - width = em / 5; - } - if (c == '\u200A') { - width = 5; - } - if (c == '\u200B') { - width = 100; - } - if (c == '\u202F') { - width = getCharWidth(' ', fs) / 2; - } - if (c == '\u3000') { - width = getCharWidth(' ', fs) * 2; - } - } - } - - return width; - } - - /** - * Helper method to determine if the character is a - * space with normal behaviour. Normal behaviour means that - * it's not non-breaking. - * @param c character to inspect - * @return boolean True if the character is a normal space - */ - public static boolean isSpace(char c) { - return (c == ' ' - || (c >= '\u2000' && c <= '\u200B')); -// c == '\u2000' // en quad -// c == '\u2001' // em quad -// c == '\u2002' // en space -// c == '\u2003' // em space -// c == '\u2004' // three-per-em space -// c == '\u2005' // four--per-em space -// c == '\u2006' // six-per-em space -// c == '\u2007' // figure space -// c == '\u2008' // punctuation space -// c == '\u2009' // thin space -// c == '\u200A' // hair space -// c == '\u200B' // zero width space - } - - /** - * Method to determine if the character is a nonbreaking - * space. - * @param c character to check - * @return boolean True if the character is a nbsp - */ - public static boolean isNBSP(char c) { - if (c == '\u00A0' || c == '\u202F' // narrow no-break space - || c == '\u3000' // ideographic space - || c == '\uFEFF') { // zero width no-break space - return true; - } else { - return false; - } - } - - /** - * Determines if the character represents any kind of space. - * @param c character to check - * @return True if the character represents any kind of space - */ - public static boolean isAnySpace(char c) { - boolean ret = (isSpace(c) || isNBSP(c)); - return ret; - } -} - diff --git a/src/org/apache/fop/util/StreamUtilities.java b/src/org/apache/fop/util/StreamUtilities.java deleted file mode 100644 index 7a594a526..000000000 --- a/src/org/apache/fop/util/StreamUtilities.java +++ /dev/null @@ -1,243 +0,0 @@ -/* - * $Id$ - * ============================================================================ - * The Apache Software License, Version 1.1 - * ============================================================================ - * - * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modifica- - * tion, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The end-user documentation included with the redistribution, if any, must - * include the following acknowledgment: "This product includes software - * developed by the Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, if - * and wherever such third-party acknowledgments normally appear. - * - * 4. The names "FOP" and "Apache Software Foundation" must not be used to - * endorse or promote products derived from this software without prior - * written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", nor may - * "Apache" appear in their name, without prior written permission of the - * Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- - * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * ============================================================================ - * - * This software consists of voluntary contributions made by many individuals - * on behalf of the Apache Software Foundation and was originally created by - * James Tauber <jtauber@jtauber.com>. For more information on the Apache - * Software Foundation, please see <http://www.apache.org/>. - */ -package org.apache.fop.util; - -import java.io.InputStream; -import java.io.OutputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.EOFException; -import java.io.DataInput; -import java.io.DataOutput; -import java.util.zip.CRC32; - -/** - * General handy stream i/o methods. - */ -public class StreamUtilities { - - /** - * Size of buffers. Duh. - */ - public static final int BUFFER_SIZE = 4096; // cuz I like big buffers... - - /** - * Binary copies bytes from an input stream to an output stream. - * The process is buffered, so you shouldn't need - * BufferedInput/OutputStreams. Flushes when it's finished, but does - * not close either stream. Returns the number of bytes copied. - * @param source InputStream to read from - * @param sink OutputStream to write to - * @return long the total number of bytes copied - * @throws IOException In case of an I/O problem - */ - public static long streamCopy(InputStream source, - OutputStream sink) throws IOException { - // set table - byte[] buffer = new byte[BUFFER_SIZE]; - long total = 0; - - // trough - int scoop; - while ((scoop = source.read(buffer)) >= 0) { - if (scoop == 0) { - System.out.println("zero scoop!"); - } - sink.write(buffer, 0, scoop); - total += scoop; - } - - // do dishes - sink.flush(); - - return total; - } - - /** - * Method streamCopy. - */ - /** - * Binary copies up to the given number of bytes from an input - * stream to an output stream. The process is buffered, so you - * shouldn't need BufferedInput/OutputStreams. - * Flushes when it's finished, but does not close either stream. - * Throws an EOFExeption if there aren't enough bytes available to - * transfer the requested amount. - * @param source InputStream to read from - * @param sink OutputStream to write to - * @param howMany requested amount of bytes that are to be copied - * @return long the total number of bytes copied - * @throws IOException In case of an I/O problem - */ - public static long streamCopy(InputStream source, - OutputStream sink, int howMany) throws IOException { - // set table - byte[] buffer = new byte[BUFFER_SIZE]; - int left = howMany; - - // trough - int scoop; - while (left > 0) { - scoop = source.read(buffer, 0, Math.min(BUFFER_SIZE, left)); - if (scoop < 0) { - throw new EOFException( - "Not enough bytes to feed you in " - + "IOLib.streamCopy(source, sink, howMany); you asked for " - + howMany + " and I only have " + (howMany - left)); - } - - sink.write(buffer, 0, scoop); - left -= scoop; - } - - // do dishes - sink.flush(); - - return howMany; - } - - /** - * Method streamCopyWithChecksum. - */ - /** - * Binary copies up to the given number of bytes from an input - * stream to an output stream. The process is buffered, so you - * shouldn't need BufferedInput/OutputStreams. - * Flushes when it's finished, but does not close either stream. - * Throws an EOFExeption if there aren't enough bytes available - * to transfer the requested amount. - * @param source InputStream to read from - * @param sink OutputStream to write to - * @param howMany requested amount of bytes that are to be copied - * @return long the checksum of the bytes copied - * @throws IOException In case of an I/O problem - */ - public static long streamCopyWithChecksum(InputStream source, - OutputStream sink, int howMany) throws IOException { - // set table - byte[] buffer = new byte[BUFFER_SIZE]; - int left = howMany; - CRC32 checksummer = new CRC32(); - - // trough - int scoop; - while (left > 0) { - scoop = source.read(buffer, 0, Math.min(BUFFER_SIZE, left)); - if (scoop < 0) { - throw new EOFException("Not enough bytes to feed you in " - + "IOLib.streamCopy(source, sink, howMany)"); - } - - checksummer.update(buffer, 0, scoop); - sink.write(buffer, 0, scoop); - left -= scoop; - } - - // do dishes - sink.flush(); - - return checksummer.getValue(); - } - - /** - * Method dataCopy. - */ - /** - * Binary copies up to the given number of bytes from a DataInput - * object to an DataOutput object. The process is buffered. Since - * DataOutput doesn't support closing or flushing, it does neither. - * @param source DataInput to read from - * @param sink DataOutput to write to - * @param howMany requested amount of bytes that are to be copied - * @return long the total number of bytes copied - * @throws IOException In case of an I/O problem - */ - public static long dataCopy(DataInput source, DataOutput sink, - int howMany) throws IOException { - // set table - byte[] buffer = new byte[BUFFER_SIZE]; - int left = howMany; - - // trough - int scoop; - while (left > 0) { - scoop = Math.min(BUFFER_SIZE, left); - source.readFully(buffer, 0, scoop); - sink.write(buffer, 0, scoop); - left -= scoop; - } - - // do dishes - return howMany; - } - - - /** - * Loads the contents of the InputStream to a byte array. The InputStream - * isn't closed. - * @param in InputStream to read from - * @param initialTargetBufferSize initial number of bytes to allocate - * (expected size to avoid a lot of reallocations) - * @return byte[] the array of bytes requested - * @throws IOException In case of an I/O problem - */ - public static byte[] toByteArray(InputStream in, int initialTargetBufferSize) - throws IOException { - ByteArrayOutputStream baout = new ByteArrayOutputStream(initialTargetBufferSize); - try { - streamCopy(in, baout); - } finally { - baout.close(); - } - return baout.toByteArray(); - } - -} |