Wrap up GIF export; support speed
Different speed settings in slideshow dialog affect the speed of the exported GIF.
This commit is contained in:
parent
63b5aa15d6
commit
c13c543cfe
3 changed files with 18 additions and 4 deletions
|
|
@ -8,7 +8,7 @@ http://www.tuxpaint.org/
|
||||||
|
|
||||||
$Id$
|
$Id$
|
||||||
|
|
||||||
2020.July.27 (0.9.25)
|
2020.July.29 (0.9.25)
|
||||||
* New Features
|
* New Features
|
||||||
------------
|
------------
|
||||||
* Export drawings:
|
* Export drawings:
|
||||||
|
|
@ -19,7 +19,6 @@ $Id$
|
||||||
* Depends on "libimagequant", from the "pngquant2" project:
|
* Depends on "libimagequant", from the "pngquant2" project:
|
||||||
https://github.com/ImageOptim/libimagequant
|
https://github.com/ImageOptim/libimagequant
|
||||||
(GPL v3 or later, for Free/Libre Open Source Software)
|
(GPL v3 or later, for Free/Libre Open Source Software)
|
||||||
* WORK IN PROGRESS -- Ignores speed
|
|
||||||
* Single image (PNG) export from the Open dialog.
|
* Single image (PNG) export from the Open dialog.
|
||||||
(Closes https://sourceforge.net/p/tuxpaint/feature-requests/192/)
|
(Closes https://sourceforge.net/p/tuxpaint/feature-requests/192/)
|
||||||
* Both utilize XDG user dirs settings, if available, to determine
|
* Both utilize XDG user dirs settings, if available, to determine
|
||||||
|
|
|
||||||
|
|
@ -246,6 +246,14 @@ get_bbox(ge_GIF *gif, uint16_t *w, uint16_t *h, uint16_t *x, uint16_t *y)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (From the docs)
|
||||||
|
* The `delay` parameter specifies how long the frame will be shown, in hundreths
|
||||||
|
* of a second. For example, `delay` == 100 means "show this frame for one second"
|
||||||
|
* and `delay` == 25 means "show this frame for a quarter of a second". Note that
|
||||||
|
* short delays may not be supported by some GIF viewers: it's recommended to keep
|
||||||
|
* a minimum of `delay` == 6. If `delay` == 0, no delay information will be stored
|
||||||
|
* for the frame. This can be used when creating still (single-frame) GIF images.
|
||||||
|
*/
|
||||||
static void
|
static void
|
||||||
set_delay(ge_GIF *gif, uint16_t d)
|
set_delay(ge_GIF *gif, uint16_t d)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
(See COPYING.txt)
|
(See COPYING.txt)
|
||||||
|
|
||||||
June 14, 2002 - July 27, 2020
|
June 14, 2002 - July 29, 2020
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -25389,6 +25389,7 @@ static int export_gif(int *selected, int num_selected, char *dirname, char **d_n
|
||||||
liq_result *quantization_result;
|
liq_result *quantization_result;
|
||||||
liq_error qtiz_status;
|
liq_error qtiz_status;
|
||||||
const liq_palette *palette;
|
const liq_palette *palette;
|
||||||
|
int gif_speed;
|
||||||
|
|
||||||
/* Back up the current image's IDs, because they will get
|
/* Back up the current image's IDs, because they will get
|
||||||
clobbered below! */
|
clobbered below! */
|
||||||
|
|
@ -25415,6 +25416,12 @@ static int export_gif(int *selected, int num_selected, char *dirname, char **d_n
|
||||||
overall_h = screen->h;
|
overall_h = screen->h;
|
||||||
overall_area = overall_w * overall_h;
|
overall_area = overall_w * overall_h;
|
||||||
|
|
||||||
|
if (speed == 0)
|
||||||
|
{
|
||||||
|
gif_speed = 1;
|
||||||
|
}
|
||||||
|
gif_speed = (10 - speed) * 50;
|
||||||
|
|
||||||
bitmap = malloc(num_selected * overall_area * 4);
|
bitmap = malloc(num_selected * overall_area * 4);
|
||||||
if (bitmap != NULL)
|
if (bitmap != NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -25517,7 +25524,7 @@ static int export_gif(int *selected, int num_selected, char *dirname, char **d_n
|
||||||
for (i = 0; i < num_selected && !done; i++)
|
for (i = 0; i < num_selected && !done; i++)
|
||||||
{
|
{
|
||||||
memcpy(gif->frame, raw_8bit_pixels + i * overall_area, overall_area);
|
memcpy(gif->frame, raw_8bit_pixels + i * overall_area, overall_area);
|
||||||
ge_add_frame(gif, 100); // FIXME: Speed
|
ge_add_frame(gif, gif_speed);
|
||||||
|
|
||||||
show_progress_bar(screen);
|
show_progress_bar(screen);
|
||||||
done = export_gif_monitor_events();
|
done = export_gif_monitor_events();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue