/* JWildfire - an image and animation processor written in Java Copyright (C) 1995-2011 Andreas Maschke This is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This software 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this software; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jwildfire.create.tina.variation; import org.jwildfire.base.Tools; public class DCCracklePFunc extends DCCrackleWFFunc { private static final long serialVersionUID = 1L; public static final String PARAM_PRESET = "preset"; public static final String PARAM_Z = "z"; // private in class CrackleFunc for some reason private static final String[] additionalParamNames = { PARAM_PRESET }; private int preset = 0; private double pcellsize = 1.0; private double ppower = 0.2; private double pdistort = 0.0; private double pscale = 1.0; private double pz = 0.0; // dc_crackleP_wf by Brad Stefanov and Rick Sidwell // This is a specialization of dc_crackle_wf by Andreas Maschke, which is a specialization of crackle, originally invented // by Neil Slater, see http://slobo777.deviantart.com/art/Apo-Plugins-Hexes-And-Crackle-99243824. // It is based on the Crackle Styles Chooser script by Ian Anderson and Anu Wilde (adapted for JWildfire by Mick Hogan). // An additional parameter "preset" will set the other parameters; see the script for names of the values @Override public String getName() { return "dc_cracklep"; } @Override public String[] getParameterNames() { return joinArrays(additionalParamNames, super.getParameterNames()); } @Override public Object[] getParameterValues() { return joinArrays(new Object[] { preset }, super.getParameterValues() ); } @Override public void setParameter(String pName, double pValue) { if (PARAM_PRESET.equalsIgnoreCase(pName)) { preset = Tools.FTOI(pValue); switch (preset) { case 0: pcellsize = 1.0; ppower = 0.2; pdistort = 0.0; pscale = 1.00; pz=0.0; break; case 1: pcellsize = 0.5; ppower = 0.5; pdistort = 1.0; pscale = 0.95; pz=10.0; break; case 2: pcellsize = 0.5; ppower = 0.01; pdistort = 0.5; pscale = 1.0; pz=0.0; break; case 3: pcellsize = 0.05; ppower = 0.9; pdistort = 0.9; pscale = 0.5; pz=0.0; break; case 4: pcellsize = 0.5; ppower = 1.0; pdistort = 1.0; pscale = 0.93; pz=10.0; break; case 5: pcellsize = 1.0; ppower = 1.0; pdistort = 0.0; pscale = 0.9; pz=0.0; break; case 6: pcellsize = 0.8; ppower = 0.5; pdistort = 0.5; pscale = 0.8; pz=0.5; break; case 7: pcellsize = 0.2; ppower = 0.01; pdistort = 0.0; pscale = 0.4; pz=2.0; break; case 8: pcellsize = 1.0; ppower = 0.5; pdistort = 0.25; pscale = 0.5; pz=0.0; break; case 9: pcellsize = 0.6; ppower = 0.75; pdistort = 1.0; pscale = 0.25; pz=0.75; break; case 10: pcellsize = 0.5; ppower = 25.0; pdistort = 0.0; pscale = 9.0; pz=6.0; break; case 11: pcellsize = 0.2; ppower = 1.0; pdistort = 0.0; pscale = 0.4; pz=0.0; break; case 12: pcellsize = 1.5; ppower = 0.01; pdistort = 0.0; pscale = 0.4; pz=0.0; break; case 13: pcellsize = 8.0; ppower = 0.01; pdistort = 0.0; pscale = 0.4; pz=0.0; break; case 14: pcellsize = 0.2; ppower = 0.05; pdistort = 1.0; pscale = 5.0; pz=0.0; break; case 15: pcellsize = 0.07; ppower = 0.05; pdistort = 0.5; pscale = 9.0; pz=6.0; break; case 16: pcellsize = 0.2; ppower = 0.1; pdistort = 0.0; pscale = 1.5; pz=2.0; break; case 17: pcellsize = 0.297494; ppower = 0.662265; pdistort = 0.0708866; pscale = 0.228156; pz=0.0; break; case 18: pcellsize = 0.205939; ppower = 1.0; pdistort = 0.0; pscale = 0.6298; pz=0.35; break; case 19: pcellsize = 0.5; ppower = 0.001; pdistort = 1.0; pscale = 2.0; pz=0.0; break; case 20: pcellsize = 0.5; ppower = 0.0005; pdistort = 0.748; pscale = 1.465; pz=6.0; break; } super.setParameter(PARAM_CELLSIZE, pcellsize); super.setParameter(PARAM_POWER, ppower); super.setParameter(PARAM_DISTORT, pdistort); super.setParameter(PARAM_SCALE, pscale); super.setParameter(PARAM_Z, pz); } else super.setParameter(pName, pValue); } }