diff --git a/README.md b/README.md
index ea934620..4f747d27 100644
--- a/README.md
+++ b/README.md
@@ -48,7 +48,7 @@ A typical Gradle dependency on anim8 looks like this (in the core module's depen
dependencies {
//... other dependencies are here, like libGDX 1.9.11 or higher
// libGDX 1.11.0 is recommended currently, but versions as old as 1.9.11 work.
- api "com.github.tommyettinger:anim8-gdx:0.3.8"
+ api "com.github.tommyettinger:anim8-gdx:0.3.9"
}
```
@@ -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.8:sources"`. The PNG-related code isn't available on GWT because
+`implementation "com.github.tommyettinger:anim8-gdx:0.3.9: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
@@ -89,15 +89,18 @@ different API).
- This is Floyd-Steinberg error-diffusion dithering.
- It tends to look very good in still images, and very bad in animations.
- SCATTER and NEUE are mostly the same as this algorithm, but use blue noise to break up unpleasant patterns.
- - SCATTER or especially NEUE are usually preferred.
+ - SCATTER or especially NEUE are usually preferred over this, as error-diffusion dithers go.
- BLUE_NOISE
- Blue noise, if you haven't heard the term, refers to a kind of sequence of values where low-frequency patterns
don't appear at all, but mid- and high-frequency patterns are very common. 2D blue noise is common in graphics
code, often as a texture but sometimes as a sequence of points; it is used here because most vertebrate eyes
employ a blue-noise distribution for sensory cells, and this makes blue noise appear natural to the human eye.
- - This is probably a typical blue-noise dither; it uses a different blue noise texture for each channel, and one
- texture that is shared across all RGB channels.
- - BLUE_NOISE looks good for many animations because the dithered pixels don't move around between frames.
+ - This is mostly a typical blue-noise dither; it uses a different blue noise texture for each channel, but it also
+ uses a 8x8 Bayer matrix (the type used by PATTERN dither, just larger here) to adjust lightness.
+ - The combination of a Bayer matrix and blue noise disrupts both the spongy pattern of the blue noise and the
+ repetitive/linear artifacts of the matrix.
+ - BLUE_NOISE looks good for many animations because the dithered pixels don't move around between frames. This is
+ especially true for pixel art animations, where flat areas of one color should really stay that color.
- I should probably credit Alan Wolfe for writing so many invaluable articles about blue noise,
such as [this introduction](https://blog.demofox.org/2018/01/30/what-the-heck-is-blue-noise/).
- This also uses a triangular-mapped blue noise texture, which means most of its pixels are in the middle of the
@@ -106,17 +109,17 @@ different API).
- This may have some issues when the palette is very small; it may not dither strongly enough by default for small
palettes, which makes it look closer to NONE in those cases. It does fine with large palettes.
- This changed in 0.2.12, and handles smooth gradients better now. In version 0.3.5, it changed again to improve
- behavior on small palettes. It changed again in 0.3.8 to improve saturation's appearance.
+ behavior on small palettes. It changed again in 0.3.8 and 0.3.9 to improve saturation's appearance.
- CHAOTIC_NOISE
- Like BLUE_NOISE, but it will dither different frames differently, and looks much more dirty/splattered.
- - This is an okay algorithm here for animations, but NEUE is much better, followed by SCATTER or PATTERN.
+ - This is an okay algorithm here for animations, but BLUE_NOISE is much better, followed by NEUE or PATTERN.
- This may be somewhat more useful when using many colors than when using just a few.
- It's rather ugly with small palettes, and really not much better on large palettes.
- SCATTER
- A hybrid of DIFFUSION and BLUE_NOISE, this avoids some regular artifacts in Floyd-Steinberg by adjusting diffused
error with blue-noise values.
- This used to be the default and can still sometimes be the best here.
- - Unlike DIFFUSION, this is quite suitable for animations, but some fluid shapes look better with CHAOTIC_NOISE or
+ - Unlike DIFFUSION, this is somewhat suitable for animations, but fluid shapes look better with BLUE_NOISE or
GRADIENT_NOISE, and subtle gradients in still images are handled best by PATTERN and well by NEUE and BLUE_NOISE.
- You may want to use a lower dither strength with SCATTER if you encounter horizontal line artifacts; 0.75 or 0.5
should be low enough to eliminate them (not all palettes will experience these artifacts).
diff --git a/docs/apidocs/allclasses-index.html b/docs/apidocs/allclasses-index.html
index 1ca09ae9..75b72767 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.8 API)
+All Classes and Interfaces (anim8-gdx 0.3.9 API)
diff --git a/docs/apidocs/allpackages-index.html b/docs/apidocs/allpackages-index.html
index 0289dc66..587e9aef 100644
--- a/docs/apidocs/allpackages-index.html
+++ b/docs/apidocs/allpackages-index.html
@@ -2,7 +2,7 @@
-All Packages (anim8-gdx 0.3.8 API)
+All Packages (anim8-gdx 0.3.9 API)
diff --git a/docs/apidocs/com/github/tommyettinger/anim8/AnimatedGif.html b/docs/apidocs/com/github/tommyettinger/anim8/AnimatedGif.html
index 014259b1..882f27c6 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.8 API)
+AnimatedGif (anim8-gdx 0.3.9 API)
diff --git a/docs/apidocs/com/github/tommyettinger/anim8/AnimatedPNG.html b/docs/apidocs/com/github/tommyettinger/anim8/AnimatedPNG.html
index 0b5eac21..c0832c60 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.8 API)
+AnimatedPNG (anim8-gdx 0.3.9 API)
diff --git a/docs/apidocs/com/github/tommyettinger/anim8/AnimationWriter.html b/docs/apidocs/com/github/tommyettinger/anim8/AnimationWriter.html
index de1d0215..2889adf7 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.8 API)
+AnimationWriter (anim8-gdx 0.3.9 API)
diff --git a/docs/apidocs/com/github/tommyettinger/anim8/Dithered.DitherAlgorithm.html b/docs/apidocs/com/github/tommyettinger/anim8/Dithered.DitherAlgorithm.html
index 56bfc53c..c9f347b9 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.8 API)
+Dithered.DitherAlgorithm (anim8-gdx 0.3.9 API)
diff --git a/docs/apidocs/com/github/tommyettinger/anim8/Dithered.html b/docs/apidocs/com/github/tommyettinger/anim8/Dithered.html
index d00bce33..39e02591 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.8 API)
+Dithered (anim8-gdx 0.3.9 API)
diff --git a/docs/apidocs/com/github/tommyettinger/anim8/OtherMath.BiasGain.html b/docs/apidocs/com/github/tommyettinger/anim8/OtherMath.BiasGain.html
index bd5c7f70..cb275081 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.8 API)
+OtherMath.BiasGain (anim8-gdx 0.3.9 API)
diff --git a/docs/apidocs/com/github/tommyettinger/anim8/OtherMath.html b/docs/apidocs/com/github/tommyettinger/anim8/OtherMath.html
index 3fca91f0..625be907 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.8 API)
+OtherMath (anim8-gdx 0.3.9 API)
diff --git a/docs/apidocs/com/github/tommyettinger/anim8/PNG8.html b/docs/apidocs/com/github/tommyettinger/anim8/PNG8.html
index 3862585f..a54dbb8f 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.8 API)
+PNG8 (anim8-gdx 0.3.9 API)
@@ -667,7 +667,7 @@ write
colors in pixmap. When computePalette is true, if there are 256 or less colors and none are transparent, this
will use 256 colors in its palette exactly with no transparent entry, but if there are more than 256 colors or
any are transparent, then one color will be used for "fully transparent" and 255 opaque colors will be used. When
- computePalette is false, this uses the last palette this had computed, or the 256-color "Haltonic" palette if no
+ computePalette is false, this uses the last palette this had computed, or the 256-color "Aurora" palette if no
palette had been computed yet.
- Parameters:
diff --git a/docs/apidocs/com/github/tommyettinger/anim8/PaletteReducer.html b/docs/apidocs/com/github/tommyettinger/anim8/PaletteReducer.html
index dd8420f5..ac974964 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.8 API)
+PaletteReducer (anim8-gdx 0.3.9 API)
@@ -159,70 +159,75 @@ Field Summary
-int
-
+static final int[]
+
-
How many colors are in the palette here; this is at most 256, and typically includes one fully-transparent color.
+
DawnBringer's 256-color Aurora palette, modified slightly to fit one transparent color by removing one gray.
-protected float
-
+int
+
-
Determines how strongly to apply noise or other effects during dithering.
+
How many colors are in the palette here; this is at most 256, and typically includes one fully-transparent color.
-static final int[]
-
+protected float
+
+
Determines how strongly to apply noise or other effects during dithering.
+
+static final int[]
+
+
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 float[][]
-
-
+
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[]
-
-
-
A 4096-element byte array as a 64x64 grid of bytes.
-
+
com.badlogic.gdx.utils.IntIntMap
+
+
static final byte[]
-
+
A 4096-element byte array as a 64x64 grid of bytes.
static final byte[]
-
+
A 4096-element byte array as a 64x64 grid of bytes.
static final byte[]
-
+
A 4096-element byte array as a 64x64 grid of bytes.
-
static final float[]
-
+
static final byte[]
+
+
A 4096-element byte array as a 64x64 grid of bytes.
+
+
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
.
@@ -239,7 +244,7 @@
Constructor Summary
-
Constructs a default PaletteReducer that uses the "Haltonic" 255-color-plus-transparent palette.
+
Constructs a default PaletteReducer that uses the "Aurora" 255-color-plus-transparent palette.
@@ -582,131 +587,138 @@
Method Summary
com.badlogic.gdx.graphics.Pixmap
+
A blue-noise-based dither; does not diffuse error, and uses a tiling blue noise pattern (which can be accessed
+ with
TRI_BLUE_NOISE
, but shouldn't usually be modified) as well as a 8x8 threshold matrix (the kind
+ used by
reduceKnoll(Pixmap)
, but larger).
+
+
com.badlogic.gdx.graphics.Pixmap
+
+
-
com.badlogic.gdx.graphics.Pixmap
-
-
+
com.badlogic.gdx.graphics.Pixmap
+
+
A white-noise-based dither; uses the colors encountered so far during dithering as a sort of state for basic
pseudo-random number generation, while also using some blue noise from a tiling texture to offset clumping.
-
float
-
-
+
float
+
+
Looks up color
as if it was part of an image being color-reduced and finds the closest color to it in the
palette this holds.
-
com.badlogic.gdx.graphics.Pixmap
-
-
+
com.badlogic.gdx.graphics.Pixmap
+
+
Modifies the given Pixmap so it only uses colors present in this PaletteReducer, dithering when it can using the
commonly-used Floyd-Steinberg dithering.
-
byte
-
-
+
byte
+
+
Looks up color
as if it was part of an image being color-reduced and finds the closest color to it in the
palette this holds.
-
com.badlogic.gdx.graphics.Color
-
-
+
com.badlogic.gdx.graphics.Color
+
+
Modifies color
so its RGB values will match the closest color in this PaletteReducer's palette.
-
com.badlogic.gdx.graphics.Pixmap
-
-
+
com.badlogic.gdx.graphics.Pixmap
+
+
It's interleaved gradient noise, by Jorge Jimenez! It's very fast! It's an ordered dither!
It's not particularly high-quality when compared to other preprocessing dithers, but it is
one of the better dithers when used real-time in a shader.
-
com.badlogic.gdx.graphics.Pixmap
-
-
+
com.badlogic.gdx.graphics.Pixmap
+
+
Reduces a Pixmap to the palette this knows by using Thomas Knoll's pattern dither, which is out-of-patent since
late 2019.
-
com.badlogic.gdx.graphics.Pixmap
-
-
+
com.badlogic.gdx.graphics.Pixmap
+
+
Reduces a Pixmap to the palette this knows by using a skewed version of Thomas Knoll's pattern dither, which is
out-of-patent since late 2019, using the harmonious numbers rediscovered by Martin Roberts to handle the skew.
-
com.badlogic.gdx.graphics.Pixmap
-
reduceNeue(com.badlogic.gdx.graphics.Pixmap pixmap)
-
+
com.badlogic.gdx.graphics.Pixmap
+
reduceNeue(com.badlogic.gdx.graphics.Pixmap pixmap)
+
-
com.badlogic.gdx.graphics.Pixmap
-
-
+
com.badlogic.gdx.graphics.Pixmap
+
+
Modifies the given Pixmap so it only uses colors present in this PaletteReducer, using Floyd-Steinberg to dither
but modifying patterns slightly by introducing triangular-distributed blue noise.
-
com.badlogic.gdx.graphics.Pixmap
-
-
+
com.badlogic.gdx.graphics.Pixmap
+
+
Modifies the given Pixmap so it only uses colors present in this PaletteReducer, dithering when it can using
Sierra Lite dithering instead of the Floyd-Steinberg dithering that
reduce(Pixmap)
uses.
-
int
-
-
+
int
+
+
Looks up color
as if it was part of an image being color-reduced and finds the closest color to it in the
palette this holds.
-
com.badlogic.gdx.graphics.Pixmap
-
-
+
com.badlogic.gdx.graphics.Pixmap
+
+
Modifies the given Pixmap so it only uses colors present in this PaletteReducer, without dithering.
-
static float
-
-
+
static float
+
+
Changes the curve of the internally-used lightness when it is output to another format.
-
void
-
-
-
Resets the palette to the 256-color (including transparent) "Haltonic" palette.
-
void
-
+
+
Resets the palette to the 256-color (including transparent) "Aurora" palette.
+
+
void
+
+
Changes the "strength" of the dither effect applied during
reduce(Pixmap)
calls.
-
static int
-
-
+
static int
+
+
Converts an RGBA8888 int color to the RGB555 format used by
OKLAB
to look up colors.
-
static void
-
sort(int[] items,
+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,
+static void
+sort(int[] items,
com.github.tommyettinger.anim8.PaletteReducer.IntComparator c)
-
+
-
static int
-
-
+
static int
+
+
Converts an RGB555 int color to an approximation of the closest RGBA8888 color.
-
void
-
-
+
void
+
+
If this PaletteReducer has already calculated a palette, you can use this to save the slightly-slow-to-compute
palette mapping in a preload file for later runs.
@@ -728,6 +740,26 @@
Methods inherited from cl
Field Details
-
+
+
AURORA
+public static final int[] AURORA
+DawnBringer's 256-color Aurora palette, modified slightly to fit one transparent color by removing one gray.
+ Aurora is available in
this set of tools
+ for a pixel art editor, but it is usable for lots of high-color purposes.
+
+ These colors all have names, which can be seen
previewed here. The
+ linked image preview also shows a nearby lighter color and two darker colors on the same sphere as the main
+ color; the second-lightest color is what has the listed name. The names here are used by a few other libraries,
+ such as
colorful-gdx, but otherwise don't matter.
+
+ This replaced another palette, Haltonic, that wasn't hand-chosen and was much more "randomized."
+
+ While you can modify the individual items in this array, this is discouraged, because various constructors and
+ methods in this class use AURORA with a pre-made distance mapping of its colors. This mapping would become
+ incorrect if any colors in this array changed.
+
+
+-
HALTONIC
public static final int[] HALTONIC
@@ -737,11 +769,7 @@ HALTONIC
sequence provides one of the stronger guarantees that removing any sequential items (after the first 9, which are
preset grayscale colors) will produce a similarly-distributed palette. Typically, 64 items from this are enough
to make pixel art look good enough with dithering, and it continues to improve with more colors. It has exactly 8
- colors that are purely grayscale, all right at the start after transparent.
-
- While you can modify the individual items in this array, this is discouraged, because various constructors and
- methods in this class use HALTONIC with a pre-made distance mapping of its colors. This mapping would become
- incorrect if any colors in this array changed.
+ colors that are purely grayscale, all right at the start after transparent.
-
@@ -890,9 +918,9 @@
Constructor Details
PaletteReducer
public PaletteReducer()
-Constructs a default PaletteReducer that uses the "Haltonic" 255-color-plus-transparent palette.
+
Constructs a default PaletteReducer that uses the "Aurora" 255-color-plus-transparent palette.
Note that this uses a more-detailed and higher-quality metric than you would get by just specifying
- new PaletteReducer(PaletteReducer.HALTONIC)
; this metric would be too slow to calculate at
+ new PaletteReducer(PaletteReducer.AURORA)
; this metric would be too slow to calculate at
runtime, but as pre-calculated data it works very well.
@@ -997,7 +1025,7 @@
PaletteReducer
- Parameters:
pixmap
- a Pixmap to analyze in detail to produce a palette
-threshold
- the minimum difference between colors required to put them in the palette (default 150)
+threshold
- the minimum difference between colors required to put them in the palette (default 100)
@@ -1323,10 +1351,10 @@
differenceHW
setDefaultPalette
public void setDefaultPalette()
-Resets the palette to the 256-color (including transparent) "Haltonic" palette. PaletteReducer already
+
Resets the palette to the 256-color (including transparent) "Aurora" palette. PaletteReducer already
stores most of the calculated data needed to use this one palette. Note that this uses a more-detailed
and higher-quality metric than you would get by just specifying
- new PaletteReducer(PaletteReducer.HALTONIC)
; this metric would be too slow to calculate at
+ new PaletteReducer(PaletteReducer.AURORA)
; this metric would be too slow to calculate at
runtime, but as pre-calculated data it works very well.
@@ -1337,7 +1365,7 @@
exact
Builds the palette information this PNG8 stores from the RGBA8888 ints in rgbaPalette
, up to 256 colors.
Alpha is not preserved except for the first item in rgbaPalette, and only if it is 0
(fully transparent
black); otherwise all items are treated as opaque. If rgbaPalette is null, empty, or only has one color, then
- this defaults to the "Haltonic" palette with 256 well-distributed colors (including transparent).
+ this defaults to the "Aurora" palette with 256 well-distributed colors (including transparent).
- Parameters:
rgbaPalette
- an array of RGBA8888 ints; all will be used up to 256 items or the length of the array
@@ -1353,7 +1381,7 @@ exact
or limit
, whichever is less.
Alpha is not preserved except for the first item in rgbaPalette, and only if it is 0
(fully transparent
black); otherwise all items are treated as opaque. If rgbaPalette is null, empty, or only has one color, or if
- limit is less than 2, then this defaults to the "Haltonic" palette with 256 well-distributed colors (including
+ limit is less than 2, then this defaults to the "Aurora" palette with 256 well-distributed colors (including
transparent).
- Parameters:
@@ -1388,7 +1416,7 @@ exact
256 colors.
Alpha is not preserved except for the first item in colorPalette, and only if its r, g, b, and a values are all
0f (fully transparent black); otherwise all items are treated as opaque. If rgbaPalette is null, empty, or only
- has one color, then this defaults to the "Haltonic" palette with 256 well-distributed colors (including
+ has one color, then this defaults to the "Aurora" palette with 256 well-distributed colors (including
transparent).
- Parameters:
@@ -1405,7 +1433,7 @@ exact
256 colors or limit
, whichever is less.
Alpha is not preserved except for the first item in colorPalette, and only if its r, g, b, and a values are all
0f (fully transparent black); otherwise all items are treated as opaque. If rgbaPalette is null, empty, only has
- one color, or limit is less than 2, then this defaults to the "Haltonic" palette with 256 well-distributed
+ one color, or limit is less than 2, then this defaults to the "Aurora" palette with 256 well-distributed
colors (including transparent).
- Parameters:
@@ -1426,7 +1454,7 @@ analyze
aren't exact, and dithering works better when the palette can choose colors that are sufficiently different, this
uses 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
- 150, it is
+ 100, 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
field or can be used directly to reduce(Pixmap)
a Pixmap.
@@ -1628,7 +1656,7 @@ 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, 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
+ value of at least 100, 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.
@@ -1732,7 +1760,7 @@
analyzeHueWise
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
+ value of at least 100, 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.
@@ -1961,12 +1989,32 @@
reduceJimenez
reduceBlueNoise
public com.badlogic.gdx.graphics.Pixmap reduceBlueNoise(com.badlogic.gdx.graphics.Pixmap pixmap)
+A blue-noise-based dither; does not diffuse error, and uses a tiling blue noise pattern (which can be accessed
+ with
TRI_BLUE_NOISE
, but shouldn't usually be modified) as well as a 8x8 threshold matrix (the kind
+ used by
reduceKnoll(Pixmap)
, but larger). This has a tendency to look closer to a color
+ reduction with no dither (as with
reduceSolid(Pixmap)
than to one with too much dither. Because it is an
+ ordered dither, it avoids "swimming" patterns in animations with large flat sections of one color; these swimming
+ effects can appear in all the error-diffusion dithers here. If you can tolerate "spongy" artifacts appearing
+ (which look worse on small palettes), you may get very good handling of lightness by raising dither strength.
+
+- Parameters:
+pixmap
- will be modified in-place and returned
+- Returns:
+- pixmap, after modifications
+
+
+
+
-
+
+
reduceBlueNoiseSeparated
+public com.badlogic.gdx.graphics.Pixmap reduceBlueNoiseSeparated(com.badlogic.gdx.graphics.Pixmap pixmap)
A blue-noise-based dither; does not diffuse error, and uses 4 tiling blue noise patterns (which can be accessed
with
TRI_BLUE_NOISE
,
TRI_BLUE_NOISE_B
,
TRI_BLUE_NOISE_C
, and
TRI_BLUE_NOISE_D
, but shouldn't usually be modified). This has a tendency to look closer to a color
reduction with no dither (as with
reduceSolid(Pixmap)
than to one with too much dither. Because it is an
ordered dither, it avoids "swimming" patterns in animations with large flat sections of one color; these swimming
- effects can appear in all the error-diffusion dithers here.
+ effects can appear in all the error-diffusion dithers here. This is called "Separated" because each RGB channel
+ is affected by a separate blue noise pattern.
- Parameters:
pixmap
- will be modified in-place and returned
diff --git a/docs/apidocs/com/github/tommyettinger/anim8/package-summary.html b/docs/apidocs/com/github/tommyettinger/anim8/package-summary.html
index ce850d75..308f61ec 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.8 API)
+com.github.tommyettinger.anim8 (anim8-gdx 0.3.9 API)
diff --git a/docs/apidocs/com/github/tommyettinger/anim8/package-tree.html b/docs/apidocs/com/github/tommyettinger/anim8/package-tree.html
index db927371..cedaacda 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.8 API)
+com.github.tommyettinger.anim8 Class Hierarchy (anim8-gdx 0.3.9 API)
diff --git a/docs/apidocs/help-doc.html b/docs/apidocs/help-doc.html
index 4339dd4f..d01d5e93 100644
--- a/docs/apidocs/help-doc.html
+++ b/docs/apidocs/help-doc.html
@@ -2,7 +2,7 @@
-API Help (anim8-gdx 0.3.8 API)
+API Help (anim8-gdx 0.3.9 API)
diff --git a/docs/apidocs/index-all.html b/docs/apidocs/index-all.html
index 9ea03696..432d18d7 100644
--- a/docs/apidocs/index-all.html
+++ b/docs/apidocs/index-all.html
@@ -2,7 +2,7 @@
-Index (anim8-gdx 0.3.8 API)
+Index (anim8-gdx 0.3.9 API)
@@ -160,6 +160,10 @@ A
Close approximation of the frequently-used trigonometric method atan2, with higher precision than libGDX's atan2
approximation.
+- AURORA - Static variable in class com.github.tommyettinger.anim8.PaletteReducer
+-
+
DawnBringer's 256-color Aurora palette, modified slightly to fit one transparent color by removing one gray.
+
B
@@ -516,7 +520,7 @@ P
- PaletteReducer() - Constructor for class com.github.tommyettinger.anim8.PaletteReducer
-
-
Constructs a default PaletteReducer that uses the "Haltonic" 255-color-plus-transparent palette.
+Constructs a default PaletteReducer that uses the "Aurora" 255-color-plus-transparent palette.
- PaletteReducer(int[]) - Constructor for class com.github.tommyettinger.anim8.PaletteReducer
-
@@ -611,6 +615,12 @@
R
- reduceBlueNoise(Pixmap) - Method in class com.github.tommyettinger.anim8.PaletteReducer
-
+
+
+- reduceBlueNoiseSeparated(Pixmap) - Method in class com.github.tommyettinger.anim8.PaletteReducer
+-
@@ -708,7 +718,7 @@
S
- setDefaultPalette() - Method in class com.github.tommyettinger.anim8.PaletteReducer
-
-
Resets the palette to the 256-color (including transparent) "Haltonic" palette.
+Resets the palette to the 256-color (including transparent) "Aurora" palette.
- setDelay(int) - Method in class com.github.tommyettinger.anim8.AnimatedGif
-
diff --git a/docs/apidocs/index.html b/docs/apidocs/index.html
index a411907a..bc0d21fe 100644
--- a/docs/apidocs/index.html
+++ b/docs/apidocs/index.html
@@ -2,7 +2,7 @@
-anim8-gdx 0.3.8 API
+anim8-gdx 0.3.9 API
diff --git a/docs/apidocs/member-search-index.js b/docs/apidocs/member-search-index.js
index b5c1ce0d..77a3ba70 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":"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_B"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"TRI_BLUE_NOISE_C"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"TRI_BLUE_NOISE_D"},{"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":"PaletteReducer","l":"AURORA"},{"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":"reduceBlueNoiseSeparated(Pixmap)","u":"reduceBlueNoiseSeparated(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_B"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"TRI_BLUE_NOISE_C"},{"p":"com.github.tommyettinger.anim8","c":"PaletteReducer","l":"TRI_BLUE_NOISE_D"},{"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 a6269e30..59791412 100644
--- a/docs/apidocs/overview-tree.html
+++ b/docs/apidocs/overview-tree.html
@@ -2,7 +2,7 @@
-Class Hierarchy (anim8-gdx 0.3.8 API)
+Class Hierarchy (anim8-gdx 0.3.9 API)
diff --git a/gradle.properties b/gradle.properties
index 769ee365..0fb2ac46 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -7,7 +7,7 @@ RELEASE_SIGNING_ENABLED=true
GROUP=com.github.tommyettinger
POM_ARTIFACT_ID=anim8-gdx
-VERSION_NAME=0.3.9-SNAPSHOT
+VERSION_NAME=0.3.9
POM_NAME=anim8-gdx
POM_DESCRIPTION=Support for writing animated GIF and PNG files, plus PNG8, to libGDX.
diff --git a/src/main/java/com/github/tommyettinger/anim8/PaletteReducer.java b/src/main/java/com/github/tommyettinger/anim8/PaletteReducer.java
index 3dbfd3a9..b1eb89a6 100644
--- a/src/main/java/com/github/tommyettinger/anim8/PaletteReducer.java
+++ b/src/main/java/com/github/tommyettinger/anim8/PaletteReducer.java
@@ -107,7 +107,7 @@
public class PaletteReducer {
/**
* DawnBringer's 256-color Aurora palette, modified slightly to fit one transparent color by removing one gray.
- * Aurora is available in this set of tools
+ * Aurora is available in this set of tools
* for a pixel art editor, but it is usable for lots of high-color purposes.
*
* These colors all have names, which can be seen previewed here. The