Package net.paulhertz.pixelaudio

# Class BuildFromPathGen

java.lang.Object
net.paulhertz.pixelaudio.PixelMapGen
net.paulhertz.pixelaudio.BuildFromPathGen

public class BuildFromPathGen extends PixelMapGen
A PixelMapGen that loads data from an external pixelMap, such as might be saved in a JSON file. When you instantiate a BuildFromPathGen, set the pixelMap field before you call generate(). PixelMap corresponds to signalToImageLUT in a PixelAudioMapper. See the example sketch BuildFromPathGenDemo, which shows how to save and load JSON-format data to instantiate a BuildFromPathGen object.

            BuildFromPathGen myGen = new BuildFromPathGen(w, h);
            myGen.setPixelMap(newPixelMap);
            myGen.generate();

The int[] array that you supply to setPixelMap must have length = w * h and contain the ordinal numbers from 0..(w * h - 1) in any order. Its values are the index numbers in a w * h bitmap in signal path order. BuildFromPathGen makes it easy to create arbitrary signal paths that do not depend on numerical calculations. See Processing example sketch BuildFromPathGenDemo.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `description`

  ### Fields inherited from class net.paulhertz.pixelaudio.PixelMapGen

  `coords, flipx, flipy, fx270, fx90, h, nada, pixelMap, r180, r270, r90, sampleMap, size, transArray, transformType, w`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BuildFromPathGen(int width, int height)`
  `BuildFromPathGen(int width, int height, AffineTransformType type)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `describe()`
  `int[]`
  `generate()`
  Initialization method that sets `this.coords`, and then `this.pixelMap` and `this.sampleMap`: `this.coords` is a list of coordinate pairs representing the signal path, the (x,y) pixel locations along a path that visits every pixel in a bitmap exactly once.
  `void`
  `setPixelMap(int[] newPixelMap)`
  Sets the value of the pixelMap field.
  `boolean`
  `validate(int width, int height)`

  ### Methods inherited from class net.paulhertz.pixelaudio.PixelMapGen

  `findNearestPowerOfTwoLessThan, findPowerOfTwo, getCoordinates, getCoordinatesCopy, getHeight, getInversMapFromPixelArray, getPixelMap, getPixelMapCopy, getPixelMapFromCoordinates, getSampleMap, getSampleMapCopy, getSize, getTransformType, getWidth, isPowerOfTwo, loadIndexMaps, randomTransform, setMapsFromCoords, setTransformType, transformCoords`

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

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### description

    public static final String description
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### BuildFromPathGen

    public BuildFromPathGen(int width, int height, AffineTransformType type)

  - ### BuildFromPathGen

    public BuildFromPathGen(int width, int height)

- ## Method Details

  - ### describe

    public String describe()
    Specified by:
      `describe` in class `PixelMapGen`
    Returns:
      A String describing the mapping generated by your class and any initialization requirements.

  - ### validate

    public boolean validate(int width, int height)
    Specified by:
      `validate` in class `PixelMapGen`
    Returns:
      true if the width and height parameters are valid for creating a mapping with this generator, otherwise, false.

  - ### generate

    public int[] generate()
    Description copied from class: `PixelMapGen`

    Initialization method that sets `this.coords`, and then `this.pixelMap` and `this.sampleMap`: `this.coords` is a list of coordinate pairs representing the signal path, the (x,y) pixel locations along a path that visits every pixel in a bitmap exactly once. Once you have created it, you can call `setMapsFromCoords()` to set `this.pixelMap` and `this.sampleMap` automatically.

    `generate()` must be called from your class, so that you can initialize any local variables before generating coordinates and LUTs. The best place to call it is typically on the last line of the constructor for your class, after calling super() on the first line and after initializing any local variables needed to generate your coordinates and LUTs. You must initialize `this.coords`, `this.pixelMap`, and `this.sampleMap` within generate(). See `DiagonalZigzagGen` or `HilbertGen` for sample code.

    Specified by:
      `generate` in class `PixelMapGen`
    Returns:
      this.pixelMap, the value for PixelAudioMapper.signalToImageLUT.

  - ### setPixelMap

    public void setPixelMap(int[] newPixelMap)
    Sets the value of the pixelMap field. PixelMap corresponds to signalToImageLUT in a PixelAudioMapper, an int[] array where the value at each index is the unique index of a pixel in a bitmap. The array that you supply to setPixelMap must have length = w * h and contain the ordinal numbers from 0..(w * h - 1) in any order.
    Parameters:
      `newPixelMap` -