Search in sources :

Example 31 with XForm

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

the class AnimationModelService method addLayerToModel.

@SuppressWarnings("unchecked")
private static void addLayerToModel(PropertyModel pNode, int pIndex, Layer pLayer, PropertyVisitor pVisitor, VisitState pState) {
    Class<?> cls = pLayer.getClass();
    PropertyModel layerNode = new PropertyModel(pNode, PROPNAME_LAYER + (pIndex + 1), cls);
    pNode.getChields().add(layerNode);
    for (Field field : cls.getDeclaredFields()) {
        if (pState.isCancelSignalled()) {
            return;
        }
        field.setAccessible(true);
        if (field.getAnnotation(AnimAware.class) != null) {
            Class<?> fCls = field.getType();
            if (isPrimitiveProperty(fCls)) {
                PlainProperty property = new PlainProperty(layerNode, field.getName(), cls);
                layerNode.getProperties().add(property);
                if (pVisitor != null) {
                    pState.updateState(pVisitor.accept(pLayer, field, property));
                }
            } else if (fCls == List.class) {
                ParameterizedType listType = (ParameterizedType) field.getGenericType();
                Class<?> listSubClass = (Class<?>) listType.getActualTypeArguments()[0];
                if (listSubClass.isAssignableFrom(XForm.class)) {
                    List<XForm> xForms;
                    try {
                        xForms = (List<XForm>) field.get(pLayer);
                    } catch (Exception e) {
                        xForms = null;
                        e.printStackTrace();
                    }
                    if (xForms != null) {
                        int idx = 0;
                        for (XForm xForm : xForms) {
                            addXFormToModel(layerNode, field.getName().indexOf("final") == 0, idx++, xForm, pVisitor, pState);
                        }
                    }
                }
            }
        }
    }
}
Also used : ParameterizedType(java.lang.reflect.ParameterizedType) Field(java.lang.reflect.Field) XForm(org.jwildfire.create.tina.base.XForm) AnimAware(org.jwildfire.create.tina.animate.AnimAware) ArrayList(java.util.ArrayList) List(java.util.List)

Example 32 with XForm

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

the class JWFScriptController method addLayer.

private void addLayer(StringBuilder pSB, Layer pLayer, int pIndex) {
    pSB.append("  // create layer " + (pIndex + 1) + "\n");
    pSB.append("  {\n");
    pSB.append("    Layer layer = new Layer();\n");
    pSB.append("    flame.getLayers().add(layer);\n");
    pSB.append("    layer.setWeight(" + Tools.doubleToString(pLayer.getWeight()) + ");\n");
    pSB.append("    layer.setVisible(" + pLayer.isVisible() + ");\n");
    pSB.append("    // create a random gradient\n");
    pSB.append("    new RandomGradientMutation().execute(layer);\n");
    for (int i = 0; i < pLayer.getXForms().size(); i++) {
        XForm xForm = pLayer.getXForms().get(i);
        addXForm(pSB, xForm, i, false);
    }
    for (int i = 0; i < pLayer.getFinalXForms().size(); i++) {
        XForm xForm = pLayer.getFinalXForms().get(i);
        addXForm(pSB, xForm, i, true);
    }
    // sb.append("  // create the gradient\n");
    // for (int i = 0; i < RGBPalette.PALETTE_SIZE; i++) {
    // RGBColor color = layer.getPalette().getColor(i);
    // sb.append("    flame.getPalette().setColor(" + i + ", " + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue() + ");\n");
    // }
    pSB.append("  }\n");
}
Also used : XForm(org.jwildfire.create.tina.base.XForm)

Example 33 with XForm

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

the class TinaController method xFormModGammaRandomizeBtn_Clicked.

