Search in sources :

Example 56 with Layer

use of org.jwildfire.create.tina.base.Layer in project JWildfire by thargor6.

the class FACLFlameWriter method getFlameXML.

public String getFlameXML(Flame pFlame) throws Exception {
    SimpleXMLBuilder xb = new SimpleXMLBuilder();
    List<SimpleXMLBuilder.Attribute<?>> flamesAttrList = new ArrayList<>();
    flamesAttrList.add(new Attribute<String>("name", ""));
    xb.beginElement("Flames", flamesAttrList);
    // Flame
    List<SimpleXMLBuilder.Attribute<?>> attrList = createFlameAttributes(pFlame, xb);
    Layer layer = pFlame.getFirstLayer();
    xb.beginElement("flame", attrList);
    // XForm
    for (XForm xForm : layer.getXForms()) {
        xb.emptyElement("xform", createXFormAttrList(xb, layer, xForm));
    }
    // FinalXForms
    for (XForm xForm : layer.getFinalXForms()) {
        xb.emptyElement("finalxform", createXFormAttrList(xb, layer, xForm));
    }
    // Gradient
    addGradient(xb, layer);
    xb.endElement("flame");
    xb.endElement("Flames");
    return xb.buildXML();
}
Also used : Attribute(org.jwildfire.create.tina.io.SimpleXMLBuilder.Attribute) XForm(org.jwildfire.create.tina.base.XForm) SimpleXMLBuilder(org.jwildfire.create.tina.io.SimpleXMLBuilder) ArrayList(java.util.ArrayList) Layer(org.jwildfire.create.tina.base.Layer)

Example 57 with Layer

use of org.jwildfire.create.tina.base.Layer in project JWildfire by thargor6.

the class Boarders2Test method visual.

// @Ignore
@Test
public void visual() throws Exception {
    Prefs.getPrefs().setTinaRandomNumberGenerator(RandomGeneratorType.JAVA_INTERNAL);
    System.out.println(Prefs.getPrefs().getTinaRandomNumberGenerator().name());
    int side = 600;
    ResolutionProfile respro = new ResolutionProfile(true, side, side);
    int quality = 80;
    Flame f = new Flame();
    f.setWidth(side);
    f.setHeight(side);
    f.setGamma(4.0);
    f.setBGTransparency(false);
    f.setAntialiasAmount(1.0);
    f.setAntialiasRadius(.1);
    Layer l = new Layer();
    XForm xf = new XForm();
    Boarders2Func bf = new Boarders2Func();
    bf.setParameter("c", .6);
    bf.setParameter("left", .65);
    bf.setParameter("right", .35);
    xf.addVariation(1.0, bf);
    f.setCamZoom(6.461);
    xf.setWeight(5.5);
    l.getXForms().add(xf);
    RGBPalette pal = new RGBPalette();
    for (int i = 0; i < 256; i++) pal.addColor(0, i, 255);
    pal.setFlam3Name("test");
    l.setPalette(pal);
    f.setResolutionProfile(respro);
    f.getLayers().clear();
    f.getLayers().add(l);
    // this is "scale"
    f.setPixelsPerUnit(43.75);
    new FlameWriter().writeFlame(f, "/dev/shm/test.flame");
    JobRenderThreadController controller = new HeadlessBatchRendererController();
    List<Job> joblist = new ArrayList<>();
    Job j = new Job();
    j.setCustomHeight(side);
    j.setCustomWidth(side);
    j.setCustomQuality(quality);
    j.setFlameFilename("/dev/shm/test.flame");
    joblist.add(j);
    QualityProfile qualpro = new QualityProfile();
    qualpro.setQuality(quality);
    JobRenderThread job = new JobRenderThread(controller, joblist, respro, qualpro, true);
    job.run();
}
Also used : ResolutionProfile(org.jwildfire.base.ResolutionProfile) XForm(org.jwildfire.create.tina.base.XForm) RGBPalette(org.jwildfire.create.tina.palette.RGBPalette) HeadlessBatchRendererController(org.jwildfire.create.tina.batch.HeadlessBatchRendererController) ArrayList(java.util.ArrayList) Layer(org.jwildfire.create.tina.base.Layer) XYZPoint(org.jwildfire.create.tina.base.XYZPoint) FlameWriter(org.jwildfire.create.tina.io.FlameWriter) JobRenderThread(org.jwildfire.create.tina.batch.JobRenderThread) QualityProfile(org.jwildfire.base.QualityProfile) Job(org.jwildfire.create.tina.batch.Job) JobRenderThreadController(org.jwildfire.create.tina.batch.JobRenderThreadController) Flame(org.jwildfire.create.tina.base.Flame) Test(org.junit.Test)

Example 58 with Layer

use of org.jwildfire.create.tina.base.Layer in project JWildfire by thargor6.

the class DancingFractalsController method validateDancingFlame.

