KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > krysalis > barcode > output > bitmap > BitmapCanvasProvider


1 /*
2  * $Id: BitmapCanvasProvider.java,v 1.6 2003/10/28 19:33:33 jmaerki Exp $
3  * ============================================================================
4  * The Krysalis Patchy Software License, Version 1.1_01
5  * Copyright (c) 2002-2003 Nicola Ken Barozzi. All rights reserved.
6  *
7  * This Licence is compatible with the BSD licence as described and
8  * approved by http://www.opensource.org/, and is based on the
9  * Apache Software Licence Version 1.1.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  *
15  * 1. Redistributions of source code must retain the above copyright
16  * notice, this list of conditions and the following disclaimer.
17  *
18  * 2. Redistributions in binary form must reproduce the above copyright
19  * notice, this list of conditions and the following disclaimer in
20  * the documentation and/or other materials provided with the
21  * distribution.
22  *
23  * 3. The end-user documentation included with the redistribution,
24  * if any, must include the following acknowledgment:
25  * "This product includes software developed for project
26  * Krysalis (http://www.krysalis.org/)."
27  * Alternately, this acknowledgment may appear in the software itself,
28  * if and wherever such third-party acknowledgments normally appear.
29  *
30  * 4. The names "Krysalis" and "Nicola Ken Barozzi" and
31  * "Krysalis Barcode" must not be used to endorse or promote products
32  * derived from this software without prior written permission. For
33  * written permission, please contact nicolaken@krysalis.org.
34  *
35  * 5. Products derived from this software may not be called "Krysalis",
36  * "Krysalis Barcode", nor may "Krysalis" appear in their name,
37  * without prior written permission of Nicola Ken Barozzi.
38  *
39  * 6. This software may contain voluntary contributions made by many
40  * individuals, who decided to donate the code to this project in
41  * respect of this licence, and was originally created by
42  * Jeremias Maerki <jeremias@maerki.org>.
43  *
44  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
45  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
46  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
47  * DISCLAIMED. IN NO EVENT SHALL THE KRYSALIS PROJECT OR
48  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
49  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
50  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
51  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
53  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
55  * SUCH DAMAGE.
56  * ====================================================================
57  */

58 package org.krysalis.barcode.output.bitmap;
59
60 import java.awt.image.BufferedImage JavaDoc;
61 import java.io.IOException JavaDoc;
62 import java.io.OutputStream JavaDoc;
63
64 import org.krysalis.barcode.BarcodeDimension;
65 import org.krysalis.barcode.output.AbstractCanvasProvider;
66 import org.krysalis.barcode.output.java2d.Java2DCanvasProvider;
67
68 /**
69  * CanvasProvider implementation for generating bitmaps. This class wraps
70  * Java2DCanvasProvider to do the actual rendering.
71  *
72  * @author Jeremias Maerki
73  */

74 public class BitmapCanvasProvider extends AbstractCanvasProvider {
75
76     private OutputStream JavaDoc out;
77     private String JavaDoc mime;
78     private int resolution;
79     private int imageType;
80     private boolean antiAlias;
81     private BufferedImage JavaDoc image;
82     private Java2DCanvasProvider delegate;
83
84     /**
85      * Creates a new BitmapCanvasProvider.
86      * @param out OutputStream to write to
87      * @param mime MIME type of the desired output format (ex. "image/png")
88      * @param resolution the desired image resolution (dots per inch)
89      * @param imageType the desired image type (Values: BufferedImage.TYPE_*)
90      * @param antiAlias true if anti-aliasing should be enabled
91      */

92     public BitmapCanvasProvider(OutputStream JavaDoc out, String JavaDoc mime,
93                     int resolution, int imageType, boolean antiAlias) {
94         super();
95         this.out = out;
96         this.mime = mime;
97         this.resolution = resolution;
98         this.imageType = imageType;
99         this.antiAlias = antiAlias;
100     }
101
102     /**
103      * Creates a new BitmapCanvasProvider.
104      * @param resolution the desired image resolution (dots per inch)
105      * @param imageType the desired image type (Values: BufferedImage.TYPE_*)
106      * @param antiAlias true if anti-aliasing should be enabled
107      */

108     public BitmapCanvasProvider(int resolution, int imageType, boolean antiAlias) {
109         this(null, null, resolution, imageType, antiAlias);
110     }
111
112     /**
113      * Call this method to finish any pending operations after the
114      * BarcodeGenerator has finished its work.
115      * @throws IOException in case of an I/O problem
116      */

117     public void finish() throws IOException JavaDoc {
118         this.image.flush();
119         if (this.out != null) {
120             final BitmapEncoder encoder = BitmapEncoderRegistry.getInstance(mime);
121             encoder.encode(this.image, out, mime, resolution);
122         }
123     }
124     
125     /**
126      * Returns the buffered image that is used to paint the barcode on.
127      * @return the image.
128      */

129     public BufferedImage JavaDoc getBufferedImage() {
130         return this.image;
131     }
132
133     /** {@inheritDoc} */
134     public void establishDimensions(BarcodeDimension dim) {
135         super.establishDimensions(dim);
136         this.image = BitmapBuilder.prepareImage(dim, this.resolution, this.imageType);
137         this.delegate = new Java2DCanvasProvider(
138             BitmapBuilder.prepareGraphics2D(this.image, dim, this.antiAlias));
139         this.delegate.establishDimensions(dim);
140     }
141
142     /** {@inheritDoc} */
143     public void deviceFillRect(double x, double y, double w, double h) {
144         this.delegate.deviceFillRect(x, y, w, h);
145     }
146
147     /** {@inheritDoc} */
148     public void deviceJustifiedText(String JavaDoc text,
149             double x1, double x2, double y1,
150             String JavaDoc fontName, double fontSize) {
151         this.delegate.deviceJustifiedText(text, x1, x2, y1, fontName, fontSize);
152     }
153
154     /** {@inheritDoc} */
155     public void deviceCenteredText(String JavaDoc text,
156             double x1, double x2, double y1,
157             String JavaDoc fontName, double fontSize) {
158         this.delegate.deviceCenteredText(text, x1, x2, y1, fontName, fontSize);
159     }
160
161 }
162
Popular Tags