/** * Finds and returns an array of {@link ImageProviderPipeline} instances which can handle * the given MIME type and return one of the given {@link ImageFlavor}s. * @param imageInfo the image info object * @param flavors the possible target flavors * @return an array of pipelines */ public ImageProviderPipeline[] determineCandidatePipelines(ImageInfo imageInfo, ImageFlavor[] flavors) { List candidates = new java.util.ArrayList(); for (ImageFlavor flavor : flavors) { //Find the best pipeline for each flavor ImageProviderPipeline pipeline = newImageConverterPipeline(imageInfo, flavor); if (pipeline == null) { continue; //No suitable pipeline found for flavor } Penalty p = pipeline.getConversionPenalty(this.manager.getRegistry()); if (!p.isInfinitePenalty()) { candidates.add(pipeline); } } return (ImageProviderPipeline[])candidates.toArray( new ImageProviderPipeline[candidates.size()]); }
+ candidates[i].getConversionPenalty(getRegistry()) + " for " + candidates[i]); continue; Penalty penalty = candidates[i].getConversionPenalty(getRegistry()); if (penalty.isInfinitePenalty()) { continue; //Exclude candidate on infinite penalty
private void configureImageLoading(Configuration parent, boolean strict) throws FOPException { if (parent == null) { return; } ImageImplRegistry registry = fopFactoryBuilder.getImageManager().getRegistry(); Configuration[] penalties = parent.getChildren("penalty"); try { for (Configuration penaltyCfg : penalties) { String className = penaltyCfg.getAttribute("class"); String value = penaltyCfg.getAttribute("value"); Penalty p = null; if (value.toUpperCase(Locale.getDefault()).startsWith("INF")) { p = Penalty.INFINITE_PENALTY; } else { try { p = Penalty.toPenalty(Integer.parseInt(value)); } catch (NumberFormatException nfe) { LogUtil.handleException(log, nfe, strict); } } if (p != null) { registry.setAdditionalPenalty(className, p); } } } catch (ConfigurationException e) { LogUtil.handleException(log, e, strict); } }
private DefaultEdgeDirectory getEdgeDirectory() { ImageImplRegistry registry = manager.getRegistry(); if (registry.getImageConverterModifications() != converterEdgeDirectoryVersion) { Collection converters = registry.getImageConverters(); //Rebuild edge directory DefaultEdgeDirectory dir = new DefaultEdgeDirectory(); for (Object converter1 : converters) { ImageConverter converter = (ImageConverter) converter1; Penalty penalty = Penalty.toPenalty(converter.getConversionPenalty()); penalty = penalty.add( registry.getAdditionalPenalty(converter.getClass().getName())); dir.addEdge(new ImageConversionEdge(converter, penalty)); } converterEdgeDirectoryVersion = registry.getImageConverterModifications(); this.converterEdgeDirectory = dir; //Replace (thread-safe) } return this.converterEdgeDirectory; }
ImageInfo imageInfo, ImageFlavor targetFlavor) { String originalMime = imageInfo.getMimeType(); ImageImplRegistry registry = manager.getRegistry(); List candidates = new java.util.ArrayList();