예제 #1
0
  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();
    }
  }
예제 #2
0
  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();
  }