use of org.jwildfire.create.tina.render.RenderInfo in project JWildfire by thargor6.
the class CacheRendererThread method renderFlame.
private SimpleImage renderFlame(FlameFlatNode pNode, int pImgWidth, int pImgHeight) {
List<Flame> flames = new FlameReader(prefs).readFlames(pNode.getFilename());
if (flames.size() > 0) {
Flame renderFlame = flames.get(0);
RenderInfo info = new RenderInfo(pImgWidth, pImgHeight, RenderMode.PREVIEW);
double wScl = (double) info.getImageWidth() / (double) renderFlame.getWidth();
double hScl = (double) info.getImageHeight() / (double) renderFlame.getHeight();
renderFlame.setPixelsPerUnit((wScl + hScl) * 0.5 * renderFlame.getPixelsPerUnit());
renderFlame.setWidth(pImgWidth);
renderFlame.setHeight(pImgHeight);
renderFlame.setSampleDensity(prefs.getTinaRenderPreviewQuality() / 3.0);
FlameRenderer renderer = new FlameRenderer(renderFlame, prefs, false, true);
RenderedFlame renderRes = renderer.renderFlame(info);
return renderRes.getImage();
}
return null;
}
use of org.jwildfire.create.tina.render.RenderInfo in project JWildfire by thargor6.
the class FlamePreviewHelper method startBackgroundRender.
private void startBackgroundRender(FlamePanel pImgPanel) {
prevRaster = null;
if (flameHolder == null) {
return;
}
Flame flame = flameHolder.getFlame().makeCopy();
flame.applyFastOversamplingSettings();
Rectangle panelBounds = pImgPanel.getParentImageBounds();
RenderInfo info = new RenderInfo(panelBounds.width, panelBounds.height, RenderMode.PREVIEW);
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());
flame.setSampleDensity(10.0);
info.setRenderHDR(false);
info.setRenderZBuffer(false);
renderer = new FlameRenderer(flame, prefs, flame.isBGTransparency(), false);
renderer.registerIterationObserver(this);
SimpleImage image = new SimpleImage(pImgPanel.getImage().getImageWidth(), pImgPanel.getImage().getImageHeight());
initImage(image, flame);
displayUpdater = new BufferedInteractiveRendererDisplayUpdater(pImgPanel, image, true);
displayUpdater.initRender(prefs.getTinaRenderThreads());
threads = renderer.startRenderFlame(info);
for (Thread thread : threads.getExecutingThreads()) {
thread.setPriority(Thread.MIN_PRIORITY);
}
updateDisplayThread = new UpdateDisplayThread(flame, image);
updateDisplayExecuteThread = new Thread(updateDisplayThread);
updateDisplayExecuteThread.setPriority(Thread.MIN_PRIORITY);
updateDisplayExecuteThread.start();
}
use of org.jwildfire.create.tina.render.RenderInfo in project JWildfire by thargor6.
the class FlameThumbnail method generatePreview.
private void generatePreview(int pQuality) {
if (cacheKey != null) {
preview = ThumbnailCacheProvider.getThumbnail(cacheKey, IMG_WIDTH, IMG_HEIGHT, pQuality);
if (preview != null) {
return;
}
}
Prefs prefs = Prefs.getPrefs();
RenderInfo info = new RenderInfo(IMG_WIDTH, IMG_HEIGHT, RenderMode.PREVIEW);
Flame renderFlame = flame.makeCopy();
double wScl = (double) info.getImageWidth() / (double) renderFlame.getWidth();
double hScl = (double) info.getImageHeight() / (double) renderFlame.getHeight();
renderFlame.setPixelsPerUnit((wScl + hScl) * 0.5 * renderFlame.getPixelsPerUnit());
renderFlame.setWidth(IMG_WIDTH);
renderFlame.setHeight(IMG_HEIGHT);
renderFlame.setSampleDensity(prefs.getTinaRenderPreviewQuality());
renderFlame.setSpatialFilterRadius(0.0);
FlameRenderer renderer = new FlameRenderer(renderFlame, prefs, false, false);
renderFlame.setSampleDensity(pQuality);
RenderedFlame res = renderer.renderFlame(info);
preview = res.getImage();
if (cacheKey != null) {
ThumbnailCacheProvider.storeThumbnail(cacheKey, IMG_WIDTH, IMG_HEIGHT, pQuality, preview);
}
}
use of org.jwildfire.create.tina.render.RenderInfo in project JWildfire by thargor6.
the class EnvelopeDialog method refreshFlameImage.
public void refreshFlameImage() {
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 = getFlame();
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.getPrefs(), false, false);
renderer.setProgressUpdater(null);
if (flame.getSolidRenderSettings().isSolidRenderingEnabled()) {
flame.setCamDOF(0.0);
flame.getSolidRenderSettings().setAoEnabled(false);
if (ShadowType.SMOOTH.equals(flame.getSolidRenderSettings().getShadowType())) {
flame.getSolidRenderSettings().setShadowType(ShadowType.FAST);
} else {
flame.getSolidRenderSettings().setShadowType(ShadowType.OFF);
}
flame.setSampleDensity(Prefs.getPrefs().getTinaRenderRealtimeQuality() * 2.0);
} else {
flame.setSampleDensity(Prefs.getPrefs().getTinaRenderRealtimeQuality() * 6.0);
}
flame.setSpatialFilterRadius(0.0);
RenderedFlame res = renderer.renderFlame(info);
imgPanel.setImage(res.getImage());
} finally {
flame.setSpatialFilterRadius(oldSpatialFilterRadius);
flame.setSampleDensity(oldSampleDensity);
}
}
} else {
imgPanel.setImage(new SimpleImage(width, height));
}
getPreviewRootPanel().repaint();
}
use of org.jwildfire.create.tina.render.RenderInfo in project JWildfire by thargor6.
the class JWFMovieFilePreview method createThumbnail.
public void createThumbnail() {
if (currFile == null) {
currThumbnail = null;
return;
}
try {
if (currFile.exists()) {
FlameMovie movie = new FlameMovieReader(prefs).readMovie(currFile.getAbsolutePath());
Flame flame = null;
if (movie != null) {
for (FlameMoviePart part : movie.getParts()) {
if (part.getFlame() != null) {
flame = part.getFlame();
break;
}
}
}
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();
}
}
}
Aggregations