Search in sources :

Example 6 with ResolutionProfile

use of org.jwildfire.base.ResolutionProfile in project JWildfire by thargor6.

the class TinaController method resolutionProfileCmb_changed.

public void resolutionProfileCmb_changed() {
    if (noRefresh) {
        return;
    }
    if (getCurrFlame() == null) {
        return;
    }
    noRefresh = true;
    try {
        ResolutionProfile profile = getResolutionProfile();
        getCurrFlame().setResolutionProfile(profile);
        removeFlamePanel();
        refreshFlameImage(true, false, 1, true, false);
        data.resolutionProfileCmb.requestFocus();
    } finally {
        noRefresh = false;
    }
}
Also used : ResolutionProfile(org.jwildfire.base.ResolutionProfile)

Example 7 with ResolutionProfile

use of org.jwildfire.base.ResolutionProfile 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)

Example 8 with ResolutionProfile

use of org.jwildfire.base.ResolutionProfile in project JWildfire by thargor6.

the class ResolutionProfileDialog method setProfile.

public void setProfile(ResolutionProfile pProfile) {
    refreshing = true;
    try {
        if (pProfile == null) {
            getProfileCmb().setSelectedIndex(-1);
        } else {
            boolean found = false;
            for (int i = 0; i < getProfileCmb().getItemCount(); i++) {
                ResolutionProfile profile = (ResolutionProfile) getProfileCmb().getItemAt(i);
                if (profile.toString().equals(pProfile.toString())) {
                    getProfileCmb().setSelectedIndex(i);
                    found = true;
                    break;
                }
            }
            if (!found) {
                getProfileCmb().setSelectedIndex(-1);
            }
        }
        editStatus = getProfileCmb().getSelectedItem() != null ? EditStatus.BROWSE : EditStatus.CLOSE;
        refreshProfileView();
        enableControls();
    } finally {
        refreshing = false;
    }
}
Also used : ResolutionProfile(org.jwildfire.base.ResolutionProfile) Point(java.awt.Point)

Example 9 with ResolutionProfile

use of org.jwildfire.base.ResolutionProfile in project JWildfire by thargor6.

the class ResolutionProfileDialog method getProfiles.

public List<ResolutionProfile> getProfiles() {
    List<ResolutionProfile> res = new ArrayList<ResolutionProfile>();
    for (int i = 0; i < getProfileCmb().getItemCount(); i++) {
        res.add((ResolutionProfile) getProfileCmb().getItemAt(i));
    }
    Collections.sort(res, new ResolutionProfileComparator());
    return res;
}
Also used : ResolutionProfile(org.jwildfire.base.ResolutionProfile) ArrayList(java.util.ArrayList) ResolutionProfileComparator(org.jwildfire.base.ResolutionProfileComparator) Point(java.awt.Point)

Example 10 with ResolutionProfile

use of org.jwildfire.base.ResolutionProfile in project JWildfire by thargor6.

the class ResolutionProfileDialog method refreshProfileView.

private void refreshProfileView() {
    ResolutionProfile profile;
    if (editStatus == EditStatus.NEW) {
        profile = null;
    } else {
        profile = (ResolutionProfile) getProfileCmb().getSelectedItem();
    }
    if (profile == null) {
        getWidthREd().setText("");
        getHeightREd().setText("");
        getDefaultCBx().setSelected(false);
    } else {
        getWidthREd().setText(String.valueOf(profile.getWidth()));
        getHeightREd().setText(String.valueOf(profile.getHeight()));
        getDefaultCBx().setSelected(profile.isDefaultProfile());
    }
}
Also used : ResolutionProfile(org.jwildfire.base.ResolutionProfile)

Aggregations

ResolutionProfile (org.jwildfire.base.ResolutionProfile)29 SimpleImage (org.jwildfire.image.SimpleImage)8 Flame (org.jwildfire.create.tina.base.Flame)7 QualityProfile (org.jwildfire.base.QualityProfile)6 ArrayList (java.util.ArrayList)5 RenderedFlame (org.jwildfire.create.tina.render.RenderedFlame)5 FlamePanel (org.jwildfire.create.tina.swing.flamepanel.FlamePanel)5 Dimension (java.awt.Dimension)3 Point (java.awt.Point)3 File (java.io.File)3 XYZProjectedPoint (org.jwildfire.create.tina.base.XYZProjectedPoint)3 ImagePanel (org.jwildfire.swing.ImagePanel)3 JFileChooser (javax.swing.JFileChooser)2 JPanel (javax.swing.JPanel)2 JScrollPane (javax.swing.JScrollPane)2 Test (org.junit.Test)2 Layer (org.jwildfire.create.tina.base.Layer)2 XForm (org.jwildfire.create.tina.base.XForm)2 HeadlessBatchRendererController (org.jwildfire.create.tina.batch.HeadlessBatchRendererController)2 Job (org.jwildfire.create.tina.batch.Job)2