private Flame validateDancingFlame(Flame pFlame) {
    for (Layer layer : pFlame.getLayers()) {
        if (layer.getFinalXForms().size() == 0) {
            XForm xForm = new XForm();
            xForm.addVariation(1.0, new Linear3DFunc());
            layer.getFinalXForms().add(xForm);
        }
    }
    return pFlame;
}
Also used : Linear3DFunc(org.jwildfire.create.tina.variation.Linear3DFunc) XForm(org.jwildfire.create.tina.base.XForm) Layer(org.jwildfire.create.tina.base.Layer)

Example 59 with Layer

use of org.jwildfire.create.tina.base.Layer in project JWildfire by thargor6.

the class JWFFlameReader method readFlamesfromXML.

public List<Flame> readFlamesfromXML(String pXML) {
    List<Flame> res = new ArrayList<Flame>();
    int pFlames = 0;
    while (true) {
        String flameXML;
        {
            int ps = pXML.indexOf("<" + ATTR_JWF_FLAME + " ", pFlames);
            if (ps < 0)
                break;
            int pe = pXML.indexOf("</" + ATTR_JWF_FLAME + ">", ps + 1);
            if (pe < 0)
                break;
            pFlames = pe + ATTR_JWF_FLAME.length() + 3;
            flameXML = pXML.substring(ps, pFlames);
        }
        Flame flame = new Flame();
        res.add(flame);
        // Flame attributes
        {
            int ps = flameXML.indexOf("<" + ATTR_JWF_FLAME + " ");
            int pe = -1;
            boolean qt = false;
            for (int i = ps + 1; i < flameXML.length(); i++) {
                if (flameXML.charAt(i) == '\"') {
                    qt = !qt;
                } else if (!qt && flameXML.charAt(i) == '>') {
                    pe = i;
                    break;
                }
            }
            String hs = flameXML.substring(ps + 11, pe);
            parseFlameAttributes(flame, hs);
        }
        flame.getLayers().clear();
        // Layers
        int pLayers = 0;
        while (true) {
            int layerStart = flameXML.indexOf("<" + ATTR_LAYER + " ", pLayers);
            if (layerStart < 0)
                break;
            int layerEnd = flameXML.indexOf("</" + ATTR_LAYER + ">", layerStart + 1);
            if (layerEnd < 0)
                break;
            pLayers = layerEnd + ATTR_LAYER.length() + 3;
            String layerXML = flameXML.substring(layerStart, pLayers);
            Layer layer = new Layer();
            flame.getLayers().add(layer);
            XMLAttributes atts;
            // Layer attributes
            {
                int ps = layerXML.indexOf("<" + ATTR_LAYER + " ");
                int pe = layerXML.indexOf(">", ps);
                String hs = layerXML.substring(ps + 7, pe);
                atts = parseLayerAttributes(layer, hs);
            }
            readXForms(layerXML, flame, layer);
            readFinalXForms(layerXML, flame, layer);
            readColors(layerXML, layer);
            readMotionCurves(layer.getPalette(), atts, "palette_");
        }
    }
    return res;
}
Also used : XMLAttributes(org.jwildfire.base.Tools.XMLAttributes) ArrayList(java.util.ArrayList) Layer(org.jwildfire.create.tina.base.Layer) Flame(org.jwildfire.create.tina.base.Flame)

Example 60 with Layer

use of org.jwildfire.create.tina.base.Layer in project JWildfire by thargor6.

the class DefaultMotionCreator method createMotions.

