KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > krysalis > barcode > output > svg > AbstractSVGGeneratingCanvasProvider


1 /*
2  * $Id: AbstractSVGGeneratingCanvasProvider.java,v 1.4 2003/10/22 16:01:08 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.svg;
59
60 import org.krysalis.barcode.output.AbstractXMLGeneratingCanvasProvider;
61 import org.krysalis.barcode.output.BarcodeCanvasSetupException;
62
63 /**
64  * Abstract base class for implementations that generate SVG.
65  *
66  * @author Jeremias Maerki
67  */

68 public abstract class AbstractSVGGeneratingCanvasProvider
69     extends AbstractXMLGeneratingCanvasProvider {
70
71     /** the SVG namespace: http://www.w3.org/2000/svg */
72     public static final String JavaDoc SVG_NAMESPACE = "http://www.w3.org/2000/svg";
73
74     private boolean useNamespace = true;
75     private String JavaDoc prefix = "";
76     
77     /**
78      * Creates a new AbstractSVGCanvasProvider.
79      * @param useNamespace Controls whether namespaces should be used
80      * @param namespacePrefix the namespace prefix to use, null for no prefix
81      * @throws BarcodeCanvasSetupException if setting up the provider fails
82      */

83     public AbstractSVGGeneratingCanvasProvider(boolean useNamespace, String JavaDoc namespacePrefix)
84                 throws BarcodeCanvasSetupException {
85         if (!useNamespace && namespacePrefix != null)
86             throw new IllegalArgumentException JavaDoc("No prefix allow when namespaces are enabled");
87         this.useNamespace = true;
88         this.prefix = namespacePrefix;
89     }
90     
91     /**
92      * Creates a new AbstractSVGCanvasProvider with namespaces enabled.
93      * @param namespacePrefix the namespace prefix to use, null for no prefix
94      * @throws BarcodeCanvasSetupException if setting up the provider fails
95      */

96     public AbstractSVGGeneratingCanvasProvider(String JavaDoc namespacePrefix)
97                 throws BarcodeCanvasSetupException {
98         this(true, namespacePrefix);
99     }
100
101     /**
102      * Creates a new AbstractSVGCanvasProvider.
103      * @param useNamespace Controls whether namespaces should be used
104      * @throws BarcodeCanvasSetupException if setting up the provider fails
105      */

106     public AbstractSVGGeneratingCanvasProvider(boolean useNamespace)
107                 throws BarcodeCanvasSetupException {
108         this(useNamespace, null);
109     }
110
111     /**
112      * Creates a new AbstractSVGCanvasProvider with default settings (with
113      * namespaces, but without namespace prefix).
114      * @throws BarcodeCanvasSetupException if setting up the provider fails
115      */

116     public AbstractSVGGeneratingCanvasProvider()
117                 throws BarcodeCanvasSetupException {
118         this(true, null);
119     }
120
121     /**
122      * Indicates whether namespaces are enabled.
123      * @return true if namespaces are enabled
124      */

125     public boolean isNamespaceEnabled() {
126         return this.useNamespace;
127     }
128     
129     /**
130      * Returns the namespace prefix
131      * @return the namespace prefix (may be null)
132      */

133     public String JavaDoc getNamespacePrefix() {
134         return this.prefix;
135     }
136     
137     /**
138      * Constructs a fully qualified element name based on the namespace
139      * settings.
140      * @param localName the local name
141      * @return the fully qualified name
142      */

143     protected String JavaDoc getQualifiedName(String JavaDoc localName) {
144         if (prefix == null || "".equals(prefix)) {
145             return localName;
146         } else {
147             return prefix + ':' + localName;
148         }
149     }
150
151 }
152
Popular Tags