Search in sources :

Example 46 with Layer

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

the class TinaController method refreshRelWeightsTable.

private void refreshRelWeightsTable() {
    final int COL_TRANSFORM = 0;
    final int COL_WEIGHT = 1;
    final int COL_FROM = 2;
    final int COL_TO = 3;
    data.relWeightsTable.setModel(new DefaultTableModel() {

        private static final long serialVersionUID = 1L;

        @Override
        public int getRowCount() {
            XForm xForm = getCurrXForm();
            return xForm != null && getCurrLayer().getFinalXForms().indexOf(xForm) < 0 ? getCurrLayer().getXForms().size() : 0;
        }

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

        @Override
        public String getColumnName(int columnIndex) {
            switch(columnIndex) {
                case COL_TRANSFORM:
                    return isXaosViewAsTo() ? "A to B" : "B from A";
                case COL_WEIGHT:
                    return "Weight";
                case COL_FROM:
                    return "From";
                case COL_TO:
                    return "To";
            }
            return null;
        }

        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
            int transformIndex = data.transformationsTable.getSelectedRow();
            Layer layer = getCurrLayer();
            if (layer != null && transformIndex >= 0 && transformIndex < layer.getXForms().size()) {
                if (isXaosViewAsTo()) {
                    switch(columnIndex) {
                        case COL_TRANSFORM:
                            return String.valueOf(transformIndex + 1) + " to " + String.valueOf(rowIndex + 1);
                        case COL_WEIGHT:
                            return Tools.doubleToString(layer.getXForms().get(transformIndex).getModifiedWeights()[rowIndex]);
                        case COL_FROM:
                            return getXFormCaption(layer.getXForms().get(transformIndex));
                        case COL_TO:
                            return getXFormCaption(layer.getXForms().get(rowIndex));
                    }
                } else {
                    switch(columnIndex) {
                        case COL_TRANSFORM:
                            return String.valueOf(transformIndex + 1) + " from " + String.valueOf(rowIndex + 1);
                        case COL_WEIGHT:
                            return Tools.doubleToString(layer.getXForms().get(rowIndex).getModifiedWeights()[transformIndex]);
                        case COL_FROM:
                            return getXFormCaption(layer.getXForms().get(rowIndex));
                        case COL_TO:
                            return getXFormCaption(layer.getXForms().get(transformIndex));
                    }
                }
            }
            return null;
        }

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

        @Override
        public void setValueAt(Object aValue, int row, int column) {
            XForm xForm = getCurrXForm();
            if (getCurrFlame() != null && column == COL_WEIGHT && xForm != null) {
                String valStr = (String) aValue;
                if (valStr == null || valStr.length() == 0) {
                    valStr = "0";
                }
                saveUndoPoint();
                xForm.getModifiedWeights()[row] = Tools.stringToDouble(valStr);
                relWeightsTableClicked();
                refreshFlameImage(true, false, 1, true, false);
            }
            super.setValueAt(aValue, row, column);
        }
    });
    data.relWeightsTable.getTableHeader().setFont(data.relWeightsTable.getFont());
    data.relWeightsTable.getColumnModel().getColumn(COL_TRANSFORM).setWidth(20);
    data.relWeightsTable.getColumnModel().getColumn(COL_WEIGHT).setWidth(16);
}
Also used : XForm(org.jwildfire.create.tina.base.XForm) DefaultTableModel(javax.swing.table.DefaultTableModel) Layer(org.jwildfire.create.tina.base.Layer)

Example 47 with Layer

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

the class TinaController method addLayerBtn_clicked.

public void addLayerBtn_clicked() {
    Flame flame = getCurrFlame();
    Layer layer = new Layer();
    RGBPalette palette = RandomGradientGeneratorList.getRandomGradientGeneratorInstance((String) data.paletteRandomGeneratorCmb.getSelectedItem()).generatePalette(Integer.parseInt(data.paletteRandomPointsREd.getText()), data.paletteFadeColorsCBx.isSelected(), data.paletteUniformWidthCBx.isSelected());
    layer.setPalette(palette);
    setLastGradient(palette);
    saveUndoPoint();
    flame.getLayers().add(layer);
    gridRefreshing = true;
    try {
        refreshLayersTable();
    } finally {
        gridRefreshing = false;
    }
    int row = getCurrFlame().getLayers().size() - 1;
    data.layersTable.getSelectionModel().setSelectionInterval(row, row);
}
Also used : RGBPalette(org.jwildfire.create.tina.palette.RGBPalette) Layer(org.jwildfire.create.tina.base.Layer) Flame(org.jwildfire.create.tina.base.Flame) RenderedFlame(org.jwildfire.create.tina.render.RenderedFlame)

