aboutsummaryrefslogtreecommitdiffstats
path: root/src/org/apache/fop/pdf/PDFXObject.java
diff options
context:
space:
mode:
authorJeremias Maerki <jeremias@apache.org>2003-03-11 13:25:33 +0000
committerJeremias Maerki <jeremias@apache.org>2003-03-11 13:25:33 +0000
commit77930a96151d680333f3c11b8dcb5f7c9b6761e7 (patch)
tree2bd2afef42926ee98914666ef27ae08ef0c98edd /src/org/apache/fop/pdf/PDFXObject.java
parentb7052c02f1a0da7b6d2c04a799e947e8f9227d81 (diff)
downloadxmlgraphics-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/pdf/PDFXObject.java')
-rw-r--r--src/org/apache/fop/pdf/PDFXObject.java213
1 files changed, 0 insertions, 213 deletions
diff --git a/src/org/apache/fop/pdf/PDFXObject.java b/src/org/apache/fop/pdf/PDFXObject.java
deleted file mode 100644
index a5243332f..000000000
--- a/src/org/apache/fop/pdf/PDFXObject.java
+++ /dev/null
@@ -1,213 +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.pdf;
-
-// Java
-import java.io.IOException;
-import java.io.OutputStream;
-
-/* modified by JKT to integrate with 0.12.0 */
-/* modified by Eric SCHAEFFER to integrate with 0.13.0 */
-
-/**
- * PDF XObject
- *
- * A derivative of the PDF Object, is a PDF Stream that has not only a
- * dictionary but a stream of image data.
- * The dictionary just provides information like the stream length.
- * This outputs the image dictionary and the image data.
- * This is used as a reference for inserting the same image in the
- * document in another place.
- */
-public class PDFXObject extends PDFObject {
- private PDFImage pdfimage;
- private int xnum;
-
- /**
- * create an XObject with the given number and name and load the
- * image in the object
- *
- * @param number the pdf object number
- * @param xnumber the pdf object X number
- * @param img the pdf image that contains the image data
- */
- public PDFXObject(int number, int xnumber, PDFImage img) {
- super(number);
- this.xnum = xnumber;
- pdfimage = img;
- }
-
- /**
- * Get the xnumber for this pdf object.
- *
- * @return the PDF XObject number
- */
- public int getXNumber() {
- return this.xnum;
- }
-
- /**
- * Output the image as PDF.
- * This sets up the image dictionary and adds the image data stream.
- *
- * @param stream the output stream to write the data
- * @throws IOException if there is an error writing the data
- * @return the length of the data written
- */
- protected int output(OutputStream stream) throws IOException {
- int length = 0;
- int i = 0;
-
- if (pdfimage.isPS()) {
- length = outputEPSImage(stream);
- } else {
-
- PDFStream imgStream = pdfimage.getDataStream();
-
- String dictEntries = imgStream.applyFilters();
-
- String p = this.number + " " + this.generation + " obj\n";
- p = p + "<</Type /XObject\n";
- p = p + "/Subtype /Image\n";
- p = p + "/Name /Im" + xnum + "\n";
- p = p + "/Length " + (imgStream.getDataLength() + 1) + "\n";
- p = p + "/Width " + pdfimage.getWidth() + "\n";
- p = p + "/Height " + pdfimage.getHeight() + "\n";
- p = p + "/BitsPerComponent " + pdfimage.getBitsPerPixel()
- + "\n";
-
- PDFICCStream pdfICCStream = pdfimage.getICCStream();
- if (pdfICCStream != null) {
- p = p + "/ColorSpace [/ICCBased "
- + pdfICCStream.referencePDF() + "]\n";
- } else {
- PDFColorSpace cs = pdfimage.getColorSpace();
- p = p + "/ColorSpace /" + cs.getColorSpacePDFString()
- + "\n";
- }
-
- /* PhotoShop generates CMYK values that's inverse,
- this will invert the values - too bad if it's not
- a PhotoShop image...
- */
- if (pdfimage.getColorSpace().getColorSpace()
- == PDFColorSpace.DEVICE_CMYK) {
- p = p + "/Decode [ 1.0 0.0 1.0 0.0 1.0 0.0 1.1 0.0 ]\n";
- }
-
- if (pdfimage.isTransparent()) {
- PDFColor transp = pdfimage.getTransparentColor();
- p = p + "/Mask [" + transp.red255() + " "
- + transp.red255() + " " + transp.green255()
- + " " + transp.green255() + " "
- + transp.blue255() + " " + transp.blue255() + "]\n";
- }
- String ref = pdfimage.getSoftMask();
- if (ref != null) {
- p = p + "/SMask " + ref + "\n";
- }
-
- p = p + dictEntries;
- p = p + ">>\n";
-
- // push the pdf dictionary on the writer
- byte[] pdfBytes = p.getBytes();
- stream.write(pdfBytes);
- length += pdfBytes.length;
- // push all the image data on the writer
- // and takes care of length for trailer
- length += imgStream.outputStreamData(stream);
-
- pdfBytes = ("endobj\n").getBytes();
- stream.write(pdfBytes);
- length += pdfBytes.length;
- }
- // let it gc
- // this object is retained as a reference to inserting
- // the same image but the image data is no longer needed
- pdfimage = null;
- return length;
- }
-
- byte[] toPDF() {
- return null;
- }
-
- private int outputEPSImage(OutputStream stream) throws IOException {
- int length = 0;
- int i = 0;
-
- PDFStream imgStream = pdfimage.getDataStream();
- String dictEntries = imgStream.applyFilters();
-
- String p = this.number + " " + this.generation + " obj\n";
- p = p + "<</Type /XObject\n";
- p = p + "/Subtype /PS\n";
- p = p + "/Length " + (imgStream.getDataLength() + 1);
-
- p = p + dictEntries;
- p = p + ">>\n";
-
- // push the pdf dictionary on the writer
- byte[] pdfBytes = p.getBytes();
- stream.write(pdfBytes);
- length += pdfBytes.length;
- // push all the image data on the writer and takes care of length for trailer
- length += imgStream.outputStreamData(stream);
-
- pdfBytes = ("endobj\n").getBytes();
- stream.write(pdfBytes);
- length += pdfBytes.length;
-
- return length;
- }
-
-}