com.jogamp.nativewindow.awt

## Interface AWTPrintLifecycle

- All Known Implementing Classes:
    GLCanvas, GLJPanel, NewtCanvasAWT

      public interface AWTPrintLifecycle

  Interface describing print lifecycle to support AWT printing, e.g. on AWT `GLAutoDrawable`s.

  ##### Implementations

  Implementing `GLAutoDrawable` classes based on AWT supporting `Component.print(Graphics)` shall implement this interface.

  ##### Usage

  Users attempting to print an AWT `Container` containing `AWTPrintLifecycle` elements shall consider decorating the `Component.printAll(Graphics)` call with
  `setupPrint(..)` and `releasePrint()` on all `AWTPrintLifecycle` elements in the `Container`.
  To minimize this burden, a user can use `Context.setupPrint(..)`:

        Container cont;
        double scaleGLMatXY = 72.0/glDPI;
        int numSamples = 0; // leave multisampling as-is
        PrinterJob job;
        ...
          final AWTPrintLifecycle.Context ctx = AWTPrintLifecycle.Context.setupPrint(cont, scaleGLMatXY, scaleGLMatXY, numSamples);
          try {
             AWTEDTExecutor.singleton.invoke(true, new Runnable() {
                  public void run() {
                      try {
                          job.print();
                      } catch (PrinterException ex) {
                          ex.printStackTrace();
                      }
                 } });
          } finally {
             ctx.releasePrint();
          }

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static class` | `AWTPrintLifecycle.Context` Convenient `AWTPrintLifecycle` context simplifying calling `setupPrint(..)` and `releasePrint()` on all `AWTPrintLifecycle` elements of a `Container`.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `DEFAULT_PRINT_TILE_SIZE`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `releasePrint()` Shall be called after `PrinterJob.print()`.
    `void` | `setupPrint(double scaleMatX, double scaleMatY, int numSamples, int tileWidth, int tileHeight)` Shall be called before `PrinterJob.print()`.

- - ### Field Detail

    - #### DEFAULT_PRINT_TILE_SIZE

          static final int DEFAULT_PRINT_TILE_SIZE

      See Also:
        Constant Field Values

  - ### Method Detail

    - #### setupPrint

          void setupPrint(double scaleMatX,
                        double scaleMatY,
                        int numSamples,
                        int tileWidth,
                        int tileHeight)

      Shall be called before `PrinterJob.print()`.

      See Usage.

      Parameters:
        `scaleMatX` - `Graphics2D` `scaling factor`, i.e. rendering 1/scaleMatX * width pixels
        `scaleMatY` - `Graphics2D` `scaling factor`, i.e. rendering 1/scaleMatY * height pixels
        `numSamples` - multisampling value: < 0 turns off, == 0 leaves as-is, > 0 enables using given num samples
        `tileWidth` - custom tile width for `tile renderer`, pass -1 for default.
        `tileHeight` - custom tile height for `tile renderer`, pass -1 for default.

    - #### releasePrint

          void releasePrint()

      Shall be called after `PrinterJob.print()`.

      See Usage.

Copyright 2010 JogAmp Community.