org.libjpegturbo.turbojpeg

## Class TJTransform

- java.lang.Object
- - java.awt.geom.RectangularShape
  - - java.awt.geom.Rectangle2D
    - - java.awt.Rectangle
      - - org.libjpegturbo.turbojpeg.TJTransform

- All Implemented Interfaces:
    java.awt.Shape, java.io.Serializable, java.lang.Cloneable

      public class TJTransform
      extends java.awt.Rectangle

  Lossless transform parameters
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class java.awt.geom.Rectangle2D

      `java.awt.geom.Rectangle2D.Double, java.awt.geom.Rectangle2D.Float`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `TJCustomFilter` | `cf` Custom filter instance
    `static int` | `NUMOP` The number of lossless transform operations
    `int` | `op` Transform operation (one of `OP_*`)
    `static int` | `OP_HFLIP` Flip (mirror) image horizontally.
    `static int` | `OP_NONE` Do not transform the position of the image pixels.
    `static int` | `OP_ROT180` Rotate image 180 degrees.
    `static int` | `OP_ROT270` Rotate image counter-clockwise by 90 degrees.
    `static int` | `OP_ROT90` Rotate image clockwise by 90 degrees.
    `static int` | `OP_TRANSPOSE` Transpose image (flip/mirror along upper left to lower right axis).
    `static int` | `OP_TRANSVERSE` Transverse transpose image (flip/mirror along upper right to lower left axis).
    `static int` | `OP_VFLIP` Flip (mirror) image vertically.
    `static int` | `OPT_COPYNONE` This option will prevent `TJTransformer.transform()` from copying any extra markers (including EXIF and ICC profile data) from the source image to the output image.
    `static int` | `OPT_CROP` This option will enable lossless cropping.
    `static int` | `OPT_GRAY` This option will discard the color data in the input image and produce a grayscale output image.
    `static int` | `OPT_NOOUTPUT` This option will prevent `TJTransformer.transform()` from outputting a JPEG image for this particular transform.
    `static int` | `OPT_PERFECT` This option will cause `TJTransformer.transform()` to throw an exception if the transform is not perfect.
    `static int` | `OPT_PROGRESSIVE` This option will enable progressive entropy coding in the output image generated by this particular transform.
    `static int` | `OPT_TRIM` This option will discard any partial MCU blocks that cannot be transformed.
    `int` | `options` Transform options (bitwise OR of one or more of `OPT_*`)

    - ### Fields inherited from class java.awt.Rectangle

      `height, width, x, y`

    - ### Fields inherited from class java.awt.geom.Rectangle2D

      `OUT_BOTTOM, OUT_LEFT, OUT_RIGHT, OUT_TOP`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TJTransform()` Create a new lossless transform instance.
    `TJTransform(int x, int y, int w, int h, int op, int options, TJCustomFilter cf)` Create a new lossless transform instance with the given parameters.
    `TJTransform(java.awt.Rectangle r, int op, int options, TJCustomFilter cf)` Create a new lossless transform instance with the given parameters.

  - ### Method Summary

    - ### Methods inherited from class java.awt.Rectangle

      `add, add, add, contains, contains, contains, contains, createIntersection, createUnion, equals, getBounds, getBounds2D, getHeight, getLocation, getSize, getWidth, getX, getY, grow, inside, intersection, intersects, isEmpty, move, outcode, reshape, resize, setBounds, setBounds, setLocation, setLocation, setRect, setSize, setSize, toString, translate, union`

    - ### Methods inherited from class java.awt.geom.Rectangle2D

      `add, add, add, contains, contains, getPathIterator, getPathIterator, hashCode, intersect, intersects, intersectsLine, intersectsLine, outcode, setFrame, setRect, union`

    - ### Methods inherited from class java.awt.geom.RectangularShape

      `clone, contains, contains, getCenterX, getCenterY, getFrame, getMaxX, getMaxY, getMinX, getMinY, intersects, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal`

    - ### Methods inherited from class java.lang.Object

      `finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.awt.Shape

      `contains, contains, contains, contains, getPathIterator, getPathIterator, intersects, intersects`

