/* JWildfire - an image and animation processor written in Java Copyright (C) 1995-2014 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 java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.jwildfire.create.tina.variation.iflames.IFlamesFunc; import org.jwildfire.create.tina.variation.mesh.OBJMeshPrimitiveWFFunc; import org.jwildfire.create.tina.variation.mesh.OBJMeshWFFunc; import org.jwildfire.create.tina.variation.plot.IsoSFPlot3DWFFunc; import org.jwildfire.create.tina.variation.plot.ParPlot2DWFFunc; import org.jwildfire.create.tina.variation.plot.YPlot2DWFFunc; import org.jwildfire.create.tina.variation.plot.YPlot3DWFFunc; public class VariationFuncList { public static final String DEFAULT_VARIATION = "linear3D"; private static List<Class<? extends VariationFunc>> items = new ArrayList<Class<? extends VariationFunc>>(); private static List<String> unfilteredNameList = null; private static List<String> filteredNameList = null; private static Map<Class<? extends VariationFunc>, String> aliasMap = new HashMap<Class<? extends VariationFunc>, String>(); private static final Map<String, String> resolvedAliasMap; static { // define alias for renamed variations to allow loading of old flame // files aliasMap.put(KaleidoscopeFunc.class, "kaleidoscope"); aliasMap.put(MandelbrotFunc.class, "Mandelbrot"); aliasMap.put(SpirographFunc.class, "Spirograph"); aliasMap.put(TruchetFunc.class, "Truchet"); aliasMap.put(GlynnSim1Func.class, "GlynnSim1"); aliasMap.put(GlynnSim2Func.class, "GlynnSim2"); aliasMap.put(GlynnSim3Func.class, "GlynnSim3"); aliasMap.put(Spherical3DFunc.class, "Spherical3D"); aliasMap.put(EpispiralFunc.class, "Epispiral"); aliasMap.put(SphericalNFunc.class, "SphericalN"); aliasMap.put(GlynniaFunc.class, "Glynnia"); aliasMap.put(SuperShape3DFunc.class, "SuperShape3d"); aliasMap.put(CustomWFFunc.class, "t_custom"); aliasMap.put(EpispiralWFFunc.class, "t_epispiral"); aliasMap.put(ColorScaleWFFunc.class, "t_colorscale"); aliasMap.put(HeartWFFunc.class, "t_heart"); aliasMap.put(Waves2WFFunc.class, "t_xy_waves"); aliasMap.put(BubbleWFFunc.class, "t_bubble"); aliasMap.put(PostBumpMapWFFunc.class, "t_post_bump_map"); aliasMap.put(PostMirrorWFFunc.class, "t_post_mirror"); aliasMap.put(PreWave3DWFFunc.class, "t_pre_wave3D"); aliasMap.put(RoseWFFunc.class, "t_rose"); aliasMap.put(SplitBrdrFunc.class, "SplitBrdr"); aliasMap.put(JuliaCFunc.class, "Juliac"); aliasMap.put(VoronFunc.class, "Voron"); aliasMap.put(CrossFunc.class, "cross2"); aliasMap.put(CircleLinearFunc.class, "CircleLinear"); aliasMap.put(CircleRandFunc.class, "CircleRand"); aliasMap.put(CircleTrans1Func.class, "CircleTrans1"); aliasMap.put(MobiusNFunc.class, "MobiusN"); // registerVariationFunc(LinearFunc.class); registerVariationFunc(SphericalFunc.class); registerVariationFunc(WavesFunc.class); registerVariationFunc(SwirlFunc.class); registerVariationFunc(SpiralFunc.class); registerVariationFunc(CurlFunc.class); registerVariationFunc(HeartFunc.class); registerVariationFunc(Linear3DFunc.class); registerVariationFunc(Curl3DFunc.class); registerVariationFunc(ZTranslateFunc.class); registerVariationFunc(ZScaleFunc.class); registerVariationFunc(JuliaNFunc.class); registerVariationFunc(SinusoidalFunc.class); registerVariationFunc(HorseshoeFunc.class); registerVariationFunc(PolarFunc.class); registerVariationFunc(HandkerchiefFunc.class); registerVariationFunc(DiscFunc.class); registerVariationFunc(HyperbolicFunc.class); registerVariationFunc(DiamondFunc.class); registerVariationFunc(BlurFunc.class); registerVariationFunc(ExFunc.class); registerVariationFunc(JuliaFunc.class); registerVariationFunc(BentFunc.class); registerVariationFunc(FisheyeFunc.class); registerVariationFunc(PopcornFunc.class); registerVariationFunc(ExponentialFunc.class); registerVariationFunc(PowerFunc.class); registerVariationFunc(CosineFunc.class); registerVariationFunc(RingsFunc.class); registerVariationFunc(FanFunc.class); registerVariationFunc(EyefishFunc.class); registerVariationFunc(BubbleFunc.class); registerVariationFunc(CylinderFunc.class); registerVariationFunc(NoiseFunc.class); registerVariationFunc(GaussianBlurFunc.class); registerVariationFunc(PreBlurFunc.class); registerVariationFunc(ZBlurFunc.class); registerVariationFunc(Blur3DFunc.class); registerVariationFunc(PreZScaleFunc.class); registerVariationFunc(PreZTranslateFunc.class); registerVariationFunc(PreRotateXFunc.class); registerVariationFunc(PreRotateYFunc.class); registerVariationFunc(PostRotateXFunc.class); registerVariationFunc(PostRotateYFunc.class); registerVariationFunc(ZConeFunc.class); registerVariationFunc(HemisphereFunc.class); registerVariationFunc(Rings2Func.class); registerVariationFunc(RectanglesFunc.class); registerVariationFunc(PDJFunc.class); registerVariationFunc(JuliaScopeFunc.class); registerVariationFunc(Julia3DFunc.class); registerVariationFunc(Julia3DZFunc.class); registerVariationFunc(Fan2Func.class); registerVariationFunc(RadialBlurFunc.class); registerVariationFunc(Spherical3DFunc.class); registerVariationFunc(BlobFunc.class); registerVariationFunc(Blob3DFunc.class); registerVariationFunc(PerspectiveFunc.class); registerVariationFunc(PieFunc.class); registerVariationFunc(Pie3DFunc.class); registerVariationFunc(ButterflyFunc.class); registerVariationFunc(Butterfly3DFunc.class); registerVariationFunc(ArchFunc.class); registerVariationFunc(SquareFunc.class); registerVariationFunc(Square3DFunc.class); registerVariationFunc(TangentFunc.class); registerVariationFunc(Tangent3DFunc.class); registerVariationFunc(BladeFunc.class); registerVariationFunc(Blade3DFunc.class); registerVariationFunc(CrossFunc.class); registerVariationFunc(BipolarFunc.class); registerVariationFunc(WedgeFunc.class); registerVariationFunc(ScryFunc.class); registerVariationFunc(Waves2Func.class); registerVariationFunc(Polar2Func.class); registerVariationFunc(Popcorn2Func.class); registerVariationFunc(Secant2Func.class); registerVariationFunc(NgonFunc.class); registerVariationFunc(EpispiralWFFunc.class); registerVariationFunc(RoseWFFunc.class); registerVariationFunc(RaysFunc.class); registerVariationFunc(TwintrianFunc.class); registerVariationFunc(FociFunc.class); registerVariationFunc(Disc2Func.class); registerVariationFunc(SuperShapeFunc.class); registerVariationFunc(FlowerFunc.class); registerVariationFunc(ConicFunc.class); registerVariationFunc(ParabolaFunc.class); registerVariationFunc(Bent2Func.class); registerVariationFunc(BoardersFunc.class); registerVariationFunc(CellFunc.class); registerVariationFunc(CPowFunc.class); registerVariationFunc(CurveFunc.class); registerVariationFunc(EDiscFunc.class); registerVariationFunc(EscherFunc.class); registerVariationFunc(LazySusanFunc.class); registerVariationFunc(ExpFunc.class); registerVariationFunc(LogFunc.class); registerVariationFunc(SinFunc.class); registerVariationFunc(CosFunc.class); registerVariationFunc(TanFunc.class); registerVariationFunc(SecFunc.class); registerVariationFunc(CscFunc.class); registerVariationFunc(CotFunc.class); registerVariationFunc(SinhFunc.class); registerVariationFunc(CoshFunc.class); registerVariationFunc(TanhFunc.class); registerVariationFunc(SechFunc.class); registerVariationFunc(CschFunc.class); registerVariationFunc(CothFunc.class); registerVariationFunc(ModulusFunc.class); registerVariationFunc(LoonieFunc.class); registerVariationFunc(OscilloscopeFunc.class); registerVariationFunc(SeparationFunc.class); registerVariationFunc(SplitFunc.class); registerVariationFunc(SplitsFunc.class); registerVariationFunc(StripesFunc.class); registerVariationFunc(WedgeJuliaFunc.class); registerVariationFunc(WedgeSphFunc.class); registerVariationFunc(WhorlFunc.class); registerVariationFunc(AugerFunc.class); registerVariationFunc(FluxFunc.class); registerVariationFunc(MobiusFunc.class); registerVariationFunc(CirclizeFunc.class); registerVariationFunc(PostMirrorWFFunc.class); registerVariationFunc(PreWave3DWFFunc.class); registerVariationFunc(BWraps7Func.class); registerVariationFunc(ColorScaleWFFunc.class); registerVariationFunc(HeartWFFunc.class); registerVariationFunc(XHeartFunc.class); registerVariationFunc(EllipticFunc.class); registerVariationFunc(Waves2WFFunc.class); registerVariationFunc(CropFunc.class); registerVariationFunc(PostCropFunc.class); registerVariationFunc(PreCropFunc.class); registerVariationFunc(CircleCropFunc.class); registerVariationFunc(PreCircleCropFunc.class); registerVariationFunc(PostCircleCropFunc.class); registerVariationFunc(HexesFunc.class); registerVariationFunc(CrackleFunc.class); registerVariationFunc(MandelbrotFunc.class); registerVariationFunc(BubbleWFFunc.class); registerVariationFunc(SpirographFunc.class); registerVariationFunc(CustomWFFunc.class); registerVariationFunc(TruchetFunc.class); registerVariationFunc(PostColorScaleWFFunc.class); registerVariationFunc(PostCustomWFFunc.class); registerVariationFunc(PreCustomWFFunc.class); registerVariationFunc(CloverLeafWFFunc.class); registerVariationFunc(CannabisCurveWFFunc.class); registerVariationFunc(SubFlameWFFunc.class); registerVariationFunc(PreSubFlameWFFunc.class); registerVariationFunc(KaleidoscopeFunc.class); registerVariationFunc(Waves3WFFunc.class); registerVariationFunc(Waves4WFFunc.class); registerVariationFunc(GlynnSim1Func.class); registerVariationFunc(GlynnSim2Func.class); registerVariationFunc(GlynnSim3Func.class); registerVariationFunc(PostColorMapWFFunc.class); registerVariationFunc(PostBumpMapWFFunc.class); registerVariationFunc(EclipseFunc.class); registerVariationFunc(Spherical3DWFFunc.class); registerVariationFunc(PostZTranslateWFFunc.class); registerVariationFunc(PostZScaleWFFunc.class); registerVariationFunc(NBlurFunc.class); registerVariationFunc(LinearTFunc.class); registerVariationFunc(LinearT3DFunc.class); registerVariationFunc(NPolarFunc.class); registerVariationFunc(LissajousFunc.class); registerVariationFunc(WaffleFunc.class); registerVariationFunc(UnpolarFunc.class); registerVariationFunc(ChecksFunc.class); registerVariationFunc(BilinearFunc.class); registerVariationFunc(FarBlurFunc.class); registerVariationFunc(Falloff2Func.class); registerVariationFunc(PostFalloff2Func.class); registerVariationFunc(FlipYFunc.class); registerVariationFunc(FlipCircleFunc.class); registerVariationFunc(EpispiralFunc.class); registerVariationFunc(DCCubeFunc.class); registerVariationFunc(LayeredSpiralFunc.class); registerVariationFunc(CollideoscopeFunc.class); registerVariationFunc(HypertileFunc.class); registerVariationFunc(Hypertile1Func.class); registerVariationFunc(Hypertile2Func.class); registerVariationFunc(DCPerlinFunc.class); registerVariationFunc(ColorMapWFFunc.class); registerVariationFunc(SphericalNFunc.class); registerVariationFunc(Waves2_3DFunc.class); registerVariationFunc(Scry3DFunc.class); registerVariationFunc(Foci_3DFunc.class); registerVariationFunc(InflateZ_1Func.class); registerVariationFunc(InflateZ_2Func.class); registerVariationFunc(InflateZ_3Func.class); registerVariationFunc(InflateZ_4Func.class); registerVariationFunc(InflateZ_5Func.class); registerVariationFunc(InflateZ_6Func.class); registerVariationFunc(Loonie_3DFunc.class); registerVariationFunc(PreSpinZFunc.class); registerVariationFunc(PostSpinZFunc.class); registerVariationFunc(RoundSpher3DFunc.class); registerVariationFunc(Cubic_3DFunc.class); registerVariationFunc(Disc3DFunc.class); registerVariationFunc(CubicLattice3DFunc.class); registerVariationFunc(Popcorn2_3DFunc.class); registerVariationFunc(Hexaplay3DFunc.class); registerVariationFunc(Hexnix3DFunc.class); registerVariationFunc(PhoenixJuliaFunc.class); registerVariationFunc(Boarders2Func.class); registerVariationFunc(PreBoarders2Func.class); registerVariationFunc(BCollideFunc.class); registerVariationFunc(BModFunc.class); registerVariationFunc(BSwirlFunc.class); registerVariationFunc(BTransformFunc.class); registerVariationFunc(GlynniaFunc.class); registerVariationFunc(CylinderApoFunc.class); registerVariationFunc(ECollideFunc.class); registerVariationFunc(EJuliaFunc.class); registerVariationFunc(EModFunc.class); registerVariationFunc(EMotionFunc.class); registerVariationFunc(EPushFunc.class); registerVariationFunc(ERotateFunc.class); registerVariationFunc(EScaleFunc.class); registerVariationFunc(ESwirlFunc.class); registerVariationFunc(DCZTranslFunc.class); registerVariationFunc(PreDCZTranslFunc.class); registerVariationFunc(PostDCZTranslFunc.class); registerVariationFunc(LogApoFunc.class); registerVariationFunc(RippleFunc.class); registerVariationFunc(JuliaN2Func.class); registerVariationFunc(PostBWraps2Func.class); registerVariationFunc(PreBWraps2Func.class); registerVariationFunc(PostCurlFunc.class); registerVariationFunc(PostCurl3DFunc.class); registerVariationFunc(FractDragonWFFunc.class); registerVariationFunc(FractMandelbrotWFFunc.class); registerVariationFunc(FractMeteorsWFFunc.class); registerVariationFunc(FractJuliaWFFunc.class); registerVariationFunc(FractPearlsWFFunc.class); registerVariationFunc(FractSalamanderWFFunc.class); registerVariationFunc(TextWFFunc.class); registerVariationFunc(XTrbFunc.class); registerVariationFunc(SuperShape3DFunc.class); registerVariationFunc(Fibonacci2Func.class); registerVariationFunc(Ovoid3DFunc.class); registerVariationFunc(HOFunc.class); registerVariationFunc(PRose3DFunc.class); registerVariationFunc(CircusFunc.class); registerVariationFunc(LazyTravisFunc.class); registerVariationFunc(Hypertile3DFunc.class); registerVariationFunc(Hypertile3D1Func.class); registerVariationFunc(Hypertile3D2Func.class); registerVariationFunc(Poincare3DFunc.class); registerVariationFunc(GDOffsFunc.class); registerVariationFunc(Sinusoidal3DFunc.class); registerVariationFunc(SVFFunc.class); registerVariationFunc(TaurusFunc.class); registerVariationFunc(PreSinusoidal3DFunc.class); registerVariationFunc(PreDisc3DFunc.class); registerVariationFunc(SintrangeFunc.class); registerVariationFunc(TargetFunc.class); registerVariationFunc(Bubble2Func.class); registerVariationFunc(BlockYFunc.class); registerVariationFunc(SplitBrdrFunc.class); registerVariationFunc(MCarpetFunc.class); registerVariationFunc(OctagonFunc.class); registerVariationFunc(FourthFunc.class); registerVariationFunc(TwoFaceFunc.class); registerVariationFunc(FractFormulaJuliaWFFunc.class); registerVariationFunc(FractFormulaMandWFFunc.class); registerVariationFunc(BarycentroidFunc.class); registerVariationFunc(SVGWFFunc.class); registerVariationFunc(JuliaCFunc.class); registerVariationFunc(JuliaQFunc.class); registerVariationFunc(Julia3DQFunc.class); registerVariationFunc(PostJuliaQFunc.class); registerVariationFunc(PostJulia3DQFunc.class); registerVariationFunc(PostSmartCropFunc.class); registerVariationFunc(CircleBlurFunc.class); registerVariationFunc(SineBlurFunc.class); registerVariationFunc(StarBlurFunc.class); registerVariationFunc(PostDepthFunc.class); registerVariationFunc(Grid3DWFFunc.class); registerVariationFunc(DisplacementMapWFFunc.class); registerVariationFunc(PostDisplacementMapWFFunc.class); registerVariationFunc(PostRBlurFunc.class); registerVariationFunc(ShredlinFunc.class); registerVariationFunc(PrimitivesWFFunc.class); registerVariationFunc(FlattenFunc.class); registerVariationFunc(BlurZoomFunc.class); registerVariationFunc(LazyJessFunc.class); registerVariationFunc(VoronFunc.class); registerVariationFunc(OrthoFunc.class); registerVariationFunc(SynthFunc.class); registerVariationFunc(OnionFunc.class); registerVariationFunc(BubbleT3DFunc.class); registerVariationFunc(ExtrudeFunc.class); registerVariationFunc(LineFunc.class); registerVariationFunc(Onion2Func.class); registerVariationFunc(DCCrackleWFFunc.class); registerVariationFunc(DCHexesWFFunc.class); registerVariationFunc(MurlFunc.class); registerVariationFunc(Murl2Func.class); registerVariationFunc(PreCurlFunc.class); registerVariationFunc(Falloff3Func.class); registerVariationFunc(PreFalloff3Func.class); registerVariationFunc(PostFalloff3Func.class); registerVariationFunc(DLAWFFunc.class); registerVariationFunc(JuliaN3DXFunc.class); registerVariationFunc(Waves2BFunc.class); registerVariationFunc(BWRandsFunc.class); registerVariationFunc(Loonie2Func.class); registerVariationFunc(Loonie3Func.class); registerVariationFunc(JacCnFunc.class); registerVariationFunc(JacDnFunc.class); registerVariationFunc(JacSnFunc.class); registerVariationFunc(TanCosFunc.class); registerVariationFunc(RippledFunc.class); registerVariationFunc(FunnelFunc.class); registerVariationFunc(RoundSpherFunc.class); registerVariationFunc(SpiralwingFunc.class); registerVariationFunc(Rays1Func.class); registerVariationFunc(Rays2Func.class); registerVariationFunc(Rays3Func.class); registerVariationFunc(PetalFunc.class); registerVariationFunc(EnnepersFunc.class); registerVariationFunc(SquirrelFunc.class); registerVariationFunc(Splits3DFunc.class); registerVariationFunc(SquarizeFunc.class); registerVariationFunc(SquishFunc.class); registerVariationFunc(Circlize2Func.class); registerVariationFunc(SphereNjaFunc.class); registerVariationFunc(Oscilloscope2Func.class); registerVariationFunc(Scry2Func.class); registerVariationFunc(ScramblyFunc.class); registerVariationFunc(InternalSliceRangeIndicatorWFFunc.class); registerVariationFunc(ZTwisterFunc.class); registerVariationFunc(AsteriaFunc.class); registerVariationFunc(LogDbFunc.class); registerVariationFunc(Sph3DFunc.class); registerVariationFunc(XHeartBlurWFFunc.class); registerVariationFunc(DinisSurfaceWFFunc.class); registerVariationFunc(PreRectWFFunc.class); registerVariationFunc(Ennepers2Func.class); registerVariationFunc(WhitneyUmbrellaFunc.class); registerVariationFunc(BSplitFunc.class); registerVariationFunc(PolylogarithmFunc.class); registerVariationFunc(DevilWarpFunc.class); registerVariationFunc(YinYangFunc.class); registerVariationFunc(TargetSpFunc.class); registerVariationFunc(ExBlurFunc.class); registerVariationFunc(PowBlockFunc.class); registerVariationFunc(PreBlur3DFunc.class); registerVariationFunc(VogelFunc.class); registerVariationFunc(IFlamesFunc.class); registerVariationFunc(CurlSpFunc.class); registerVariationFunc(DCLinearFunc.class); registerVariationFunc(DCCarpetFunc.class); registerVariationFunc(DCBubbleFunc.class); registerVariationFunc(DCTriangleFunc.class); registerVariationFunc(WaveBlurWFFunc.class); registerVariationFunc(PostHeatFunc.class); registerVariationFunc(CPow3Func.class); registerVariationFunc(Rational3Func.class); registerVariationFunc(STwinFunc.class); registerVariationFunc(FlowerDbFunc.class); registerVariationFunc(RosoniFunc.class); registerVariationFunc(Glynnia3Func.class); registerVariationFunc(MaskFunc.class); registerVariationFunc(FDiscFunc.class); registerVariationFunc(RhodoneaFunc.class); registerVariationFunc(ButterflyFayFunc.class); registerVariationFunc(BlurCircleFunc.class); registerVariationFunc(BlurPixelizeFunc.class); registerVariationFunc(CircleLinearFunc.class); registerVariationFunc(CircleRandFunc.class); registerVariationFunc(CircleTrans1Func.class); registerVariationFunc(IDiscFunc.class); registerVariationFunc(DeltaAFunc.class); registerVariationFunc(WDiscFunc.class); registerVariationFunc(TradeFunc.class); registerVariationFunc(WFunc.class); registerVariationFunc(XFunc.class); registerVariationFunc(YFunc.class); registerVariationFunc(ZFunc.class); registerVariationFunc(CustomFullVariationWrapperFunc.class); registerVariationFunc(PostPointSymmetryWFFunc.class); registerVariationFunc(PostAxisSymmetryWFFunc.class); registerVariationFunc(MobiusStripFunc.class); registerVariationFunc(YPlot2DWFFunc.class); registerVariationFunc(YPlot3DWFFunc.class); registerVariationFunc(ParPlot2DWFFunc.class); registerVariationFunc(MobiusNFunc.class); registerVariationFunc(OBJMeshWFFunc.class); registerVariationFunc(OBJMeshPrimitiveWFFunc.class); registerVariationFunc(PlaneWFFunc.class); registerVariationFunc(CheckerboardWFFunc.class); registerVariationFunc(IsoSFPlot3DWFFunc.class); registerVariationFunc(DLA3DWFFunc.class); registerVariationFunc(Waves2RadialFunc.class); registerVariationFunc(CirclesplitFunc.class); registerVariationFunc(LogTile2Func.class); registerVariationFunc(MobiqFunc.class); registerVariationFunc(TileHlpFunc.class); registerVariationFunc(SplipticBSFunc.class); resolvedAliasMap = new HashMap<>(); for (Entry<Class<? extends VariationFunc>, String> funcCls : aliasMap.entrySet()) { String vName = getVariationName(funcCls.getKey(), false); if (vName != null) { resolvedAliasMap.put(funcCls.getValue(), vName); } } } private static void registerVariationFunc( Class<? extends VariationFunc> pVariationFunc) { items.add(pVariationFunc); unfilteredNameList = null; } private static String getVariationName( Class<? extends VariationFunc> pFuncCls, boolean pFatal) { try { return pFuncCls.newInstance().getName(); } catch (InstantiationException ex) { if (pFatal) { throw new RuntimeException(ex); } else { ex.printStackTrace(); } } catch (IllegalAccessException ex) { if (pFatal) { throw new RuntimeException(ex); } else { ex.printStackTrace(); } } return null; } private static void refreshNameList() { unfilteredNameList = new ArrayList<String>(); filteredNameList = new ArrayList<String>(); for (Class<? extends VariationFunc> funcCls : items) { String vName = getVariationName(funcCls, false); if (vName != null) { unfilteredNameList.add(vName); if (!vName.startsWith("_")) { filteredNameList.add(vName); } } } } public static List<String> getNameList() { if (filteredNameList == null) { refreshNameList(); } return filteredNameList; } private static List<String> getUnfilteredNameList() { if (unfilteredNameList == null) { refreshNameList(); } return unfilteredNameList; } public static Map<String, String> getAliasMap() { return resolvedAliasMap; } public static String getRandomVariationname() { while (true) { int idx = (int) (Math.random() * getNameList().size()); String name = getNameList().get(idx); if (!(name.indexOf("inflate") == 0) && !name.equals("svg_wf") && !(name.indexOf("post_") == 0) && !(name.indexOf("pre_") == 0) && !name.equals("iflames_wf")) { return name; } } } public static VariationFunc getVariationFuncInstance(String pName) { return getVariationFuncInstance(pName, false); } public static VariationFunc getVariationFuncInstance(String pName, boolean pFatal) { int idx = getUnfilteredNameList().indexOf(pName); if (idx >= 0) { Class<? extends VariationFunc> funcCls = items.get(idx); try { VariationFunc func = funcCls.newInstance(); return func; } catch (Throwable e) { e.printStackTrace(); } } if (pFatal) { throw new RuntimeException("Variation \"" + pName + "\" could not be found"); } return null; } public static List<Class<? extends VariationFunc>> getVariationClasses() { return items; } }