Search in sources :

Example 36 with XForm

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

the class TinaController method refreshTransformationsTable.

private void refreshTransformationsTable() {
    final int COL_TRANSFORM = 0;
    final int COL_VARIATIONS = 1;
    final int COL_WEIGHT = 2;
    if (data.toggleTriangleWithColorsButton.isSelected()) {
        data.transformationsTable.setDefaultRenderer(Object.class, new TransformationsTableCellRenderer());
    } else {
        data.transformationsTable.setDefaultRenderer(Object.class, new DefaultTableCellRenderer());
    }
    data.transformationsTable.setModel(new DefaultTableModel() {

        private static final long serialVersionUID = 1L;

        @Override
        public int getRowCount() {
            return getCurrLayer() != null ? getCurrLayer().getXForms().size() + getCurrLayer().getFinalXForms().size() : 0;
        }

        @Override
        public int getColumnCount() {
            return 3;
        }

        @Override
        public String getColumnName(int columnIndex) {
            switch(columnIndex) {
                case COL_TRANSFORM:
                    return "Transf";
                case COL_VARIATIONS:
                    return "Variations/Name";
                case COL_WEIGHT:
                    return "Weight";
            }
            return null;
        }

        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
            if (getCurrFlame() != null) {
                XForm xForm = rowIndex < getCurrLayer().getXForms().size() ? getCurrLayer().getXForms().get(rowIndex) : getCurrLayer().getFinalXForms().get(rowIndex - getCurrLayer().getXForms().size());
                switch(columnIndex) {
                    case COL_TRANSFORM:
                        return rowIndex < getCurrLayer().getXForms().size() ? "Transf" + String.valueOf(rowIndex + 1) : "Final" + String.valueOf(rowIndex - getCurrLayer().getXForms().size() + 1);
                    case COL_VARIATIONS:
                        return getXFormCaption(xForm);
                    case COL_WEIGHT:
                        return rowIndex < getCurrLayer().getXForms().size() ? Tools.doubleToString(xForm.getWeight()) : "";
                }
            }
            return null;
        }

        @Override
        public boolean isCellEditable(int row, int column) {
            return column == COL_WEIGHT;
        }

        @Override
        public void setValueAt(Object aValue, int row, int column) {
            if (getCurrLayer() != null && column == COL_WEIGHT && row < getCurrLayer().getXForms().size()) {
                XForm xForm = getCurrLayer().getXForms().get(row);
                String valStr = (String) aValue;
                if (valStr == null || valStr.length() == 0) {
                    valStr = "0";
                }
                saveUndoPoint();
                xForm.setWeight(Tools.stringToDouble(valStr));
                refreshXFormUI(xForm);
                refreshFlameImage(true, false, 1, true, false);
            }
            super.setValueAt(aValue, row, column);
        }
    });
    data.transformationsTable.getTableHeader().setFont(data.transformationsTable.getFont());
    data.transformationsTable.getColumnModel().getColumn(COL_TRANSFORM).setWidth(20);
    data.transformationsTable.getColumnModel().getColumn(COL_VARIATIONS).setPreferredWidth(120);
    data.transformationsTable.getColumnModel().getColumn(COL_WEIGHT).setWidth(16);
}
Also used : XForm(org.jwildfire.create.tina.base.XForm) DefaultTableModel(javax.swing.table.DefaultTableModel) DefaultTableCellRenderer(javax.swing.table.DefaultTableCellRenderer)

Example 37 with XForm

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

the class TinaController method xFormModHueRandomizeBtn_Clicked.

public void xFormModHueRandomizeBtn_Clicked(boolean pWholeFractal) {
    if (pWholeFractal) {
        Flame flame = getCurrFlame();
        if (flame != null) {
            saveUndoPoint();
            for (Layer layer : flame.getLayers()) {
                for (XForm xForm : layer.getXForms()) {
                    xForm.randomizeModHue();
                }
            }
            refreshXFormUI(getCurrXForm(XFormType.BOTH));
            refreshFlameImage(true, false, 1, true, false);
        }
    } else {
        XForm xForm = getCurrXForm(XFormType.NORMAL);
        if (xForm != null) {
            saveUndoPoint();
            xForm.randomizeModHue();
            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 38 with XForm

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

the class TinaController method xFormTextFieldChanged.

private void xFormTextFieldChanged(JSlider pSlider, JWFNumberField pTextField, String pProperty, double pSliderScale) {
    if (noRefresh) {
        return;
    }
    XForm xForm = getCurrXForm();
    if (xForm == null) {
        return;
    }
    noRefresh = true;
    try {
        double propValue = Tools.stringToDouble(pTextField.getText());
        pSlider.setValue(Tools.FTOI(propValue * pSliderScale));
        Class<?> cls = xForm.getClass();
        Field field;
        try {
            field = cls.getDeclaredField(pProperty);
            field.setAccessible(true);
            Class<?> fieldCls = field.getType();
            if (fieldCls == double.class || fieldCls == Double.class) {
                field.setDouble(xForm, propValue);
            } else if (fieldCls == int.class || fieldCls == Integer.class) {
                field.setInt(xForm, Tools.FTOI(propValue));
            } else {
                throw new IllegalStateException();
            }
        } catch (Throwable ex) {
            ex.printStackTrace();
        }
        refreshFlameImage(true, false, 1, true, false);
    } finally {
        noRefresh = false;
    }
}
Also used : Field(java.lang.reflect.Field) XForm(org.jwildfire.create.tina.base.XForm)

Example 39 with XForm

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

the class TinaController method xFormDrawModeCmb_changed.

public void xFormDrawModeCmb_changed() {
    if (!cmbRefreshing) {
        XForm xForm = getCurrXForm();
        if (xForm != null && data.xFormDrawModeCmb.getSelectedItem() != null) {
            xForm.setDrawMode((DrawMode) data.xFormDrawModeCmb.getSelectedItem());
            refreshFlameImage(true, false, 1, true, false);
            xFormControls.enableControls(xForm);
        }
    }
}
Also used : XForm(org.jwildfire.create.tina.base.XForm)

Example 40 with XForm

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

the class TinaController method transformationWeightREd_changed.

public void transformationWeightREd_changed() {
    XForm xForm = getCurrXForm();
    if (!gridRefreshing && xForm != null && getCurrLayer() != null && getCurrLayer().getFinalXForms().indexOf(xForm) < 0) {
        xForm.setWeight(Tools.stringToDouble(data.transformationWeightREd.getText()));
        gridRefreshing = true;
        try {
            int row = data.transformationsTable.getSelectedRow();
            refreshTransformationsTable();
            data.transformationsTable.getSelectionModel().setSelectionInterval(row, row);
            refreshFlameImage(true, false, 1, true, false);
        } finally {
            gridRefreshing = false;
        }
    }
}
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