KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > pdfbox > util > operator > pagedrawer > BeginInlineImage


1 /**
2  * Copyright (c) 2005, www.pdfbox.org
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  * 3. Neither the name of pdfbox; nor the names of its
14  * contributors may be used to endorse or promote products derived from this
15  * software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20  * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
24  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  *
28  * http://www.pdfbox.org
29  *
30  */

31 package org.pdfbox.util.operator.pagedrawer;
32
33 import java.awt.Graphics2D JavaDoc;
34 import java.awt.geom.AffineTransform JavaDoc;
35 import java.awt.image.BufferedImage JavaDoc;
36 import java.io.IOException JavaDoc;
37 import java.util.List JavaDoc;
38
39 import org.pdfbox.pdfviewer.PageDrawer;
40 import org.pdfbox.pdmodel.graphics.xobject.PDInlinedImage;
41 import org.pdfbox.util.ImageParameters;
42 import org.pdfbox.util.Matrix;
43 import org.pdfbox.util.PDFOperator;
44 import org.pdfbox.util.operator.OperatorProcessor;
45
46 /**
47  * Implementation of content stream operator for page drawer.
48  *
49  * @author <a HREF="mailto:ben@benlitchfield.com">Ben Litchfield</a>
50  * @version $Revision: 1.2 $
51  */

52 public class BeginInlineImage extends OperatorProcessor
53 {
54
55
56     /**
57      * process : BI : begin inline image.
58      * @param operator The operator that is being executed.
59      * @param arguments List
60      * @throws IOException If there is an error displaying the inline image.
61      */

62     public void process(PDFOperator operator, List JavaDoc arguments) throws IOException JavaDoc
63     {
64         PageDrawer drawer = (PageDrawer)context;
65         Graphics2D JavaDoc graphics = drawer.getGraphics();
66         //begin inline image object
67
ImageParameters params = operator.getImageParameters();
68         PDInlinedImage image = new PDInlinedImage();
69         image.setImageParameters( params );
70         image.setImageData( operator.getImageData() );
71         BufferedImage JavaDoc awtImage = image.createImage();
72         
73         Matrix ctm = drawer.getGraphicsState().getCurrentTransformationMatrix();
74         
75         int width = awtImage.getWidth();
76         int height = awtImage.getHeight();
77
78         
79         AffineTransform JavaDoc at = new AffineTransform JavaDoc(
80             ctm.getValue(0,0)/width,
81             ctm.getValue(0,1),
82             ctm.getValue(1,0),
83             ctm.getValue(1,1)/height,
84             ctm.getValue(2,0),
85             ctm.getValue(2,1)
86         );
87         //at.setToRotation((double)page.getRotation());
88

89         
90         // The transformation should be done
91
// 1 - Translation
92
// 2 - Rotation
93
// 3 - Scale or Skew
94
//AffineTransform at = new AffineTransform();
95

96         // Translation
97
//at = new AffineTransform();
98
//at.setToTranslation((double)ctm.getValue(0,0),
99
// (double)ctm.getValue(0,1));
100

101         // Rotation
102
//AffineTransform toAdd = new AffineTransform();
103
//toAdd.setToRotation(1.5705);
104
//toAdd.setToRotation(ctm.getValue(2,0)*(Math.PI/180));
105
//at.concatenate(toAdd);
106

107         // Scale / Skew?
108
//toAdd.setToScale(width, height);
109
//at.concatenate(toAdd);
110
//at.setToScale( width, height );
111
graphics.drawImage( awtImage, at, null );
112         //graphics.drawImage( awtImage,0,0, width,height,null);
113
}
114 }
115
Popular Tags