Class Compositor

java.lang.Object
uk.ac.starlink.ttools.plot2.paper.Compositor
Direct Known Subclasses:
Compositor.BoostCompositor

public abstract class Compositor extends Object
Represents an algorithm for combining multiple RGBA values to produce a single RGBA value. The createBuffer(int) method produces a buffer containing a vector of pixels for which the compositing operation can be performed on each element.

In general RGB values are not pre-multiplied by alpha as used by this class.

Since:
12 Feb 2013
Author:
Mark Taylor
See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    Compositor with boosted saturation.
    static interface 
    Buffer of pixels on which compositing operations can be performed.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Compositor
    Implementation which adds colours until the alpha is saturated and then makes no further updates to colour.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static float
    byteToFloat(int i)
    Maps an integer in the range 0-255 to a float in the range 0-1.
    createBuffer(int count)
    Creates a buffer on which compositing operations can be performed.
    static int
    floatToByte(float f)
    Maps a float in the range 0-1 to an int in the range 0-255.
    abstract float
    scaleAlpha(float alpha)
    Adjusts an alpha value in accordance with this compositor's policy.
    static int
    srcOverOpaque(int sRgba, int dRgb)
    Returns the result of compositing a possibly transparent source pixel over an opaque destination pixel.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • SATURATION

      public static final Compositor SATURATION
      Implementation which adds colours until the alpha is saturated and then makes no further updates to colour.
  • Constructor Details

    • Compositor

      public Compositor()
  • Method Details

    • scaleAlpha

      public abstract float scaleAlpha(float alpha)
      Adjusts an alpha value in accordance with this compositor's policy. It takes an alpha value in the range 0-1 and maps it into the range to be used for output from this compositor.
      Parameters:
      alpha - input alpha in range 0-1
      Returns:
      adjusted alpha, also in range 0-1
    • createBuffer

      public abstract Compositor.Buffer createBuffer(int count)
      Creates a buffer on which compositing operations can be performed.
      Parameters:
      count - number of pixel elements in buffer
      Returns:
      new buffer
    • byteToFloat

      public static float byteToFloat(int i)
      Maps an integer in the range 0-255 to a float in the range 0-1. Bits more significant than the first 8 are ignored.
      Parameters:
      i - integer value
      Returns:
      float in range 0-1
    • floatToByte

      public static int floatToByte(float f)
      Maps a float in the range 0-1 to an int in the range 0-255.
      Parameters:
      f - float in range 0-1
      Returns:
      int in range 0-255
    • srcOverOpaque

      public static int srcOverOpaque(int sRgba, int dRgb)
      Returns the result of compositing a possibly transparent source pixel over an opaque destination pixel.
      Parameters:
      sRgba - RGBA for source pixel
      dRgb - RGB for opaque destination pixel
      Returns:
      RGBA for composition result