/*
* JAME 6.2.1
* http://jame.sourceforge.net
*
* Copyright 2001, 2016 Andrea Medeghini
*
* This file is part of JAME.
*
* JAME is an application for creating fractals and other graphics artifacts.
*
* JAME is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* JAME is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with JAME. If not, see <http://www.gnu.org/licenses/>.
*
*/
package net.sf.jame.mandelbrot;
import net.sf.jame.core.extension.ConfigurableExtension;
import net.sf.jame.core.extension.ConfigurableExtensionRegistry;
import net.sf.jame.core.extension.Extension;
import net.sf.jame.core.extension.ExtensionNotFoundException;
import net.sf.jame.core.extension.ExtensionRegistry;
import net.sf.jame.mandelbrot.colorRenderer.extension.ColorRendererExtensionConfig;
import net.sf.jame.mandelbrot.colorRenderer.extension.ColorRendererExtensionRegistry;
import net.sf.jame.mandelbrot.colorRenderer.extension.ColorRendererExtensionRuntime;
import net.sf.jame.mandelbrot.colorRendererFormula.extension.ColorRendererFormulaExtensionRegistry;
import net.sf.jame.mandelbrot.colorRendererFormula.extension.ColorRendererFormulaExtensionRuntime;
import net.sf.jame.mandelbrot.incolouringFormula.extension.IncolouringFormulaExtensionConfig;
import net.sf.jame.mandelbrot.incolouringFormula.extension.IncolouringFormulaExtensionRegistry;
import net.sf.jame.mandelbrot.incolouringFormula.extension.IncolouringFormulaExtensionRuntime;
import net.sf.jame.mandelbrot.orbitTrap.extension.OrbitTrapExtensionConfig;
import net.sf.jame.mandelbrot.orbitTrap.extension.OrbitTrapExtensionRegistry;
import net.sf.jame.mandelbrot.orbitTrap.extension.OrbitTrapExtensionRuntime;
import net.sf.jame.mandelbrot.outcolouringFormula.extension.OutcolouringFormulaExtensionConfig;
import net.sf.jame.mandelbrot.outcolouringFormula.extension.OutcolouringFormulaExtensionRegistry;
import net.sf.jame.mandelbrot.outcolouringFormula.extension.OutcolouringFormulaExtensionRuntime;
import net.sf.jame.mandelbrot.paletteRenderer.extension.PaletteRendererExtensionConfig;
import net.sf.jame.mandelbrot.paletteRenderer.extension.PaletteRendererExtensionRegistry;
import net.sf.jame.mandelbrot.paletteRenderer.extension.PaletteRendererExtensionRuntime;
import net.sf.jame.mandelbrot.paletteRendererFormula.extension.PaletteRendererFormulaExtensionRegistry;
import net.sf.jame.mandelbrot.paletteRendererFormula.extension.PaletteRendererFormulaExtensionRuntime;
import net.sf.jame.mandelbrot.processingFormula.extension.ProcessingFormulaExtensionRegistry;
import net.sf.jame.mandelbrot.processingFormula.extension.ProcessingFormulaExtensionRuntime;
import net.sf.jame.mandelbrot.renderingFormula.extension.RenderingFormulaExtensionConfig;
import net.sf.jame.mandelbrot.renderingFormula.extension.RenderingFormulaExtensionRegistry;
import net.sf.jame.mandelbrot.renderingFormula.extension.RenderingFormulaExtensionRuntime;
import net.sf.jame.mandelbrot.transformingFormula.extension.TransformingFormulaExtensionConfig;
import net.sf.jame.mandelbrot.transformingFormula.extension.TransformingFormulaExtensionRegistry;
import net.sf.jame.mandelbrot.transformingFormula.extension.TransformingFormulaExtensionRuntime;
/**
* @author Andrea Medeghini
*/
public class MandelbrotRegistry {
private ConfigurableExtensionRegistry<RenderingFormulaExtensionRuntime<?>, RenderingFormulaExtensionConfig> renderingFormulaRegistry;
private ConfigurableExtensionRegistry<TransformingFormulaExtensionRuntime<?>, TransformingFormulaExtensionConfig> transformingFormulaRegistry;
private ConfigurableExtensionRegistry<IncolouringFormulaExtensionRuntime<?>, IncolouringFormulaExtensionConfig> incolouringFormulaRegistry;
private ConfigurableExtensionRegistry<OutcolouringFormulaExtensionRuntime<?>, OutcolouringFormulaExtensionConfig> outcolouringFormulaRegistry;
private ConfigurableExtensionRegistry<ColorRendererExtensionRuntime<?>, ColorRendererExtensionConfig> colorRendererRegistry;
private ExtensionRegistry<ColorRendererFormulaExtensionRuntime> colorRendererFormulaRegistry;
private ConfigurableExtensionRegistry<PaletteRendererExtensionRuntime<?>, PaletteRendererExtensionConfig> paletteRendererRegistry;
private ExtensionRegistry<PaletteRendererFormulaExtensionRuntime> paletteRendererFormulaRegistry;
private ConfigurableExtensionRegistry<OrbitTrapExtensionRuntime<?>, OrbitTrapExtensionConfig> orbitTrapRegistry;
private ExtensionRegistry<ProcessingFormulaExtensionRuntime> processingFormulaRegistry;
private static class RegistryHolder {
private static final MandelbrotRegistry instance = new MandelbrotRegistry();
}
private MandelbrotRegistry() {
setRenderingFormulaRegistry(new RenderingFormulaExtensionRegistry());
setTransformingFormulaRegistry(new TransformingFormulaExtensionRegistry());
setIncolouringFormulaRegistry(new IncolouringFormulaExtensionRegistry());
setOutcolouringFormulaRegistry(new OutcolouringFormulaExtensionRegistry());
setPaletteRendererRegistry(new PaletteRendererExtensionRegistry());
setPaletteRendererFormulaRegistry(new PaletteRendererFormulaExtensionRegistry());
setColorRendererRegistry(new ColorRendererExtensionRegistry());
setColorRendererFormulaRegistry(new ColorRendererFormulaExtensionRegistry());
setOrbitTrapRegistry(new OrbitTrapExtensionRegistry());
setProcessingFormulaRegistry(new ProcessingFormulaExtensionRegistry());
}
/**
* @return
*/
public static MandelbrotRegistry getInstance() {
return RegistryHolder.instance;
}
/**
* Returns a rendering formula extension.
*
* @param extensionId the extensionId.
* @return the extension.
* @throws ExtensionNotFoundException
*/
public ConfigurableExtension<RenderingFormulaExtensionRuntime<?>, RenderingFormulaExtensionConfig> getRenderingFormulaExtension(final String extensionId) throws ExtensionNotFoundException {
return renderingFormulaRegistry.getConfigurableExtension(extensionId);
}
/**
* Returns a transforming formula extension.
*
* @param extensionId the extensionId.
* @return the extension.
* @throws ExtensionNotFoundException
*/
public ConfigurableExtension<TransformingFormulaExtensionRuntime<?>, TransformingFormulaExtensionConfig> getTransformingFormulaExtension(final String extensionId) throws ExtensionNotFoundException {
return transformingFormulaRegistry.getConfigurableExtension(extensionId);
}
/**
* Returns a incolouring formula extension.
*
* @param extensionId the extensionId.
* @return the extension.
* @throws ExtensionNotFoundException
*/
public ConfigurableExtension<IncolouringFormulaExtensionRuntime<?>, IncolouringFormulaExtensionConfig> getIncolouringFormulaExtension(final String extensionId) throws ExtensionNotFoundException {
return incolouringFormulaRegistry.getConfigurableExtension(extensionId);
}
/**
* Returns a outcolouring formula extension.
*
* @param extensionId the extensionId.
* @return the extension.
* @throws ExtensionNotFoundException
*/
public ConfigurableExtension<OutcolouringFormulaExtensionRuntime<?>, OutcolouringFormulaExtensionConfig> getOutcolouringFormulaExtension(final String extensionId) throws ExtensionNotFoundException {
return outcolouringFormulaRegistry.getConfigurableExtension(extensionId);
}
/**
* @param extensionId the extensionId.
* @return the extension.
* @throws ExtensionNotFoundException
*/
public ConfigurableExtension<ColorRendererExtensionRuntime<?>, ColorRendererExtensionConfig> getColorRendererExtension(final String extensionId) throws ExtensionNotFoundException {
return colorRendererRegistry.getConfigurableExtension(extensionId);
}
/**
* @param extensionId the extensionId.
* @return the extension.
* @throws ExtensionNotFoundException
*/
public Extension<ColorRendererFormulaExtensionRuntime> getColorRendererFormulaExtension(final String extensionId) throws ExtensionNotFoundException {
return colorRendererFormulaRegistry.getExtension(extensionId);
}
/**
* @param extensionId the extensionId.
* @return the extension.
* @throws ExtensionNotFoundException
*/
public ConfigurableExtension<PaletteRendererExtensionRuntime<?>, PaletteRendererExtensionConfig> getPaletteRendererExtension(final String extensionId) throws ExtensionNotFoundException {
return paletteRendererRegistry.getConfigurableExtension(extensionId);
}
/**
* @param extensionId the extensionId.
* @return the extension.
* @throws ExtensionNotFoundException
*/
public Extension<PaletteRendererFormulaExtensionRuntime> getPaletteRendererFormulaExtension(final String extensionId) throws ExtensionNotFoundException {
return paletteRendererFormulaRegistry.getExtension(extensionId);
}
/**
* @param extensionId the extensionId.
* @return the extension.
* @throws ExtensionNotFoundException
*/
public ConfigurableExtension<OrbitTrapExtensionRuntime<?>, OrbitTrapExtensionConfig> getOrbitTrapExtension(final String extensionId) throws ExtensionNotFoundException {
return orbitTrapRegistry.getConfigurableExtension(extensionId);
}
/**
* @param extensionId the extensionId.
* @return the extension.
* @throws ExtensionNotFoundException
*/
public Extension<ProcessingFormulaExtensionRuntime> getProcessingFormulaExtension(final String extensionId) throws ExtensionNotFoundException {
return processingFormulaRegistry.getExtension(extensionId);
}
private void setColorRendererFormulaRegistry(final ExtensionRegistry<ColorRendererFormulaExtensionRuntime> colorRendererFormulaRegistry) {
this.colorRendererFormulaRegistry = colorRendererFormulaRegistry;
}
private void setColorRendererRegistry(final ConfigurableExtensionRegistry<ColorRendererExtensionRuntime<?>, ColorRendererExtensionConfig> colorRendererRegistry) {
this.colorRendererRegistry = colorRendererRegistry;
}
private void setIncolouringFormulaRegistry(final ConfigurableExtensionRegistry<IncolouringFormulaExtensionRuntime<?>, IncolouringFormulaExtensionConfig> incolouringFormulaRegistry) {
this.incolouringFormulaRegistry = incolouringFormulaRegistry;
}
private void setOutcolouringFormulaRegistry(final ConfigurableExtensionRegistry<OutcolouringFormulaExtensionRuntime<?>, OutcolouringFormulaExtensionConfig> outcolouringFormulaRegistry) {
this.outcolouringFormulaRegistry = outcolouringFormulaRegistry;
}
private void setPaletteRendererFormulaRegistry(final ExtensionRegistry<PaletteRendererFormulaExtensionRuntime> paletteRendererFormulaRegistry) {
this.paletteRendererFormulaRegistry = paletteRendererFormulaRegistry;
}
private void setPaletteRendererRegistry(final ConfigurableExtensionRegistry<PaletteRendererExtensionRuntime<?>, PaletteRendererExtensionConfig> paletteRendererRegistry) {
this.paletteRendererRegistry = paletteRendererRegistry;
}
private void setRenderingFormulaRegistry(final ConfigurableExtensionRegistry<RenderingFormulaExtensionRuntime<?>, RenderingFormulaExtensionConfig> renderingFormulaRegistry) {
this.renderingFormulaRegistry = renderingFormulaRegistry;
}
private void setTransformingFormulaRegistry(final ConfigurableExtensionRegistry<TransformingFormulaExtensionRuntime<?>, TransformingFormulaExtensionConfig> transformingFormulaRegistry) {
this.transformingFormulaRegistry = transformingFormulaRegistry;
}
private void setOrbitTrapRegistry(final ConfigurableExtensionRegistry<OrbitTrapExtensionRuntime<?>, OrbitTrapExtensionConfig> orbitTrapRegistry) {
this.orbitTrapRegistry = orbitTrapRegistry;
}
private void setProcessingFormulaRegistry(final ExtensionRegistry<ProcessingFormulaExtensionRuntime> processingFormulaRegistry) {
this.processingFormulaRegistry = processingFormulaRegistry;
}
/**
* @return the colorRendererFormulaRegistry
*/
public ExtensionRegistry<ColorRendererFormulaExtensionRuntime> getColorRendererFormulaRegistry() {
return colorRendererFormulaRegistry;
}
/**
* @return the colorRendererRegistry
*/
public ConfigurableExtensionRegistry<ColorRendererExtensionRuntime<?>, ColorRendererExtensionConfig> getColorRendererRegistry() {
return colorRendererRegistry;
}
/**
* @return the incolouringFormulaRegistry
*/
public ConfigurableExtensionRegistry<IncolouringFormulaExtensionRuntime<?>, IncolouringFormulaExtensionConfig> getIncolouringFormulaRegistry() {
return incolouringFormulaRegistry;
}
/**
* @return the outcolouringFormulaRegistry
*/
public ConfigurableExtensionRegistry<OutcolouringFormulaExtensionRuntime<?>, OutcolouringFormulaExtensionConfig> getOutcolouringFormulaRegistry() {
return outcolouringFormulaRegistry;
}
/**
* @return the paletteRendererFormulaRegistry
*/
public ExtensionRegistry<PaletteRendererFormulaExtensionRuntime> getPaletteRendererFormulaRegistry() {
return paletteRendererFormulaRegistry;
}
/**
* @return the paletteRendererRegistry
*/
public ConfigurableExtensionRegistry<PaletteRendererExtensionRuntime<?>, PaletteRendererExtensionConfig> getPaletteRendererRegistry() {
return paletteRendererRegistry;
}
/**
* @return the renderingFormulaRegistry
*/
public ConfigurableExtensionRegistry<RenderingFormulaExtensionRuntime<?>, RenderingFormulaExtensionConfig> getRenderingFormulaRegistry() {
return renderingFormulaRegistry;
}
/**
* @return the transformingFormulaRegistry
*/
public ConfigurableExtensionRegistry<TransformingFormulaExtensionRuntime<?>, TransformingFormulaExtensionConfig> getTransformingFormulaRegistry() {
return transformingFormulaRegistry;
}
/**
* @return the transformingFormulaRegistry
*/
public ConfigurableExtensionRegistry<OrbitTrapExtensionRuntime<?>, OrbitTrapExtensionConfig> getOrbitTrapRegistry() {
return orbitTrapRegistry;
}
/**
* @return the processingFormulaRegistry
*/
public ExtensionRegistry<ProcessingFormulaExtensionRuntime> getProcessingFormulaRegistry() {
return processingFormulaRegistry;
}
}