Search in sources :

Example 1 with RenderThreads

use of org.jwildfire.create.tina.render.RenderThreads in project JWildfire by thargor6.

the class TinaInteractiveRendererController method resumeBtn_clicked.

public void resumeBtn_clicked() {
    try {
        JFileChooser chooser = new JWFRenderFileChooser(prefs);
        if (prefs.getInputFlamePath() != null) {
            try {
                chooser.setCurrentDirectory(new File(prefs.getInputFlamePath()));
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        if (chooser.showOpenDialog(imageRootPanel) == JFileChooser.APPROVE_OPTION) {
            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(), new ArrayList<Thread>());
            Flame flame = currFlame = newRenderer.getFlame();
            // setup size profile
            {
                int width = newRenderer.getRenderInfo().getImageWidth();
                int height = newRenderer.getRenderInfo().getImageHeight();
                ResolutionProfile selected = null;
                boolean full = false;
                boolean halve = false;
                boolean quarter = false;
                for (int i = 0; i < interactiveResolutionProfileCmb.getItemCount(); i++) {
                    ResolutionProfile profile = (ResolutionProfile) interactiveResolutionProfileCmb.getItemAt(i);
                    if (profile.getWidth() == width && profile.getHeight() == height) {
                        selected = profile;
                        full = true;
                        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) {
                    for (int i = 0; i < interactiveResolutionProfileCmb.getItemCount(); i++) {
                        ResolutionProfile profile = (ResolutionProfile) interactiveResolutionProfileCmb.getItemAt(i);
                        if (profile.getWidth() / 4 == width && profile.getHeight() / 4 == height) {
                            selected = profile;
                            quarter = true;
                            break;
                        }
                    }
                }
                if (selected == null) {
                    selected = new ResolutionProfile(false, width, height);
                    full = true;
                    interactiveResolutionProfileCmb.addItem(selected);
                }
                boolean wasQuarterSelected = quarterSizeButton.isSelected();
                boolean wasHalveSelected = halveSizeButton.isSelected();
                boolean wasFullSelected = fullSizeButton.isSelected();
                refreshing = true;
                try {
                    quarterSizeButton.setSelected(quarter);
                    halveSizeButton.setSelected(halve);
                    fullSizeButton.setSelected(full);
                } finally {
                    refreshing = false;
                }
                ResolutionProfile currSel = (ResolutionProfile) interactiveResolutionProfileCmb.getSelectedItem();
                if (currSel == null || !currSel.equals(selected) || wasQuarterSelected != quarter || wasHalveSelected != halve || wasFullSelected != full) {
                    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.initRender(threads.getRenderThreads().size());
            pausedRenderTime = resumedRender.getHeader().getElapsedMilliseconds();
            renderStartTime = System.currentTimeMillis();
            lastQuality = 0.0;
            lastQualitySpeed = 0.0;
            lastQualityTime = 0;
            for (int i = 0; i < threads.getRenderThreads().size(); i++) {
                AbstractRenderThread rThread = threads.getRenderThreads().get(i);
                Thread eThread = startRenderThread(rThread);
                threads.getExecutingThreads().add(eThread);
            }
            updateDisplayThread = new UpdateDisplayThread();
            startDisplayThread(updateDisplayThread);
            state = State.RENDER;
            enableControls();
        }
    } catch (Throwable ex) {
        errorHandler.handleError(ex);
    }
}
Also used : ResolutionProfile(org.jwildfire.base.ResolutionProfile) ArrayList(java.util.ArrayList) XYZProjectedPoint(org.jwildfire.create.tina.base.XYZProjectedPoint) AbstractRenderThread(org.jwildfire.create.tina.render.AbstractRenderThread) RenderThreads(org.jwildfire.create.tina.render.RenderThreads) JFileChooser(javax.swing.JFileChooser) ResumedFlameRender(org.jwildfire.create.tina.render.ResumedFlameRender) FlameRenderer(org.jwildfire.create.tina.render.FlameRenderer) File(java.io.File) AbstractRenderThread(org.jwildfire.create.tina.render.AbstractRenderThread) Flame(org.jwildfire.create.tina.base.Flame) RenderedFlame(org.jwildfire.create.tina.render.RenderedFlame)

Aggregations

File (java.io.File)1 ArrayList (java.util.ArrayList)1 JFileChooser (javax.swing.JFileChooser)1 ResolutionProfile (org.jwildfire.base.ResolutionProfile)1 Flame (org.jwildfire.create.tina.base.Flame)1 XYZProjectedPoint (org.jwildfire.create.tina.base.XYZProjectedPoint)1 AbstractRenderThread (org.jwildfire.create.tina.render.AbstractRenderThread)1 FlameRenderer (org.jwildfire.create.tina.render.FlameRenderer)1 RenderThreads (org.jwildfire.create.tina.render.RenderThreads)1 RenderedFlame (org.jwildfire.create.tina.render.RenderedFlame)1 ResumedFlameRender (org.jwildfire.create.tina.render.ResumedFlameRender)1