You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by me...@apache.org on 2012/07/03 11:47:25 UTC

svn commit: r1356646 [6/12] - in /xmlgraphics/fop/trunk: ./ examples/embedding/java/embedding/ examples/embedding/java/embedding/atxml/ examples/embedding/java/embedding/events/ examples/embedding/java/embedding/intermediate/ src/java/org/apache/fop/af...

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPRendererConfigurator.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPRendererConfigurator.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPRendererConfigurator.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPRendererConfigurator.java Tue Jul  3 09:46:41 2012
@@ -19,42 +19,24 @@
 
 package org.apache.fop.render.afp;
 
-import java.io.File;
 import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.List;
 
-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.afp.AFPConstants;
 import org.apache.fop.afp.AFPEventProducer;
-import org.apache.fop.afp.AFPResourceLevel;
 import org.apache.fop.afp.AFPResourceLevelDefaults;
-import org.apache.fop.afp.fonts.AFPFont;
 import org.apache.fop.afp.fonts.AFPFontCollection;
 import org.apache.fop.afp.fonts.AFPFontInfo;
-import org.apache.fop.afp.fonts.CharacterSet;
-import org.apache.fop.afp.fonts.CharacterSetBuilder;
-import org.apache.fop.afp.fonts.CharacterSetType;
-import org.apache.fop.afp.fonts.DoubleByteFont;
-import org.apache.fop.afp.fonts.OutlineFont;
-import org.apache.fop.afp.fonts.RasterFont;
-import org.apache.fop.afp.util.DefaultFOPResourceAccessor;
-import org.apache.fop.afp.util.ResourceAccessor;
 import org.apache.fop.apps.FOPException;
 import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.apps.io.InternalResourceResolver;
 import org.apache.fop.fonts.FontCollection;
-import org.apache.fop.fonts.FontInfo;
-import org.apache.fop.fonts.FontManager;
-import org.apache.fop.fonts.FontManagerConfigurator;
-import org.apache.fop.fonts.FontTriplet;
-import org.apache.fop.fonts.FontUtil;
-import org.apache.fop.fonts.Typeface;
 import org.apache.fop.render.PrintRendererConfigurator;
-import org.apache.fop.render.Renderer;
+import org.apache.fop.render.RendererConfig.RendererConfigParser;
+import org.apache.fop.render.afp.AFPFontConfig.AFPFontConfigData;
 import org.apache.fop.render.intermediate.IFDocumentHandler;
 import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator;
 import org.apache.fop.util.LogUtil;
@@ -62,8 +44,9 @@ import org.apache.fop.util.LogUtil;
 /**
  * AFP Renderer configurator
  */
