use of org.jwildfire.create.tina.base.Layer in project JWildfire by thargor6.
the class FlamePreviewHelper method createLayerPreview.
private SimpleImage createLayerPreview(SimpleImage img, int renderScale, int width, int height) {
FlamePanelConfig cfg = flamePanelProvider.getFlamePanelConfig();
Flame flame = flameHolder.getFlame();
Layer onlyVisibleLayer = null;
for (Layer layer : flameHolder.getFlame().getLayers()) {
if (layer.isVisible()) {
if (onlyVisibleLayer == null) {
onlyVisibleLayer = layer;
} else {
onlyVisibleLayer = null;
break;
}
}
}
boolean drawSubLayer = flame.getLayers().size() > 1 && layerHolder.getLayer() != null && layerHolder.getLayer() != onlyVisibleLayer && !cfg.isNoControls();
if (drawSubLayer) {
Flame singleLayerFlame = new Flame();
singleLayerFlame.assign(flame);
singleLayerFlame.getLayers().clear();
singleLayerFlame.getLayers().add(layerHolder.getLayer().makeCopy());
singleLayerFlame.getFirstLayer().setVisible(true);
singleLayerFlame.getFirstLayer().setWeight(1.0);
RenderInfo lInfo = new RenderInfo(width / 4 * renderScale, height / 4 * renderScale, RenderMode.PREVIEW);
double lWScl = (double) lInfo.getImageWidth() / (double) singleLayerFlame.getWidth();
double lHScl = (double) lInfo.getImageHeight() / (double) singleLayerFlame.getHeight();
singleLayerFlame.setPixelsPerUnit((lWScl + lHScl) * 0.5 * singleLayerFlame.getPixelsPerUnit() * 0.5);
singleLayerFlame.setWidth(lInfo.getImageWidth());
singleLayerFlame.setHeight(lInfo.getImageHeight());
singleLayerFlame.setSampleDensity(prefs.getTinaRenderRealtimeQuality() * 2.0 / 3.0);
FlameRenderer lRenderer = new FlameRenderer(singleLayerFlame, prefs, false, false);
RenderedFlame lRes = lRenderer.renderFlame(lInfo);
SimpleImage layerImg = lRes.getImage();
boolean drawLayerNumber = true;
if (drawLayerNumber) {
RectangleTransformer rT = new RectangleTransformer();
int textWidth = 28;
int textHeight = 22;
int margin = 2;
rT.setColor(new java.awt.Color(0, 0, 0));
rT.setLeft(layerImg.getImageWidth() - textWidth - 2 * margin);
rT.setTop(layerImg.getImageHeight() - textHeight - 2 * margin);
rT.setThickness(textHeight / 2 + 1);
rT.setWidth(textWidth);
rT.setHeight(textHeight);
rT.transformImage(layerImg);
TextTransformer txt = new TextTransformer();
txt.setText1(" " + (flame.getLayers().indexOf(layerHolder.getLayer()) + 1) + " ");
txt.setAntialiasing(true);
txt.setColor(new java.awt.Color(200, 200, 200));
txt.setMode(Mode.NORMAL);
txt.setFontStyle(FontStyle.BOLD);
txt.setFontName("Arial");
txt.setFontSize(16);
txt.setHAlign(HAlignment.NONE);
txt.setPosX(layerImg.getImageWidth() - textWidth - margin);
txt.setPosY(layerImg.getImageHeight() - textHeight - margin);
txt.setVAlign(VAlignment.NONE);
txt.transformImage(layerImg);
}
RectangleTransformer rT = new RectangleTransformer();
rT.setColor(new java.awt.Color(200, 200, 200));
rT.setLeft(0);
rT.setTop(0);
rT.setThickness(3);
rT.setWidth(lInfo.getImageWidth());
rT.setHeight(lInfo.getImageHeight());
rT.transformImage(layerImg);
return layerImg;
}
return null;
}
use of org.jwildfire.create.tina.base.Layer 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);
}
}
}
use of org.jwildfire.create.tina.base.Layer 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);
}
}
}
use of org.jwildfire.create.tina.base.Layer in project JWildfire by thargor6.
the class TinaController method relWeightsResetButton_clicked.
public void relWeightsResetButton_clicked() {
if (gridRefreshing)
return;
Layer layer = getCurrLayer();
int transformRow = data.transformationsTable.getSelectedRow();
int xaosRow = data.relWeightsTable.getSelectedRow();
if (layer != null && transformRow >= 0 && transformRow < layer.getXForms().size()) {
for (int xaosIdx = 0; xaosIdx < layer.getXForms().get(transformRow).getModifiedWeights().length; xaosIdx++) {
layer.getXForms().get(transformRow).getModifiedWeights()[xaosIdx] = 1.0;
}
gridRefreshing = true;
try {
refreshRelWeightsTable();
if (xaosRow >= 0) {
data.relWeightsTable.getSelectionModel().setSelectionInterval(xaosRow, xaosRow);
}
refreshFlameImage(true, false, 1, true, false);
} finally {
gridRefreshing = false;
}
}
relWeightsTableClicked();
}
use of org.jwildfire.create.tina.base.Layer in project JWildfire by thargor6.
the class TinaController method relWeightsTableClicked.
public void relWeightsTableClicked() {
if (!gridRefreshing) {
boolean oldGridRefreshing = gridRefreshing;
boolean oldCmbRefreshing = cmbRefreshing;
gridRefreshing = cmbRefreshing = true;
try {
Layer layer = getCurrLayer();
int xaosRow = data.relWeightsTable.getSelectedRow();
int transformRow = data.transformationsTable.getSelectedRow();
if (layer != null && xaosRow >= 0 && xaosRow < layer.getXForms().size() && transformRow >= 0 && transformRow < layer.getXForms().size()) {
if (isXaosViewAsTo()) {
data.relWeightREd.setText(Tools.doubleToString(layer.getXForms().get(transformRow).getModifiedWeights()[xaosRow]));
} else {
data.relWeightREd.setText(Tools.doubleToString(layer.getXForms().get(xaosRow).getModifiedWeights()[transformRow]));
}
} else {
data.relWeightREd.setText("");
}
xFormControls.enableRelWeightsControls();
} finally {
cmbRefreshing = oldCmbRefreshing;
gridRefreshing = oldGridRefreshing;
}
}
}
Aggregations