aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache/fop/util
diff options
context:
space:
mode:
authorJeremias Maerki <jeremias@apache.org>2006-04-28 08:51:27 +0000
committerJeremias Maerki <jeremias@apache.org>2006-04-28 08:51:27 +0000
commite15428a90dd3e0298e30fa84aa318f527b3bbec4 (patch)
tree8ef3034ab4c1b76e331b4a682e17b7c946af9104 /src/java/org/apache/fop/util
parente78675dcc1066e879d99ab030bd2f5731141ce6c (diff)
downloadxmlgraphics-fop-e15428a90dd3e0298e30fa84aa318f527b3bbec4.tar.gz
xmlgraphics-fop-e15428a90dd3e0298e30fa84aa318f527b3bbec4.zip
Introduced "ignored namespaces" list on FopFactory. Attributes from ignored namespaces are not complained about. Not done for elements, yet.
Added support for foreign attributes (attributes in a non-FO namespace) on formatting objects, for example to specify additional (proprietary) hints for rendering i-f-o and e-g. First usage example is PCLRendererContext which the PCLGraphics2DAdapter uses to decide whether to paint natively using HP GL/2 or using a bitmap. PCL Renderer revived: Basic framework constructed based on the old one. Still incomplete (no border painting, incomplete Graphics2D implementation, problems with reference orientation, no kerning etc.). The PCL Renderer implements PCL5 (monochrome) and HP GL/2. Work in progress! Added UnitConv helper class which could also be useful elsewhere (Could be a candidate for Commons). git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@397806 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache/fop/util')
-rw-r--r--src/java/org/apache/fop/util/QName.java113
-rw-r--r--src/java/org/apache/fop/util/UnitConv.java118
2 files changed, 231 insertions, 0 deletions
diff --git a/src/java/org/apache/fop/util/QName.java b/src/java/org/apache/fop/util/QName.java
new file mode 100644
index 000000000..ccfe05638
--- /dev/null
+++ b/src/java/org/apache/fop/util/QName.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* $Id$ */
+
+package org.apache.fop.util;
+
+import java.io.Serializable;
+
+/**
+ * Represents a qualified name of an XML element or an XML attribute.
+ * <p>
+ * Note: This class allows to carry a namespace prefix but it is not used in the equals() and
+ * hashCode() methods.
+ */
+public class QName implements Serializable {
+
+ private static final long serialVersionUID = -5225376740044770690L;
+
+ private String namespaceURI;
+ private String localName;
+ private String prefix;
+ private int hashCode;
+
+ /**
+ * Main constructor.
+ * @param namespaceURI the namespace URI
+ * @param prefix the namespace prefix, may be null
+ * @param localName the local name
+ */
+ public QName(String namespaceURI, String prefix, String localName) {
+ if (localName == null) {
+ throw new NullPointerException("Parameter localName must not be null");
+ }
+ if (localName.length() == 0) {
+ throw new IllegalArgumentException("Parameter localName must not be empty");
+ }
+ this.namespaceURI = namespaceURI;
+ this.prefix = prefix;
+ this.localName = localName;
+ this.hashCode = toHashString().hashCode();
+ }
+
+ /** @return the namespace URI */
+ public String getNamespaceURI() {
+ return this.namespaceURI;
+ }
+
+ /** @return the namespace prefix */
+ public String getPrefix() {
+ return this.prefix;
+ }
+
+ /** @return the local name */
+ public String getLocalName() {
+ return this.localName;
+ }
+
+ /** @return the fully qualified name */
+ public String getQName() {
+ return getPrefix() != null ? getPrefix() + ':' + getLocalName() : getLocalName();
+ }
+
+ /** @see java.lang.Object#hashCode() */
+ public int hashCode() {
+ return this.hashCode;
+ }
+
+ /** @see java.lang.Object#equals(java.lang.Object) */
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ } else if (obj == this) {
+ return true;
+ } else {
+ if (obj instanceof QName) {
+ QName other = (QName)obj;
+ if ((getNamespaceURI() == null && other.getNamespaceURI() == null)
+ || getNamespaceURI().equals(other.getNamespaceURI())) {
+ return getLocalName().equals(other.getLocalName());
+ }
+ }
+ }
+ return false;
+ }
+
+ /** @see java.lang.Object#toString() */
+ public String toString() {
+ return prefix != null
+ ? (prefix + ":" + localName)
+ : toHashString();
+ }
+
+ private String toHashString() {
+ return (namespaceURI != null
+ ? ("{" + namespaceURI + "}" + localName)
+ : localName);
+ }
+
+}
diff --git a/src/java/org/apache/fop/util/UnitConv.java b/src/java/org/apache/fop/util/UnitConv.java
new file mode 100644
index 000000000..0c16cdc3f
--- /dev/null
+++ b/src/java/org/apache/fop/util/UnitConv.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* $Id: FixedLength.java 279656 2005-09-08 22:06:48Z pietsch $ */
+
+package org.apache.fop.util;
+
+/**
+ * Utility class for unit conversions.
+ */
+public final class UnitConv {
+
+ /** conversion factory from millimeters to inches. */
+ public static final float IN2MM = 25.4f;
+
+ /** conversion factory from centimeters to inches. */
+ public static final float IN2CM = 2.54f;
+
+ /** conversion factory from inches to points. */
+ public static final int IN2PT = 72;
+
+ /**
+ * Converts millimeters (mm) to points (pt)
+ * @param mm the value in mm
+ * @return the value in pt
+ */
+ public static double mm2pt(double mm) {
+ return mm * IN2PT / IN2MM;
+ }
+
+ /**
+ * Converts millimeters (mm) to millipoints (mpt)
+ * @param mm the value in mm
+ * @return the value in mpt
+ */
+ public static double mm2mpt(double mm) {
+ return mm * 1000 * IN2PT / IN2MM;
+ }
+
+ /**
+ * Converts points (pt) to millimeters (mm)
+ * @param pt the value in pt
+ * @return the value in mm
+ */
+ public static double pt2mm(double pt) {
+ return pt * IN2MM / IN2PT;
+ }
+
+ /**
+ * Converts millimeters (mm) to inches (in)
+ * @param mm the value in mm
+ * @return the value in inches
+ */
+ public static double mm2in(double mm) {
+ return mm / IN2MM;
+ }
+
+ /**
+ * Converts inches (in) to millimeters (mm)
+ * @param in the value in inches
+ * @return the value in mm
+ */
+ public static double in2mm(double in) {
+ return in * IN2MM;
+ }
+
+ /**
+ * Converts inches (in) to millipoints (mpt)
+ * @param in the value in inches
+ * @return the value in mpt
+ */
+ public static double in2mpt(double in) {
+ return in * IN2PT * 1000;
+ }
+
+ /**
+ * Converts millipoints (mpt) to inches (in)
+ * @param mpt the value in mpt
+ * @return the value in inches
+ */
+ public static double mpt2in(double mpt) {
+ return mpt / IN2PT / 1000;
+ }
+
+ /**
+ * Converts millimeters (mm) to pixels (px)
+ * @param mm the value in mm
+ * @param resolution the resolution in dpi (dots per inch)
+ * @return the value in pixels
+ */
+ public static int mm2px(double mm, int resolution) {
+ return (int)Math.round(mm2in(mm) * resolution);
+ }
+
+ /**
+ * Converts millipoints (mpt) to pixels (px)
+ * @param mpt the value in mpt
+ * @param resolution the resolution in dpi (dots per inch)
+ * @return the value in pixels
+ */
+ public static int mpt2px(double mpt, int resolution) {
+ return (int)Math.round(mpt2in(mpt) * resolution);
+ }
+
+}