diff options
author | eschaeffer <eschaeffer@unknown> | 2000-08-11 14:29:11 +0000 |
---|---|---|
committer | eschaeffer <eschaeffer@unknown> | 2000-08-11 14:29:11 +0000 |
commit | fdba5b4915716edffb059419f43e48896d789a6e (patch) | |
tree | cba86b7291dccc287ae1d35915342d5ec235efce /src/org/apache/fop/image | |
parent | c9b42adb0b0e6f7400badb21d97a49bdbd5b633c (diff) | |
download | xmlgraphics-fop-fdba5b4915716edffb059419f43e48896d789a6e.tar.gz xmlgraphics-fop-fdba5b4915716edffb059419f43e48896d789a6e.zip |
ImageReader implementing class for BMP imagess
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@193633 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/org/apache/fop/image')
-rw-r--r-- | src/org/apache/fop/image/analyser/BMPReader.java | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/src/org/apache/fop/image/analyser/BMPReader.java b/src/org/apache/fop/image/analyser/BMPReader.java new file mode 100644 index 000000000..1ab5a8256 --- /dev/null +++ b/src/org/apache/fop/image/analyser/BMPReader.java @@ -0,0 +1,107 @@ +/* + ============================================================================ + The Apache Software License, Version 1.1 + ============================================================================ + Copyright (C) 1999 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.image.analyser; + +// Java +import java.io.BufferedInputStream; +import java.io.IOException; + +/** + * ImageReader object for BMP image type. + * @author Pankaj Narula + * @version 1.0 + */ +public class BMPReader extends AbstractImageReader { + static protected final int BMP_SIG_LENGTH = 26; + + protected byte[] header; + + public boolean verifySignature(BufferedInputStream fis) + throws IOException { + this.imageStream = fis; + this.setDefaultHeader(); + boolean supported = ((header[0] == (byte) 0x42) && + (header[1] == (byte) 0x4d)); + if (supported) { + setDimension(); + return true; + } else + return false; + } + + public String getMimeType() { + return "image/bmp"; + } + + protected void setDimension() { + //little endian notation + int byte1 = header[18] & 0xff; + int byte2 = header[19] & 0xff; + int byte3 = header[20] & 0xff; + int byte4 = header[21] & 0xff; + long l = (long)((byte4 << 24) | (byte3 << 16) | + (byte2 << 8) | byte1); + this.width = (int)(l & 0xffffffff); + + byte1 = header[22] & 0xff; + byte2 = header[23] & 0xff; + byte3 = header[24] & 0xff; + byte4 = header[25] & 0xff; + l = (long)((byte4 << 24) | (byte3 << 16) | (byte2 << 8) | + byte1); + this.height = (int)(l & 0xffffffff); + } + + protected void setDefaultHeader() throws IOException { + this.header = new byte[BMP_SIG_LENGTH]; + try { + this.imageStream.mark(BMP_SIG_LENGTH + 1); + this.imageStream.read(header); + this.imageStream.reset(); + } catch (IOException ex) { + try { + this.imageStream.reset(); + } catch (IOException exbis) {} + throw ex; + } + } +} + |