/*
 * 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: AFPRendererConfigurator.java 1617052 2014-08-10 06:55:01Z gadams $ */

package org.apache.fop.render.afp;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.apache.fop.afp.AFPEventProducer;
import org.apache.fop.afp.AFPResourceLevelDefaults;
import org.apache.fop.afp.fonts.AFPFontCollection;
import org.apache.fop.afp.fonts.AFPFontInfo;
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.render.PrintRendererConfigurator;
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.util.LogUtil;

AFP Renderer configurator
/** * AFP Renderer configurator */
public class AFPRendererConfigurator extends PrintRendererConfigurator { private static Log log = LogFactory.getLog(AFPRendererConfigurator.class); private final AFPEventProducer eventProducer;
Default constructor
Params:
  • userAgent – user agent
/** * Default constructor * * @param userAgent user agent */
public AFPRendererConfigurator(FOUserAgent userAgent, RendererConfigParser rendererConfigParser) { super(userAgent, rendererConfigParser); eventProducer = AFPEventProducer.Provider.get(userAgent.getEventBroadcaster()); } @Override public void configure(IFDocumentHandler documentHandler) throws FOPException { AFPRendererConfig config = (AFPRendererConfig) getRendererConfig(documentHandler); if (config != null) { AFPDocumentHandler afpDocumentHandler = (AFPDocumentHandler) documentHandler; configure(afpDocumentHandler, config); } } private void configure(AFPDocumentHandler documentHandler, AFPRendererConfig config) { Boolean colorImages = config.isColorImages(); if (colorImages != null) { documentHandler.setColorImages(colorImages); if (colorImages) { documentHandler.setCMYKImagesSupported(config.isCmykImagesSupported()); } else { documentHandler.setBitsPerPixel(config.getBitsPerPixel()); } } if (config.getDitheringQuality() != null) { documentHandler.setDitheringQuality(config.getDitheringQuality()); } if (config.isNativeImagesSupported() != null) { documentHandler.setNativeImagesSupported(config.isNativeImagesSupported()); } if (config.getShadingMode() != null) { documentHandler.setShadingMode(config.getShadingMode()); } if (config.getResolution() != null) { documentHandler.setResolution(config.getResolution()); } 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); } } @Override protected List<FontCollection> getDefaultFontCollection() { return new ArrayList<FontCollection>(); } @Override protected FontCollection getCustomFontCollection(InternalResourceResolver uriResolverWrapper, String mimeType) throws FOPException { AFPRendererConfig config = (AFPRendererConfig) getRendererConfig(mimeType); if (config != null) { try { return new AFPFontCollection(userAgent.getEventBroadcaster(), createFontsList( config.getFontInfoConfig(), mimeType)); } catch (IOException e) { eventProducer.invalidConfiguration(this, e); LogUtil.handleException(log, e, userAgent.validateUserConfigStrictly()); } catch (IllegalArgumentException iae) { eventProducer.invalidConfiguration(this, iae); LogUtil.handleException(log, iae, userAgent.validateUserConfigStrictly()); } } return new AFPFontCollection(userAgent.getEventBroadcaster(), null); } 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; } }