/* * 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.fractal; import net.sf.jame.core.config.AbstractConfigElement; import net.sf.jame.core.config.ConfigContext; import net.sf.jame.core.config.ConfigElement; import net.sf.jame.core.config.ListConfigElement; import net.sf.jame.core.config.SingleConfigElement; import net.sf.jame.mandelbrot.incolouringFormula.IncolouringFormulaConfigElement; import net.sf.jame.mandelbrot.orbitTrap.OrbitTrapConfigElement; import net.sf.jame.mandelbrot.outcolouringFormula.OutcolouringFormulaConfigElement; import net.sf.jame.mandelbrot.processingFormula.ProcessingFormulaConfigElement; import net.sf.jame.mandelbrot.renderingFormula.RenderingFormulaConfigElement; import net.sf.jame.mandelbrot.transformingFormula.TransformingFormulaConfigElement; /** * @author Andrea Medeghini */ public class MandelbrotFractalConfigElement extends AbstractConfigElement { private static final long serialVersionUID = 1L; public static final String CLASS_ID = "MandelbrotFractal"; private final SingleConfigElement<RenderingFormulaConfigElement> renderingFormulaSingleElement = new SingleConfigElement<RenderingFormulaConfigElement>("RenderingFormulaSingleElement"); private final SingleConfigElement<TransformingFormulaConfigElement> transformingFormulaSingleElement = new SingleConfigElement<TransformingFormulaConfigElement>("TransformingFormulaSingleElement"); private final SingleConfigElement<ProcessingFormulaConfigElement> processingFormulaSingleElement = new SingleConfigElement<ProcessingFormulaConfigElement>("ProcessingFormulaSingleElement"); private final SingleConfigElement<OrbitTrapConfigElement> orbitTrapSingleElement = new SingleConfigElement<OrbitTrapConfigElement>("OrbitTrapSingleElement"); private final ListConfigElement<IncolouringFormulaConfigElement> incolouringFormulaListElement = new ListConfigElement<IncolouringFormulaConfigElement>("IncolouringFormulaListElement", 1); private final ListConfigElement<OutcolouringFormulaConfigElement> outcolouringFormulaListElement = new ListConfigElement<OutcolouringFormulaConfigElement>("OutcolouringFormulaListElement", 1); /** * Constructs a new element. */ public MandelbrotFractalConfigElement() { super(MandelbrotFractalConfigElement.CLASS_ID); } /** * Returns the renderingFormulaElement. * * @return the renderingFormulaElement. */ public RenderingFormulaConfigElement getRenderingFormulaConfigElement() { return renderingFormulaSingleElement.getValue(); } /** * Sets the renderingFormulaElement. * * @param renderingFormulaElement the renderingFormulaElement to set. */ public void setRenderingFormulaConfigElement(final RenderingFormulaConfigElement renderingFormulaElement) { renderingFormulaSingleElement.setValue(renderingFormulaElement); } /** * Returns the transformingFormulaElement. * * @return the transformingFormulaElement. */ public TransformingFormulaConfigElement getTransformingFormulaConfigElement() { return transformingFormulaSingleElement.getValue(); } /** * Sets the transformingFormulaElement. * * @param transformingFormulaElement the transformingFormulaElement to set. */ public void setTransformingFormulaConfigElement(final TransformingFormulaConfigElement transformingFormulaElement) { transformingFormulaSingleElement.setValue(transformingFormulaElement); } /** * Returns the processingFormulaElement. * * @return the processingFormulaElement. */ public ProcessingFormulaConfigElement getProcessingFormulaConfigElement() { return processingFormulaSingleElement.getValue(); } /** * Sets the processingFormulaElement. * * @param processingFormulaElement the processingFormulaElement to set. */ public void setProcessingFormulaConfigElement(final ProcessingFormulaConfigElement processingFormulaElement) { processingFormulaSingleElement.setValue(processingFormulaElement); } /** * Returns the orbitTrapElement. * * @return the orbitTrapElement. */ public OrbitTrapConfigElement getOrbitTrapConfigElement() { return orbitTrapSingleElement.getValue(); } /** * Sets the orbitTrapElement. * * @param orbitTrapElement the orbitTrapElement to set. */ public void setOrbitTrapConfigElement(final OrbitTrapConfigElement orbitTrapElement) { orbitTrapSingleElement.setValue(orbitTrapElement); } /** * Returns an incolouring formula element. * * @param index the formula index. * @return the incolouring formula. */ public IncolouringFormulaConfigElement getIncolouringFormulaConfigElement(final int index) { return incolouringFormulaListElement.getElement(index); } /** * Returns an incolouring formula element index. * * @param formulaElement the incolouring formula element. * @return the index. */ public int indexOfIncolouringFormulaConfigElement(final IncolouringFormulaConfigElement formulaElement) { return incolouringFormulaListElement.indexOfElement(formulaElement); } /** * Returns the number of incolouring formula elements. * * @return the number of incolouring formula elements. */ public int getIncolouringFormulaConfigElementCount() { return incolouringFormulaListElement.getElementCount(); } /** * Adds a incolouring formula element. * * @param formulaElement the incolouring formula element. */ public void appendIncolouringFormulaConfigElement(final IncolouringFormulaConfigElement formulaElement) { incolouringFormulaListElement.appendElement(formulaElement); } /** * Adds a incolouring formula element. * * @param index the index. * @param formulaElement the incolouring formula element. */ public void insertIncolouringFormulaConfigElementAfter(final int index, final IncolouringFormulaConfigElement formulaElement) { incolouringFormulaListElement.insertElementAfter(index, formulaElement); } /** * Adds a incolouring formula element. * * @param index the index. * @param formulaElement the incolouring formula element. */ public void insertIncolouringFormulaConfigElementBefore(final int index, final IncolouringFormulaConfigElement formulaElement) { incolouringFormulaListElement.insertElementBefore(index, formulaElement); } /** * Removes a incolouring formula element. * * @param index the element index. */ public void removeIncolouringFormulaConfigElement(final int index) { incolouringFormulaListElement.removeElement(index); } /** * Removes a incolouring formula element. * * @param formulaElement the incolouring formula element to remove. */ public void removeIncolouringFormulaConfigElement(final IncolouringFormulaConfigElement formulaElement) { incolouringFormulaListElement.removeElement(formulaElement); } /** * Returns an outcolouring formula element. * * @param index the formula index. * @return the outcolouring formula. */ public OutcolouringFormulaConfigElement getOutcolouringFormulaConfigElement(final int index) { return outcolouringFormulaListElement.getElement(index); } /** * Returns an outcolouring formula element index. * * @param formulaElement the outcolouring formula element. * @return the index. */ public int indexOfOutcolouringFormulaConfigElement(final OutcolouringFormulaConfigElement formulaElement) { return outcolouringFormulaListElement.indexOfElement(formulaElement); } /** * Returns the number of outcolouring formula elements. * * @return the number of outcolouring formula elements. */ public int getOutcolouringFormulaConfigElementCount() { return outcolouringFormulaListElement.getElementCount(); } /** * Adds a outcolouring formula element. * * @param formulaElement the outcolouring formula element. */ public void appendOutcolouringFormulaConfigElement(final OutcolouringFormulaConfigElement formulaElement) { outcolouringFormulaListElement.appendElement(formulaElement); } /** * Adds a outcolouring formula element. * * @param index the index. * @param formulaElement the outcolouring formula element. */ public void insertOutcolouringFormulaConfigElementAfter(final int index, final OutcolouringFormulaConfigElement formulaElement) { outcolouringFormulaListElement.insertElementAfter(index, formulaElement); } /** * Adds a outcolouring formula element. * * @param index the index. * @param formulaElement the outcolouring formula element. */ public void insertOutcolouringFormulaConfigElementBefore(final int index, final OutcolouringFormulaConfigElement formulaElement) { outcolouringFormulaListElement.insertElementBefore(index, formulaElement); } /** * Removes a outcolouring formula element. * * @param index the element index to remove. */ public void removeOutcolouringFormulaConfigElement(final int index) { outcolouringFormulaListElement.removeElement(index); } /** * Removes a outcolouring formula element. * * @param formulaElement the outcolouring formula element to remove. */ public void removeOutcolouringFormulaConfigElement(final OutcolouringFormulaConfigElement formulaElement) { outcolouringFormulaListElement.removeElement(formulaElement); } /** * @param index */ public void moveUpIncolouringFormulaConfigElement(final int index) { incolouringFormulaListElement.moveElementUp(index); } /** * @param index */ public void moveDownIncolouringFormulaConfigElement(final int index) { incolouringFormulaListElement.moveElementDown(index); } /** * @param index */ public void moveUpOutcolouringFormulaConfigElement(final int index) { outcolouringFormulaListElement.moveElementUp(index); } /** * @param index */ public void moveDownOutcolouringFormulaConfigElement(final int index) { outcolouringFormulaListElement.moveElementDown(index); } /** * @return */ @Override public MandelbrotFractalConfigElement clone() { final MandelbrotFractalConfigElement element = new MandelbrotFractalConfigElement(); element.setRenderingFormulaConfigElement(getRenderingFormulaConfigElement().clone()); element.setTransformingFormulaConfigElement(getTransformingFormulaConfigElement().clone()); element.setProcessingFormulaConfigElement(getProcessingFormulaConfigElement().clone()); element.setOrbitTrapConfigElement(getOrbitTrapConfigElement().clone()); for (int i = 0; i < incolouringFormulaListElement.getElementCount(); i++) { element.appendIncolouringFormulaConfigElement(incolouringFormulaListElement.getElement(i).clone()); } for (int i = 0; i < outcolouringFormulaListElement.getElementCount(); i++) { element.appendOutcolouringFormulaConfigElement(outcolouringFormulaListElement.getElement(i).clone()); } return element; } /** * @see net.sf.jame.core.config.ConfigElement#copyFrom(net.sf.jame.core.config.ConfigElement) */ public void copyFrom(ConfigElement source) { MandelbrotFractalConfigElement element = (MandelbrotFractalConfigElement) source; getRenderingFormulaConfigElement().copyFrom(element.getRenderingFormulaConfigElement()); getTransformingFormulaConfigElement().copyFrom(element.getTransformingFormulaConfigElement()); getProcessingFormulaConfigElement().copyFrom(element.getProcessingFormulaConfigElement()); getOrbitTrapConfigElement().copyFrom(element.getOrbitTrapConfigElement()); getIncolouringFormulaListElement().copyFrom(element.getIncolouringFormulaListElement()); getOutcolouringFormulaListElement().copyFrom(element.getOutcolouringFormulaListElement()); } /** * @see net.sf.jame.core.config.AbstractConfigElement#setContext(net.sf.jame.core.config.ConfigContext) */ @Override public void setContext(final ConfigContext context) { super.setContext(context); renderingFormulaSingleElement.setContext(getContext()); transformingFormulaSingleElement.setContext(getContext()); processingFormulaSingleElement.setContext(getContext()); incolouringFormulaListElement.setContext(context); outcolouringFormulaListElement.setContext(context); orbitTrapSingleElement.setContext(getContext()); } /** * @return */ public SingleConfigElement<RenderingFormulaConfigElement> getRenderingFormulaSingleElement() { return renderingFormulaSingleElement; } /** * @return */ public SingleConfigElement<TransformingFormulaConfigElement> getTransformingFormulaSingleElement() { return transformingFormulaSingleElement; } /** * @return */ public SingleConfigElement<ProcessingFormulaConfigElement> getProcessingFormulaSingleElement() { return processingFormulaSingleElement; } /** * @return */ public SingleConfigElement<OrbitTrapConfigElement> getOrbitTrapSingleElement() { return orbitTrapSingleElement; } /** * @return the incolouringFormulaListElement */ public ListConfigElement<IncolouringFormulaConfigElement> getIncolouringFormulaListElement() { return incolouringFormulaListElement; } /** * @return the outcolouringFormulaListElement */ public ListConfigElement<OutcolouringFormulaConfigElement> getOutcolouringFormulaListElement() { return outcolouringFormulaListElement; } /** * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } final MandelbrotFractalConfigElement other = (MandelbrotFractalConfigElement) obj; if (incolouringFormulaListElement == null) { if (other.incolouringFormulaListElement != null) { return false; } } else if (!incolouringFormulaListElement.equals(other.incolouringFormulaListElement)) { return false; } if (outcolouringFormulaListElement == null) { if (other.outcolouringFormulaListElement != null) { return false; } } else if (!outcolouringFormulaListElement.equals(other.outcolouringFormulaListElement)) { return false; } if (renderingFormulaSingleElement == null) { if (other.renderingFormulaSingleElement != null) { return false; } } else if (!renderingFormulaSingleElement.equals(other.renderingFormulaSingleElement)) { return false; } if (transformingFormulaSingleElement == null) { if (other.transformingFormulaSingleElement != null) { return false; } } else if (!transformingFormulaSingleElement.equals(other.transformingFormulaSingleElement)) { return false; } if (processingFormulaSingleElement == null) { if (other.processingFormulaSingleElement != null) { return false; } } else if (!processingFormulaSingleElement.equals(other.processingFormulaSingleElement)) { return false; } if (orbitTrapSingleElement == null) { if (other.orbitTrapSingleElement != null) { return false; } } else if (!orbitTrapSingleElement.equals(other.orbitTrapSingleElement)) { return false; } return true; } /** * @see net.sf.jame.core.config.AbstractConfigElement#dispose() */ @Override public void dispose() { renderingFormulaSingleElement.dispose(); transformingFormulaSingleElement.dispose(); processingFormulaSingleElement.dispose(); incolouringFormulaListElement.dispose(); outcolouringFormulaListElement.dispose(); orbitTrapSingleElement.dispose(); super.dispose(); } }