-public class AFPRendererConfigurator extends PrintRendererConfigurator
-        implements IFDocumentHandlerConfigurator {
+public class AFPRendererConfigurator extends PrintRendererConfigurator implements
+        IFDocumentHandlerConfigurator {
+    private static Log LOG = LogFactory.getLog(AFPRendererConfigurator.class);
 
     private final AFPEventProducer eventProducer;
 
@@ -72,470 +55,104 @@ public class AFPRendererConfigurator ext
      *
      * @param userAgent user agent
      */
-    public AFPRendererConfigurator(FOUserAgent userAgent) {
-        super(userAgent);
+    public AFPRendererConfigurator(FOUserAgent userAgent, RendererConfigParser rendererConfigParser) {
+        super(userAgent, rendererConfigParser);
         eventProducer = AFPEventProducer.Provider.get(userAgent.getEventBroadcaster());
     }
 
-    private AFPFontInfo buildFont(Configuration fontCfg, String fontPath)
-    throws ConfigurationException {
-        FontManager fontManager = this.userAgent.getFactory().getFontManager();
-
-        Configuration[] triple = fontCfg.getChildren("font-triplet");
-        List<FontTriplet> tripletList = new ArrayList<FontTriplet>();
-        if (triple.length == 0) {
-            eventProducer.fontConfigMissing(this, "<font-triplet...", fontCfg.getLocation());
-            return null;
-        }
-        for (Configuration config : triple) {
-            int weight = FontUtil.parseCSS2FontWeight(config.getAttribute("weight"));
-            FontTriplet triplet = new FontTriplet(config.getAttribute("name"),
-                    config.getAttribute("style"),
-                    weight);
-            tripletList.add(triplet);
-        }
-
-        //build the fonts
-        Configuration[] config = fontCfg.getChildren("afp-font");
-        if (config.length == 0) {
-            eventProducer.fontConfigMissing(this, "<afp-font...", fontCfg.getLocation());
-            return null;
-        }
-        Configuration afpFontCfg = config[0];
-
-        URI baseURI = null;
-        String uri = afpFontCfg.getAttribute("base-uri", fontPath);
-        if (uri == null) {
-            //Fallback for old attribute which only supports local filenames
-            String path = afpFontCfg.getAttribute("path", fontPath);
-            if (path != null) {
-                File f = new File(path);
-                baseURI = f.toURI();
-            }
-        } else {
-            try {
-                baseURI = new URI(uri);
-            } catch (URISyntaxException e) {
-                eventProducer.invalidConfiguration(this, e);
-                return null;
-            }
-        }
-        ResourceAccessor accessor = new DefaultFOPResourceAccessor(
-                this.userAgent,
-                fontManager.getFontBaseURL(),
-                baseURI);
-
-        AFPFont font = null;
-        try {
-            String type = afpFontCfg.getAttribute("type");
-            if (type == null) {
-                eventProducer.fontConfigMissing(this, "type attribute", fontCfg.getLocation());
-                return null;
-            }
-            String codepage = afpFontCfg.getAttribute("codepage");
-            if (codepage == null) {
-                eventProducer.fontConfigMissing(this, "codepage attribute",
-                        fontCfg.getLocation());
-                return null;
-            }
-            String encoding = afpFontCfg.getAttribute("encoding");
-            if (encoding == null) {
-                eventProducer.fontConfigMissing(this, "encoding attribute",
-                        fontCfg.getLocation());
-                return null;
-            }
 
-            font = fontFromType(type, codepage, encoding, accessor, afpFontCfg);
-        } catch (ConfigurationException ce) {
-            eventProducer.invalidConfiguration(this, ce);
-        } catch (IOException ioe) {
-            eventProducer.invalidConfiguration(this, ioe);
-        } catch (IllegalArgumentException iae) {
-            eventProducer.invalidConfiguration(this, iae);
+    @Override
+    public void configure(IFDocumentHandler documentHandler) throws FOPException {
+        AFPRendererConfig config = (AFPRendererConfig) getRendererConfig(documentHandler);
+        if (config != null) {
+            AFPDocumentHandler afpDocumentHandler = (AFPDocumentHandler) documentHandler;
+            configure(afpDocumentHandler, config);
         }
-
-        return font != null ? new AFPFontInfo(font, tripletList) : null;
     }
 
-
-    /**
-     * Create the AFPFont based on type and type-dependent configuration.
-     *
-     * @param type font type e.g. 'raster', 'outline'
-     * @param codepage codepage file
-     * @param encoding character encoding e.g. 'Cp500', 'UnicodeBigUnmarked'
-     * @param accessor
-     * @param afpFontCfg
-     * @return the created AFPFont
-     * @throws ConfigurationException
-     */
-    private AFPFont fontFromType(String type, String codepage, String encoding,
-            ResourceAccessor accessor, Configuration afpFontCfg) throws ConfigurationException,
-            IOException {
-
-        if ("raster".equalsIgnoreCase(type)) {
-
-            String name = afpFontCfg.getAttribute("name", "Unknown");
-
-            // Create a new font object
-            RasterFont font = new RasterFont(name);
-
-            Configuration[] rasters = afpFontCfg.getChildren("afp-raster-font");
-            if (rasters.length == 0) {
-                eventProducer.fontConfigMissing(this, "<afp-raster-font...",
-                        afpFontCfg.getLocation());
-                return null;
-            }
-            for (int j = 0; j < rasters.length; j++) {
-                Configuration rasterCfg = rasters[j];
-
-                String characterset = rasterCfg.getAttribute("characterset");
-
-                if (characterset == null) {
-                    eventProducer.fontConfigMissing(this, "characterset attribute",
-                            afpFontCfg.getLocation());
-                    return null;
-                }
-                float size = rasterCfg.getAttributeAsFloat("size");
-                int sizeMpt = (int) (size * 1000);
-                String base14 = rasterCfg.getAttribute("base14-font", null);
-
-                if (base14 != null) {
-                    try {
-                        Class<? extends Typeface> clazz = Class.forName(
-                                "org.apache.fop.fonts.base14." + base14).asSubclass(Typeface.class);
-                        try {
-                            Typeface tf = clazz.newInstance();
-                            font.addCharacterSet(sizeMpt,
-                                    CharacterSetBuilder.getSingleByteInstance()
-                                                       .build(characterset, codepage, encoding, tf,
-                                                               eventProducer));
-                        } catch (Exception ie) {
-                            String msg = "The base 14 font class " + clazz.getName()
-                            + " could not be instantiated";
-                            log.error(msg);
-                        }
-                    } catch (ClassNotFoundException cnfe) {
-                        String msg = "The base 14 font class for " + characterset
-                        + " could not be found";
-                        log.error(msg);
-                    }
-                } else {
-                    font.addCharacterSet(sizeMpt, CharacterSetBuilder.getSingleByteInstance()
-                                .buildSBCS(characterset, codepage, encoding, accessor, eventProducer));
-                }
-            }
-            return font;
-
-        } else if ("outline".equalsIgnoreCase(type)) {
-            String characterset = afpFontCfg.getAttribute("characterset");
-            if (characterset == null) {
-                eventProducer.fontConfigMissing(this, "characterset attribute",
-                        afpFontCfg.getLocation());
-                return null;
-            }
-            String name = afpFontCfg.getAttribute("name", characterset);
-            CharacterSet characterSet = null;
-            String base14 = afpFontCfg.getAttribute("base14-font", null);
-            if (base14 != null) {
-                try {
-                    Class<? extends Typeface> clazz = Class.forName("org.apache.fop.fonts.base14."
-                            + base14).asSubclass(Typeface.class);
-                    try {
-                        Typeface tf = clazz.newInstance();
-                        characterSet = CharacterSetBuilder.getSingleByteInstance()
-                                        .build(characterset, codepage, encoding, tf, eventProducer);
-                    } catch (Exception ie) {
-                        String msg = "The base 14 font class " + clazz.getName()
-                                + " could not be instantiated";
-                        log.error(msg);
-                    }
-                } catch (ClassNotFoundException cnfe) {
-                    String msg = "The base 14 font class for " + characterset
-                            + " could not be found";
-                    log.error(msg);
-                }
+    private void configure(AFPDocumentHandler documentHandler, AFPRendererConfig config) {
+        Boolean colorImages = config.isColorImages();
+        if (colorImages != null) {
+            documentHandler.setColorImages(colorImages);
+            if (colorImages) {
+                documentHandler.setCMYKImagesSupported(config.isCmykImagesSupported());
             } else {
-                characterSet = CharacterSetBuilder.getSingleByteInstance().buildSBCS(
-                        characterset, codepage, encoding, accessor, eventProducer);
+                documentHandler.setBitsPerPixel(config.getBitsPerPixel());
             }
-            // Return new font object
-            return new OutlineFont(name, characterSet);
-
-        } else if ("CIDKeyed".equalsIgnoreCase(type)) {
-            String characterset = afpFontCfg.getAttribute("characterset");
-            if (characterset == null) {
-                eventProducer.fontConfigMissing(this, "characterset attribute",
-                        afpFontCfg.getLocation());
-                return null;
-            }
-            String name = afpFontCfg.getAttribute("name", characterset);
-            CharacterSet characterSet = null;
-            CharacterSetType charsetType = afpFontCfg.getAttributeAsBoolean("ebcdic-dbcs", false)
-                    ? CharacterSetType.DOUBLE_BYTE_LINE_DATA : CharacterSetType.DOUBLE_BYTE;
-            characterSet = CharacterSetBuilder.getDoubleByteInstance().buildDBCS(characterset,
-                    codepage, encoding, charsetType, accessor, eventProducer);
-
-            // Create a new font object
-            DoubleByteFont font = new DoubleByteFont(name, characterSet);
-            return font;
-
-        } else {
-            log.error("No or incorrect type attribute: " + type);
         }
-
-        return null;
-    }
-
-    /**
-     * Builds a list of AFPFontInfo objects for use with the setup() method.
-     *
-     * @param cfg Configuration object
-     * @param eventProducer for AFP font related events
-     * @return List the newly created list of fonts
-     * @throws ConfigurationException if something's wrong with the config data
-     */
-    private List<AFPFontInfo> buildFontListFromConfiguration(Configuration cfg,
-            AFPEventProducer eventProducer) throws FOPException, ConfigurationException {
-
-        Configuration fonts = cfg.getChild("fonts");
-        FontManager fontManager = this.userAgent.getFactory().getFontManager();
-
-        // General matcher
-        FontTriplet.Matcher referencedFontsMatcher = fontManager.getReferencedFontsMatcher();
-        // Renderer-specific matcher
-        FontTriplet.Matcher localMatcher = null;
-
-        // Renderer-specific referenced fonts
-        Configuration referencedFontsCfg = fonts.getChild("referenced-fonts", false);
-        if (referencedFontsCfg != null) {
-            localMatcher = FontManagerConfigurator.createFontsMatcher(
-                    referencedFontsCfg, this.userAgent.getFactory().validateUserConfigStrictly());
-        }
-
-        List<AFPFontInfo> fontList = new java.util.ArrayList<AFPFontInfo>();
-        Configuration[] font = fonts.getChildren("font");
-        final String fontPath = null;
-        for (int i = 0; i < font.length; i++) {
-            AFPFontInfo afi = buildFont(font[i], fontPath);
-            if (afi != null) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Adding font " + afi.getAFPFont().getFontName());
-                }
-                List<FontTriplet> fontTriplets = afi.getFontTriplets();
-                for (int j = 0; j < fontTriplets.size(); ++j) {
-                    FontTriplet triplet = fontTriplets.get(j);
-                    if (log.isDebugEnabled()) {
-                        log.debug("  Font triplet "
-                                + triplet.getName() + ", "
-                                + triplet.getStyle() + ", "
-                                + triplet.getWeight());
-                    }
-
-                    if ((referencedFontsMatcher != null && referencedFontsMatcher.matches(triplet))
-                            || (localMatcher != null && localMatcher.matches(triplet))) {
-                        afi.getAFPFont().setEmbeddable(false);
-                        break;
-                    }
-                }
-
-                fontList.add(afi);
-            }
+        if (config.getDitheringQuality() != null) {
+            documentHandler.setDitheringQuality(config.getDitheringQuality());
         }
-        return fontList;
-    }
-
-    /** images are converted to grayscale bitmapped IOCA */
-    private static final String IMAGES_MODE_GRAYSCALE = "b+w";
-
-    /** images are converted to color bitmapped IOCA */
-    private static final String IMAGES_MODE_COLOR = "color";
-
-    /**
-     * Throws an UnsupportedOperationException.
-     *
-     * @param renderer not used
-     */
-    @Override
-    public void configure(Renderer renderer) {
-        throw new UnsupportedOperationException();
-    }
-
-    private void configure(AFPCustomizable customizable, Configuration cfg) throws FOPException {
-
-        // image information
-        Configuration imagesCfg = cfg.getChild("images");
-
-        // default to grayscale images
-        String imagesMode = imagesCfg.getAttribute("mode", IMAGES_MODE_GRAYSCALE);
-        if (IMAGES_MODE_COLOR.equals(imagesMode)) {
-            customizable.setColorImages(true);
-
-            boolean cmyk = imagesCfg.getAttributeAsBoolean("cmyk", false);
-            customizable.setCMYKImagesSupported(cmyk);
-        } else {
-            customizable.setColorImages(false);
-            // default to 8 bits per pixel
-            int bitsPerPixel = imagesCfg.getAttributeAsInteger("bits-per-pixel", 8);
-            customizable.setBitsPerPixel(bitsPerPixel);
-        }
-
-        String dithering = imagesCfg.getAttribute("dithering-quality", "medium");
-        float dq = 0.5f;
-        if (dithering.startsWith("min")) {
-            dq = 0.0f;
-        } else if (dithering.startsWith("max")) {
-            dq = 1.0f;
-        } else {
-            try {
-                dq = Float.parseFloat(dithering);
-            } catch (NumberFormatException nfe) {
-                //ignore and leave the default above
-            }
+        if (config.isNativeImagesSupported() != null) {
+            documentHandler.setNativeImagesSupported(config.isNativeImagesSupported());
         }
-        customizable.setDitheringQuality(dq);
-
-        // native image support
-        boolean nativeImageSupport = imagesCfg.getAttributeAsBoolean("native", false);
-        customizable.setNativeImagesSupported(nativeImageSupport);
-
-        Configuration jpegConfig = imagesCfg.getChild("jpeg");
-        boolean allowEmbedding = false;
-        float ieq = 1.0f;
-        if (jpegConfig != null) {
-            allowEmbedding = jpegConfig.getAttributeAsBoolean("allow-embedding", false);
-            String bitmapEncodingQuality = jpegConfig.getAttribute("bitmap-encoding-quality", null);
-
-            if (bitmapEncodingQuality != null) {
-                try {
-                    ieq = Float.parseFloat(bitmapEncodingQuality);
-                } catch (NumberFormatException nfe) {
-                    //ignore and leave the default above
-                }
-            }
+        if (config.getShadingMode() != null) {
+            documentHandler.setShadingMode(config.getShadingMode());
         }
-        customizable.canEmbedJpeg(allowEmbedding);
-        customizable.setBitmapEncodingQuality(ieq);
-
-        //FS11 and FS45 page segment wrapping
-        boolean pSeg = imagesCfg.getAttributeAsBoolean("pseg", false);
-        customizable.setWrapPSeg(pSeg);
-
-        //FS45 image forcing
-        boolean fs45 = imagesCfg.getAttributeAsBoolean("fs45", false);
-        customizable.setFS45(fs45);
-
-        // shading (filled rectangles)
-        Configuration shadingCfg = cfg.getChild("shading");
-        AFPShadingMode shadingMode = AFPShadingMode.valueOf(
-                shadingCfg.getValue(AFPShadingMode.COLOR.getName()));
-        customizable.setShadingMode(shadingMode);
-
-        // GOCA Support
-        Configuration gocaCfg = cfg.getChild("goca");
-        boolean gocaEnabled = gocaCfg.getAttributeAsBoolean(
-                "enabled", customizable.isGOCAEnabled());
-        customizable.setGOCAEnabled(gocaEnabled);
-        String gocaText = gocaCfg.getAttribute(
-                "text", customizable.isStrokeGOCAText() ? "stroke" : "default");
-        customizable.setStrokeGOCAText("stroke".equalsIgnoreCase(gocaText)
-                || "shapes".equalsIgnoreCase(gocaText));
-
-        // renderer resolution
-        Configuration rendererResolutionCfg = cfg.getChild("renderer-resolution", false);
-        if (rendererResolutionCfg != null) {
-            customizable.setResolution(rendererResolutionCfg.getValueAsInteger(240));
-        }
-
-        // renderer resolution
-        Configuration lineWidthCorrectionCfg = cfg.getChild("line-width-correction", false);
-        if (lineWidthCorrectionCfg != null) {
-            customizable.setLineWidthCorrection(lineWidthCorrectionCfg
-                    .getValueAsFloat(AFPConstants.LINE_WIDTH_CORRECTION));
-        }
-
-        // a default external resource group file setting
-        Configuration resourceGroupFileCfg
-        = cfg.getChild("resource-group-file", false);
-        if (resourceGroupFileCfg != null) {
-            String resourceGroupDest = null;
-            try {
-                resourceGroupDest = resourceGroupFileCfg.getValue();
-                if (resourceGroupDest != null) {
-                    File resourceGroupFile = new File(resourceGroupDest);
-                    boolean created = resourceGroupFile.createNewFile();
-                    if (created && resourceGroupFile.canWrite()) {
-                        customizable.setDefaultResourceGroupFilePath(resourceGroupDest);
-                    } else {
-                        log.warn("Unable to write to default external resource group file '"
-                                + resourceGroupDest + "'");
-                    }
-                }
-            } catch (ConfigurationException e) {
-                LogUtil.handleException(log, e,
-                        userAgent.getFactory().validateUserConfigStrictly());
-            } catch (IOException ioe) {
-                throw new FOPException("Could not create default external resource group file"
-                            , ioe);
-            }
+        if (config.getResolution() != null) {
+            documentHandler.setResolution(config.getResolution());
         }
-
-        Configuration defaultResourceLevelCfg = cfg.getChild("default-resource-levels", false);
-        if (defaultResourceLevelCfg != null) {
-            AFPResourceLevelDefaults defaults = new AFPResourceLevelDefaults();
-            String[] types = defaultResourceLevelCfg.getAttributeNames();
-            for (int i = 0, c = types.length; i < c; i++) {
-                String type = types[i];
-                try {
-                    String level = defaultResourceLevelCfg.getAttribute(type);
-                    defaults.setDefaultResourceLevel(type, AFPResourceLevel.valueOf(level));
-                } catch (IllegalArgumentException iae) {
-                    LogUtil.handleException(log, iae,
-                            userAgent.getFactory().validateUserConfigStrictly());
-                } catch (ConfigurationException e) {
-                    LogUtil.handleException(log, e,
-                            userAgent.getFactory().validateUserConfigStrictly());
-                }
-            }
-            customizable.setResourceLevelDefaults(defaults);
+        if (config.isWrapPseg() != null) {
+            documentHandler.setWrapPSeg(config.isWrapPseg());
+        }
+        if (config.isFs45() != null) {
+            documentHandler.setFS45(config.isFs45());
+        }
+        if (config.allowJpegEmbedding() != null) {
+            documentHandler.canEmbedJpeg(config.allowJpegEmbedding());
+        }
+        if (config.getBitmapEncodingQuality() != null) {
+            documentHandler.setBitmapEncodingQuality(config.getBitmapEncodingQuality());
+        }
+        if (config.getLineWidthCorrection() != null) {
+            documentHandler.setLineWidthCorrection(config.getLineWidthCorrection());
+        }
+        if (config.isGocaEnabled() != null) {
+            documentHandler.setGOCAEnabled(config.isGocaEnabled());
+        }
+        if (config.isStrokeGocaText() != null) {
+            documentHandler.setStrokeGOCAText(config.isStrokeGocaText());
+        }
+        if (config.getDefaultResourceGroupUri() != null) {
+            documentHandler.setDefaultResourceGroupUri(config.getDefaultResourceGroupUri());
+        }
+        AFPResourceLevelDefaults resourceLevelDefaults = config.getResourceLevelDefaults();
+        if (resourceLevelDefaults != null) {
+            documentHandler.setResourceLevelDefaults(resourceLevelDefaults);
         }
     }
 
-    /** {@inheritDoc} */
     @Override
-    public void configure(IFDocumentHandler documentHandler) throws FOPException {
-        Configuration cfg = super.getRendererConfig(documentHandler.getMimeType());
-        if (cfg != null) {
-            AFPDocumentHandler afpDocumentHandler = (AFPDocumentHandler) documentHandler;
-            configure(afpDocumentHandler, cfg);
-        }
+    protected List<FontCollection> getDefaultFontCollection() {
+        return new ArrayList<FontCollection>();
     }
 
-    /** {@inheritDoc} */
     @Override
-    public void setupFontInfo(IFDocumentHandler documentHandler, FontInfo fontInfo)
-            throws FOPException {
-        FontManager fontManager = userAgent.getFactory().getFontManager();
-        List<AFPFontCollection> fontCollections = new ArrayList<AFPFontCollection>();
-
-        Configuration cfg = super.getRendererConfig(documentHandler.getMimeType());
-        if (cfg != null) {
+    protected FontCollection getCustomFontCollection(InternalResourceResolver uriResolverWrapper,
+            String mimeType) throws FOPException {
+        AFPRendererConfig config = (AFPRendererConfig) getRendererConfig(mimeType);
+        if (config != null) {
             try {
-                List<AFPFontInfo> fontList = buildFontListFromConfiguration(cfg, eventProducer);
-                fontCollections.add(new AFPFontCollection(
-                        userAgent.getEventBroadcaster(), fontList));
-            } catch (ConfigurationException e) {
+                return new AFPFontCollection(userAgent.getEventBroadcaster(), createFontsList(
+                        config.getFontInfoConfig(), mimeType));
+            } catch (IOException e) {
                 eventProducer.invalidConfiguration(this, e);
-                LogUtil.handleException(log, e,
-                        userAgent.getFactory().validateUserConfigStrictly());
+                LogUtil.handleException(LOG, e, userAgent.validateUserConfigStrictly());
+            } catch (IllegalArgumentException iae) {
+                eventProducer.invalidConfiguration(this, iae);
+                LogUtil.handleException(LOG, iae, userAgent.validateUserConfigStrictly());
             }
-        } else {
-            fontCollections.add(new AFPFontCollection(userAgent.getEventBroadcaster(), null));
         }
+        return new AFPFontCollection(userAgent.getEventBroadcaster(), null);
+    }
 
-        fontManager.setup(fontInfo,
-                fontCollections.toArray(
-                        new FontCollection[fontCollections.size()]));
-        documentHandler.setFontInfo(fontInfo);
+    private List<AFPFontInfo> createFontsList(AFPFontConfig fontConfig, String mimeType)
+            throws FOPException, IOException {
+        List<AFPFontInfo> afpFonts = new ArrayList<AFPFontInfo>();
+        for (AFPFontConfigData config : fontConfig.getFontConfig()) {
+            afpFonts.add(config.getFontInfo(userAgent.getFontManager().getResourceResolver(),
+                    eventProducer));
+        }
+        return afpFonts;
     }
 }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPSVGHandler.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPSVGHandler.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPSVGHandler.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPSVGHandler.java Tue Jul  3 09:46:41 2012
@@ -195,7 +195,7 @@ public class AFPSVGHandler extends Abstr
      * @return a bridge context
      */
     public static BridgeContext createBridgeContext(FOUserAgent userAgent, AFPGraphics2D g2d) {
-        ImageManager imageManager = userAgent.getFactory().getImageManager();
+        ImageManager imageManager = userAgent.getImageManager();
 
         SVGUserAgent svgUserAgent
             = new SVGUserAgent(userAgent, new AffineTransform());

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPShadingMode.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPShadingMode.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPShadingMode.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPShadingMode.java Tue Jul  3 09:46:41 2012
@@ -22,15 +22,12 @@ package org.apache.fop.render.afp;
 import java.io.ObjectStreamException;
 import java.io.Serializable;
 
-/** Enumeration class for the AFP shading mode. */
-public final class AFPShadingMode implements Serializable {
-
-    private static final long serialVersionUID = 8579867898716480779L;
-
+/** Enumeration of the AFP shading modes. */
+public enum AFPShadingMode implements Serializable {
     /** the color mode (the default) */
-    public static final AFPShadingMode COLOR = new AFPShadingMode("COLOR");
+    COLOR("COLOR"),
     /** the dithered mode */
-    public static final AFPShadingMode DITHERED = new AFPShadingMode("DITHERED");
+    DITHERED("DITHERED");
 
     private String name;
 
@@ -52,7 +49,7 @@ public final class AFPShadingMode implem
      * @param name the name of the enumeration value
      * @return the enumeration object
      */
-    public static AFPShadingMode valueOf(String name) {
+    public static AFPShadingMode getValueOf(String name) {
         if (COLOR.getName().equalsIgnoreCase(name)) {
             return COLOR;
         } else if (DITHERED.getName().equalsIgnoreCase(name)) {
@@ -70,5 +67,4 @@ public final class AFPShadingMode implem
     public String toString() {
         return getClass().getName() + ":" + name;
     }
-
 }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRenderer.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRenderer.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRenderer.java Tue Jul  3 09:46:41 2012
@@ -41,7 +41,7 @@ import org.apache.xmlgraphics.util.UnitC
 
 import org.apache.fop.apps.FOPException;
 import org.apache.fop.apps.FOUserAgent;
-import org.apache.fop.apps.FopFactoryConfigurator;
+import org.apache.fop.apps.FopFactoryConfig;
 import org.apache.fop.apps.MimeConstants;
 import org.apache.fop.area.Area;
 import org.apache.fop.area.PageViewport;
@@ -131,13 +131,13 @@ public class AWTRenderer extends Java2DR
         pageWidth = (int) Math.round(bounds.getWidth() / 1000f);
         pageHeight = (int) Math.round(bounds.getHeight() / 1000f);
         double scaleX = scaleFactor
-                * (UnitConv.IN2MM / FopFactoryConfigurator.DEFAULT_TARGET_RESOLUTION)
+                * (UnitConv.IN2MM / FopFactoryConfig.DEFAULT_TARGET_RESOLUTION)
                 / userAgent.getTargetPixelUnitToMillimeter();
         double scaleY = scaleFactor
-                * (UnitConv.IN2MM / FopFactoryConfigurator.DEFAULT_TARGET_RESOLUTION)
+                * (UnitConv.IN2MM / FopFactoryConfig.DEFAULT_TARGET_RESOLUTION)
                 / userAgent.getTargetPixelUnitToMillimeter();
         if (getPageViewport(pageNum).getForeignAttributes() != null) {
-            String scale = (String) getPageViewport(pageNum).getForeignAttributes().get(
+            String scale = getPageViewport(pageNum).getForeignAttributes().get(
                     PageScale.EXT_PAGE_SCALE);
             Point2D scales = PageScale.getScale(scale);
             if (scales != null) {

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRendererMaker.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRendererMaker.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRendererMaker.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRendererMaker.java Tue Jul  3 09:46:41 2012
@@ -31,20 +31,23 @@ public class AWTRendererMaker extends Ab
 
     private static final String[] MIMES = new String[] {MimeConstants.MIME_FOP_AWT_PREVIEW};
 
-
-    /** {@inheritDoc} */
+    @Override
     public Renderer makeRenderer(FOUserAgent ua) {
         return new AWTRenderer(ua);
     }
 
-    /** {@inheritDoc} */
+    @Override
     public boolean needsOutputStream() {
         return false;
     }
 
-    /** {@inheritDoc} */
+    @Override
     public String[] getSupportedMimeTypes() {
         return MIMES;
     }
 
+    @Override
+    public void configureRenderer(FOUserAgent userAgent, Renderer renderer) {
+        // No-Op
+    }
 }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/AbstractBitmapDocumentHandler.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/AbstractBitmapDocumentHandler.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/AbstractBitmapDocumentHandler.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/AbstractBitmapDocumentHandler.java Tue Jul  3 09:46:41 2012
@@ -36,7 +36,7 @@ import org.apache.xmlgraphics.image.writ
 import org.apache.xmlgraphics.image.writer.ImageWriterRegistry;
 import org.apache.xmlgraphics.image.writer.MultiImageWriter;
 
-import org.apache.fop.apps.FopFactoryConfigurator;
+import org.apache.fop.apps.FopFactoryConfig;
 import org.apache.fop.fonts.FontInfo;
 import org.apache.fop.render.intermediate.AbstractBinaryWritingIFDocumentHandler;
 import org.apache.fop.render.intermediate.IFContext;
@@ -80,7 +80,14 @@ public abstract class AbstractBitmapDocu
     /**
      * Default constructor.
      */
-    public AbstractBitmapDocumentHandler() {
+    public AbstractBitmapDocumentHandler(IFContext context) {
+        super(context);
+        //Set target resolution
+        int dpi = Math.round(context.getUserAgent().getTargetResolution());
+        getSettings().getWriterParams().setResolution(dpi);
+
+        Map renderingOptions = getUserAgent().getRendererOptions();
+        setTargetBitmapSize((Dimension)renderingOptions.get(TARGET_BITMAP_SIZE));
     }
 
     /** {@inheritDoc} */
@@ -98,18 +105,6 @@ public abstract class AbstractBitmapDocu
     public abstract String getDefaultExtension();
 
     /** {@inheritDoc} */
-    public void setContext(IFContext context) {
-        super.setContext(context);
-
-        //Set target resolution
-        int dpi = Math.round(context.getUserAgent().getTargetResolution());
-        getSettings().getWriterParams().setResolution(dpi);
-
-        Map renderingOptions = getUserAgent().getRendererOptions();
-        setTargetBitmapSize((Dimension)renderingOptions.get(TARGET_BITMAP_SIZE));
-    }
-
-    /** {@inheritDoc} */
     public abstract IFDocumentHandlerConfigurator getConfigurator();
 
     /**
@@ -228,7 +223,7 @@ public abstract class AbstractBitmapDocu
             //Normal case: just scale according to the target resolution
             scale = scaleFactor
                 * getUserAgent().getTargetResolution()
-                / FopFactoryConfigurator.DEFAULT_TARGET_RESOLUTION;
+                    / FopFactoryConfig.DEFAULT_TARGET_RESOLUTION;
             bitmapWidth = (int) ((this.currentPageDimensions.width * scale / 1000f) + 0.5f);
             bitmapHeight = (int) ((this.currentPageDimensions.height * scale / 1000f) + 0.5f);
         }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/BitmapRendererConfigurator.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/BitmapRendererConfigurator.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/BitmapRendererConfigurator.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/BitmapRendererConfigurator.java Tue Jul  3 09:46:41 2012
@@ -19,123 +19,84 @@
 
 package org.apache.fop.render.bitmap;
 
-import java.awt.image.BufferedImage;
+import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.avalon.framework.configuration.Configuration;
-
 import org.apache.fop.apps.FOPException;
 import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.apps.MimeConstants;
+import org.apache.fop.apps.io.InternalResourceResolver;
+import org.apache.fop.fonts.EmbedFontInfo;
 import org.apache.fop.fonts.FontCollection;
-import org.apache.fop.fonts.FontEventAdapter;
-import org.apache.fop.fonts.FontEventListener;
-import org.apache.fop.fonts.FontInfo;
-import org.apache.fop.fonts.FontManager;
-import org.apache.fop.fonts.FontResolver;
-import org.apache.fop.render.DefaultFontResolver;
+import org.apache.fop.render.RendererConfig.RendererConfigParser;
+import org.apache.fop.render.bitmap.BitmapRendererConfig.BitmapRendererConfigParser;
 import org.apache.fop.render.intermediate.IFDocumentHandler;
-import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator;
 import org.apache.fop.render.java2d.Base14FontCollection;
 import org.apache.fop.render.java2d.ConfiguredFontCollection;
 import org.apache.fop.render.java2d.InstalledFontCollection;
 import org.apache.fop.render.java2d.Java2DFontMetrics;
-import org.apache.fop.render.java2d.Java2DRenderer;
 import org.apache.fop.render.java2d.Java2DRendererConfigurator;
-import org.apache.fop.util.ColorUtil;
 
 /**
  * Configurator for bitmap output.
  */
-public class BitmapRendererConfigurator extends Java2DRendererConfigurator
-            implements IFDocumentHandlerConfigurator {
+public class BitmapRendererConfigurator extends Java2DRendererConfigurator {
 
     /**
      * Default constructor
      * @param userAgent user agent
      */
-    public BitmapRendererConfigurator(FOUserAgent userAgent) {
-        super(userAgent);
+    public BitmapRendererConfigurator(FOUserAgent userAgent, RendererConfigParser rendererConfigParser) {
+        super(userAgent, rendererConfigParser);
     }
 
     // ---=== IFDocumentHandler configuration ===---
 
     /** {@inheritDoc} */
     public void configure(IFDocumentHandler documentHandler) throws FOPException {
-        super.configure(documentHandler);
-        Configuration cfg = super.getRendererConfig(documentHandler.getMimeType());
-        if (cfg != null) {
-            AbstractBitmapDocumentHandler bitmapHandler
-                = (AbstractBitmapDocumentHandler)documentHandler;
-            BitmapRenderingSettings settings = bitmapHandler.getSettings();
-
-            boolean transparent = cfg.getChild(
-                    Java2DRenderer.JAVA2D_TRANSPARENT_PAGE_BACKGROUND).getValueAsBoolean(
-                            settings.hasTransparentPageBackground());
-            if (transparent) {
-                settings.setPageBackgroundColor(null);
-            } else {
-                String background = cfg.getChild("background-color").getValue(null);
-                if (background != null) {
-                    settings.setPageBackgroundColor(
-                            ColorUtil.parseColorString(this.userAgent, background));
-                }
-            }
-
-            boolean antiAliasing = cfg.getChild("anti-aliasing").getValueAsBoolean(
-                    settings.isAntiAliasingEnabled());
-            settings.setAntiAliasing(antiAliasing);
-
-            String optimization = cfg.getChild("rendering").getValue(null);
-            if ("quality".equalsIgnoreCase(optimization)) {
-                settings.setQualityRendering(true);
-            } else if ("speed".equalsIgnoreCase(optimization)) {
-                settings.setQualityRendering(false);
-            }
-
-            String color = cfg.getChild("color-mode").getValue(null);
-            if (color != null) {
-                if ("rgba".equalsIgnoreCase(color)) {
-                    settings.setBufferedImageType(BufferedImage.TYPE_INT_ARGB);
-                } else if ("rgb".equalsIgnoreCase(color)) {
-                    settings.setBufferedImageType(BufferedImage.TYPE_INT_RGB);
-                } else if ("gray".equalsIgnoreCase(color)) {
-                    settings.setBufferedImageType(BufferedImage.TYPE_BYTE_GRAY);
-                } else if ("binary".equalsIgnoreCase(color)) {
-                    settings.setBufferedImageType(BufferedImage.TYPE_BYTE_BINARY);
-                } else if ("bi-level".equalsIgnoreCase(color)) {
-                    settings.setBufferedImageType(BufferedImage.TYPE_BYTE_BINARY);
-                } else {
-                    throw new FOPException("Invalid value for color-mode: " + color);
-                }
-            }
-        }
+        AbstractBitmapDocumentHandler bitmapHandler = (AbstractBitmapDocumentHandler) documentHandler;
+        BitmapRenderingSettings settings = bitmapHandler.getSettings();
+        configure(documentHandler, settings,
+                new BitmapRendererConfigParser(MimeConstants.MIME_BITMAP));
     }
 
-    /** {@inheritDoc} */
-    public void setupFontInfo(IFDocumentHandler documentHandler, FontInfo fontInfo)
-            throws FOPException {
-        final FontManager fontManager = userAgent.getFactory().getFontManager();
-
-        final Java2DFontMetrics java2DFontMetrics = new Java2DFontMetrics();
+    void configure(IFDocumentHandler documentHandler, BitmapRenderingSettings settings,
+            BitmapRendererConfigParser parser) throws FOPException {
+        BitmapRendererConfig config = (BitmapRendererConfig) userAgent.getRendererConfig(
+                documentHandler.getMimeType(), parser);
+        configure(config, settings);
+    }
 
-        final List fontCollections = new java.util.ArrayList();
-        fontCollections.add(new Base14FontCollection(java2DFontMetrics));
-        fontCollections.add(new InstalledFontCollection(java2DFontMetrics));
-
-        Configuration cfg = super.getRendererConfig(documentHandler.getMimeType());
-        if (cfg != null) {
-            FontResolver fontResolver = new DefaultFontResolver(userAgent);
-            FontEventListener listener = new FontEventAdapter(
-                    userAgent.getEventBroadcaster());
-            List fontList = buildFontList(cfg, fontResolver, listener);
-            fontCollections.add(new ConfiguredFontCollection(fontResolver, fontList,
-                                userAgent.isComplexScriptFeaturesEnabled()));
+    private void configure(BitmapRendererConfig config, BitmapRenderingSettings settings)
+            throws FOPException {
+        if (config.hasTransparentBackround()) {
+            settings.setPageBackgroundColor(null);
+        } else if (config.getBackgroundColor() != null) {
+            settings.setPageBackgroundColor(config.getBackgroundColor());
+        }
+        if (config.hasAntiAliasing() != null) {
+            settings.setAntiAliasing(config.hasAntiAliasing());
+        }
+        if (config.isRenderHighQuality() != null) {
+            settings.setQualityRendering(config.isRenderHighQuality());
+        }
+        if (config.getColorMode() != null) {
+            settings.setBufferedImageType(config.getColorMode());
         }
+    }
 
-        fontManager.setup(fontInfo,
-                (FontCollection[])fontCollections.toArray(
-                        new FontCollection[fontCollections.size()]));
-        documentHandler.setFontInfo(fontInfo);
+    @Override
+    protected FontCollection createCollectionFromFontList(InternalResourceResolver resourceResolver,
+            List<EmbedFontInfo> fontList) {
+        return new ConfiguredFontCollection(resourceResolver, fontList, userAgent.isComplexScriptFeaturesEnabled());
     }
 
+    @Override
+    protected List<FontCollection> getDefaultFontCollection() {
+        final Java2DFontMetrics java2DFontMetrics = new Java2DFontMetrics();
+        final List<FontCollection> fontCollection = new ArrayList<FontCollection>();
+        fontCollection.add(new Base14FontCollection(java2DFontMetrics));
+        fontCollection.add(new InstalledFontCollection(java2DFontMetrics));
+        return fontCollection;
+    }
 }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/BitmapRenderingSettings.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/BitmapRenderingSettings.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/BitmapRenderingSettings.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/BitmapRenderingSettings.java Tue Jul  3 09:46:41 2012
@@ -19,28 +19,30 @@
 
 package org.apache.fop.render.bitmap;
 
-import java.awt.image.BufferedImage;
-
 import org.apache.xmlgraphics.image.writer.ImageWriterParams;
 
 import org.apache.fop.render.java2d.Java2DRenderingSettings;
 
+import static org.apache.fop.render.bitmap.BitmapRendererOption.ANTI_ALIASING;
+import static org.apache.fop.render.bitmap.BitmapRendererOption.COLOR_MODE;
+import static org.apache.fop.render.bitmap.BitmapRendererOption.RENDERING_QUALITY;
+
 /**
  * This class holds settings used when rendering to bitmaps.
  */
-public class BitmapRenderingSettings extends Java2DRenderingSettings implements TIFFConstants {
+public class BitmapRenderingSettings extends Java2DRenderingSettings {
 
     /** ImageWriter parameters */
     private ImageWriterParams writerParams;
 
     /** Image Type as parameter for the BufferedImage constructor (see BufferedImage.TYPE_*) */
-    private int bufferedImageType = BufferedImage.TYPE_INT_ARGB;
+    private int bufferedImageType = (Integer) COLOR_MODE.getDefaultValue();
 
     /** true if anti-aliasing is set */
-    private boolean antialiasing = true;
+    private boolean antialiasing = (Boolean) ANTI_ALIASING.getDefaultValue();
 
     /** true if qualityRendering is set */
-    private boolean qualityRendering = true;
+    private boolean qualityRendering = (Boolean) RENDERING_QUALITY.getDefaultValue();
 
     /**
      * Default constructor. Initializes the settings to their default values.

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/PNGDocumentHandler.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/PNGDocumentHandler.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/PNGDocumentHandler.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/PNGDocumentHandler.java Tue Jul  3 09:46:41 2012
@@ -20,6 +20,9 @@
 package org.apache.fop.render.bitmap;
 
 import org.apache.fop.apps.MimeConstants;
+import org.apache.fop.render.bitmap.PNGRendererConfig.PNGRendererConfigParser;
+import org.apache.fop.render.intermediate.IFContext;
+import org.apache.fop.render.intermediate.IFDocumentHandler;
 import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator;
 
 /**
@@ -28,6 +31,11 @@ import org.apache.fop.render.intermediat
  */
 public class PNGDocumentHandler extends AbstractBitmapDocumentHandler {
 
+
+    PNGDocumentHandler(IFContext context) {
+        super(context);
+    }
+
     /** {@inheritDoc} */
     public String getMimeType() {
         return MimeConstants.MIME_PNG;
@@ -40,7 +48,7 @@ public class PNGDocumentHandler extends 
 
     /** {@inheritDoc} */
     public IFDocumentHandlerConfigurator getConfigurator() {
-        return new BitmapRendererConfigurator(getUserAgent());
+        return new BitmapRendererConfigurator(getUserAgent(), new PNGRendererConfigParser());
     }
 
 }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/PNGDocumentHandlerMaker.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/PNGDocumentHandlerMaker.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/PNGDocumentHandlerMaker.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/PNGDocumentHandlerMaker.java Tue Jul  3 09:46:41 2012
@@ -19,7 +19,6 @@
 
 package org.apache.fop.render.bitmap;
 
-import org.apache.fop.apps.FOUserAgent;
 import org.apache.fop.apps.MimeConstants;
 import org.apache.fop.render.intermediate.AbstractIFDocumentHandlerMaker;
 import org.apache.fop.render.intermediate.IFContext;
@@ -33,10 +32,8 @@ public class PNGDocumentHandlerMaker ext
     private static final String[] MIMES = new String[] {MimeConstants.MIME_PNG};
 
     /** {@inheritDoc} */
-    public IFDocumentHandler makeIFDocumentHandler(FOUserAgent ua) {
-        PNGDocumentHandler handler = new PNGDocumentHandler();
-        handler.setContext(new IFContext(ua));
-        return handler;
+    public IFDocumentHandler makeIFDocumentHandler(IFContext ifContext) {
+        return new PNGDocumentHandler(ifContext);
     }
 
     /** {@inheritDoc} */

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/PNGRendererMaker.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/PNGRendererMaker.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/PNGRendererMaker.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/PNGRendererMaker.java Tue Jul  3 09:46:41 2012
@@ -19,11 +19,12 @@
 
 package org.apache.fop.render.bitmap;
 
+import org.apache.fop.apps.FOPException;
 import org.apache.fop.apps.FOUserAgent;
 import org.apache.fop.apps.MimeConstants;
 import org.apache.fop.render.AbstractRendererMaker;
 import org.apache.fop.render.Renderer;
-import org.apache.fop.render.RendererConfigurator;
+import org.apache.fop.render.bitmap.PNGRendererConfig.PNGRendererConfigParser;
 import org.apache.fop.render.java2d.Java2DRendererConfigurator;
 
 /**
@@ -33,23 +34,22 @@ public class PNGRendererMaker extends Ab
 
     private static final String[] MIMES = new String[] {MimeConstants.MIME_PNG};
 
-
-    /** {@inheritDoc} */
+    @Override
     public Renderer makeRenderer(FOUserAgent ua) {
         return new PNGRenderer(ua);
     }
 
-    /** {@inheritDoc} */
-    public RendererConfigurator getConfigurator(FOUserAgent userAgent) {
-        return new Java2DRendererConfigurator(userAgent);
+    @Override
+    public void configureRenderer(FOUserAgent userAgent, Renderer renderer) throws FOPException {
+        new Java2DRendererConfigurator(userAgent, new PNGRendererConfigParser()).configure(renderer);
     }
 
-    /** {@inheritDoc} */
+    @Override
     public boolean needsOutputStream() {
         return true;
     }
 
-    /** {@inheritDoc} */
+    @Override
     public String[] getSupportedMimeTypes() {
         return MIMES;
     }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFDocumentHandler.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFDocumentHandler.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFDocumentHandler.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFDocumentHandler.java Tue Jul  3 09:46:41 2012
@@ -20,6 +20,9 @@
 package org.apache.fop.render.bitmap;
 
 import org.apache.fop.apps.MimeConstants;
+import org.apache.fop.render.bitmap.TIFFRendererConfig.TIFFRendererConfigParser;
+import org.apache.fop.render.intermediate.IFContext;
+import org.apache.fop.render.intermediate.IFDocumentHandler;
 import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator;
 
 /**
@@ -28,11 +31,16 @@ import org.apache.fop.render.intermediat
  */
 public class TIFFDocumentHandler extends AbstractBitmapDocumentHandler {
 
+    TIFFDocumentHandler(IFContext context) {
+        super(context);
+    }
+
     /** {@inheritDoc} */
     public String getMimeType() {
         return MimeConstants.MIME_TIFF;
     }
 
+
     /** {@inheritDoc} */
     public String getDefaultExtension() {
         return "tif";
@@ -40,7 +48,6 @@ public class TIFFDocumentHandler extends
 
     /** {@inheritDoc} */
     public IFDocumentHandlerConfigurator getConfigurator() {
-        return new TIFFRendererConfigurator(getUserAgent());
+        return new TIFFRendererConfigurator(getUserAgent(), new TIFFRendererConfigParser());
     }
-
 }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFDocumentHandlerMaker.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFDocumentHandlerMaker.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFDocumentHandlerMaker.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFDocumentHandlerMaker.java Tue Jul  3 09:46:41 2012
@@ -19,7 +19,6 @@
 
 package org.apache.fop.render.bitmap;
 
-import org.apache.fop.apps.FOUserAgent;
 import org.apache.fop.apps.MimeConstants;
 import org.apache.fop.render.intermediate.AbstractIFDocumentHandlerMaker;
 import org.apache.fop.render.intermediate.IFContext;
@@ -33,10 +32,8 @@ public class TIFFDocumentHandlerMaker ex
     private static final String[] MIMES = new String[] {MimeConstants.MIME_TIFF};
 
     /** {@inheritDoc} */
-    public IFDocumentHandler makeIFDocumentHandler(FOUserAgent ua) {
-        TIFFDocumentHandler handler = new TIFFDocumentHandler();
-        handler.setContext(new IFContext(ua));
-        return handler;
+    public IFDocumentHandler makeIFDocumentHandler(IFContext ifContext) {
+        return new TIFFDocumentHandler(ifContext);
     }
 
     /** {@inheritDoc} */

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFRenderer.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFRenderer.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFRenderer.java Tue Jul  3 09:46:41 2012
@@ -44,8 +44,13 @@ import org.apache.xmlgraphics.image.writ
 
 import org.apache.fop.apps.FOPException;
 import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.apps.MimeConstants;
 import org.apache.fop.render.java2d.Java2DRenderer;
 
+import static org.apache.fop.render.bitmap.TIFFCompressionValues.CCITT_T4;
+import static org.apache.fop.render.bitmap.TIFFCompressionValues.CCITT_T6;
+import static org.apache.fop.render.bitmap.TIFFCompressionValues.PACKBITS;
+
 /**
  * <p>
  * This class represents renderer to TIFF (Tagged Image File Format) format. It
@@ -67,7 +72,7 @@ import org.apache.fop.render.java2d.Java
  * <code>org.apache.fop.render.java2D.Java2DRenderer</code> and just encode
  * rendering results into TIFF format using Batik's image codec
  */
-public class TIFFRenderer extends Java2DRenderer implements TIFFConstants {
+public class TIFFRenderer extends Java2DRenderer {
 
     /** ImageWriter parameters */
     private ImageWriterParams writerParams;
@@ -79,7 +84,7 @@ public class TIFFRenderer extends Java2D
 
     /** {@inheritDoc} */
     public String getMimeType() {
-        return MIME_TYPE;
+        return MimeConstants.MIME_TIFF;
     }
 
     /**
@@ -90,7 +95,7 @@ public class TIFFRenderer extends Java2D
     public TIFFRenderer(FOUserAgent userAgent) {
         super(userAgent);
         writerParams = new ImageWriterParams();
-        writerParams.setCompressionMethod(COMPRESSION_PACKBITS);
+        writerParams.setCompressionMethod(PACKBITS.getName());
 
         int dpi = Math.round(userAgent.getTargetResolution());
         writerParams.setResolution(dpi);
@@ -190,8 +195,8 @@ public class TIFFRenderer extends Java2D
                 throw new NoSuchElementException(e.getMessage());
             }
 
-            if (COMPRESSION_CCITT_T4.equalsIgnoreCase(writerParams.getCompressionMethod())
-                   || COMPRESSION_CCITT_T6.equalsIgnoreCase(writerParams.getCompressionMethod())) {
+            TIFFCompressionValues compression = TIFFCompressionValues.getValue(writerParams.getCompressionMethod());
+            if (compression == CCITT_T4 || compression == CCITT_T6) {
                 return pageImage;
             } else {
                 //Decorate the image with a packed sample model for encoding by the codec

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFRendererConfigurator.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFRendererConfigurator.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFRendererConfigurator.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFRendererConfigurator.java Tue Jul  3 09:46:41 2012
@@ -21,24 +21,34 @@ package org.apache.fop.render.bitmap;
 
 import java.awt.image.BufferedImage;
 
-import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.xmlgraphics.image.writer.ImageWriterParams;
 
 import org.apache.fop.apps.FOPException;
 import org.apache.fop.apps.FOUserAgent;
 import org.apache.fop.render.Renderer;
+import org.apache.fop.render.RendererConfig.RendererConfigParser;
+import org.apache.fop.render.bitmap.TIFFRendererConfig.TIFFRendererConfigParser;
 import org.apache.fop.render.intermediate.IFDocumentHandler;
 
+import static org.apache.fop.render.bitmap.TIFFCompressionValues.CCITT_T4;
+import static org.apache.fop.render.bitmap.TIFFCompressionValues.CCITT_T6;
+import static org.apache.fop.render.bitmap.TIFFCompressionValues.NONE;
+
 /**
  * TIFF Renderer configurator
  */
 public class TIFFRendererConfigurator extends BitmapRendererConfigurator {
+    private static final Log LOG = LogFactory.getLog(TIFFRendererConfigurator.class);
 
     /**
      * Default constructor
      * @param userAgent user agent
      */
-    public TIFFRendererConfigurator(FOUserAgent userAgent) {
-        super(userAgent);
+    public TIFFRendererConfigurator(FOUserAgent userAgent, RendererConfigParser rendererConfigParser) {
+        super(userAgent, rendererConfigParser);
     }
 
     /**
@@ -49,58 +59,46 @@ public class TIFFRendererConfigurator ex
      * {@inheritDoc}
      */
     public void configure(Renderer renderer) throws FOPException {
-        Configuration cfg = super.getRendererConfig(renderer);
-        if (cfg != null) {
-            TIFFRenderer tiffRenderer = (TIFFRenderer)renderer;
+        final TIFFRendererConfig config = (TIFFRendererConfig) getRendererConfig(renderer);
+        if (config != null) {
+            TIFFRenderer tiffRenderer = (TIFFRenderer) renderer;
             //set compression
-            String name = cfg.getChild("compression").getValue(TIFFConstants.COMPRESSION_PACKBITS);
-            //Some compression formats need a special image format:
-            tiffRenderer.setBufferedImageType(getBufferedImageTypeFor(name));
-            if (!"NONE".equalsIgnoreCase(name)) {
-                tiffRenderer.getWriterParams().setCompressionMethod(name);
+            tiffRenderer.setBufferedImageType(getCompressionType(config, tiffRenderer.getWriterParams()));
+        }
+        super.configure(renderer);
+    }
+
+    private int getCompressionType(TIFFRendererConfig config, ImageWriterParams writerParms)
+            throws FOPException {
+        //Some compression formats need a special image format:
+        TIFFCompressionValues compression = config.getCompressionType();
+        if (compression != null) {
+            if (compression != NONE) {
+                writerParms.setCompressionMethod(compression.getName());
             }
-            if (log.isInfoEnabled()) {
-                log.info("TIFF compression set to " + name);
+            if (LOG.isInfoEnabled()) {
+                LOG.info("TIFF compression set to " + compression.getName());
             }
         }
-        super.configure(renderer);
+        return getBufferedImageTypeFor(compression);
     }
 
-    /**
-     * Determines the type value for the BufferedImage to be produced for rendering
-     * the bitmap image.
-     * @param compressionName the compression name
-     * @return a value from the {@link BufferedImage}.TYPE_* constants
-     */
-    private int getBufferedImageTypeFor(String compressionName) {
-        if (compressionName.equalsIgnoreCase(TIFFConstants.COMPRESSION_CCITT_T6)) {
-            return BufferedImage.TYPE_BYTE_BINARY;
-        } else if (compressionName.equalsIgnoreCase(TIFFConstants.COMPRESSION_CCITT_T4)) {
+    private int getBufferedImageTypeFor(TIFFCompressionValues compressionType) {
+        if (compressionType == CCITT_T6 || compressionType == CCITT_T4) {
             return BufferedImage.TYPE_BYTE_BINARY;
         } else {
             return BufferedImage.TYPE_INT_ARGB;
         }
     }
 
-    // ---=== IFDocumentHandler configuration ===---
-
     /** {@inheritDoc} */
     public void configure(IFDocumentHandler documentHandler) throws FOPException {
-        super.configure(documentHandler);
-        Configuration cfg = super.getRendererConfig(documentHandler.getMimeType());
-        if (cfg != null) {
-            TIFFDocumentHandler tiffHandler = (TIFFDocumentHandler)documentHandler;
+        final TIFFRendererConfig tiffConfig = (TIFFRendererConfig) getRendererConfig(documentHandler);
+        if (tiffConfig != null) {
+            TIFFDocumentHandler tiffHandler = (TIFFDocumentHandler) documentHandler;
             BitmapRenderingSettings settings = tiffHandler.getSettings();
-            //set compression
-            String name = cfg.getChild("compression").getValue(TIFFConstants.COMPRESSION_PACKBITS);
-            //Some compression formats need a special image format:
-            settings.setBufferedImageType(getBufferedImageTypeFor(name));
-            if (!"NONE".equalsIgnoreCase(name)) {
-                settings.getWriterParams().setCompressionMethod(name);
-            }
-            if (log.isInfoEnabled()) {
-                log.info("TIFF compression set to " + name);
-            }
+            configure(documentHandler, settings, new TIFFRendererConfigParser());
+            settings.setBufferedImageType(getCompressionType(tiffConfig, settings.getWriterParams()));
         }
     }
 

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFRendererMaker.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFRendererMaker.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFRendererMaker.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/bitmap/TIFFRendererMaker.java Tue Jul  3 09:46:41 2012
@@ -19,11 +19,12 @@
 
 package org.apache.fop.render.bitmap;
 
+import org.apache.fop.apps.FOPException;
 import org.apache.fop.apps.FOUserAgent;
 import org.apache.fop.apps.MimeConstants;
 import org.apache.fop.render.AbstractRendererMaker;
 import org.apache.fop.render.Renderer;
-import org.apache.fop.render.RendererConfigurator;
+import org.apache.fop.render.bitmap.TIFFRendererConfig.TIFFRendererConfigParser;
 
 /**
  * RendererMaker for the TIFF Renderer.
@@ -32,24 +33,24 @@ public class TIFFRendererMaker extends A
 
     private static final String[] MIMES = new String[] {MimeConstants.MIME_TIFF};
 
-    /** {@inheritDoc} */
+    @Override
     public Renderer makeRenderer(FOUserAgent userAgent) {
         return new TIFFRenderer(userAgent);
     }
 
-    /** {@inheritDoc} */
-    public RendererConfigurator getConfigurator(FOUserAgent userAgent) {
-        return new TIFFRendererConfigurator(userAgent);
-    }
-
-    /** {@inheritDoc} */
+    @Override
     public boolean needsOutputStream() {
         return true;
     }
 
-    /** {@inheritDoc} */
+    @Override
     public String[] getSupportedMimeTypes() {
         return MIMES;
     }
 
+    @Override
+    public void configureRenderer(FOUserAgent userAgent, Renderer renderer) throws FOPException {
+        new TIFFRendererConfigurator(userAgent, new TIFFRendererConfigParser()).configure(renderer);
+    }
+
 }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractBinaryWritingIFDocumentHandler.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractBinaryWritingIFDocumentHandler.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractBinaryWritingIFDocumentHandler.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractBinaryWritingIFDocumentHandler.java Tue Jul  3 09:46:41 2012
@@ -19,15 +19,14 @@
 
 package org.apache.fop.render.intermediate;
 
-import java.io.File;
+import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
-import java.net.URL;
+import java.net.URI;
 
 import javax.xml.transform.Result;
 import javax.xml.transform.stream.StreamResult;
 
-import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 
 import org.apache.fop.fonts.FontCollection;
@@ -49,10 +48,14 @@ public abstract class AbstractBinaryWrit
     /** Font configuration */
     protected FontInfo fontInfo;
 
+    public AbstractBinaryWritingIFDocumentHandler(IFContext ifContext) {
+        super(ifContext);
+    }
+
     /** {@inheritDoc} */
     public void setResult(Result result) throws IFException {
         if (result instanceof StreamResult) {
-            StreamResult streamResult = (StreamResult)result;
+            StreamResult streamResult = (StreamResult) result;
             OutputStream out = streamResult.getOutputStream();
             if (out == null) {
                 if (streamResult.getWriter() != null) {
@@ -60,22 +63,13 @@ public abstract class AbstractBinaryWrit
                             "FOP cannot use a Writer. Please supply an OutputStream!");
                 }
                 try {
-                    URL url = new URL(streamResult.getSystemId());
-                    File f = FileUtils.toFile(url);
-                    if (f != null) {
-                        out = new java.io.FileOutputStream(f);
-                    } else {
-                        out = url.openConnection().getOutputStream();
-                    }
+                    URI resultURI = URI.create(streamResult.getSystemId());
+                    out = new BufferedOutputStream(getUserAgent().getResourceResolver().getOutputStream(resultURI));
                 } catch (IOException ioe) {
                     throw new IFException("I/O error while opening output stream" , ioe);
                 }
-                out = new java.io.BufferedOutputStream(out);
                 this.ownOutputStream = true;
             }
-            if (out == null) {
-                throw new IllegalArgumentException("Need a StreamResult with an OutputStream");
-            }
             this.outputStream = out;
         } else {
             throw new UnsupportedOperationException(
@@ -95,7 +89,7 @@ public abstract class AbstractBinaryWrit
 
     /** {@inheritDoc} */
     public void setDefaultFontInfo(FontInfo fontInfo) {
-        FontManager fontManager = getUserAgent().getFactory().getFontManager();
+        FontManager fontManager = getUserAgent().getFontManager();
         FontCollection[] fontCollections = new FontCollection[] {
                 new Base14FontCollection(fontManager.isBase14KerningEnabled())
         };

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractIFDocumentHandler.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractIFDocumentHandler.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractIFDocumentHandler.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractIFDocumentHandler.java Tue Jul  3 09:46:41 2012
@@ -21,6 +21,9 @@ package org.apache.fop.render.intermedia
 
 import java.util.Locale;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 import org.apache.fop.accessibility.DummyStructureTreeEventHandler;
 import org.apache.fop.accessibility.StructureTreeEventHandler;
 import org.apache.fop.apps.FOUserAgent;
@@ -30,19 +33,19 @@ import org.apache.fop.apps.FOUserAgent;
  */
 public abstract class AbstractIFDocumentHandler implements IFDocumentHandler {
 
-    private IFContext ifContext;
+    /** logging instance */
+    private static Log log = LogFactory.getLog(AbstractIFDocumentHandler.class);
+
+    private final IFContext ifContext;
 
     /**
      * Default constructor.
      */
-    public AbstractIFDocumentHandler() {
-    }
-
-    /** {@inheritDoc} */
-    public void setContext(IFContext context) {
+    protected AbstractIFDocumentHandler(IFContext context) {
         this.ifContext = context;
     }
 
+
     /** {@inheritDoc} */
     public IFContext getContext() {
         return this.ifContext;

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractIFDocumentHandlerMaker.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractIFDocumentHandlerMaker.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractIFDocumentHandlerMaker.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractIFDocumentHandlerMaker.java Tue Jul  3 09:46:41 2012
@@ -19,7 +19,6 @@
 
 package org.apache.fop.render.intermediate;
 
-import org.apache.fop.apps.FOUserAgent;
 
 /**
  * Base class for factory classes which instantiate {@link IFDocumentHandler}s and provide
@@ -29,10 +28,10 @@ public abstract class AbstractIFDocument
 
     /**
      * Instantiates a new {@link IFDocumentHandler}.
-     * @param userAgent the user agent
+     * @param ifContext the user agent
      * @return the newly instantiated document handler
      */
-    public abstract IFDocumentHandler makeIFDocumentHandler(FOUserAgent userAgent);
+    public abstract IFDocumentHandler makeIFDocumentHandler(IFContext ifContext);
 
     /**
      * @return Indicates whether this document handler requires an OutputStream to work with.

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractIFPainter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractIFPainter.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractIFPainter.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractIFPainter.java Tue Jul  3 09:46:41 2012
@@ -45,7 +45,6 @@ import org.apache.xmlgraphics.image.load
 
 import org.apache.fop.ResourceEventProducer;
 import org.apache.fop.apps.FOUserAgent;
-import org.apache.fop.apps.FopFactory;
 import org.apache.fop.fo.Constants;
 import org.apache.fop.fonts.FontInfo;
 import org.apache.fop.fonts.FontTriplet;
@@ -112,14 +111,6 @@ public abstract class AbstractIFPainter<
         return getContext().getUserAgent();
     }
 
-    /**
-     * Returns the FOP factory.
-     * @return the FOP factory.
-     */
-    protected FopFactory getFopFactory() {
-        return getUserAgent().getFactory();
-    }
-
     private AffineTransform combine(AffineTransform[] transforms) {
         AffineTransform at = new AffineTransform();
         for (int i = 0, c = transforms.length; i < c; i++) {
@@ -154,9 +145,9 @@ public abstract class AbstractIFPainter<
      */
     protected void drawImageUsingImageHandler(ImageInfo info, Rectangle rect)
                     throws ImageException, IOException {
-        ImageManager manager = getFopFactory().getImageManager();
+        ImageManager manager = getUserAgent().getImageManager();
         ImageSessionContext sessionContext = getUserAgent().getImageSessionContext();
-        ImageHandlerRegistry imageHandlerRegistry = getFopFactory().getImageHandlerRegistry();
+        ImageHandlerRegistry imageHandlerRegistry = getUserAgent().getImageHandlerRegistry();
 
         //Load and convert the image to a supported format
         RenderingContext context = createRenderingContext();
@@ -220,8 +211,8 @@ public abstract class AbstractIFPainter<
     protected void drawImage(Image image, Rectangle rect,
             RenderingContext context, boolean convert, Map additionalHints)
                     throws IOException, ImageException {
-        ImageManager manager = getFopFactory().getImageManager();
-        ImageHandlerRegistry imageHandlerRegistry = getFopFactory().getImageHandlerRegistry();
+        ImageManager manager = getUserAgent().getImageManager();
+        ImageHandlerRegistry imageHandlerRegistry = getUserAgent().getImageHandlerRegistry();
 
         Image effImage;
         context.putHints(additionalHints);
@@ -259,7 +250,7 @@ public abstract class AbstractIFPainter<
      * @return the ImageInfo instance or null if there has been an error.
      */
     protected ImageInfo getImageInfo(String uri) {
-        ImageManager manager = getFopFactory().getImageManager();
+        ImageManager manager = getUserAgent().getImageManager();
         try {
             ImageSessionContext sessionContext = getUserAgent().getImageSessionContext();
             return manager.getImageInfo(uri, sessionContext);
@@ -285,7 +276,7 @@ public abstract class AbstractIFPainter<
      * @param rect the rectangle in which to paint the image
      */
     protected void drawImageUsingURI(String uri, Rectangle rect) {
-        ImageManager manager = getFopFactory().getImageManager();
+        ImageManager manager = getUserAgent().getImageManager();
         ImageInfo info = null;
         try {
             ImageSessionContext sessionContext = getUserAgent().getImageSessionContext();
@@ -313,7 +304,7 @@ public abstract class AbstractIFPainter<
      * @param rect the rectangle in which to paint the image
      */
     protected void drawImageUsingDocument(Document doc, Rectangle rect) {
-        ImageManager manager = getFopFactory().getImageManager();
+        ImageManager manager = getUserAgent().getImageManager();
         ImageInfo info = null;
         try {
             info = manager.preloadImage(null, new DOMSource(doc));

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractXMLWritingIFDocumentHandler.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractXMLWritingIFDocumentHandler.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractXMLWritingIFDocumentHandler.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/AbstractXMLWritingIFDocumentHandler.java Tue Jul  3 09:46:41 2012
@@ -45,6 +45,10 @@ public abstract class AbstractXMLWriting
     /** Main SAX ContentHandler to receive the generated SAX events. */
     protected GenerationHelperContentHandler handler;
 
+    protected AbstractXMLWritingIFDocumentHandler(IFContext context) {
+        super(context);
+    }
+
     /** {@inheritDoc} */
     public void setResult(Result result) throws IFException {
         if (result instanceof SAXResult) {

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFDocumentHandler.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFDocumentHandler.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFDocumentHandler.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFDocumentHandler.java Tue Jul  3 09:46:41 2012
@@ -78,12 +78,6 @@ import org.apache.fop.fonts.FontInfo;
 public interface IFDocumentHandler {
 
     /**
-     * Sets the intermediate format context object.
-     * @param context the context object
-     */
-    void setContext(IFContext context);
-
-    /**
      * Returns the associated intermediate format context object.
      * @return the context object
      */
@@ -274,4 +268,5 @@ public interface IFDocumentHandler {
      * @throws IFException if an error occurs while handling this event
      */
     void handleExtensionObject(Object extension) throws IFException;
+
 }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFDocumentHandlerConfigurator.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFDocumentHandlerConfigurator.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFDocumentHandlerConfigurator.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFDocumentHandlerConfigurator.java Tue Jul  3 09:46:41 2012
@@ -40,6 +40,6 @@ public interface IFDocumentHandlerConfig
      * @param fontInfo the font info object to set up
      * @throws FOPException if an error occurs while configuring the object
      */
-    void setupFontInfo(IFDocumentHandler documentHandler, FontInfo fontInfo) throws FOPException;
+    void setupFontInfo(String mimeType, FontInfo fontInfo) throws FOPException;
 
 }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFParser.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFParser.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFParser.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFParser.java Tue Jul  3 09:46:41 2012
@@ -130,7 +130,7 @@ public class IFParser implements IFConst
     public ContentHandler getContentHandler(IFDocumentHandler documentHandler,
                     FOUserAgent userAgent) {
         ElementMappingRegistry elementMappingRegistry
-            = userAgent.getFactory().getElementMappingRegistry();
+            = userAgent.getElementMappingRegistry();
         return new Handler(documentHandler, userAgent, elementMappingRegistry);
     }
 
@@ -306,7 +306,7 @@ public class IFParser implements IFConst
                     delegate.startElement(uri, localName, qName, attributes);
                 } else {
                     ContentHandlerFactoryRegistry registry
-                            = userAgent.getFactory().getContentHandlerFactoryRegistry();
+                            = userAgent.getContentHandlerFactoryRegistry();
                     ContentHandlerFactory factory = registry.getFactory(uri);
                     if (factory == null) {
                         DOMImplementation domImplementation

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFRenderer.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFRenderer.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFRenderer.java Tue Jul  3 09:46:41 2012
@@ -232,9 +232,8 @@ public class IFRenderer extends Abstract
      * @return the default IFDocumentHandler
      */
     protected IFDocumentHandler createDefaultDocumentHandler() {
-        IFSerializer serializer = new IFSerializer();
         FOUserAgent userAgent = getUserAgent();
-        serializer.setContext(new IFContext(userAgent));
+        IFSerializer serializer = new IFSerializer(new IFContext(userAgent));
         if (userAgent.isAccessibilityEnabled()) {
             userAgent.setStructureTreeEventHandler(serializer.getStructureTreeEventHandler());
         }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFSerializer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFSerializer.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFSerializer.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFSerializer.java Tue Jul  3 09:46:41 2012
@@ -40,8 +40,9 @@ import org.apache.xmlgraphics.util.XMLiz
 import org.apache.fop.accessibility.StructureTreeEventHandler;
 import org.apache.fop.fo.extensions.InternalElementMapping;
 import org.apache.fop.fonts.FontInfo;
-import org.apache.fop.render.PrintRendererConfigurator;
+import org.apache.fop.render.DefaultRendererConfigurator;
 import org.apache.fop.render.RenderingContext;
+import org.apache.fop.render.intermediate.IFRendererConfig.IFRendererConfigParser;
 import org.apache.fop.render.intermediate.IFStructureTreeBuilder.IFStructureTreeElement;
 import org.apache.fop.render.intermediate.extensions.AbstractAction;
 import org.apache.fop.render.intermediate.extensions.Bookmark;
@@ -62,7 +63,7 @@ import org.apache.fop.util.XMLUtil;
  * IFPainter implementation that serializes the intermediate format to XML.
  */
 public class IFSerializer extends AbstractXMLWritingIFDocumentHandler
-        implements IFConstants, IFPainter, IFDocumentNavigationHandler {
+implements IFConstants, IFPainter, IFDocumentNavigationHandler {
 
     /**
      * Intermediate Format (IF) version, used to express an @version attribute
@@ -83,6 +84,10 @@ public class IFSerializer extends Abstra
 
     private IFStructureTreeBuilder structureTreeBuilder;
 
+    public IFSerializer(IFContext context) {
+        super(context);
+    }
+
     /** {@inheritDoc} */
     @Override
     protected String getMainNamespace() {
@@ -106,7 +111,7 @@ public class IFSerializer extends Abstra
         if (this.mimicHandler != null) {
             return getMimickedDocumentHandler().getConfigurator();
         } else {
-            return new PrintRendererConfigurator(getUserAgent());
+            return new DefaultRendererConfigurator(getUserAgent(), new IFRendererConfigParser());
         }
     }
 
@@ -284,7 +289,7 @@ public class IFSerializer extends Abstra
 
     /** {@inheritDoc} */
     public void startPage(int index, String name, String pageMasterName, Dimension size)
-                throws IFException {
+            throws IFException {
         try {
             AttributesImpl atts = new AttributesImpl();
             addAttribute(atts, "index", Integer.toString(index));
@@ -386,7 +391,7 @@ public class IFSerializer extends Abstra
     }
 
     private void startViewport(String transform, Dimension size, Rectangle clipRect)
-                throws IFException {
+            throws IFException {
         try {
             AttributesImpl atts = new AttributesImpl();
             if (transform != null && transform.length() > 0) {
@@ -684,7 +689,7 @@ public class IFSerializer extends Abstra
         } else {
             throw new UnsupportedOperationException(
                     "Extension must implement XMLizable: "
-                    + extension + " (" + extension.getClass().getName() + ")");
+                            + extension + " (" + extension.getClass().getName() + ")");
         }
     }
 

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFSerializerMaker.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFSerializerMaker.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFSerializerMaker.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFSerializerMaker.java Tue Jul  3 09:46:41 2012
@@ -28,9 +28,9 @@ import org.apache.fop.apps.MimeConstants
 public class IFSerializerMaker extends AbstractIFDocumentHandlerMaker {
 
     /** {@inheritDoc} */
-    public IFDocumentHandler makeIFDocumentHandler(FOUserAgent ua) {
-        IFSerializer handler = new IFSerializer();
-        handler.setContext(new IFContext(ua));
+    public IFDocumentHandler makeIFDocumentHandler(IFContext ifContext) {
+        IFSerializer handler = new IFSerializer(ifContext);
+        FOUserAgent ua = ifContext.getUserAgent();
         if (ua.isAccessibilityEnabled()) {
             ua.setStructureTreeEventHandler(handler.getStructureTreeEventHandler());
         }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFUtil.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFUtil.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFUtil.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFUtil.java Tue Jul  3 09:46:41 2012
@@ -167,7 +167,8 @@ public final class IFUtil {
         }
         IFDocumentHandlerConfigurator configurator = documentHandler.getConfigurator();
         if (configurator != null) {
-            configurator.setupFontInfo(documentHandler, fontInfo);
+            configurator.setupFontInfo(documentHandler.getMimeType(), fontInfo);
+            documentHandler.setFontInfo(fontInfo);
         } else {
             documentHandler.setDefaultFontInfo(fontInfo);
         }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/util/IFDocumentHandlerProxy.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/util/IFDocumentHandlerProxy.java?rev=1356646&r1=1356645&r2=1356646&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/util/IFDocumentHandlerProxy.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/util/IFDocumentHandlerProxy.java Tue Jul  3 09:46:41 2012
@@ -61,11 +61,6 @@ public class IFDocumentHandlerProxy impl
     }
 
     /** {@inheritDoc} */
-    public void setContext(IFContext context) {
-        this.delegate.setContext(context);
-    }
-
-    /** {@inheritDoc} */
     public IFContext getContext() {
         return this.delegate.getContext();
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org