public static void randomToolActions(int numStrokes, boolean brushOnly) { Composition comp = ImageComponents.getActiveComp().get(); Random random = new Random(); if (comp != null) { int canvasWidth = comp.getCanvasWidth(); int canvasHeight = comp.getCanvasHeight(); ProgressMonitor progressMonitor = Utils.createPercentageProgressMonitor("1001 Tool Actions"); // So far we are on the EDT Runnable notEDTThreadTask = () -> { assert !SwingUtilities.isEventDispatchThread(); for (int i = 0; i < numStrokes; i++) { int progressPercentage = (int) ((float) i * 100 / numStrokes); progressMonitor.setProgress(progressPercentage); progressMonitor.setNote(progressPercentage + "%"); Runnable edtRunnable = () -> testToolAction(comp, random, canvasWidth, canvasHeight, brushOnly); try { SwingUtilities.invokeAndWait(edtRunnable); } catch (InterruptedException | InvocationTargetException e) { e.printStackTrace(); } comp.repaint(); } progressMonitor.close(); }; new Thread(notEDTThreadTask).start(); } }
public static void saveManySplashImages() { boolean okPressed = SingleDirChooserPanel.selectOutputDir(true); if (!okPressed) { return; } ProgressMonitor progressMonitor = Utils.createPercentageProgressMonitor("Save Many Splash Images", "Stop"); SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() { @Override public Void doInBackground() { int nurOfSplashImages = 32; for (int i = 0; i < nurOfSplashImages; i++) { OutputFormat outputFormat = OutputFormat.getLastOutputFormat(); String fileName = String.format("splash%04d.%s", i, outputFormat.toString()); progressMonitor.setProgress((int) ((float) i * 100 / nurOfSplashImages)); progressMonitor.setNote("Creating " + fileName); if (progressMonitor.isCanceled()) { break; } Runnable guiTask = () -> { createSplashImage(); File lastSaveDir = FileChoosers.getLastSaveDir(); File f = new File(lastSaveDir, fileName); Composition comp = ImageComponents.getActiveComp().get(); outputFormat.saveComposition(comp, f, false); ImageComponents.getActiveIC().close(); ValueNoise.reseed(); }; try { EventQueue.invokeAndWait(guiTask); Thread.sleep(1000L); } catch (InterruptedException | InvocationTargetException e) { Messages.showException(e); } } // end of for loop progressMonitor.close(); return null; } // end of doInBackground() }; worker.execute(); }