cancelRender();
File file = chooser.getSelectedFile();
Flame newFlame = new Flame();
FlameRenderer newRenderer = new FlameRenderer(newFlame, prefs, newFlame.isBGTransparency(), false);
ResumedFlameRender resumedRender = newRenderer.resumeRenderFlame(file.getAbsolutePath());
threads = new RenderThreads(resumedRender.getThreads(), null);
Flame flame = currFlame = newRenderer.getFlame();
// setup size profile
{
int width = newRenderer.getRenderInfo().getImageWidth();
int height = newRenderer.getRenderInfo().getImageHeight();
ResolutionProfile selected = null;
boolean halve = false;
for (int i = 0; i < interactiveResolutionProfileCmb.getItemCount(); i++) {
ResolutionProfile profile = (ResolutionProfile) interactiveResolutionProfileCmb.getItemAt(i);
if (profile.getWidth() == width && profile.getHeight() == height) {
selected = profile;
break;
}
}
if (selected == null) {
for (int i = 0; i < interactiveResolutionProfileCmb.getItemCount(); i++) {
ResolutionProfile profile = (ResolutionProfile) interactiveResolutionProfileCmb.getItemAt(i);
if (profile.getWidth() / 2 == width && profile.getHeight() / 2 == height) {
selected = profile;
halve = true;
break;
}
}
}
if (selected == null) {
selected = new ResolutionProfile(false, width, height);
halve = false;
interactiveResolutionProfileCmb.addItem(selected);
}
boolean wasHalveSelected = halveSizeButton.isSelected();
halveSizeButton.setSelected(halve);
ResolutionProfile currSel = (ResolutionProfile) interactiveResolutionProfileCmb.getSelectedItem();
if (currSel == null || !currSel.equals(selected) || wasHalveSelected != halve) {
interactiveResolutionProfileCmb.setSelectedItem(selected);
refreshImagePanel();
}
else {
clearScreen();
}
}
//
renderer = newRenderer;
setupProfiles(currFlame);
if (flame.getBGColorRed() > 0 || flame.getBGColorGreen() > 0 || flame.getBGColorBlue() > 0) {
image.fillBackground(flame.getBGColorRed(), flame.getBGColorGreen(), flame.getBGColorBlue());
}
renderer.registerIterationObserver(this);
displayUpdater = createDisplayUpdater();
displayUpdater.setSampleCount(renderer.calcSampleCount());
pausedRenderTime = resumedRender.getHeader().getElapsedMilliseconds();
renderStartTime = System.currentTimeMillis();
for (AbstractRenderThread thread : threads.getRenderThreads()) {
new Thread(thread).start();
}
updateDisplayThread = new UpdateDisplayThread();