- - ### Field Detail

    - #### NUMOP

          public static final int NUMOP

      The number of lossless transform operations
      See Also:
        Constant Field Values

    - #### OP_NONE

          public static final int OP_NONE

      Do not transform the position of the image pixels.
      See Also:
        Constant Field Values

    - #### OP_HFLIP

          public static final int OP_HFLIP

      Flip (mirror) image horizontally. This transform is imperfect if there are any partial MCU blocks on the right edge.
      See Also:
        `OPT_PERFECT`, Constant Field Values

    - #### OP_VFLIP

          public static final int OP_VFLIP

      Flip (mirror) image vertically. This transform is imperfect if there are any partial MCU blocks on the bottom edge.
      See Also:
        `OPT_PERFECT`, Constant Field Values

    - #### OP_TRANSPOSE

          public static final int OP_TRANSPOSE

      Transpose image (flip/mirror along upper left to lower right axis). This transform is always perfect.
      See Also:
        `OPT_PERFECT`, Constant Field Values

    - #### OP_TRANSVERSE

          public static final int OP_TRANSVERSE

      Transverse transpose image (flip/mirror along upper right to lower left axis). This transform is imperfect if there are any partial MCU blocks in the image.
      See Also:
        `OPT_PERFECT`, Constant Field Values

    - #### OP_ROT90

          public static final int OP_ROT90

      Rotate image clockwise by 90 degrees. This transform is imperfect if there are any partial MCU blocks on the bottom edge.
      See Also:
        `OPT_PERFECT`, Constant Field Values

    - #### OP_ROT180

          public static final int OP_ROT180

      Rotate image 180 degrees. This transform is imperfect if there are any partial MCU blocks in the image.
      See Also:
        `OPT_PERFECT`, Constant Field Values

    - #### OP_ROT270

          public static final int OP_ROT270

      Rotate image counter-clockwise by 90 degrees. This transform is imperfect if there are any partial MCU blocks on the right edge.
      See Also:
        `OPT_PERFECT`, Constant Field Values

    - #### OPT_PERFECT

          public static final int OPT_PERFECT

      This option will cause `TJTransformer.transform()` to throw an exception if the transform is not perfect. Lossless transforms operate on MCU blocks, whose size depends on the level of chrominance subsampling used. If the image's width or height is not evenly divisible by the MCU block size (see `TJ.getMCUWidth(int)` and `TJ.getMCUHeight(int)`), then there will be partial MCU blocks on the right and/or bottom edges. It is not possible to move these partial MCU blocks to the top or left of the image, so any transform that would require that is "imperfect." If this option is not specified, then any partial MCU blocks that cannot be transformed will be left in place, which will create odd-looking strips on the right or bottom edge of the image.
      See Also:
        Constant Field Values

    - #### OPT_TRIM

          public static final int OPT_TRIM

      This option will discard any partial MCU blocks that cannot be transformed.
      See Also:
        Constant Field Values

    - #### OPT_CROP

          public static final int OPT_CROP

      This option will enable lossless cropping.
      See Also:
        Constant Field Values

    - #### OPT_GRAY

          public static final int OPT_GRAY

      This option will discard the color data in the input image and produce a grayscale output image.
      See Also:
        Constant Field Values

    - #### OPT_NOOUTPUT

          public static final int OPT_NOOUTPUT

      This option will prevent `TJTransformer.transform()` from outputting a JPEG image for this particular transform. This can be used in conjunction with a custom filter to capture the transformed DCT coefficients without transcoding them.
      See Also:
        Constant Field Values

    - #### OPT_PROGRESSIVE

          public static final int OPT_PROGRESSIVE

      This option will enable progressive entropy coding in the output image generated by this particular transform. Progressive entropy coding will generally improve compression relative to baseline entropy coding (the default), but it will reduce compression and decompression performance considerably.
      See Also:
        Constant Field Values

    - #### OPT_COPYNONE

          public static final int OPT_COPYNONE

      This option will prevent `TJTransformer.transform()` from copying any extra markers (including EXIF and ICC profile data) from the source image to the output image.
      See Also:
        Constant Field Values

    - #### op

          public int op

      Transform operation (one of `OP_*`)

    - #### options

          public int options

      Transform options (bitwise OR of one or more of `OPT_*`)

    - #### cf

          public TJCustomFilter cf

      Custom filter instance

  - ### Constructor Detail

    - #### TJTransform

          public TJTransform()

      Create a new lossless transform instance.

    - #### TJTransform

          public TJTransform(int x,
                     int y,
                     int w,
                     int h,
                     int op,
                     int options,
                     TJCustomFilter cf)

      Create a new lossless transform instance with the given parameters.
      Parameters:
        `x` - the left boundary of the cropping region. This must be evenly divisible by the MCU block width (see `TJ.getMCUWidth(int)`)
        `y` - the upper boundary of the cropping region. This must be evenly divisible by the MCU block height (see `TJ.getMCUHeight(int)`)
        `w` - the width of the cropping region. Setting this to 0 is the equivalent of setting it to (width of the source JPEG image - `x`).
        `h` - the height of the cropping region. Setting this to 0 is the equivalent of setting it to (height of the source JPEG image - `y`).
        `op` - one of the transform operations (`OP_*`)
        `options` - the bitwise OR of one or more of the transform options (`OPT_*`)
        `cf` - an instance of an object that implements the `TJCustomFilter` interface, or null if no custom filter is needed

    - #### TJTransform

          public TJTransform(java.awt.Rectangle r,
                     int op,
                     int options,
                     TJCustomFilter cf)

      Create a new lossless transform instance with the given parameters.
      Parameters:
        `r` - a `Rectangle` instance that specifies the cropping region. See `TJTransform(int, int, int, int, int, int, TJCustomFilter)` for more detail.
        `op` - one of the transform operations (`OP_*`)
        `options` - the bitwise OR of one or more of the transform options (`OPT_*`)
        `cf` - an instance of an object that implements the `TJCustomFilter` interface, or null if no custom filter is needed