@Override
public void createMotions(DancingFlameProject pProject) {
    pProject.getMotions().clear();
    FFTMotion amp0 = new FFTMotion();
    amp0.setFftChannel(0);
    amp0.setAmplitude(-7.0);
    FFTMotion amp1 = new FFTMotion();
    amp1.setFftChannel(1);
    amp1.setAmplitude(-0.5);
    FFTMotion amp2 = new FFTMotion();
    amp2.setFftChannel(2);
    amp2.setAmplitude(-0.5);
    FFTMotion amp3 = new FFTMotion();
    amp3.setFftChannel(3);
    amp3.setAmplitude(-2.0);
    FFTMotion amp4 = new FFTMotion();
    amp4.setFftChannel(4);
    amp4.setAmplitude(0.25);
    FFTMotion amp5 = new FFTMotion();
    amp5.setFftChannel(5);
    amp5.setAmplitude(-0.25);
    FFTMotion amp7 = new FFTMotion();
    amp7.setFftChannel(47);
    amp7.setAmplitude(5.0);
    FFTMotion amp8 = new FFTMotion();
    amp8.setFftChannel(48);
    amp8.setAmplitude(-0.75);
    FFTMotion amp9 = new FFTMotion();
    amp9.setFftChannel(49);
    amp9.setAmplitude(0.5);
    FFTMotion amp10 = new FFTMotion();
    amp10.setFftChannel(50);
    amp10.setAmplitude(3.0);
    FFTMotion amp11 = new FFTMotion();
    amp11.setFftChannel(51);
    amp11.setAmplitude(0.25);
    FFTMotion amp12 = new FFTMotion();
    amp12.setFftChannel(52);
    amp12.setAmplitude(0.25);
    FFTMotion amp14 = new FFTMotion();
    amp14.setFftChannel(2);
    amp14.setAmplitude(0.25);
    amp14.setOffset(1.0);
    pProject.getMotions().add(amp0);
    pProject.getMotions().add(amp1);
    pProject.getMotions().add(amp2);
    pProject.getMotions().add(amp3);
    pProject.getMotions().add(amp4);
    pProject.getMotions().add(amp5);
    pProject.getMotions().add(amp7);
    pProject.getMotions().add(amp8);
    pProject.getMotions().add(amp9);
    pProject.getMotions().add(amp10);
    pProject.getMotions().add(amp11);
    pProject.getMotions().add(amp12);
    pProject.getMotions().add(amp14);
    for (Flame flame : pProject.getFlames()) {
        PropertyModel model = AnimationModelService.createModel(flame);
        for (int layerIdx = 0; layerIdx < flame.getLayers().size(); layerIdx++) {
            Layer layer = flame.getLayers().get(layerIdx);
            if (layer.getXForms().size() > 0) {
                addXFormLink(model, amp0, flame, layerIdx, 0, AnimationModelService.PROPNAME_ANGLE);
                addXFormLink(model, amp1, flame, layerIdx, 0, AnimationModelService.PROPNAME_ORIGIN_X);
                addXFormLink(model, amp2, flame, layerIdx, 0, AnimationModelService.PROPNAME_ORIGIN_Y);
            }
            if (layer.getXForms().size() > 1) {
                addXFormLink(model, amp3, flame, layerIdx, 1, AnimationModelService.PROPNAME_ANGLE);
                addXFormLink(model, amp4, flame, layerIdx, 1, AnimationModelService.PROPNAME_ORIGIN_X);
                addXFormLink(model, amp5, flame, layerIdx, 1, AnimationModelService.PROPNAME_ORIGIN_Y);
            }
            if (layer.getXForms().size() > 2) {
                addXFormLink(model, amp7, flame, layerIdx, 2, AnimationModelService.PROPNAME_ANGLE);
                addXFormLink(model, amp8, flame, layerIdx, 2, AnimationModelService.PROPNAME_ORIGIN_X);
                addXFormLink(model, amp9, flame, layerIdx, 2, AnimationModelService.PROPNAME_ORIGIN_Y);
            }
            if (layer.getXForms().size() > 3) {
                addXFormLink(model, amp10, flame, layerIdx, 3, AnimationModelService.PROPNAME_ANGLE);
                addXFormLink(model, amp11, flame, layerIdx, 3, AnimationModelService.PROPNAME_ORIGIN_X);
                addXFormLink(model, amp12, flame, layerIdx, 3, AnimationModelService.PROPNAME_ORIGIN_Y);
            }
            if (layer.getFinalXForms().size() > 0) {
                addFinalXFormLink(model, amp14, flame, layerIdx, 0, AnimationModelService.PROPNAME_ZOOM);
            }
        }
    }
}
Also used : PropertyModel(org.jwildfire.create.tina.dance.model.PropertyModel) Layer(org.jwildfire.create.tina.base.Layer) Flame(org.jwildfire.create.tina.base.Flame)

Aggregations

Layer (org.jwildfire.create.tina.base.Layer)105 XForm (org.jwildfire.create.tina.base.XForm)73 Flame (org.jwildfire.create.tina.base.Flame)63 VariationFunc (org.jwildfire.create.tina.variation.VariationFunc)31 XYZPoint (org.jwildfire.create.tina.base.XYZPoint)16 RenderedFlame (org.jwildfire.create.tina.render.RenderedFlame)13 RGBPalette (org.jwildfire.create.tina.palette.RGBPalette)9 ArrayList (java.util.ArrayList)8 FlameWriter (org.jwildfire.create.tina.io.FlameWriter)5 RandomGradientMutation (org.jwildfire.create.tina.mutagen.RandomGradientMutation)4 Linear3DFunc (org.jwildfire.create.tina.variation.Linear3DFunc)4 DefaultTableModel (javax.swing.table.DefaultTableModel)2 Test (org.junit.Test)2 QualityProfile (org.jwildfire.base.QualityProfile)2 ResolutionProfile (org.jwildfire.base.ResolutionProfile)2 XMLAttributes (org.jwildfire.base.Tools.XMLAttributes)2 HeadlessBatchRendererController (org.jwildfire.create.tina.batch.HeadlessBatchRendererController)2 Job (org.jwildfire.create.tina.batch.Job)2 JobRenderThread (org.jwildfire.create.tina.batch.JobRenderThread)2 JobRenderThreadController (org.jwildfire.create.tina.batch.JobRenderThreadController)2