General information

Name PalenqueAniGifMaker
Description A Java (Swing) application to create animated GIFs for demonstrating the solution process.
Installation There is no need for installation, you should just download the JAR file (PalenqueAniGifMaker.jar) from the latest release page.
Running Double-click on the downloaded PalenqueAniGifMaker.jar file, or (should it not start) please enter the following command: java -jar PalenqueAniGifMaker.jar
Note This program was created mainly for internal use (to generate the animated GIF files of this document), and might be (even) less polished or user-friendly than the other applications.

Features overview

With this software an animated GIF file can be generated to demonstrate a specific part of the transformational process, based on the parameters set on the upper panel (see below in detail). The parameters can be exported to a JSON file, and the application is also able to embed them directly inside the GIF file (encoded as a comment) for later retrieving. Before generating, the animation can be previewed, and also screenshots can be taken from each frame.

For creating the GIF file, a simplified and slightly extended version of an (integrated) third party encoder written by Kevin Weiner (FM Software) is used. The main modification was that the color quantization procedure had been removed, and a global color table with grayscale values is used (instead of local color tables for each frame), which change made the encoding process (much) faster, the quality of the GIF file better and its size a bit smaller (of course, the quantization procedure is a must for colorful GIF animations, but here it was fortunately not necessary).

Please note that the GIF file created by this program is not optimized, i.e. it contains each frame in its entirety, which might lead to a very large file at the end. It may be advisable to postprocess the file by a specialized GIF optimizer (like e.g. the free, open source and very effective Gifsicle), which can exploit the similarities between the consecutive frames and store only the differences, resulting in an (often dramatic) reduction of the file size, without any visible quality loss.

Function descriptions

Parameters: In the upper panel the parameters of the generation can be set:

Parameters

The parameters and their roles in the generating process:

Parameter Meaning
Width Width of the generated GIF
Height Height of the generated GIF
First step* Start point of the animation
Last step* End point of the animation
Hold in Time for holding the first frame
Hold out Time for holding the last frame
Fade in Length of the fading effect at the start
Fade out Length of the fading effect at the end
Speed Speed of the animation
FPS Frame per seconds
Translate X Offset of the grid center in horizontal direction
Translate Y Offset of the grid center in vertical direction
Phi Rotation around X axis
Theta Rotation around Y axis
Zooming The zoom level of the scene
Auto If on, the camera moves following a predefined path
Grid Turns grid on/off
Description An arbitrary description text for the animation
* This value is an internal one and different from the step numbers used in this document.

With the help of the buttons in the panel the parameters can be exported or imported (in JSON format), and they can also be reset to their default values.

Info: Information about the number of the frames and the length of the animation in seconds (and also the possible error messages appear here):

Info

First and last (complete) frame: It shows the first and last frame in the animation (together with the frame number in the upper right corner), which are not held or faded:

First and last frame

Destination file: The path of the destination file can be entered here (the button with the ellipsis can be used to select a file from list).

Destination file

Also the parameters for the GIF file can be changed here:

Parameter Meaning
Quality Not used currently and disabled
Repeat If checked, the GIF file will be looped forever
Embed parameters Whether the parameters should be embedded in the GIF file (as a comment)

Export ( Alt+E ): The parameters can be exported (in JSON format) to a file or to the clipboard.

Import ( Alt+I ): The parameters can be imported (in JSON format) from a file or from the clipboard.

Open GIF ( Alt+O ): With this function a GIF file can be opened, i.e. the parameters previously embedded in it can be retrieved. If there are multiple embedded parameter sets in the GIF file (e.g. if the GIF is a combination of other GIFs), then the file to open can be selected:

Multiple GIFs

If the selected file does not contain any embedded parameters, then an informational message appears:

No embedded parameters

The parameters are embedded as a standard GIF-comment in a Base64 encoded binary format prefixed with the string "PQAGM:". The comment can be read and (if desired) edited or removed in any general image viewer program.

State restore: If enabled, the program saves at close the current state to a file called state.pqg and reloads it at the next startup.

Preview ( Alt+P ): After invoking this function the preview window appears:

Preview dialog

The image in the window has the same size, as the final GIF animation, and also the FPS and the speed are simulated. The playback can be started or stopped with the play button, and any frame can be selected with the spinner or the slider. The disk button saves the current image to a file, and with the checkbox at the right the looping for the playback can be enabled or disabled. At the bottom part the parameters of the current frame are observable, the Fade and Hold (readonly) checkboxes show, whether the current frame is faded and/or held.

Generate ( Alt+G ): Generates the GIF and writes the data to the destination file. During the process a dialog window is shown with the current progress, and it also provides the possibility of canceling the generation:

Generate dialog

Close: Closes the program, and potentially saves the current state (if state restore is enabled).