# Interface Composite

All Known Implementing Classes:
  `AlphaComposite`

public interface Composite
The `Composite` interface, along with `CompositeContext`, defines the methods to compose a draw primitive with the underlying graphics area. After the `Composite` is set in the `Graphics2D` context, it combines a shape, text, or an image being rendered with the colors that have already been rendered according to pre-defined rules. The classes implementing this interface provide the rules and a method to create the context for a particular operation. `CompositeContext` is an environment used by the compositing operation, which is created by the `Graphics2D` prior to the start of the operation. `CompositeContext` contains private information and resources needed for a compositing operation. When the `CompositeContext` is no longer needed, the `Graphics2D` object disposes of it in order to reclaim resources allocated for the operation.

Instances of classes implementing `Composite` must be immutable because the `Graphics2D` does not clone these objects when they are set as an attribute with the `setComposite` method or when the `Graphics2D` object is cloned. This is to avoid undefined rendering behavior of `Graphics2D`, resulting from the modification of the `Composite` object after it has been set in the `Graphics2D` context.

See Also:
  - `AlphaComposite`
  - `CompositeContext`
  - `Graphics2D.setComposite(java.awt.Composite)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `CompositeContext`
  `createContext(ColorModel srcColorModel, ColorModel dstColorModel, RenderingHints hints)`
  Creates a context containing state that is used to perform the compositing operation.

- ## Method Details

  - ### createContext

    CompositeContext createContext(ColorModel srcColorModel, ColorModel dstColorModel, RenderingHints hints)
    Creates a context containing state that is used to perform the compositing operation. In a multi-threaded environment, several contexts can exist simultaneously for a single `Composite` object.
    Parameters:
      `srcColorModel` - the `ColorModel` of the source
      `dstColorModel` - the `ColorModel` of the destination
      `hints` - the hint that the context object uses to choose between rendering alternatives
    Returns:
      the `CompositeContext` object used to perform the compositing operation.