Example 48 with Layer

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

the class TinaController method enableLayerControls.

private void enableLayerControls() {
    Flame flame = getCurrFlame();
    Layer layer = getCurrLayer();
    data.layerWeightEd.setEnabled(layer != null);
    data.layerAddBtn.setEnabled(flame != null);
    data.layerDuplicateBtn.setEnabled(layer != null);
    data.layerDeleteBtn.setEnabled(flame != null && layer != null && getCurrFlame().getLayers().size() > 1);
    data.layersTable.setEnabled(flame != null);
    data.layerVisibleBtn.setEnabled(layer != null);
    data.layerAppendBtn.setEnabled(flame != null);
    data.layerPreviewBtn.setEnabled(flame != null);
    data.layerHideOthersBtn.setEnabled(layer != null);
    data.layerShowAllBtn.setEnabled(flame != null);
}
Also used : Layer(org.jwildfire.create.tina.base.Layer) Flame(org.jwildfire.create.tina.base.Flame) RenderedFlame(org.jwildfire.create.tina.render.RenderedFlame)

Example 49 with Layer

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

the class TinaController method paletteSortBtn_clicked.

public void paletteSortBtn_clicked() {
    Layer layer = getCurrLayer();
    if (layer != null) {
        saveUndoPoint();
        layer.getPalette().sort();
        refreshPaletteUI(layer.getPalette());
        transformationChanged(true);
    }
}
Also used : Layer(org.jwildfire.create.tina.base.Layer)

Example 50 with Layer

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

the class FlamePanel method drawTriangles.

private void drawTriangles(Graphics2D g) {
    if (layerHolder != null) {
        Layer layer = layerHolder.getLayer();
        if (layer != null) {
            if (!prefs.isTinaEditorControlsWithShadows()) {
                g.setColor(config.isEditPostTransform() ? XFORM_POST_COLOR : FlamePanelConfig.XFORM_COLOR);
            }
            // draw the selected one at last
            for (int pass = 0; pass < 2; pass++) {
                for (int i = 0; i < layer.getXForms().size(); i++) {
                    XForm xForm = layer.getXForms().get(i);
                    if ((pass == 0 && (selectedXForm == null || xForm != selectedXForm)) || (pass == 1 && xForm == selectedXForm)) {
                        boolean isSelected = xForm == selectedXForm;
                        if (prefs.isTinaEditorControlsWithShadows()) {
                            g.setColor(SHADOW_COLOR);
                            drawXForm(g, xForm, i, layer.getXForms().size(), false, true, isSelected);
                            drawXForm(g, xForm, i, layer.getXForms().size(), false, false, isSelected);
                        } else {
                            drawXForm(g, xForm, i, layer.getXForms().size(), false, false, isSelected);
                        }
                    }
                }
                for (int i = 0; i < layer.getFinalXForms().size(); i++) {
                    XForm xForm = layer.getFinalXForms().get(i);
                    if ((pass == 0 && (selectedXForm == null || xForm != selectedXForm)) || (pass == 1 && xForm == selectedXForm)) {
                        boolean isSelected = xForm == selectedXForm;
                        if (prefs.isTinaEditorControlsWithShadows()) {
                            g.setColor(SHADOW_COLOR);
                            drawXForm(g, xForm, i, layer.getXForms().size(), true, true, isSelected);
                            drawXForm(g, xForm, i, layer.getXForms().size(), true, false, isSelected);
                        } else {
                            drawXForm(g, xForm, i, layer.getXForms().size(), true, false, isSelected);
                        }
                    }
                }
                if (selectedXForm == null) {
                    break;
                }
            }
        }
    }
}
Also used : XForm(org.jwildfire.create.tina.base.XForm) Layer(org.jwildfire.create.tina.base.Layer) XYZPoint(org.jwildfire.create.tina.base.XYZPoint)

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