public void xFormModGammaRandomizeBtn_Clicked(boolean pWholeFractal) {
    if (pWholeFractal) {
        Flame flame = getCurrFlame();
        if (flame != null) {
            saveUndoPoint();
            for (Layer layer : flame.getLayers()) {
                for (XForm xForm : layer.getXForms()) {
                    xForm.randomizeModGamma();
                }
            }
            refreshXFormUI(getCurrXForm(XFormType.BOTH));
            refreshFlameImage(true, false, 1, true, false);
        }
    } else {
        XForm xForm = getCurrXForm(XFormType.NORMAL);
        if (xForm != null) {
            saveUndoPoint();
            xForm.randomizeModGamma();
            refreshXFormUI(xForm);
            refreshFlameImage(true, false, 1, true, false);
        }
    }
}
Also used : XForm(org.jwildfire.create.tina.base.XForm) Layer(org.jwildfire.create.tina.base.Layer) Flame(org.jwildfire.create.tina.base.Flame) RenderedFlame(org.jwildfire.create.tina.render.RenderedFlame)

Example 34 with XForm

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

the class TinaController method xFormModLocalGammaResetAllBtn_Clicked.

public void xFormModLocalGammaResetAllBtn_Clicked(boolean pWholeFractal) {
    if (pWholeFractal) {
        Flame flame = getCurrFlame();
        if (flame != null) {
            saveUndoPoint();
            for (Layer layer : flame.getLayers()) {
                for (XForm xForm : layer.getXForms()) {
                    xForm.resetModColorEffects();
                }
            }
            refreshXFormUI(getCurrXForm(XFormType.BOTH));
            refreshFlameImage(true, false, 1, true, false);
        }
    } else {
        XForm xForm = getCurrXForm(XFormType.NORMAL);
        if (xForm != null) {
            saveUndoPoint();
            xForm.resetModColorEffects();
            refreshXFormUI(xForm);
            refreshFlameImage(true, false, 1, true, false);
        }
    }
}
Also used : XForm(org.jwildfire.create.tina.base.XForm) Layer(org.jwildfire.create.tina.base.Layer) Flame(org.jwildfire.create.tina.base.Flame) RenderedFlame(org.jwildfire.create.tina.render.RenderedFlame)

Example 35 with XForm

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

the class TinaController method affineC21REd_changed.

public void affineC21REd_changed() {
    if (gridRefreshing || cmbRefreshing) {
        return;
    }
    XForm xForm = getCurrXForm();
    if (xForm != null) {
        double value = Tools.stringToDouble(data.affineC21REd.getText());
        if (data.affineEditPostTransformButton.isSelected()) {
            xForm.setPostCoeff21(value);
        } else {
            xForm.setCoeff21(value);
        }
        transformationChanged(true);
    }
}
Also used : XForm(org.jwildfire.create.tina.base.XForm)

Aggregations

XForm (org.jwildfire.create.tina.base.XForm)121 Layer (org.jwildfire.create.tina.base.Layer)73 Flame (org.jwildfire.create.tina.base.Flame)55 VariationFunc (org.jwildfire.create.tina.variation.VariationFunc)34 XYZPoint (org.jwildfire.create.tina.base.XYZPoint)19 Variation (org.jwildfire.create.tina.variation.Variation)15 Test (org.junit.Test)8 ArrayList (java.util.ArrayList)7 RenderedFlame (org.jwildfire.create.tina.render.RenderedFlame)7 FlameWriter (org.jwildfire.create.tina.io.FlameWriter)6 Linear3DFunc (org.jwildfire.create.tina.variation.Linear3DFunc)6 RandomGradientMutation (org.jwildfire.create.tina.mutagen.RandomGradientMutation)4 RGBPalette (org.jwildfire.create.tina.palette.RGBPalette)4 ZigguratRandomGenerator (org.jwildfire.create.tina.random.ZigguratRandomGenerator)4 FlameRenderer (org.jwildfire.create.tina.render.FlameRenderer)4 Field (java.lang.reflect.Field)3 SubFlameWFFunc (org.jwildfire.create.tina.variation.SubFlameWFFunc)3 DefaultTableModel (javax.swing.table.DefaultTableModel)2 QualityProfile (org.jwildfire.base.QualityProfile)2 ResolutionProfile (org.jwildfire.base.ResolutionProfile)2