From 0b0fdbcd3d87af790594a3224212bfa16ee85136 Mon Sep 17 00:00:00 2001 From: Tommy Ettinger Date: Tue, 24 May 2022 22:12:45 -0700 Subject: [PATCH] Release 0.3.7 ! --- README.md | 41 +- docs/apidocs/allclasses-index.html | 2 +- docs/apidocs/allpackages-index.html | 2 +- .../tommyettinger/anim8/AnimatedGif.html | 2 +- .../tommyettinger/anim8/AnimatedPNG.html | 2 +- .../tommyettinger/anim8/AnimationWriter.html | 2 +- .../anim8/Dithered.DitherAlgorithm.html | 2 +- .../github/tommyettinger/anim8/Dithered.html | 2 +- .../anim8/OtherMath.BiasGain.html | 29 +- .../github/tommyettinger/anim8/OtherMath.html | 112 +-- .../com/github/tommyettinger/anim8/PNG8.html | 2 +- .../tommyettinger/anim8/PaletteReducer.html | 645 ++++++++++++------ .../tommyettinger/anim8/package-summary.html | 2 +- .../tommyettinger/anim8/package-tree.html | 2 +- docs/apidocs/help-doc.html | 2 +- docs/apidocs/index-all.html | 90 ++- docs/apidocs/index.html | 2 +- docs/apidocs/member-search-index.js | 2 +- docs/apidocs/overview-tree.html | 2 +- gradle.properties | 2 +- 20 files changed, 659 insertions(+), 288 deletions(-) diff --git a/README.md b/README.md index d65ccd30..da95de07 100644 --- a/README.md +++ b/README.md @@ -14,26 +14,26 @@ public void writeGif() { final int frameCount = 20; Array pixmaps = new Array<>(frameCount); for (int i = 0; i < frameCount; i++) { - // you could set the proper state for a frame here. +// you could set the proper state for a frame here. - // you don't need to call render() in all cases, especially if you have Pixmaps already. - // this assumes you're calling this from a class that uses render() to draw to the screen. +// you don't need to call render() in all cases, especially if you have Pixmaps already. +// this assumes you're calling this from a class that uses render() to draw to the screen. render(); - // this gets a screenshot of the current window and adds it to the Array of Pixmap. - // there are two ways to do this; this is the older way, but it is deprecated in current libGDX: +// this gets a screenshot of the current window and adds it to the Array of Pixmap. +// there are two ways to do this; this is the older way, but it is deprecated in current libGDX: pixmaps.add(ScreenUtils.getFrameBufferPixmap(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight())); - // the newer way is only available in more-recent libGDX (I know 1.10.0 has it); it is not deprecated: +// the newer way is only available in more-recent libGDX (I know 1.10.0 and 1.11.0 have it); it is not deprecated: // pixmaps.add(Pixmap.createFromFrameBuffer(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight())); } - // AnimatedGif is from anim8; if no extra settings are specified it will calculate a 255-color palette from - // each given frame and use the most appropriate palette for each frame, dithering any colors that don't - // match. The other file-writing classes don't do this; PNG8 doesn't currently support a palette per-frame, - // while AnimatedPNG doesn't restrict colors to a palette. See Dithering Algorithms below for visual things - // to be aware of and choices you can make. +// AnimatedGif is from anim8; if no extra settings are specified it will calculate a 255-color palette from +// each given frame and use the most appropriate palette for each frame, dithering any colors that don't +// match. The other file-writing classes don't do this; PNG8 doesn't currently support a palette per-frame, +// while AnimatedPNG doesn't restrict colors to a palette. See Dithering Algorithms below for visual things +// to be aware of and choices you can make. AnimatedGif gif = new AnimatedGif(); - // you can write to a FileHandle or an OutputStream; here, the file will be written in the current directory. - // here, pixmaps is usually an Array of Pixmap for any of the animated image types. - // 16 is how many frames per second the animated GIF should play back at. +// you can write to a FileHandle or an OutputStream; here, the file will be written in the current directory. +// here, pixmaps is usually an Array of Pixmap for any of the animated image types. +// 16 is how many frames per second the animated GIF should play back at. gif.write(Gdx.files.local("AnimatedGif.gif"), pixmaps, 16); } ``` @@ -47,8 +47,8 @@ A typical Gradle dependency on anim8 looks like this (in the core module's depen ```groovy dependencies { //... other dependencies are here, like libGDX 1.9.11 or higher - // libGDX 1.10.0 is recommended currently, but versions as old as 1.9.11 work. - api "com.github.tommyettinger:anim8-gdx:0.3.6" + // libGDX 1.11.0 is recommended currently, but versions as old as 1.9.11 work. + api "com.github.tommyettinger:anim8-gdx:0.3.7" } ``` @@ -57,7 +57,7 @@ You can also get a specific commit using JitPack, by following the instructions commit, unless you are experiencing problems with one in particular.) A .gwt.xml file is present in the sources jar, and because GWT needs it, you can depend on the sources jar with -`implementation "com.github.tommyettinger:anim8-gdx:0.3.6:sources"`. The PNG-related code isn't available on GWT because +`implementation "com.github.tommyettinger:anim8-gdx:0.3.7:sources"`. The PNG-related code isn't available on GWT because it needs `java.util.zip`, which is unavailable there, but PaletteReducer and AnimatedGif should both work. The GWT inherits line, which is needed in `GdxDefinition.gwt.xml` if no dependencies already have it, is: ```xml @@ -174,6 +174,13 @@ passing it an `Array`, and assign that to the `palette` field; this is r frame will use the same palette (which means regions of solid color that don't change in the source won't change in the GIF; this isn't true if `palette` is null). +Starting in version 0.3.7, you can use any of the `PaletteReducer.analyzeHueWise()` methods to analyze the palette of a +`Pixmap` or multiple `Pixmap`s. This approach works well with rather small palettes (about 16 colors) because it tries +to ensure some colors from every hue present in the image will be available in the palette. It stops being noticeably +better than `analyze()` at around 25-30 colors in a palette (this can vary based on the image), and is almost always +slower than `analyze()`. Thanks to [caramel](https://caramellow.dev/) for (very quickly) devising this algorithm for +palette construction. + # Samples Some animations, using 255 colors taken from the most-used in the animation (`analyze()`, which does well here diff --git a/docs/apidocs/allclasses-index.html b/docs/apidocs/allclasses-index.html index 6b05260d..0643d72c 100644 --- a/docs/apidocs/allclasses-index.html +++ b/docs/apidocs/allclasses-index.html @@ -2,7 +2,7 @@ -All Classes and Interfaces (anim8-gdx 0.3.6 API) +All Classes and Interfaces (anim8-gdx 0.3.7 API) diff --git a/docs/apidocs/allpackages-index.html b/docs/apidocs/allpackages-index.html index 2b4a799f..9de8f265 100644 --- a/docs/apidocs/allpackages-index.html +++ b/docs/apidocs/allpackages-index.html @@ -2,7 +2,7 @@ -All Packages (anim8-gdx 0.3.6 API) +All Packages (anim8-gdx 0.3.7 API) diff --git a/docs/apidocs/com/github/tommyettinger/anim8/AnimatedGif.html b/docs/apidocs/com/github/tommyettinger/anim8/AnimatedGif.html index a11b648f..34435f58 100644 --- a/docs/apidocs/com/github/tommyettinger/anim8/AnimatedGif.html +++ b/docs/apidocs/com/github/tommyettinger/anim8/AnimatedGif.html @@ -2,7 +2,7 @@ -AnimatedGif (anim8-gdx 0.3.6 API) +AnimatedGif (anim8-gdx 0.3.7 API) diff --git a/docs/apidocs/com/github/tommyettinger/anim8/AnimatedPNG.html b/docs/apidocs/com/github/tommyettinger/anim8/AnimatedPNG.html index 2b609808..7f32aebb 100644 --- a/docs/apidocs/com/github/tommyettinger/anim8/AnimatedPNG.html +++ b/docs/apidocs/com/github/tommyettinger/anim8/AnimatedPNG.html @@ -2,7 +2,7 @@ -AnimatedPNG (anim8-gdx 0.3.6 API) +AnimatedPNG (anim8-gdx 0.3.7 API) diff --git a/docs/apidocs/com/github/tommyettinger/anim8/AnimationWriter.html b/docs/apidocs/com/github/tommyettinger/anim8/AnimationWriter.html index ff8d591d..88599e3b 100644 --- a/docs/apidocs/com/github/tommyettinger/anim8/AnimationWriter.html +++ b/docs/apidocs/com/github/tommyettinger/anim8/AnimationWriter.html @@ -2,7 +2,7 @@ -AnimationWriter (anim8-gdx 0.3.6 API) +AnimationWriter (anim8-gdx 0.3.7 API) diff --git a/docs/apidocs/com/github/tommyettinger/anim8/Dithered.DitherAlgorithm.html b/docs/apidocs/com/github/tommyettinger/anim8/Dithered.DitherAlgorithm.html index 0b98f7a7..600508bd 100644 --- a/docs/apidocs/com/github/tommyettinger/anim8/Dithered.DitherAlgorithm.html +++ b/docs/apidocs/com/github/tommyettinger/anim8/Dithered.DitherAlgorithm.html @@ -2,7 +2,7 @@ -Dithered.DitherAlgorithm (anim8-gdx 0.3.6 API) +Dithered.DitherAlgorithm (anim8-gdx 0.3.7 API) diff --git a/docs/apidocs/com/github/tommyettinger/anim8/Dithered.html b/docs/apidocs/com/github/tommyettinger/anim8/Dithered.html index c99656ea..455cf7aa 100644 --- a/docs/apidocs/com/github/tommyettinger/anim8/Dithered.html +++ b/docs/apidocs/com/github/tommyettinger/anim8/Dithered.html @@ -2,7 +2,7 @@ -Dithered (anim8-gdx 0.3.6 API) +Dithered (anim8-gdx 0.3.7 API) diff --git a/docs/apidocs/com/github/tommyettinger/anim8/OtherMath.BiasGain.html b/docs/apidocs/com/github/tommyettinger/anim8/OtherMath.BiasGain.html index 07597f5b..07af9c4a 100644 --- a/docs/apidocs/com/github/tommyettinger/anim8/OtherMath.BiasGain.html +++ b/docs/apidocs/com/github/tommyettinger/anim8/OtherMath.BiasGain.html @@ -2,7 +2,7 @@ -OtherMath.BiasGain (anim8-gdx 0.3.6 API) +OtherMath.BiasGain (anim8-gdx 0.3.7 API) @@ -134,9 +134,16 @@

Constructor Summary

Constructor
Description
-
BiasGain(float shape, + +
+
Constructs a useful default BiasGain interpolation with a smoothstep-like shape.
+
+
BiasGain(float shape, float turning)
-
 
+
+
Constructs a BiasGain interpolation with the specified (positive) shape and specified turning (between 0 and + 1 inclusive).
+
@@ -200,10 +207,26 @@

turning

Constructor Details

  • +
    +

    BiasGain

    +
    public BiasGain()
    +
    Constructs a useful default BiasGain interpolation with a smoothstep-like shape. + This has a shape of 2.0f and a turning of 0.5f .
    +
    +
  • +
  • BiasGain

    public BiasGain(float shape, float turning)
    +
    Constructs a BiasGain interpolation with the specified (positive) shape and specified turning (between 0 and + 1 inclusive).
    +
    +
    Parameters:
    +
    shape - must be positive; similar to a straight line when near 1, becomes smoothstep-like above 1, and + becomes shaped like transpose of smoothstep below 1
    +
    turning - where, between 0 and 1 inclusive, this should change from the starting curve to the ending one
    +
diff --git a/docs/apidocs/com/github/tommyettinger/anim8/OtherMath.html b/docs/apidocs/com/github/tommyettinger/anim8/OtherMath.html index 23754f47..ab4b3940 100644 --- a/docs/apidocs/com/github/tommyettinger/anim8/OtherMath.html +++ b/docs/apidocs/com/github/tommyettinger/anim8/OtherMath.html @@ -2,7 +2,7 @@ -OtherMath (anim8-gdx 0.3.6 API) +OtherMath (anim8-gdx 0.3.7 API) @@ -113,32 +113,39 @@

Method Summary

Method
Description
static float
-
barronSpline(float x, - float shape, - float turning)
+
atan2(float y, + float x)
-
A generalization on bias and gain functions that can represent both; this version is branch-less.
+
Close approximation of the frequently-used trigonometric method atan2, with higher precision than libGDX's atan2 + approximation.
static float
-
cbrt(float x)
+
barronSpline(float x, + float shape, + float turning)
-
An approximation of the cube-root function for float inputs and outputs.
+
A generalization on bias and gain functions that can represent both; this version is branch-less.
static float
-
cbrtShape(float x)
+
cbrt(float x)
+
An approximation of the cube-root function for float inputs and outputs.
+
+
static float
+
cbrtShape(float x)
+
A function that loosely approximates the cube root of x, but is much smaller and probably faster than cbrt(float).
-
static byte
-
centralize(byte v)
-
+
static byte
+
centralize(byte v)
+
Given a byte, pushes any value that isn't extreme toward the center of the 0 to 255 range, and keeps extreme values (such as the channel values in the colors max green or black) as they are.
-
static double
-
probit(double d)
-
+
static double
+
probit(double d)
+
A way of taking a double in the (0.0, 1.0) range and mapping it to a Gaussian or normal distribution, so high inputs correspond to high outputs, and similarly for the low range.
@@ -160,32 +167,6 @@

Methods inherited from cl

Method Details

  • -
    -

    barronSpline

    -
    public static float barronSpline(float x, - float shape, - float turning)
    -
    A generalization on bias and gain functions that can represent both; this version is branch-less. - This is based on this micro-paper by Jon Barron, which - generalizes the earlier bias and gain rational functions by Schlick. The second and final page of the - paper has useful graphs of what the s (shape) and t (turning point) parameters do; shape should be 0 - or greater, while turning must be between 0 and 1, inclusive. This effectively combines two different - curving functions so they continue into each other when x equals turning. The shape parameter will - cause this to imitate "smoothstep-like" splines when greater than 1 (where the values ease into their - starting and ending levels), or to be the inverse when less than 1 (where values start like square - root does, taking off very quickly, but also end like square does, landing abruptly at the ending - level). You should only give x values between 0 and 1, inclusive.
    -
    -
    Parameters:
    -
    x - progress through the spline, from 0 to 1, inclusive
    -
    shape - must be greater than or equal to 0; values greater than 1 are "normal interpolations"
    -
    turning - a value between 0.0 and 1.0, inclusive, where the shape changes
    -
    Returns:
    -
    a float between 0 and 1, inclusive
    -
    -
    -
  • -
  • centralize

    public static byte centralize(byte v)
    @@ -275,6 +256,57 @@

    cbrtShape

  • +
  • +
    +

    atan2

    +
    public static float atan2(float y, + float x)
    +
    Close approximation of the frequently-used trigonometric method atan2, with higher precision than libGDX's atan2 + approximation. Maximum error is below 0.00009 radians. + Takes y and x (in that unusual order) as floats, and returns the angle from the origin to that point in radians. + It is about 5 times faster than Math.atan2(double, double) (roughly 12 ns instead of roughly 62 ns for + Math, on Java 8 HotSpot). It is slightly faster than libGDX' MathUtils approximation of the same method; + MathUtils seems to have worse average error, though. +
    + Credit for this goes to the 1955 research study "Approximations for Digital Computers," by RAND Corporation. This + is sheet 9's algorithm, which is the second-fastest and second-least precise. The algorithm on sheet 8 is faster, + but only by a very small degree, and is considerably less precise. That study provides an atan(float) + method, and the small code to make that work as atan2() was worked out from Wikipedia.
    +
    +
    Parameters:
    +
    y - y-component of the point to find the angle towards; note the parameter order is unusual by convention
    +
    x - x-component of the point to find the angle towards; note the parameter order is unusual by convention
    +
    Returns:
    +
    the angle to the given point, in radians as a float; ranges from -PI to PI
    +
    +
    +
  • +
  • +
    +

    barronSpline

    +
    public static float barronSpline(float x, + float shape, + float turning)
    +
    A generalization on bias and gain functions that can represent both; this version is branch-less. + This is based on this micro-paper by Jon Barron, which + generalizes the earlier bias and gain rational functions by Schlick. The second and final page of the + paper has useful graphs of what the s (shape) and t (turning point) parameters do; shape should be 0 + or greater, while turning must be between 0 and 1, inclusive. This effectively combines two different + curving functions so they continue into each other when x equals turning. The shape parameter will + cause this to imitate "smoothstep-like" splines when greater than 1 (where the values ease into their + starting and ending levels), or to be the inverse when less than 1 (where values start like square + root does, taking off very quickly, but also end like square does, landing abruptly at the ending + level). You should only give x values between 0 and 1, inclusive.
    +
    +
    Parameters:
    +
    x - progress through the spline, from 0 to 1, inclusive
    +
    shape - must be greater than or equal to 0; values greater than 1 are "normal interpolations"
    +
    turning - a value between 0.0 and 1.0, inclusive, where the shape changes
    +
    Returns:
    +
    a float between 0 and 1, inclusive
    +
    +
    +
diff --git a/docs/apidocs/com/github/tommyettinger/anim8/PNG8.html b/docs/apidocs/com/github/tommyettinger/anim8/PNG8.html index 50bbc957..6c78c029 100644 --- a/docs/apidocs/com/github/tommyettinger/anim8/PNG8.html +++ b/docs/apidocs/com/github/tommyettinger/anim8/PNG8.html @@ -2,7 +2,7 @@ -PNG8 (anim8-gdx 0.3.6 API) +PNG8 (anim8-gdx 0.3.7 API) diff --git a/docs/apidocs/com/github/tommyettinger/anim8/PaletteReducer.html b/docs/apidocs/com/github/tommyettinger/anim8/PaletteReducer.html index 0365895b..21464659 100644 --- a/docs/apidocs/com/github/tommyettinger/anim8/PaletteReducer.html +++ b/docs/apidocs/com/github/tommyettinger/anim8/PaletteReducer.html @@ -2,7 +2,7 @@ -PaletteReducer (anim8-gdx 0.3.6 API) +PaletteReducer (anim8-gdx 0.3.7 API) @@ -105,7 +105,8 @@

Class PaletteReducer

Neue is the default currently because it is the only dither that both handles gradients well and preserves color well. Blue Noise dither also handles gradients well, but doesn't always recognize color changes. Scatter handles color well, but can have some banding. Pattern dither usually handles gradients exceptionally well, but can have - severe issues when it doesn't preserve lightness faithfully with small palettes. The list goes on.) + severe issues when it doesn't preserve lightness faithfully with small palettes. The list goes on. Neue can + introduce error if the palette perfectly matches the image already; in that case, use Solid.)
  • reduceKnoll(Pixmap) (Thomas Knoll's Pattern Dithering, used more or less verbatim; this version has a heavy grid pattern that looks like an artifact. While the square grid here is a bit bad, it becomes very hard to see when the palette is large enough. This reduction is the slowest here, currently, and may noticeably delay @@ -139,7 +140,8 @@

    Class PaletteReducer

    the other algorithms take comparable amounts of time to each other, but KnollRoberts and especially Knoll are sluggish.)
  • reduceSolid(Pixmap) (No dither! Solid colors! Mostly useful when you want to preserve blocky parts - of a source image, or for some kinds of pixel/low-color art.)
  • + of a source image, or for some kinds of pixel/low-color art. If you have a palette that perfectly matches the + image you are dithering, then you won't need dither, and this will be the best option.) @@ -173,44 +175,39 @@

    Field Summary

    This 255-color (plus transparent) palette uses the (3,5,7) Halton sequence to get 3D points, treats those as IPT channel values, and rejects out-of-gamut colors.
    -
    static final double[][]
    - +
    static final float[][]
    +
    -
    Stores IPT components corresponding to RGB555 indices.
    -
    -
    static final float[][]
    - -
    Stores Oklab components corresponding to RGB555 indices.
    -
    final int[]
    - -
    +
    final int[]
    + +
    The RGBA8888 int colors this can reduce an image to use.
    -
    final byte[]
    - -
    +
    final byte[]
    + +
    Stores the byte indices into paletteArray (when treated as unsigned; mask with 255) corresponding to RGB555 colors (you can get an RGB555 int from an RGBA8888 int using shrink(int)).
    -
    protected float
    - -
    +
    protected float
    + +
    Typically between 0.5 and 1, this should get closer to 1 with larger palette sizes, and closer to 0.5 with smaller palettes.
    -
    com.badlogic.gdx.utils.IntIntMap
    - -
     
    -
    static final byte[]
    - -
    +
    com.badlogic.gdx.utils.IntIntMap
    + +
     
    +
    static final byte[]
    + +
    A 4096-element byte array as a 64x64 grid of bytes.
    -
    static final float[]
    - -
    +
    static final float[]
    + +
    A 64x64 grid of floats, with a median value of about 1.0, generated using the triangular-distributed blue noise from TRI_BLUE_NOISE.
    @@ -288,89 +285,119 @@

    Method Summary

    Method
    Description
    -
    alterColorsIPT(com.badlogic.gdx.math.Interpolation lightness, - com.badlogic.gdx.math.Interpolation greenToRed, - com.badlogic.gdx.math.Interpolation blueToYellow)
    +
    alterColorsLightness(com.badlogic.gdx.math.Interpolation lightness)
    -
    Edits this PaletteReducer by changing each used color in the IPT color space with an Interpolation.
    +
    Edits this PaletteReducer by changing each used color in the Oklab color space with an Interpolation.
    -
    alterColorsLightness(com.badlogic.gdx.math.Interpolation lightness)
    -
    -
    Edits this PaletteReducer by changing each used color in the IPT color space with an Interpolation.
    -
    - -
    alterColorsOklab(com.badlogic.gdx.math.Interpolation lightness, +
    alterColorsOklab(com.badlogic.gdx.math.Interpolation lightness, com.badlogic.gdx.math.Interpolation greenToRed, com.badlogic.gdx.math.Interpolation blueToYellow)
    -
    +
    Edits this PaletteReducer by changing each used color in the Oklab color space with an Interpolation.
    -
    void
    -
    analyze(com.badlogic.gdx.graphics.Pixmap pixmap)
    -
    +
    void
    +
    analyze(com.badlogic.gdx.graphics.Pixmap pixmap)
    +
    Analyzes pixmap for color count and frequency, building a palette with at most 256 colors if there are too many colors to store in a PNG-8 palette.
    -
    void
    -
    analyze(com.badlogic.gdx.graphics.Pixmap[] pixmaps, +
    void
    +
    analyze(com.badlogic.gdx.graphics.Pixmap[] pixmaps, int pixmapCount, double threshold, int limit)
    -
    +
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), building a palette with at most limit colors.
    -
    void
    -
    analyze(com.badlogic.gdx.graphics.Pixmap pixmap, +
    void
    +
    analyze(com.badlogic.gdx.graphics.Pixmap pixmap, double threshold)
    -
    +
    Analyzes pixmap for color count and frequency, building a palette with at most 256 colors if there are too many colors to store in a PNG-8 palette.
    -
    void
    -
    analyze(com.badlogic.gdx.graphics.Pixmap pixmap, +
    void
    +
    analyze(com.badlogic.gdx.graphics.Pixmap pixmap, double threshold, int limit)
    -
    +
    Analyzes pixmap for color count and frequency, building a palette with at most limit colors.
    +
    void
    +
    analyze(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> pixmaps)
    +
    +
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), + building a palette with at most 256 colors.
    +
    void
    -
    analyze(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> pixmaps)
    +
    analyze(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> pixmaps, + double threshold)
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), building a palette with at most 256 colors.
    void
    -
    analyze(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> pixmaps, - double threshold)
    +
    analyze(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> pixmaps, + double threshold, + int limit)
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), - building a palette with at most 256 colors.
    + building a palette with at most limit colors.
    void
    -
    analyze(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> pixmaps, +
    analyzeFast(com.badlogic.gdx.graphics.Pixmap pixmap, double threshold, int limit)
    +
    Analyzes pixmap for color count and frequency, building a palette with at most limit colors.
    +
    +
    void
    +
    analyzeHueWise(com.badlogic.gdx.graphics.Pixmap[] pixmaps, + int pixmapCount, + double threshold, + int limit)
    +
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), building a palette with at most limit colors.
    +
    void
    +
    analyzeHueWise(com.badlogic.gdx.graphics.Pixmap pixmap, + double threshold, + int limit)
    +
    +
    Analyzes pixmap for color count and frequency, building a palette with at most limit colors.
    +
    void
    -
    analyzeFast(com.badlogic.gdx.graphics.Pixmap pixmap, +
    analyzeHueWise(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> pixmaps)
    +
    +
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), + building a palette with at most 256 colors.
    +
    +
    void
    +
    analyzeHueWise(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> pixmaps, + double threshold)
    +
    +
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), + building a palette with at most 256 colors.
    +
    +
    void
    +
    analyzeHueWise(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> pixmaps, double threshold, int limit)
    -
    Analyzes pixmap for color count and frequency, building a palette with at most limit colors.
    +
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), + building a palette with at most limit colors.
    void
    analyzeMC(com.badlogic.gdx.graphics.Pixmap pixmap, int limit)
     
    int
    -
    blend(int rgba1, +
    blend(int rgba1, int rgba2, - double preference)
    + float preference)
     
    protected static void
    compareSwap(int[] ints, @@ -384,7 +411,7 @@

    Method Summary

    differenceAnalyzing(int color1, int color2)
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100.
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    double
    differenceAnalyzing(int color1, @@ -392,7 +419,7 @@

    Method Summary

    int g2, int b2)
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100.
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    double
    differenceAnalyzing(int r1, @@ -402,86 +429,104 @@

    Method Summary

    int g2, int b2)
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100.
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    double
    -
    differenceMatch(int color1, +
    differenceHW(int color1, int color2)
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100.
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    double
    -
    differenceMatch(int color1, +
    differenceHW(int color1, int r2, int g2, int b2)
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100.
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    double
    -
    differenceMatch(int r1, +
    differenceHW(int r1, int g1, int b1, int r2, int g2, int b2)
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100.
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    -
    void
    -
    exact(int[] rgbaPalette)
    +
    double
    +
    differenceMatch(int color1, + int color2)
    -
    Builds the palette information this PNG8 stores from the RGBA8888 ints in rgbaPalette, up to 256 colors.
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    +
    +
    double
    +
    differenceMatch(int color1, + int r2, + int g2, + int b2)
    +
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    +
    +
    double
    +
    differenceMatch(int r1, + int g1, + int b1, + int r2, + int g2, + int b2)
    +
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    void
    -
    exact(int[] palette, - byte[] preload)
    +
    exact(int[] rgbaPalette)
    +
    Builds the palette information this PNG8 stores from the RGBA8888 ints in rgbaPalette, up to 256 colors.
    +
    +
    void
    +
    exact(int[] palette, + byte[] preload)
    +
    Builds the palette information this PaletteReducer stores from the given array of RGBA8888 ints as a palette (see exact(int[]) for more info) and an encoded byte array to use to look up pre-loaded color data.
    -
    void
    -
    exact(int[] rgbaPalette, +
    void
    +
    exact(int[] rgbaPalette, int limit)
    -
    +
    Builds the palette information this PNG8 stores from the RGBA8888 ints in rgbaPalette, up to 256 colors or limit, whichever is less.
    -
    void
    -
    exact(com.badlogic.gdx.graphics.Color[] colorPalette)
    -
    +
    void
    +
    exact(com.badlogic.gdx.graphics.Color[] colorPalette)
    +
    Builds the palette information this PaletteReducer stores from the Color objects in colorPalette, up to 256 colors.
    -
    void
    -
    exact(com.badlogic.gdx.graphics.Color[] colorPalette, +
    void
    +
    exact(com.badlogic.gdx.graphics.Color[] colorPalette, int limit)
    -
    +
    Builds the palette information this PaletteReducer stores from the Color objects in colorPalette, up to 256 colors or limit, whichever is less.
    -
    static float
    -
    forwardLight(float L)
    -
    +
    static float
    +
    forwardLight(float L)
    +
    Changes the curve of a requested L value so that it matches the internally-used curve.
    -
    float
    - -
    +
    float
    + +
    Gets the "strength" of the dither effect applied during reduce(Pixmap) calls.
    - - -
    + + +
    Edits this PaletteReducer by changing each used color so lighter colors lean towards warmer hues, while darker colors lean toward cooler or more purple-ish hues.
    -
    int
    -
    iptToRgb(double i, - double p, - double t, - double a)
    -
     
    static byte[]
    loadPreloadFile(com.badlogic.gdx.files.FileHandle file)
    @@ -621,7 +666,23 @@

    Method Summary

    static int
    shrink(int color)
    -
    Converts an RGBA8888 int color to the RGB555 format used by IPT to look up colors.
    +
    Converts an RGBA8888 int color to the RGB555 format used by OKLAB to look up colors.
    +
    +
    static void
    +
    sort(int[] items, + int from, + int to, + com.github.tommyettinger.anim8.PaletteReducer.IntComparator c)
    +
    +
    Sorts the specified range of elements according to the order induced by the specified + comparator using mergesort.
    +
    +
    static void
    +
    sort(int[] items, + com.github.tommyettinger.anim8.PaletteReducer.IntComparator c)
    +
    +
    Sorts all of items by simply calling sort(int[], int, int, IntComparator), + setting from and to so the whole array is sorted.
    static int
    stretch(int color)
    @@ -669,21 +730,6 @@

    HALTONIC

  • -
    -

    IPT

    -
    public static final double[][] IPT
    -
    Stores IPT components corresponding to RGB555 indices. - IPT[0] stores intensity from 0.0 to 1.0 . - IPT[1] stores protan, which is something like a green-red axis, from -1 (green) to 1 (red). - IPT[2] stores tritan, which is something like a blue-yellow axis, from -1 (blue) to 1 (yellow). -
    - The indices into each of these double[] values store red in bits 10-14, green in bits 5-9, and blue in bits 0-4. - It's ideal to work with these indices with bitwise operations, as with (r << 10 | g << 5 | b), where r, - g, and b are all in the 0-31 range inclusive. It's usually easiest to convert an RGBA8888 int color to an RGB555 - color with shrink(int).
    -
    -
  • -
  • OKLAB

    public static final float[][] OKLAB
    @@ -691,6 +737,7 @@

    OKLAB

    OKLAB[0] stores L (lightness) from 0.0 to 1.0 . OKLAB[1] stores A, which is something like a green-magenta axis, from -0.5 (green) to 0.5 (red). OKLAB[2] stores B, which is something like a blue-orange axis, from -0.5 (blue) to 0.5 (yellow). + OKLAB[3] stores the hue in radians from -PI to PI, with red at 0, yellow at PI/2, and blue at -PI/2.
    The indices into each of these float[] values store red in bits 10-14, green in bits 5-9, and blue in bits 0-4. It's ideal to work with these indices with bitwise operations, as with (r << 10 | g << 5 | b), where r, @@ -915,7 +962,7 @@

    Method Details

    shrink

    public static int shrink(int color)
    -
    Converts an RGBA8888 int color to the RGB555 format used by IPT to look up colors.
    +
    Converts an RGBA8888 int color to the RGB555 format used by OKLAB to look up colors.
    Parameters:
    color - an RGBA8888 int color
    @@ -973,15 +1020,6 @@

    reverseLight

  • -
    -

    iptToRgb

    -
    public int iptToRgb(double i, - double p, - double t, - double a)
    -
    -
  • -
  • oklabToRGB

    public static int oklabToRGB(float L, @@ -1025,7 +1063,7 @@

    loadPreloadFile

    differenceMatch

    public double differenceMatch(int color1, int color2)
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100. +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25. If you want to change this, just change differenceMatch(int, int, int, int, int, int), which this calls.
    @@ -1033,7 +1071,7 @@

    differenceMatch

    color1 - the first color, as an RGBA8888 int
    color2 - the second color, as an RGBA8888 int
    Returns:
    -
    the squared distance, in some Euclidean approximation, between colors 1 and 2
    +
    the squared Euclidean distance between colors 1 and 2
  • @@ -1042,7 +1080,7 @@

    differenceMatch

    differenceAnalyzing

    public double differenceAnalyzing(int color1, int color2)
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100. +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25. If you want to change this, just change differenceAnalyzing(int, int, int, int, int, int), which this calls.
    @@ -1050,7 +1088,23 @@

    differenceAnalyzing

    color1 - the first color, as an RGBA8888 int
    color2 - the second color, as an RGBA8888 int
    Returns:
    -
    the squared distance, in some Euclidean approximation, between colors 1 and 2
    +
    the squared Euclidean distance between colors 1 and 2
    +
    + + +
  • +
    +

    differenceHW

    +
    public double differenceHW(int color1, + int color2)
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25. + If you want to change this, just change differenceHW(int, int, int, int, int, int), which this calls.
    +
    +
    Parameters:
    +
    color1 - the first color, as an RGBA8888 int
    +
    color2 - the second color, as an RGBA8888 int
    +
    Returns:
    +
    the squared Euclidean distance between colors 1 and 2
  • @@ -1061,7 +1115,7 @@

    differenceMatch

    int r2, int g2, int b2)
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100. +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25. If you want to change this, just change differenceMatch(int, int, int, int, int, int), which this calls.
    Parameters:
    @@ -1070,7 +1124,7 @@

    differenceMatch

    g2 - green of the second color, from 0 to 255
    b2 - blue of the second color, from 0 to 255
    Returns:
    -
    the squared distance, in some Euclidean approximation, between colors 1 and 2
    +
    the squared Euclidean distance between colors 1 and 2
    @@ -1081,7 +1135,7 @@

    differenceAnalyzing

    int r2, int g2, int b2)
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100. If +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25. If you want to change this, just change differenceAnalyzing(int, int, int, int, int, int), which this calls.
    @@ -1091,7 +1145,27 @@

    differenceAnalyzing

    g2 - green of the second color, from 0 to 255
    b2 - blue of the second color, from 0 to 255
    Returns:
    -
    the squared distance, in some Euclidean approximation, between colors 1 and 2
    +
    the squared Euclidean distance between colors 1 and 2
    +
    + + +
  • +
    +

    differenceHW

    +
    public double differenceHW(int color1, + int r2, + int g2, + int b2)
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25. If + you want to change this, just change differenceHW(int, int, int, int, int, int), which this calls.
    +
    +
    Parameters:
    +
    color1 - the first color, as an RGBA8888 int
    +
    r2 - red of the second color, from 0 to 255
    +
    g2 - green of the second color, from 0 to 255
    +
    b2 - blue of the second color, from 0 to 255
    +
    Returns:
    +
    the squared Euclidean distance between colors 1 and 2
  • @@ -1104,18 +1178,17 @@

    differenceMatch

    int r2, int g2, int b2)
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100. +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25. This can be changed in an extending (possibly anonymous) class to use a different squared metric. This is used when matching to an existing palette, as with exact(int[]).
    - This currently uses a metric called "RGB Stupid;" it is called that because initially it was an attempt to try - a metric that would be stupid if it worked. It seems to work quite well here, so I guess I'm with stupid. The - difference between colors used by exact() is not the same as the difference used by analyze(), just because they - seem to need precision in different ways. Both methods treat low values for RGB channels as very similar to other - low values, and the same for high values compared to high values. Mid-range values tend to be considered very - different from similar but non-identical mid-range values. In the differenceMatch() methods, red, green, and blue - are all multiplied by different constants based on the eye's sensitivity to that wavelength. In the - differenceAnalyzing() methods, red, green, and blue are treated identically.
    + This uses Euclidean distance between the RGB colors in the 256-edge-length color cube. This does absolutely + nothing fancy with the colors, but this approach does well often. The same code is used by + differenceMatch(int, int, int, int, int, int), + differenceAnalyzing(int, int, int, int, int, int), and + differenceHW(int, int, int, int, int, int), but classes can (potentially anonymously) subclass + PaletteReducer to change one, some, or all of these methods. The other difference methods call the 6-argument + overloads, so the override only needs to affect one method.
    Parameters:
    r1 - red of the first color, from 0 to 255
    @@ -1125,7 +1198,7 @@

    differenceMatch

    g2 - green of the second color, from 0 to 255
    b2 - blue of the second color, from 0 to 255
    Returns:
    -
    the squared distance, in some Euclidean approximation, between colors 1 and 2
    +
    the squared Euclidean distance between colors 1 and 2
    @@ -1138,18 +1211,17 @@

    differenceAnalyzing

    int r2, int g2, int b2)
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100. +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25. This can be changed in an extending (possibly anonymous) class to use a different squared metric. This is used when analyzing an image, as with analyze(Pixmap).
    - This currently uses a metric called "RGB Stupid;" it is called that because initially it was an attempt to try - a metric that would be stupid if it worked. It seems to work quite well here, so I guess I'm with stupid. The - difference between colors used by exact() is not the same as the difference used by analyze(), just because they - seem to need precision in different ways. Both methods treat low values for RGB channels as very similar to other - low values, and the same for high values compared to high values. Mid-range values tend to be considered very - different from similar but non-identical mid-range values. In the differenceMatch() methods, red, green, and blue - are all multiplied by different constants based on the eye's sensitivity to that wavelength. In the - differenceAnalyzing() methods, red, green, and blue are treated identically.
    + This uses Euclidean distance between the RGB colors in the 256-edge-length color cube. This does absolutely + nothing fancy with the colors, but this approach does well often. The same code is used by + differenceMatch(int, int, int, int, int, int), + differenceAnalyzing(int, int, int, int, int, int), and + differenceHW(int, int, int, int, int, int), but classes can (potentially anonymously) subclass + PaletteReducer to change one, some, or all of these methods. The other difference methods call the 6-argument + overloads, so the override only needs to affect one method.
    Parameters:
    r1 - red of the first color, from 0 to 255
    @@ -1159,7 +1231,40 @@

    differenceAnalyzing

    g2 - green of the second color, from 0 to 255
    b2 - blue of the second color, from 0 to 255
    Returns:
    -
    the squared distance, in some Euclidean approximation, between colors 1 and 2
    +
    the squared Euclidean distance between colors 1 and 2
    +
    + + +
  • +
    +

    differenceHW

    +
    public double differenceHW(int r1, + int g1, + int b1, + int r2, + int g2, + int b2)
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25. + This can be changed in an extending (possibly anonymous) class to use a different squared metric. This is used + when analyzing an image with analyzeHueWise(Pixmap, double, int) . +
    + This uses Euclidean distance between the RGB colors in the 256-edge-length color cube. This does absolutely + nothing fancy with the colors, but this approach does well often. The same code is used by + differenceMatch(int, int, int, int, int, int), + differenceAnalyzing(int, int, int, int, int, int), and + differenceHW(int, int, int, int, int, int), but classes can (potentially anonymously) subclass + PaletteReducer to change one, some, or all of these methods. The other difference methods call the 6-argument + overloads, so the override only needs to affect one method.
    +
    +
    Parameters:
    +
    r1 - red of the first color, from 0 to 255
    +
    g1 - green of the first color, from 0 to 255
    +
    b1 - blue of the first color, from 0 to 255
    +
    r2 - red of the second color, from 0 to 255
    +
    g2 - green of the second color, from 0 to 255
    +
    b2 - blue of the second color, from 0 to 255
    +
    Returns:
    +
    the squared Euclidean distance, between colors 1 and 2
  • @@ -1281,6 +1386,47 @@

    analyze

  • +
    +

    sort

    +
    public static void sort(int[] items, + com.github.tommyettinger.anim8.PaletteReducer.IntComparator c)
    +
    Sorts all of items by simply calling sort(int[], int, int, IntComparator), + setting from and to so the whole array is sorted.
    +
    +
    Parameters:
    +
    items - the int array to be sorted
    +
    c - a IntComparator to alter the sort order; if null, the natural order will be used
    +
    +
    +
  • +
  • +
    +

    sort

    +
    public static void sort(int[] items, + int from, + int to, + com.github.tommyettinger.anim8.PaletteReducer.IntComparator c)
    +
    Sorts the specified range of elements according to the order induced by the specified + comparator using mergesort. + +

    This sort is guaranteed to be stable: equal elements will not be reordered as a result + of the sort. The sorting algorithm is an in-place mergesort that is significantly slower than a + standard mergesort, as its running time is O(n (log n)2), + but it does not allocate additional memory; as a result, it can be + used as a generic sorting algorithm. + +

    If and only if c is null, this will delegate to Arrays.sort(int[], int, int), which + does not have the same guarantees regarding allocation.

    +
    +
    Parameters:
    +
    items - the int array to be sorted
    +
    from - the index of the first element (inclusive) to be sorted.
    +
    to - the index of the last element (exclusive) to be sorted.
    +
    c - a IntComparator to alter the sort order; if null, the natural order will be used
    +
    +
    +
  • +
  • analyze

    public void analyze(com.badlogic.gdx.graphics.Pixmap pixmap, @@ -1294,7 +1440,7 @@

    analyze

    takes a threshold value to determine whether it should permit a less-common color into the palette, and if the second color is different enough (as measured by differenceAnalyzing(int, int) ) by a value of at least threshold, it is allowed in the palette, otherwise it is kept out for being too similar to existing - colors. The threshold is usually between 100 and 1000, and 150 is a good default. Because this always uses the + colors. The threshold is usually between 50 and 500, and 100 is a good default. Because this always uses the maximum color limit, threshold should be lower than cases where the color limit is small. If the threshold is too high, then some colors that would be useful to smooth out subtle color changes won't get considered, and colors may change more abruptly. This doesn't return a value but instead stores the palette info in this object; a @@ -1303,7 +1449,7 @@

    analyze

    Parameters:
    pixmap - a Pixmap to analyze, making a palette which can be used by this to reduce(Pixmap) or by PNG8
    -
    threshold - a minimum color difference as produced by differenceAnalyzing(int, int) ; usually between 100 and 1000, 150 is a good default
    +
    threshold - a minimum color difference as produced by differenceAnalyzing(int, int) ; usually between 50 and 500, 100 is a good default
  • @@ -1322,7 +1468,7 @@

    analyze

    determine whether it should permit a less-common color into the palette, and if the second color is different enough (as measured by differenceAnalyzing(int, int) ) by a value of at least threshold, it is allowed in the palette, otherwise it is kept out for being too similar to existing colors. The threshold is usually between - 100 and 1000, and 150 is a good default. If the threshold is too high, then some colors that would be useful to + 50 and 500, and 100 is a good default. If the threshold is too high, then some colors that would be useful to smooth out subtle color changes won't get considered, and colors may change more abruptly. This doesn't return a value but instead stores the palette info in this object; a PaletteReducer can be assigned to the PNG8.palette or AnimatedGif.palette fields, or can be used directly to reduce(Pixmap) a @@ -1330,7 +1476,43 @@

    analyze

    Parameters:
    pixmap - a Pixmap to analyze, making a palette which can be used by this to reduce(Pixmap) or by PNG8
    -
    threshold - a minimum color difference as produced by differenceAnalyzing(int, int); usually between 100 and 1000, 150 is a good default
    +
    threshold - a minimum color difference as produced by differenceAnalyzing(int, int); usually between 50 and 500, 100 is a good default
    +
    limit - the maximum number of colors to allow in the resulting palette; typically no more than 256
    +
    + + +
  • +
    +

    analyzeHueWise

    +
    public void analyzeHueWise(com.badlogic.gdx.graphics.Pixmap pixmap, + double threshold, + int limit)
    +
    Analyzes pixmap for color count and frequency, building a palette with at most limit colors. + If there are limit or fewer colors, this uses the exact colors (although with at most one transparent + color, and no alpha for other colors); this will always reserve a palette entry for transparent (even if the + image has no transparency) because it uses palette index 0 in its analysis step. Because calling + reduce(Pixmap) (or any of PNG8's write methods) will dither colors that aren't exact, and dithering + works better when the palette can choose colors that are sufficiently different, this takes a threshold value to + determine whether it should permit a less-common color into the palette, and if the second color is different + enough (as measured by differenceHW(int, int) ) by a value of at least threshold, it is allowed in + the palette, otherwise it is kept out for being too similar to existing colors. The threshold is usually between + 50 and 500, and 100 is a good default. If the threshold is too high, then some colors that would be useful to + smooth out subtle color changes won't get considered, and colors may change more abruptly. This doesn't return a + value but instead stores the palette info in this object; a PaletteReducer can be assigned to the + PNG8.palette or AnimatedGif.palette fields, or can be used directly to reduce(Pixmap) a + Pixmap. +
    + The algorithm here isn't incredibly fast, but is often better at preserving colors that are used often enough to + be important to an image, but not often enough to appear in a small palette produced by analyze(Pixmap). + It involves sorting about 10% of the pixels in the image by hue, dividing up those pixels into evenly-sized + ranges, then sorting those ranges individually by lightness and dividing those into sub-ranges. The sub-ranges + have their chroma channels averaged (these already have similar hue, so this mostly affects saturation), and + their lightness averaged but pushed towards more extreme values using + OtherMath.barronSpline(float, float, float). This last step works well with dithering.
    +
    +
    Parameters:
    +
    pixmap - a Pixmap to analyze, making a palette which can be used by this to reduce(Pixmap), by PNG8, or by AnimatedGif
    +
    threshold - a minimum color difference as produced by differenceAnalyzing(int, int); usually between 50 and 500, 100 is a good default
    limit - the maximum number of colors to allow in the resulting palette; typically no more than 256
    @@ -1350,7 +1532,7 @@

    analyzeFast

    determine whether it should permit a less-common color into the palette, and if the second color is different enough (as measured by differenceAnalyzing(int, int) ) by a value of at least threshold, it is allowed in the palette, otherwise it is kept out for being too similar to existing colors. The threshold is usually between - 100 and 1000, and 150 is a good default. If the threshold is too high, then some colors that would be useful to + 50 and 500, and 100 is a good default. If the threshold is too high, then some colors that would be useful to smooth out subtle color changes won't get considered, and colors may change more abruptly. This doesn't return a value but instead stores the palette info in this object; a PaletteReducer can be assigned to the PNG8.palette or AnimatedGif.palette fields, or can be used directly to reduce(Pixmap) a @@ -1362,7 +1544,7 @@

    analyzeFast

    Parameters:
    pixmap - a Pixmap to analyze, making a palette which can be used by this to reduce(Pixmap) or by PNG8
    -
    threshold - a minimum color difference as produced by differenceAnalyzing(int, int); usually between 100 and 1000, 150 is a good default
    +
    threshold - a minimum color difference as produced by differenceAnalyzing(int, int); usually between 50 and 500, 100 is a good default
    limit - the maximum number of colors to allow in the resulting palette; typically no more than 256
    @@ -1375,11 +1557,11 @@

    analyzeMC

  • -
    +

    blend

    public int blend(int rgba1, int rgba2, - double preference)
    + float preference)
  • @@ -1419,14 +1601,14 @@

    analyze

    sufficiently different, this takes a threshold value to determine whether it should permit a less-common color into the palette, and if the second color is different enough (as measured by differenceAnalyzing(int, int)) by a value of at least threshold, it is allowed in the palette, otherwise it is kept out for being too similar - to existing colors. The threshold is usually between 100 and 1000, and 150 is a good default. This doesn't return + to existing colors. The threshold is usually between 50 and 500, and 100 is a good default. This doesn't return a value but instead stores the palette info in this object; a PaletteReducer can be assigned to the PNG8.palette or AnimatedGif.palette fields, or can be used directly to reduce(Pixmap) a Pixmap.
  • Parameters:
    pixmaps - a Pixmap Array to analyze, making a palette which can be used by this to reduce(Pixmap), by AnimatedGif, or by PNG8
    -
    threshold - a minimum color difference as produced by differenceAnalyzing(int, int); usually between 100 and 1000, 150 is a good default
    +
    threshold - a minimum color difference as produced by differenceAnalyzing(int, int); usually between 50 and 500, 100 is a good default
    @@ -1445,14 +1627,14 @@

    analyze

    sufficiently different, this takes a threshold value to determine whether it should permit a less-common color into the palette, and if the second color is different enough (as measured by differenceAnalyzing(int, int)) by a value of at least threshold, it is allowed in the palette, otherwise it is kept out for being too similar - to existing colors. The threshold is usually between 100 and 1000, and 150 is a good default. This doesn't return + to existing colors. The threshold is usually between 50 and 500, and 100 is a good default. This doesn't return a value but instead stores the palette info in this object; a PaletteReducer can be assigned to the PNG8.palette or AnimatedGif.palette fields, or can be used directly to reduce(Pixmap) a Pixmap.
    Parameters:
    pixmaps - a Pixmap Array to analyze, making a palette which can be used by this to reduce(Pixmap), by AnimatedGif, or by PNG8
    -
    threshold - a minimum color difference as produced by differenceAnalyzing(int, int); usually between 100 and 1000, 150 is a good default
    +
    threshold - a minimum color difference as produced by differenceAnalyzing(int, int); usually between 50 and 500, 100 is a good default
    limit - the maximum number of colors to allow in the resulting palette; typically no more than 256
    @@ -1473,7 +1655,111 @@

    analyze

    sufficiently different, this takes a threshold value to determine whether it should permit a less-common color into the palette, and if the second color is different enough (as measured by differenceAnalyzing(int, int)) by a value of at least threshold, it is allowed in the palette, otherwise it is kept out for being too similar - to existing colors. The threshold is usually between 100 and 1000, and 150 is a good default. This doesn't return + to existing colors. The threshold is usually between 50 and 500, and 100 is a good default. This doesn't return + a value but instead stores the palette info in this object; a PaletteReducer can be assigned to the + PNG8.palette or AnimatedGif.palette fields, or can be used directly to + reduce(Pixmap) a Pixmap.
    +
    +
    Parameters:
    +
    pixmaps - a Pixmap array to analyze, making a palette which can be used by this to reduce(Pixmap), by AnimatedGif, or by PNG8
    +
    pixmapCount - the maximum number of Pixmap entries in pixmaps to use
    +
    threshold - a minimum color difference as produced by differenceAnalyzing(int, int); usually between 50 and 500, 100 is a good default
    +
    limit - the maximum number of colors to allow in the resulting palette; typically no more than 256
    +
    + + +
  • +
    +

    analyzeHueWise

    +
    public void analyzeHueWise(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> pixmaps)
    +
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), + building a palette with at most 256 colors. If there are 256 or less colors, this uses the + exact colors (although with at most one transparent color, and no alpha for other colors); if there are more than + 256 colors or any colors have 50% or less alpha, it will reserve a palette entry for transparent (even + if the image has no transparency). Because calling reduce(Pixmap) (or any of PNG8's write methods) will + dither colors that aren't exact, and dithering works better when the palette can choose colors that are + sufficiently different, this takes a threshold value to determine whether it should permit a less-common color + into the palette, and if the second color is different enough (as measured by + differenceHW(int, int, int, int)) by a + value of at least 150, it is allowed in the palette, otherwise it is kept out for being too similar to existing + colors. This doesn't return a value but instead stores the palette info in this object; a PaletteReducer can be + assigned to the PNG8.palette or AnimatedGif.palette fields, or can be used directly to + reduce(Pixmap) a Pixmap.
    +
    +
    Parameters:
    +
    pixmaps - a Pixmap Array to analyze, making a palette which can be used by this to reduce(Pixmap), by AnimatedGif, or by PNG8
    +
    +
    +
  • +
  • +
    +

    analyzeHueWise

    +
    public void analyzeHueWise(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> pixmaps, + double threshold)
    +
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), + building a palette with at most 256 colors. If there are 256 or less colors, this uses the + exact colors (although with at most one transparent color, and no alpha for other colors); if there are more than + 256 colors or any colors have 50% or less alpha, it will reserve a palette entry for transparent (even + if the image has no transparency). Because calling reduce(Pixmap) (or any of PNG8's write methods) will + dither colors that aren't exact, and dithering works better when the palette can choose colors that are + sufficiently different, this takes a threshold value to determine whether it should permit a less-common color + into the palette, and if the second color is different enough (as measured by differenceHW(int, int)) by a + value of at least threshold, it is allowed in the palette, otherwise it is kept out for being too similar + to existing colors. The threshold is usually between 50 and 500, and 100 is a good default. This doesn't return + a value but instead stores the palette info in this object; a PaletteReducer can be assigned to the + PNG8.palette or AnimatedGif.palette fields, or can be used directly to + reduce(Pixmap) a Pixmap.
    +
    +
    Parameters:
    +
    pixmaps - a Pixmap Array to analyze, making a palette which can be used by this to reduce(Pixmap), by AnimatedGif, or by PNG8
    +
    threshold - a minimum color difference as produced by differenceHW(int, int); usually between 50 and 500, 100 is a good default
    +
    +
    +
  • +
  • +
    +

    analyzeHueWise

    +
    public void analyzeHueWise(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> pixmaps, + double threshold, + int limit)
    +
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), + building a palette with at most limit colors. If there are limit or less colors, this uses the + exact colors (although with at most one transparent color, and no alpha for other colors); if there are more than + limit colors or any colors have 50% or less alpha, it will reserve a palette entry for transparent (even + if the image has no transparency). Because calling reduce(Pixmap) (or any of PNG8's write methods) will + dither colors that aren't exact, and dithering works better when the palette can choose colors that are + sufficiently different, this takes a threshold value to determine whether it should permit a less-common color + into the palette, and if the second color is different enough (as measured by differenceHW(int, int)) by a + value of at least threshold, it is allowed in the palette, otherwise it is kept out for being too similar + to existing colors. The threshold is usually between 50 and 500, and 100 is a good default. This doesn't return + a value but instead stores the palette info in this object; a PaletteReducer can be assigned to the + PNG8.palette or AnimatedGif.palette fields, or can be used directly to + reduce(Pixmap) a Pixmap.
    +
    +
    Parameters:
    +
    pixmaps - a Pixmap Array to analyze, making a palette which can be used by this to reduce(Pixmap), by AnimatedGif, or by PNG8
    +
    threshold - a minimum color difference as produced by differenceHW(int, int); usually between 50 and 500, 100 is a good default
    +
    limit - the maximum number of colors to allow in the resulting palette; typically no more than 256
    +
    +
    +
  • +
  • +
    +

    analyzeHueWise

    +
    public void analyzeHueWise(com.badlogic.gdx.graphics.Pixmap[] pixmaps, + int pixmapCount, + double threshold, + int limit)
    +
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), + building a palette with at most limit colors. If there are limit or less colors, this uses the + exact colors (although with at most one transparent color, and no alpha for other colors); if there are more than + limit colors or any colors have 50% or less alpha, it will reserve a palette entry for transparent (even + if the image has no transparency). Because calling reduce(Pixmap) (or any of PNG8's write methods) will + dither colors that aren't exact, and dithering works better when the palette can choose colors that are + sufficiently different, this takes a threshold value to determine whether it should permit a less-common color + into the palette, and if the second color is different enough (as measured by differenceHW(int, int)) by a + value of at least threshold, it is allowed in the palette, otherwise it is kept out for being too similar + to existing colors. The threshold is usually between 50 and 500, and 100 is a good default. This doesn't return a value but instead stores the palette info in this object; a PaletteReducer can be assigned to the PNG8.palette or AnimatedGif.palette fields, or can be used directly to reduce(Pixmap) a Pixmap.
    @@ -1481,7 +1767,7 @@

    analyze

    Parameters:
    pixmaps - a Pixmap array to analyze, making a palette which can be used by this to reduce(Pixmap), by AnimatedGif, or by PNG8
    pixmapCount - the maximum number of Pixmap entries in pixmaps to use
    -
    threshold - a minimum color difference as produced by differenceAnalyzing(int, int); usually between 100 and 1000, 150 is a good default
    +
    threshold - a minimum color difference as produced by differenceHW(int, int); usually between 50 and 500, 100 is a good default
    limit - the maximum number of colors to allow in the resulting palette; typically no more than 256
    @@ -1870,7 +2156,7 @@

    reduceInPlace

    alterColorsLightness

    public PaletteReducer alterColorsLightness(com.badlogic.gdx.math.Interpolation lightness)
    -
    Edits this PaletteReducer by changing each used color in the IPT color space with an Interpolation. +
    Edits this PaletteReducer by changing each used color in the Oklab color space with an Interpolation. This allows adjusting lightness, such as for gamma correction. You could use Interpolation.pow2InInverse to use the square root of a color's lightness instead of its actual lightness, or Interpolation.pow2In to square the lightness instead.
    @@ -1883,31 +2169,6 @@

    alterColorsLightness

  • -
    -

    alterColorsIPT

    -
    public PaletteReducer alterColorsIPT(com.badlogic.gdx.math.Interpolation lightness, - com.badlogic.gdx.math.Interpolation greenToRed, - com.badlogic.gdx.math.Interpolation blueToYellow)
    -
    Edits this PaletteReducer by changing each used color in the IPT color space with an Interpolation. - This allows adjusting lightness, such as for gamma correction, but also individually emphasizing or - de-emphasizing different aspects of the chroma. You could use Interpolation.pow2InInverse to use the - square root of a color's lightness instead of its actual lightness, or Interpolation.pow2In to square the - lightness instead. You could make colors more saturated by passing Interpolation.circle to greenToRed and - blueToYellow, or get a less-extreme version by using Interpolation.smooth. To desaturate colors is a - different task; you can create a OtherMath.BiasGain Interpolation with 0.5 turning and maybe 0.25 to 0.75 shape to - produce different strengths of desaturation. Using a shape of 1.5 to 4 with BiasGain is another way to saturate - the colors.
    -
    -
    Parameters:
    -
    lightness - an Interpolation that will affect the lightness of each color
    -
    greenToRed - an Interpolation that will make colors more green if it evaluates below 0.5 or more red otherwise
    -
    blueToYellow - an Interpolation that will make colors more blue if it evaluates below 0.5 or more yellow otherwise
    -
    Returns:
    -
    this PaletteReducer, for chaining
    -
    -
    -
  • -
  • alterColorsOklab

    public PaletteReducer alterColorsOklab(com.badlogic.gdx.math.Interpolation lightness, diff --git a/docs/apidocs/com/github/tommyettinger/anim8/package-summary.html b/docs/apidocs/com/github/tommyettinger/anim8/package-summary.html index 4138ccf6..07bec666 100644 --- a/docs/apidocs/com/github/tommyettinger/anim8/package-summary.html +++ b/docs/apidocs/com/github/tommyettinger/anim8/package-summary.html @@ -2,7 +2,7 @@ -com.github.tommyettinger.anim8 (anim8-gdx 0.3.6 API) +com.github.tommyettinger.anim8 (anim8-gdx 0.3.7 API) diff --git a/docs/apidocs/com/github/tommyettinger/anim8/package-tree.html b/docs/apidocs/com/github/tommyettinger/anim8/package-tree.html index 1ffbf842..b2acc7e9 100644 --- a/docs/apidocs/com/github/tommyettinger/anim8/package-tree.html +++ b/docs/apidocs/com/github/tommyettinger/anim8/package-tree.html @@ -2,7 +2,7 @@ -com.github.tommyettinger.anim8 Class Hierarchy (anim8-gdx 0.3.6 API) +com.github.tommyettinger.anim8 Class Hierarchy (anim8-gdx 0.3.7 API) diff --git a/docs/apidocs/help-doc.html b/docs/apidocs/help-doc.html index 9529d31e..1427460c 100644 --- a/docs/apidocs/help-doc.html +++ b/docs/apidocs/help-doc.html @@ -2,7 +2,7 @@ -API Help (anim8-gdx 0.3.6 API) +API Help (anim8-gdx 0.3.7 API) diff --git a/docs/apidocs/index-all.html b/docs/apidocs/index-all.html index 718f5449..283ef48a 100644 --- a/docs/apidocs/index-all.html +++ b/docs/apidocs/index-all.html @@ -2,7 +2,7 @@ -Index (anim8-gdx 0.3.6 API) +Index (anim8-gdx 0.3.7 API) @@ -55,13 +55,9 @@

    A

    Adds next GIF frame.
    -
    alterColorsIPT(Interpolation, Interpolation, Interpolation) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    -
    -
    Edits this PaletteReducer by changing each used color in the IPT color space with an Interpolation.
    -
    alterColorsLightness(Interpolation) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    -
    Edits this PaletteReducer by changing each used color in the IPT color space with an Interpolation.
    +
    Edits this PaletteReducer by changing each used color in the Oklab color space with an Interpolation.
    alterColorsOklab(Interpolation, Interpolation, Interpolation) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    @@ -105,6 +101,30 @@

    A

    Analyzes pixmap for color count and frequency, building a palette with at most limit colors.
    +
    analyzeHueWise(Pixmap[], int, double, int) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    +
    +
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), + building a palette with at most limit colors.
    +
    +
    analyzeHueWise(Pixmap, double, int) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    +
    +
    Analyzes pixmap for color count and frequency, building a palette with at most limit colors.
    +
    +
    analyzeHueWise(Array<Pixmap>) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    +
    +
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), + building a palette with at most 256 colors.
    +
    +
    analyzeHueWise(Array<Pixmap>, double) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    +
    +
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), + building a palette with at most 256 colors.
    +
    +
    analyzeHueWise(Array<Pixmap>, double, int) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    +
    +
    Analyzes all of the Pixmap items in pixmaps for color count and frequency (as if they are one image), + building a palette with at most limit colors.
    +
    analyzeMC(Pixmap, int) - Method in class com.github.tommyettinger.anim8.PaletteReducer
     
    analyzePixels() - Method in class com.github.tommyettinger.anim8.AnimatedGif
    @@ -135,6 +155,11 @@

    A

    apply(float) - Method in class com.github.tommyettinger.anim8.OtherMath.BiasGain
     
    +
    atan2(float, float) - Static method in class com.github.tommyettinger.anim8.OtherMath
    +
    +
    Close approximation of the frequently-used trigonometric method atan2, with higher precision than libGDX's atan2 + approximation.
    +

    B

    @@ -142,9 +167,16 @@

    B

    A generalization on bias and gain functions that can represent both; this version is branch-less.
    +
    BiasGain() - Constructor for class com.github.tommyettinger.anim8.OtherMath.BiasGain
    +
    +
    Constructs a useful default BiasGain interpolation with a smoothstep-like shape.
    +
    BiasGain(float, float) - Constructor for class com.github.tommyettinger.anim8.OtherMath.BiasGain
    -
     
    -
    blend(int, int, double) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    +
    +
    Constructs a BiasGain interpolation with the specified (positive) shape and specified turning (between 0 and + 1 inclusive).
    +
    +
    blend(int, int, float) - Method in class com.github.tommyettinger.anim8.PaletteReducer
     
    BLUE_NOISE - Enum constant in enum class com.github.tommyettinger.anim8.Dithered.DitherAlgorithm
    @@ -215,27 +247,39 @@

    D

     
    differenceAnalyzing(int, int) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100.
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    differenceAnalyzing(int, int, int, int) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100.
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    differenceAnalyzing(int, int, int, int, int, int) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100.
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    +
    +
    differenceHW(int, int) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    +
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    +
    +
    differenceHW(int, int, int, int) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    +
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    +
    +
    differenceHW(int, int, int, int, int, int) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    +
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    differenceMatch(int, int) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100.
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    differenceMatch(int, int, int, int) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100.
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    differenceMatch(int, int, int, int, int, int) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    -
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 100.
    +
    Gets a squared estimate of how different two colors are, with noticeable differences typically at least 25.
    DIFFUSION - Enum constant in enum class com.github.tommyettinger.anim8.Dithered.DitherAlgorithm
    @@ -401,12 +445,6 @@

    I

     
    indexedPixels - Variable in class com.github.tommyettinger.anim8.AnimatedGif
     
    -
    IPT - Static variable in class com.github.tommyettinger.anim8.PaletteReducer
    -
    -
    Stores IPT components corresponding to RGB555 indices.
    -
    -
    iptToRgb(double, double, double, double) - Method in class com.github.tommyettinger.anim8.PaletteReducer
    -
     
    isFlipY() - Method in class com.github.tommyettinger.anim8.AnimatedGif
    Returns true if the output is flipped top-to-bottom from the inputs (the default); otherwise returns false.
    @@ -757,10 +795,20 @@

    S

    shrink(int) - Static method in class com.github.tommyettinger.anim8.PaletteReducer
    -
    Converts an RGBA8888 int color to the RGB555 format used by PaletteReducer.IPT to look up colors.
    +
    Converts an RGBA8888 int color to the RGB555 format used by PaletteReducer.OKLAB to look up colors.
    sizeSet - Variable in class com.github.tommyettinger.anim8.AnimatedGif
     
    +
    sort(int[], int, int, PaletteReducer.IntComparator) - Static method in class com.github.tommyettinger.anim8.PaletteReducer
    +
    +
    Sorts the specified range of elements according to the order induced by the specified + comparator using mergesort.
    +
    +
    sort(int[], PaletteReducer.IntComparator) - Static method in class com.github.tommyettinger.anim8.PaletteReducer
    +
    +
    Sorts all of items by simply calling PaletteReducer.sort(int[], int, int, IntComparator), + setting from and to so the whole array is sorted.
    +
    start(OutputStream) - Method in class com.github.tommyettinger.anim8.AnimatedGif
    Initiates GIF file creation on the given stream.
    diff --git a/docs/apidocs/index.html b/docs/apidocs/index.html index 62ef1bb6..51accbed 100644 --- a/docs/apidocs/index.html +++ b/docs/apidocs/index.html @@ -2,7 +2,7 @@ -anim8-gdx 0.3.6 API +anim8-gdx 0.3.7 API diff --git a/docs/apidocs/member-search-index.js b/docs/apidocs/member-search-index.js index de08cee9..43e3cee8 100644 --- a/docs/apidocs/member-search-index.js +++ b/docs/apidocs/member-search-index.js @@ -1 +1 @@ -memberSearchIndex = [{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"addFrame(Pixmap)","u":"addFrame(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"alterColorsIPT(Interpolation, Interpolation, Interpolation)","u":"alterColorsIPT(com.badlogic.gdx.math.Interpolation,com.badlogic.gdx.math.Interpolation,com.badlogic.gdx.math.Interpolation)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"alterColorsLightness(Interpolation)","u":"alterColorsLightness(com.badlogic.gdx.math.Interpolation)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"alterColorsOklab(Interpolation, Interpolation, Interpolation)","u":"alterColorsOklab(com.badlogic.gdx.math.Interpolation,com.badlogic.gdx.math.Interpolation,com.badlogic.gdx.math.Interpolation)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyze(Array)","u":"analyze(com.badlogic.gdx.utils.Array)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyze(Array, double)","u":"analyze(com.badlogic.gdx.utils.Array,double)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyze(Array, double, int)","u":"analyze(com.badlogic.gdx.utils.Array,double,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyze(Pixmap)","u":"analyze(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyze(Pixmap, double)","u":"analyze(com.badlogic.gdx.graphics.Pixmap,double)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyze(Pixmap, double, int)","u":"analyze(com.badlogic.gdx.graphics.Pixmap,double,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyze(Pixmap[], int, double, int)","u":"analyze(com.badlogic.gdx.graphics.Pixmap[],int,double,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyzeFast(Pixmap, double, int)","u":"analyzeFast(com.badlogic.gdx.graphics.Pixmap,double,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyzeMC(Pixmap, int)","u":"analyzeMC(com.badlogic.gdx.graphics.Pixmap,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"analyzePixels()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"AnimatedGif()","u":"%3Cinit%3E()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"AnimatedPNG()","u":"%3Cinit%3E()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"AnimatedPNG(int)","u":"%3Cinit%3E(int)"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath.BiasGain","l":"apply(float)"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath","l":"barronSpline(float, float, float)","u":"barronSpline(float,float,float)"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath.BiasGain","l":"BiasGain(float, float)","u":"%3Cinit%3E(float,float)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"blend(int, int, double)","u":"blend(int,int,double)"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"BLUE_NOISE"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath","l":"cbrt(float)"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath","l":"cbrtShape(float)"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath","l":"centralize(byte)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"centralizePalette(FileHandle, FileHandle)","u":"centralizePalette(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.files.FileHandle)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"centralizePalette(FileHandle, FileHandle, float)","u":"centralizePalette(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.files.FileHandle,float)"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"CHAOTIC_NOISE"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"closeStream"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"colorCount"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"colorDepth"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"colorTab"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"compareSwap(int[], int, int)","u":"compareSwap(int[],int,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"delay"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"differenceAnalyzing(int, int)","u":"differenceAnalyzing(int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"differenceAnalyzing(int, int, int, int)","u":"differenceAnalyzing(int,int,int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"differenceAnalyzing(int, int, int, int, int, int)","u":"differenceAnalyzing(int,int,int,int,int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"differenceMatch(int, int)","u":"differenceMatch(int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"differenceMatch(int, int, int, int)","u":"differenceMatch(int,int,int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"differenceMatch(int, int, int, int, int, int)","u":"differenceMatch(int,int,int,int,int,int)"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"DIFFUSION"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"dispose"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"dispose()"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"dispose()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"ditherAlgorithm"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"ditherAlgorithm"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"ditherStrength"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"ditherStrength"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"ditherStrength"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"editPalette(FileHandle, FileHandle, Interpolation)","u":"editPalette(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.math.Interpolation)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"exact(Color[])","u":"exact(com.badlogic.gdx.graphics.Color[])"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"exact(Color[], int)","u":"exact(com.badlogic.gdx.graphics.Color[],int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"exact(int[])"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"exact(int[], byte[])","u":"exact(int[],byte[])"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"exact(int[], int)","u":"exact(int[],int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"fastAnalysis"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"finish()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"firstFrame"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"flipY"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"forwardLight(float)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"getDitherAlgorithm()"},{"p":"com.github.tommyettinger.anim8","c":"Dithered","l":"getDitherAlgorithm()"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"getDitherAlgorithm()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"getDitherStrength()"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"getDitherStrength()"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"getDitherStrength()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"getImagePixels()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"getPalette()"},{"p":"com.github.tommyettinger.anim8","c":"Dithered","l":"getPalette()"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"getPalette()"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"GRADIENT_NOISE"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"HALTONIC"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"height"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"hueShift()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"image"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"indexedPixels"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"IPT"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"iptToRgb(double, double, double, double)","u":"iptToRgb(double,double,double,double)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"isFlipY()"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"loadPreloadFile(FileHandle)","u":"loadPreloadFile(com.badlogic.gdx.files.FileHandle)"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"NEUE"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"NONE"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"OKLAB"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"oklabToRGB(float, float, float, float)","u":"oklabToRGB(float,float,float,float)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"out"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"palette"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"palette"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"paletteArray"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"paletteMapping"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer()","u":"%3Cinit%3E()"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(Array)","u":"%3Cinit%3E(com.badlogic.gdx.utils.Array)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(Color[])","u":"%3Cinit%3E(com.badlogic.gdx.graphics.Color[])"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(Color[], int)","u":"%3Cinit%3E(com.badlogic.gdx.graphics.Color[],int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(int[])","u":"%3Cinit%3E(int[])"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(int[], byte[])","u":"%3Cinit%3E(int[],byte[])"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(int[], int)","u":"%3Cinit%3E(int[],int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(Pixmap)","u":"%3Cinit%3E(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(Pixmap, double)","u":"%3Cinit%3E(com.badlogic.gdx.graphics.Pixmap,double)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"palSize"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"PATTERN"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"PNG8()","u":"%3Cinit%3E()"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"PNG8(int)","u":"%3Cinit%3E(int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"populationBias"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath","l":"probit(double)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"randomColor(Random)","u":"randomColor(java.util.Random)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"randomColorIndex(Random)","u":"randomColorIndex(java.util.Random)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"readChunks(InputStream)","u":"readChunks(java.io.InputStream)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduce(Pixmap)","u":"reduce(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduce(Pixmap, Dithered.DitherAlgorithm)","u":"reduce(com.badlogic.gdx.graphics.Pixmap,com.github.tommyettinger.anim8.Dithered.DitherAlgorithm)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceBlueNoise(Pixmap)","u":"reduceBlueNoise(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceChaoticNoise(Pixmap)","u":"reduceChaoticNoise(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceFloat(float)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceFloydSteinberg(Pixmap)","u":"reduceFloydSteinberg(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceIndex(int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceInPlace(Color)","u":"reduceInPlace(com.badlogic.gdx.graphics.Color)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceJimenez(Pixmap)","u":"reduceJimenez(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceKnoll(Pixmap)","u":"reduceKnoll(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceKnollRoberts(Pixmap)","u":"reduceKnollRoberts(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceNeue(Pixmap)","u":"reduceNeue(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceScatter(Pixmap)","u":"reduceScatter(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceSierraLite(Pixmap)","u":"reduceSierraLite(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceSingle(int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceSolid(Pixmap)","u":"reduceSolid(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"repeat"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reverseLight(float)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reverseMap"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"SCATTER"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"seq"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"setCompression(int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"setCompression(int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"setDefaultPalette()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setDelay(int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setDispose(int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setDitherAlgorithm(Dithered.DitherAlgorithm)","u":"setDitherAlgorithm(com.github.tommyettinger.anim8.Dithered.DitherAlgorithm)"},{"p":"com.github.tommyettinger.anim8","c":"Dithered","l":"setDitherAlgorithm(Dithered.DitherAlgorithm)","u":"setDitherAlgorithm(com.github.tommyettinger.anim8.Dithered.DitherAlgorithm)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"setDitherAlgorithm(Dithered.DitherAlgorithm)","u":"setDitherAlgorithm(com.github.tommyettinger.anim8.Dithered.DitherAlgorithm)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setDitherStrength(float)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"setDitherStrength(float)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"setDitherStrength(float)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setFlipY(boolean)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"setFlipY(boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"setFlipY(boolean)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setFrameRate(float)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setPalette(PaletteReducer)","u":"setPalette(com.github.tommyettinger.anim8.PaletteReducer)"},{"p":"com.github.tommyettinger.anim8","c":"Dithered","l":"setPalette(PaletteReducer)","u":"setPalette(com.github.tommyettinger.anim8.PaletteReducer)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"setPalette(PaletteReducer)","u":"setPalette(com.github.tommyettinger.anim8.PaletteReducer)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setPosition(int, int)","u":"setPosition(int,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setRepeat(int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setSize(int, int)","u":"setSize(int,int)"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath.BiasGain","l":"shape"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"shrink(int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"sizeSet"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"start(OutputStream)","u":"start(java.io.OutputStream)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"started"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"stretch(int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"swapPalette(FileHandle, FileHandle, int[])","u":"swapPalette(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.files.FileHandle,int[])"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"transIndex"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"TRI_BLUE_NOISE"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"TRI_BLUE_NOISE_MULTIPLIERS"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath.BiasGain","l":"turning"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"usedEntry"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"values()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"width"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"write(FileHandle, Array)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"write(FileHandle, Array)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array)"},{"p":"com.github.tommyettinger.anim8","c":"AnimationWriter","l":"write(FileHandle, Array)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(FileHandle, Array)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"write(FileHandle, Array, int)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"write(FileHandle, Array, int)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimationWriter","l":"write(FileHandle, Array, int)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(FileHandle, Array, int)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(FileHandle, Array, int, boolean)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array,int,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(FileHandle, Pixmap)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(FileHandle, Pixmap, boolean)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(FileHandle, Pixmap, boolean, boolean)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap,boolean,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(FileHandle, Pixmap, boolean, boolean, int)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap,boolean,boolean,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"write(OutputStream, Array, int)","u":"write(java.io.OutputStream,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"write(OutputStream, Array, int)","u":"write(java.io.OutputStream,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimationWriter","l":"write(OutputStream, Array, int)","u":"write(java.io.OutputStream,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(OutputStream, Array, int)","u":"write(java.io.OutputStream,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(OutputStream, Array, int, boolean)","u":"write(java.io.OutputStream,com.badlogic.gdx.utils.Array,int,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(OutputStream, Pixmap)","u":"write(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(OutputStream, Pixmap, boolean)","u":"write(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(OutputStream, Pixmap, boolean, boolean)","u":"write(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap,boolean,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(OutputStream, Pixmap, boolean, boolean, int)","u":"write(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap,boolean,boolean,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writeChunks(OutputStream, OrderedMap)","u":"writeChunks(java.io.OutputStream,com.badlogic.gdx.utils.OrderedMap)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writeGraphicCtrlExt()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writeImageDesc()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writeLSD()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writeNetscapeExt()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writePalette()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writePixels()"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePrecisely(FileHandle, Pixmap, boolean)","u":"writePrecisely(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePrecisely(FileHandle, Pixmap, boolean, int)","u":"writePrecisely(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap,boolean,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePrecisely(FileHandle, Pixmap, int[], boolean, int)","u":"writePrecisely(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap,int[],boolean,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePrecisely(OutputStream, Pixmap, boolean)","u":"writePrecisely(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePrecisely(OutputStream, Pixmap, boolean, int)","u":"writePrecisely(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap,boolean,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePrecisely(OutputStream, Pixmap, int[], boolean, int)","u":"writePrecisely(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap,int[],boolean,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePreciseSection(FileHandle, Pixmap, int[], int, int, int, int)","u":"writePreciseSection(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap,int[],int,int,int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePreciseSection(OutputStream, Pixmap, int[], int, int, int, int)","u":"writePreciseSection(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap,int[],int,int,int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"writePreloadFile(FileHandle)","u":"writePreloadFile(com.badlogic.gdx.files.FileHandle)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writeShort(int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writeString(String)","u":"writeString(java.lang.String)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"x"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"y"}];updateSearchResults(); \ No newline at end of file +memberSearchIndex = [{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"addFrame(Pixmap)","u":"addFrame(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"alterColorsLightness(Interpolation)","u":"alterColorsLightness(com.badlogic.gdx.math.Interpolation)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"alterColorsOklab(Interpolation, Interpolation, Interpolation)","u":"alterColorsOklab(com.badlogic.gdx.math.Interpolation,com.badlogic.gdx.math.Interpolation,com.badlogic.gdx.math.Interpolation)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyze(Array)","u":"analyze(com.badlogic.gdx.utils.Array)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyze(Array, double)","u":"analyze(com.badlogic.gdx.utils.Array,double)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyze(Array, double, int)","u":"analyze(com.badlogic.gdx.utils.Array,double,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyze(Pixmap)","u":"analyze(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyze(Pixmap, double)","u":"analyze(com.badlogic.gdx.graphics.Pixmap,double)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyze(Pixmap, double, int)","u":"analyze(com.badlogic.gdx.graphics.Pixmap,double,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyze(Pixmap[], int, double, int)","u":"analyze(com.badlogic.gdx.graphics.Pixmap[],int,double,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyzeFast(Pixmap, double, int)","u":"analyzeFast(com.badlogic.gdx.graphics.Pixmap,double,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyzeHueWise(Array)","u":"analyzeHueWise(com.badlogic.gdx.utils.Array)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyzeHueWise(Array, double)","u":"analyzeHueWise(com.badlogic.gdx.utils.Array,double)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyzeHueWise(Array, double, int)","u":"analyzeHueWise(com.badlogic.gdx.utils.Array,double,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyzeHueWise(Pixmap, double, int)","u":"analyzeHueWise(com.badlogic.gdx.graphics.Pixmap,double,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyzeHueWise(Pixmap[], int, double, int)","u":"analyzeHueWise(com.badlogic.gdx.graphics.Pixmap[],int,double,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"analyzeMC(Pixmap, int)","u":"analyzeMC(com.badlogic.gdx.graphics.Pixmap,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"analyzePixels()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"AnimatedGif()","u":"%3Cinit%3E()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"AnimatedPNG()","u":"%3Cinit%3E()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"AnimatedPNG(int)","u":"%3Cinit%3E(int)"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath.BiasGain","l":"apply(float)"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath","l":"atan2(float, float)","u":"atan2(float,float)"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath","l":"barronSpline(float, float, float)","u":"barronSpline(float,float,float)"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath.BiasGain","l":"BiasGain()","u":"%3Cinit%3E()"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath.BiasGain","l":"BiasGain(float, float)","u":"%3Cinit%3E(float,float)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"blend(int, int, float)","u":"blend(int,int,float)"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"BLUE_NOISE"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath","l":"cbrt(float)"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath","l":"cbrtShape(float)"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath","l":"centralize(byte)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"centralizePalette(FileHandle, FileHandle)","u":"centralizePalette(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.files.FileHandle)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"centralizePalette(FileHandle, FileHandle, float)","u":"centralizePalette(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.files.FileHandle,float)"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"CHAOTIC_NOISE"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"closeStream"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"colorCount"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"colorDepth"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"colorTab"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"compareSwap(int[], int, int)","u":"compareSwap(int[],int,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"delay"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"differenceAnalyzing(int, int)","u":"differenceAnalyzing(int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"differenceAnalyzing(int, int, int, int)","u":"differenceAnalyzing(int,int,int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"differenceAnalyzing(int, int, int, int, int, int)","u":"differenceAnalyzing(int,int,int,int,int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"differenceHW(int, int)","u":"differenceHW(int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"differenceHW(int, int, int, int)","u":"differenceHW(int,int,int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"differenceHW(int, int, int, int, int, int)","u":"differenceHW(int,int,int,int,int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"differenceMatch(int, int)","u":"differenceMatch(int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"differenceMatch(int, int, int, int)","u":"differenceMatch(int,int,int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"differenceMatch(int, int, int, int, int, int)","u":"differenceMatch(int,int,int,int,int,int)"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"DIFFUSION"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"dispose"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"dispose()"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"dispose()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"ditherAlgorithm"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"ditherAlgorithm"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"ditherStrength"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"ditherStrength"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"ditherStrength"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"editPalette(FileHandle, FileHandle, Interpolation)","u":"editPalette(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.math.Interpolation)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"exact(Color[])","u":"exact(com.badlogic.gdx.graphics.Color[])"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"exact(Color[], int)","u":"exact(com.badlogic.gdx.graphics.Color[],int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"exact(int[])"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"exact(int[], byte[])","u":"exact(int[],byte[])"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"exact(int[], int)","u":"exact(int[],int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"fastAnalysis"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"finish()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"firstFrame"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"flipY"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"forwardLight(float)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"getDitherAlgorithm()"},{"p":"com.github.tommyettinger.anim8","c":"Dithered","l":"getDitherAlgorithm()"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"getDitherAlgorithm()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"getDitherStrength()"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"getDitherStrength()"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"getDitherStrength()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"getImagePixels()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"getPalette()"},{"p":"com.github.tommyettinger.anim8","c":"Dithered","l":"getPalette()"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"getPalette()"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"GRADIENT_NOISE"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"HALTONIC"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"height"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"hueShift()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"image"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"indexedPixels"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"isFlipY()"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"loadPreloadFile(FileHandle)","u":"loadPreloadFile(com.badlogic.gdx.files.FileHandle)"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"NEUE"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"NONE"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"OKLAB"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"oklabToRGB(float, float, float, float)","u":"oklabToRGB(float,float,float,float)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"out"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"palette"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"palette"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"paletteArray"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"paletteMapping"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer()","u":"%3Cinit%3E()"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(Array)","u":"%3Cinit%3E(com.badlogic.gdx.utils.Array)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(Color[])","u":"%3Cinit%3E(com.badlogic.gdx.graphics.Color[])"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(Color[], int)","u":"%3Cinit%3E(com.badlogic.gdx.graphics.Color[],int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(int[])","u":"%3Cinit%3E(int[])"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(int[], byte[])","u":"%3Cinit%3E(int[],byte[])"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(int[], int)","u":"%3Cinit%3E(int[],int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(Pixmap)","u":"%3Cinit%3E(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"PaletteReducer(Pixmap, double)","u":"%3Cinit%3E(com.badlogic.gdx.graphics.Pixmap,double)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"palSize"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"PATTERN"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"PNG8()","u":"%3Cinit%3E()"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"PNG8(int)","u":"%3Cinit%3E(int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"populationBias"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath","l":"probit(double)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"randomColor(Random)","u":"randomColor(java.util.Random)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"randomColorIndex(Random)","u":"randomColorIndex(java.util.Random)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"readChunks(InputStream)","u":"readChunks(java.io.InputStream)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduce(Pixmap)","u":"reduce(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduce(Pixmap, Dithered.DitherAlgorithm)","u":"reduce(com.badlogic.gdx.graphics.Pixmap,com.github.tommyettinger.anim8.Dithered.DitherAlgorithm)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceBlueNoise(Pixmap)","u":"reduceBlueNoise(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceChaoticNoise(Pixmap)","u":"reduceChaoticNoise(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceFloat(float)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceFloydSteinberg(Pixmap)","u":"reduceFloydSteinberg(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceIndex(int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceInPlace(Color)","u":"reduceInPlace(com.badlogic.gdx.graphics.Color)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceJimenez(Pixmap)","u":"reduceJimenez(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceKnoll(Pixmap)","u":"reduceKnoll(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceKnollRoberts(Pixmap)","u":"reduceKnollRoberts(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceNeue(Pixmap)","u":"reduceNeue(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceScatter(Pixmap)","u":"reduceScatter(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceSierraLite(Pixmap)","u":"reduceSierraLite(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceSingle(int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reduceSolid(Pixmap)","u":"reduceSolid(com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"repeat"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reverseLight(float)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"reverseMap"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"SCATTER"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"seq"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"setCompression(int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"setCompression(int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"setDefaultPalette()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setDelay(int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setDispose(int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setDitherAlgorithm(Dithered.DitherAlgorithm)","u":"setDitherAlgorithm(com.github.tommyettinger.anim8.Dithered.DitherAlgorithm)"},{"p":"com.github.tommyettinger.anim8","c":"Dithered","l":"setDitherAlgorithm(Dithered.DitherAlgorithm)","u":"setDitherAlgorithm(com.github.tommyettinger.anim8.Dithered.DitherAlgorithm)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"setDitherAlgorithm(Dithered.DitherAlgorithm)","u":"setDitherAlgorithm(com.github.tommyettinger.anim8.Dithered.DitherAlgorithm)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setDitherStrength(float)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"setDitherStrength(float)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"setDitherStrength(float)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setFlipY(boolean)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"setFlipY(boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"setFlipY(boolean)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setFrameRate(float)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setPalette(PaletteReducer)","u":"setPalette(com.github.tommyettinger.anim8.PaletteReducer)"},{"p":"com.github.tommyettinger.anim8","c":"Dithered","l":"setPalette(PaletteReducer)","u":"setPalette(com.github.tommyettinger.anim8.PaletteReducer)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"setPalette(PaletteReducer)","u":"setPalette(com.github.tommyettinger.anim8.PaletteReducer)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setPosition(int, int)","u":"setPosition(int,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setRepeat(int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"setSize(int, int)","u":"setSize(int,int)"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath.BiasGain","l":"shape"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"shrink(int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"sizeSet"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"sort(int[], int, int, PaletteReducer.IntComparator)","u":"sort(int[],int,int,com.github.tommyettinger.anim8.PaletteReducer.IntComparator)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"sort(int[], PaletteReducer.IntComparator)","u":"sort(int[],com.github.tommyettinger.anim8.PaletteReducer.IntComparator)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"start(OutputStream)","u":"start(java.io.OutputStream)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"started"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"stretch(int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"swapPalette(FileHandle, FileHandle, int[])","u":"swapPalette(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.files.FileHandle,int[])"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"transIndex"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"TRI_BLUE_NOISE"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"TRI_BLUE_NOISE_MULTIPLIERS"},{"p":"com.github.tommyettinger.anim8","c":"OtherMath.BiasGain","l":"turning"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"usedEntry"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"com.github.tommyettinger.anim8","c":"Dithered.DitherAlgorithm","l":"values()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"width"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"write(FileHandle, Array)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"write(FileHandle, Array)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array)"},{"p":"com.github.tommyettinger.anim8","c":"AnimationWriter","l":"write(FileHandle, Array)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(FileHandle, Array)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"write(FileHandle, Array, int)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"write(FileHandle, Array, int)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimationWriter","l":"write(FileHandle, Array, int)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(FileHandle, Array, int)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(FileHandle, Array, int, boolean)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.utils.Array,int,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(FileHandle, Pixmap)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(FileHandle, Pixmap, boolean)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(FileHandle, Pixmap, boolean, boolean)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap,boolean,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(FileHandle, Pixmap, boolean, boolean, int)","u":"write(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap,boolean,boolean,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"write(OutputStream, Array, int)","u":"write(java.io.OutputStream,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedPNG","l":"write(OutputStream, Array, int)","u":"write(java.io.OutputStream,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimationWriter","l":"write(OutputStream, Array, int)","u":"write(java.io.OutputStream,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(OutputStream, Array, int)","u":"write(java.io.OutputStream,com.badlogic.gdx.utils.Array,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(OutputStream, Array, int, boolean)","u":"write(java.io.OutputStream,com.badlogic.gdx.utils.Array,int,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(OutputStream, Pixmap)","u":"write(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(OutputStream, Pixmap, boolean)","u":"write(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(OutputStream, Pixmap, boolean, boolean)","u":"write(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap,boolean,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"write(OutputStream, Pixmap, boolean, boolean, int)","u":"write(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap,boolean,boolean,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writeChunks(OutputStream, OrderedMap)","u":"writeChunks(java.io.OutputStream,com.badlogic.gdx.utils.OrderedMap)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writeGraphicCtrlExt()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writeImageDesc()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writeLSD()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writeNetscapeExt()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writePalette()"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writePixels()"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePrecisely(FileHandle, Pixmap, boolean)","u":"writePrecisely(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePrecisely(FileHandle, Pixmap, boolean, int)","u":"writePrecisely(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap,boolean,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePrecisely(FileHandle, Pixmap, int[], boolean, int)","u":"writePrecisely(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap,int[],boolean,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePrecisely(OutputStream, Pixmap, boolean)","u":"writePrecisely(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap,boolean)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePrecisely(OutputStream, Pixmap, boolean, int)","u":"writePrecisely(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap,boolean,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePrecisely(OutputStream, Pixmap, int[], boolean, int)","u":"writePrecisely(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap,int[],boolean,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePreciseSection(FileHandle, Pixmap, int[], int, int, int, int)","u":"writePreciseSection(com.badlogic.gdx.files.FileHandle,com.badlogic.gdx.graphics.Pixmap,int[],int,int,int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PNG8","l":"writePreciseSection(OutputStream, Pixmap, int[], int, int, int, int)","u":"writePreciseSection(java.io.OutputStream,com.badlogic.gdx.graphics.Pixmap,int[],int,int,int,int)"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"writePreloadFile(FileHandle)","u":"writePreloadFile(com.badlogic.gdx.files.FileHandle)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writeShort(int)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"writeString(String)","u":"writeString(java.lang.String)"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"x"},{"p":"com.github.tommyettinger.anim8","c":"AnimatedGif","l":"y"}];updateSearchResults(); \ No newline at end of file diff --git a/docs/apidocs/overview-tree.html b/docs/apidocs/overview-tree.html index 56aa9cb4..99da7a35 100644 --- a/docs/apidocs/overview-tree.html +++ b/docs/apidocs/overview-tree.html @@ -2,7 +2,7 @@ -Class Hierarchy (anim8-gdx 0.3.6 API) +Class Hierarchy (anim8-gdx 0.3.7 API) diff --git a/gradle.properties b/gradle.properties index bc25d536..9e2addc3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ org.gradle.configureondemand=false GROUP=com.github.tommyettinger POM_ARTIFACT_ID=anim8-gdx -VERSION_NAME=0.3.7-SNAPSHOT +VERSION_NAME=0.3.7 POM_NAME=anim8-gdx POM_DESCRIPTION=Support for writing animated GIF and PNG files, plus PNG8, to libGDX.