aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache/fop/render/ps/PSRendererConfig.java
diff options
context:
space:
mode:
authorMehdi Houshmand <mehdi@apache.org>2012-05-31 08:33:36 +0000
committerMehdi Houshmand <mehdi@apache.org>2012-05-31 08:33:36 +0000
commiteccd73c523bdda6a0634e9849141492f7b14ad63 (patch)
tree72f06ec1481249bdd639083ee646b3c3fd4be7a4 /src/java/org/apache/fop/render/ps/PSRendererConfig.java
parent05761b1df54ada8a762bfa879dc0e3455d33d828 (diff)
downloadxmlgraphics-fop-eccd73c523bdda6a0634e9849141492f7b14ad63.tar.gz
xmlgraphics-fop-eccd73c523bdda6a0634e9849141492f7b14ad63.zip
Started unifying URI resolution mechanism, redesigned configuration system and created flexible config testing
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/Temp_URI_Unification@1344594 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache/fop/render/ps/PSRendererConfig.java')
-rw-r--r--src/java/org/apache/fop/render/ps/PSRendererConfig.java141
1 files changed, 141 insertions, 0 deletions
diff --git a/src/java/org/apache/fop/render/ps/PSRendererConfig.java b/src/java/org/apache/fop/render/ps/PSRendererConfig.java
new file mode 100644
index 000000000..f023b4647
--- /dev/null
+++ b/src/java/org/apache/fop/render/ps/PSRendererConfig.java
@@ -0,0 +1,141 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.render.ps;
+
+import java.util.EnumMap;
+import java.util.Locale;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.fop.apps.FOPException;
+import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.apps.MimeConstants;
+import org.apache.fop.fonts.DefaultFontConfig;
+import org.apache.fop.fonts.DefaultFontConfig.DefaultFontConfigParser;
+import org.apache.fop.render.RendererConfig;
+import org.apache.fop.util.LogUtil;
+
+import static org.apache.fop.render.ps.PSRendererConfigurationOptions.AUTO_ROTATE_LANDSCAPE;
+import static org.apache.fop.render.ps.PSRendererConfigurationOptions.DSC_COMPLIANT;
+import static org.apache.fop.render.ps.PSRendererConfigurationOptions.LANGUAGE_LEVEL;
+import static org.apache.fop.render.ps.PSRendererConfigurationOptions.OPTIMIZE_RESOURCES;
+import static org.apache.fop.render.ps.PSRendererConfigurationOptions.RENDERING_MODE;
+import static org.apache.fop.render.ps.PSRendererConfigurationOptions.SAFE_SET_PAGE_DEVICE;
+
+public final class PSRendererConfig implements RendererConfig {
+
+ private final EnumMap<PSRendererConfigurationOptions, Object> params
+ = new EnumMap<PSRendererConfigurationOptions, Object>(PSRendererConfigurationOptions.class);
+
+ private final DefaultFontConfig fontConfig;
+
+ private PSRendererConfig(DefaultFontConfig fontConfig) {
+ this.fontConfig = fontConfig;
+ }
+
+ public DefaultFontConfig getFontInfoConfig() {
+ return fontConfig;
+ }
+
+ public Boolean isAutoRotateLandscape() {
+ return (Boolean) params.get(AUTO_ROTATE_LANDSCAPE);
+ }
+
+ public Integer getLanguageLevel() {
+ return (Integer) params.get(LANGUAGE_LEVEL);
+ }
+
+ public Boolean isOptimizeResources() {
+ return (Boolean) params.get(OPTIMIZE_RESOURCES);
+ }
+
+ public Boolean isSafeSetPageDevice() {
+ return (Boolean) params.get(SAFE_SET_PAGE_DEVICE);
+ }
+
+ public Boolean isDscComplianceEnabled() {
+ return (Boolean) params.get(DSC_COMPLIANT);
+ }
+
+ public PSRenderingMode getRenderingMode() {
+ return (PSRenderingMode) params.get(RENDERING_MODE);
+ }
+
+ public static final class PSRendererConfigParser implements RendererConfigParser {
+
+ private static final Log LOG = LogFactory.getLog(PSRendererConfigParser.class);
+
+ public PSRendererConfig build(FOUserAgent userAgent, Configuration cfg) throws FOPException {
+ PSRendererConfig config = null;
+ try {
+ config = new ParserHelper(cfg, userAgent).config;
+ } catch (ConfigurationException e) {
+ LogUtil.handleException(LOG, e, false);
+ }
+ return config;
+ }
+
+ public String getMimeType() {
+ return MimeConstants.MIME_POSTSCRIPT;
+ }
+ }
+
+ private static final class ParserHelper {
+
+ private PSRendererConfig config;
+
+ private ParserHelper(Configuration cfg, FOUserAgent userAgent)
+ throws ConfigurationException, FOPException {
+ config = new PSRendererConfig(new DefaultFontConfigParser().parse(cfg,
+ userAgent.validateStrictly()));
+ if (cfg != null) {
+ setBoolConfigParam(cfg, AUTO_ROTATE_LANDSCAPE);
+ setConfigParameter(LANGUAGE_LEVEL,
+ cfg.getChild(LANGUAGE_LEVEL.getName())
+ .getValueAsInteger((Integer) LANGUAGE_LEVEL.getDefaultValue()));
+ setBoolConfigParam(cfg, OPTIMIZE_RESOURCES);
+ setBoolConfigParam(cfg, SAFE_SET_PAGE_DEVICE);
+ setBoolConfigParam(cfg, DSC_COMPLIANT);
+ Configuration child = cfg.getChild("rendering");
+ if (child != null) {
+ config.params.put(RENDERING_MODE,
+ PSRenderingMode.valueOf(child.getValue(
+ RENDERING_MODE.getDefaultValue().toString())
+ .toUpperCase(Locale.ENGLISH)));
+ }
+ }
+ }
+
+ private void setConfigParameter(PSRendererConfigurationOptions option,
+ Object value) {
+ config.params.put(option, value != null ? value : option.getDefaultValue());
+ }
+
+ private void setBoolConfigParam(Configuration cfg, PSRendererConfigurationOptions option) {
+ setConfigParameter(option, cfg.getChild(
+ option.getName()).getValueAsBoolean((Boolean) option.getDefaultValue()));
+ }
+
+ }
+
+}