use of org.jwildfire.create.tina.render.RenderedFlame in project JWildfire by thargor6.
the class TinaInteractiveRendererController method saveZBufferButton_clicked.
public void saveZBufferButton_clicked() {
try {
pauseRenderThreads();
try {
JFileChooser chooser = new ImageFileChooser(Tools.FILEEXT_PNG);
if (prefs.getOutputImagePath() != null) {
try {
chooser.setCurrentDirectory(new File(prefs.getOutputImagePath()));
} catch (Exception ex) {
ex.printStackTrace();
}
}
if (chooser.showSaveDialog(imageRootPanel) == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
double zBufferScale = Double.parseDouble(JOptionPane.showInputDialog(imageRootPanel, "Enter ZBuffer-Scale", currFlame.getZBufferScale()));
currFlame.setZBufferScale(zBufferScale);
RenderedFlame res = renderer.finishZBuffer(displayUpdater.getSampleCount());
if (res.getZBuffer() != null) {
new ImageWriter().saveImage(res.getZBuffer(), file.getAbsolutePath());
if (autoLoadImageCBx.isSelected()) {
parentCtrl.mainController.loadImage(file.getAbsolutePath(), false);
}
}
}
} finally {
resumeRenderThreads();
}
} catch (Throwable ex) {
errorHandler.handleError(ex);
}
}
use of org.jwildfire.create.tina.render.RenderedFlame in project JWildfire by thargor6.
the class RenderMainFlameThread method run.
@Override
public void run() {
finished = forceAbort = false;
try {
int width = resProfile.getWidth();
int height = resProfile.getHeight();
RenderInfo info = new RenderInfo(width, height, RenderMode.PRODUCTION);
double wScl = (double) info.getImageWidth() / (double) flame.getWidth();
double hScl = (double) info.getImageHeight() / (double) flame.getHeight();
flame.setPixelsPerUnit((wScl + hScl) * 0.5 * flame.getPixelsPerUnit());
flame.setWidth(info.getImageWidth());
flame.setHeight(info.getImageHeight());
boolean renderHDR = qualProfile.isWithHDR();
info.setRenderHDR(renderHDR);
boolean renderZBuffer = qualProfile.isWithZBuffer();
info.setRenderZBuffer(renderZBuffer);
flame.setSampleDensity(qualProfile.getQuality());
long t0, t1;
renderer = new FlameRenderer(flame, prefs, flame.isBGTransparency(), false);
renderer.setProgressUpdater(progressUpdater);
t0 = Calendar.getInstance().getTimeInMillis();
RenderedFlame res = renderer.renderFlame(info);
if (forceAbort) {
finished = true;
return;
}
t1 = Calendar.getInstance().getTimeInMillis();
new ImageWriter().saveImage(res.getImage(), outFile.getAbsolutePath());
if (res.getHDRImage() != null) {
new ImageWriter().saveImage(res.getHDRImage(), Tools.makeHDRFilename(outFile.getAbsolutePath()));
}
if (res.getZBuffer() != null) {
new ImageWriter().saveImage(res.getZBuffer(), Tools.makeZBufferFilename(outFile.getAbsolutePath()));
}
if (prefs.isTinaSaveFlamesWhenImageIsSaved()) {
new FlameWriter().writeFlame(flame, outFile.getParentFile().getAbsolutePath() + File.separator + Tools.trimFileExt(outFile.getName()) + ".flame");
}
finished = true;
finishEvent.succeeded((t1 - t0) * 0.001);
} catch (Throwable ex) {
finished = true;
finishEvent.failed(ex);
}
}
use of org.jwildfire.create.tina.render.RenderedFlame in project JWildfire by thargor6.
the class JWFRenderFilePreview method createThumbnail.
public void createThumbnail() {
if (currFile == null) {
currThumbnail = null;
return;
}
try {
if (currFile.exists()) {
JWFRenderHeader header = new JWFRenderHeaderReader().readRenderHeader(currFile.getAbsolutePath());
Flame flame = header.getFlame();
if (flame != null) {
int imgWidth = this.getPreferredSize().width;
int imgHeight = this.getPreferredSize().height;
double wScl = (double) imgWidth / (double) flame.getWidth();
double hScl = (double) imgHeight / (double) flame.getHeight();
flame.setPixelsPerUnit((wScl + hScl) * 0.5 * flame.getPixelsPerUnit());
flame.setWidth(imgWidth);
flame.setHeight(imgHeight);
FlameRenderer renderer = new FlameRenderer(flame, prefs, false, true);
renderer.setProgressUpdater(null);
flame.setSampleDensity(50);
flame.setSpatialFilterRadius(0.0);
RenderInfo info = new RenderInfo(imgWidth, imgHeight, RenderMode.PREVIEW);
RenderedFlame res = renderer.renderFlame(info);
currThumbnail = new ImageIcon(res.getImage().getBufferedImg());
}
}
} catch (Exception ex) {
currThumbnail = null;
if (ex.getCause() != null) {
ex.getCause().printStackTrace();
} else {
ex.printStackTrace();
}
}
}
use of org.jwildfire.create.tina.render.RenderedFlame in project JWildfire by thargor6.
the class TinaSWFAnimatorController method refreshFlameImage.
public void refreshFlameImage(boolean pQuickRender) {
if (!noRefresh) {
FlamePanel imgPanel = getFlamePanel();
Rectangle bounds = imgPanel.getImageBounds();
int width = bounds.width;
int height = bounds.height;
if (width >= 16 && height >= 16) {
RenderInfo info = new RenderInfo(width, height, RenderMode.PREVIEW);
Flame flame = getCurrFlame();
if (flame != null) {
double oldSpatialFilterRadius = flame.getSpatialFilterRadius();
double oldSampleDensity = flame.getSampleDensity();
try {
double wScl = (double) info.getImageWidth() / (double) flame.getWidth();
double hScl = (double) info.getImageHeight() / (double) flame.getHeight();
flame.setPixelsPerUnit((wScl + hScl) * 0.5 * flame.getPixelsPerUnit());
flame.setWidth(info.getImageWidth());
flame.setHeight(info.getImageHeight());
FlameRenderer renderer = new FlameRenderer(flame, prefs, false, false);
if (pQuickRender) {
renderer.setProgressUpdater(null);
flame.setSampleDensity(1.0);
flame.setSpatialFilterRadius(0.0);
} else {
renderer.setProgressUpdater(renderProgressUpdater);
flame.setSampleDensity(prefs.getTinaRenderPreviewQuality());
}
RenderedFlame res = renderer.renderFlame(info);
imgPanel.setImage(res.getImage());
} finally {
flame.setSpatialFilterRadius(oldSpatialFilterRadius);
flame.setSampleDensity(oldSampleDensity);
}
}
} else {
imgPanel.setImage(new SimpleImage(width, height));
}
swfAnimatorPreviewRootPanel.repaint();
}
}
use of org.jwildfire.create.tina.render.RenderedFlame in project JWildfire by thargor6.
the class TinaSWFAnimatorController method createPartPreview.
private SimpleImage createPartPreview(final FlameMoviePart pPart, int imageWidth, int imageHeight) {
RenderInfo info = new RenderInfo(imageWidth, imageHeight, RenderMode.PREVIEW);
Flame flame = pPart.getFlame().makeCopy();
double wScl = (double) info.getImageWidth() / (double) flame.getWidth();
double hScl = (double) info.getImageHeight() / (double) flame.getHeight();
flame.setPixelsPerUnit((wScl + hScl) * 0.5 * flame.getPixelsPerUnit());
flame.setWidth(imageWidth);
flame.setHeight(imageHeight);
FlameRenderer renderer = new FlameRenderer(flame, prefs, false, false);
RenderedFlame res = renderer.renderFlame(info);
return res.getImage();
}
Aggregations