Skip to content
This repository was archived by the owner on Feb 1, 2023. It is now read-only.

Commit e56fbea

Browse files
committed
Trac #18176: Pass keywords from show through save to gif resp. ffmpeg
1 parent c0f3e47 commit e56fbea

File tree

1 file changed

+28
-6
lines changed

1 file changed

+28
-6
lines changed

src/sage/plot/animate.py

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,8 @@ def gif(self, delay=20, savefile=None, iterations=0, show_path=False,
555555
sage: td = tmp_dir()
556556
sage: a.gif() # not tested
557557
sage: a.gif(savefile=td + 'my_animation.gif', delay=35, iterations=3) # optional -- ImageMagick
558+
sage: with open(td + 'my_animation.gif', 'rb') as f: print '\x21\xf9\x04\x08\x23\x00' in f.read() # optional -- ImageMagick
559+
True
558560
sage: a.gif(savefile=td + 'my_animation.gif', show_path=True) # optional -- ImageMagick
559561
Animation saved to .../my_animation.gif.
560562
sage: a.gif(savefile=td + 'my_animation_2.gif', show_path=True, use_ffmpeg=True) # optional -- ffmpeg
@@ -795,6 +797,8 @@ def ffmpeg(self, savefile=None, show_path=False, output_format=None,
795797
TESTS::
796798
797799
sage: a.ffmpeg(output_format='gif',delay=30,iterations=5) # optional -- ffmpeg
800+
doctest:...: DeprecationWarning: use tmp_filename instead
801+
See http://trac.sagemath.org/17234 for details.
798802
"""
799803
if not self._have_ffmpeg():
800804
msg = """Error: ffmpeg does not appear to be installed. Saving an animation to
@@ -924,7 +928,7 @@ def apng(self, savefile=None, show_path=False, delay=20, iterations=0):
924928
if show_path:
925929
print "Animation saved to file %s." % savefile
926930

927-
def save(self, filename=None, show_path=False, use_ffmpeg=False):
931+
def save(self, filename=None, show_path=False, use_ffmpeg=False, **kwds):
928932
"""
929933
Save this animation.
930934
@@ -964,6 +968,27 @@ def save(self, filename=None, show_path=False, use_ffmpeg=False):
964968
sage: a.save(td + 'wave0.sobj')
965969
sage: a.save(td + 'wave1.sobj', show_path=True)
966970
Animation saved to file .../wave1.sobj.
971+
972+
TESTS:
973+
974+
Ensure that we can pass delay and iteration count to the saved
975+
GIF image (see :trac:`18176`)::
976+
977+
sage: a.save(td + 'wave.gif') # optional -- ImageMagick
978+
sage: with open(td + 'wave.gif', 'rb') as f: print '!\xf9\x04\x08\x14\x00' in f.read() # optional -- ImageMagick
979+
True
980+
sage: with open(td + 'wave.gif', 'rb') as f: print '!\xff\x0bNETSCAPE2.0\x03\x01\x00\x00\x00' in f.read() # optional -- ImageMagick
981+
True
982+
sage: a.save(td + 'wave.gif', delay=35) # optional -- ImageMagick
983+
sage: with open(td + 'wave.gif', 'rb') as f: print '!\xf9\x04\x08\x14\x00' in f.read() # optional -- ImageMagick
984+
False
985+
sage: with open(td + 'wave.gif', 'rb') as f: print '!\xf9\x04\x08\x23\x00' in f.read() # optional -- ImageMagick
986+
True
987+
sage: a.save(td + 'wave.gif', iterations=3) # optional -- ImageMagick
988+
sage: with open(td + 'wave.gif', 'rb') as f: print '!\xff\x0bNETSCAPE2.0\x03\x01\x00\x00\x00' in f.read() # optional -- ImageMagick
989+
False
990+
sage: with open(td + 'wave.gif', 'rb') as f: print '!\xff\x0bNETSCAPE2.0\x03\x01\x03\x00\x00' in f.read() # optional -- ImageMagick
991+
True
967992
"""
968993
if filename is None:
969994
suffix = '.gif'
@@ -974,16 +999,13 @@ def save(self, filename=None, show_path=False, use_ffmpeg=False):
974999

9751000
if filename is None or suffix == '.gif':
9761001
self.gif(savefile=filename, show_path=show_path,
977-
use_ffmpeg=use_ffmpeg)
978-
return
1002+
use_ffmpeg=use_ffmpeg, **kwds)
9791003
elif suffix == '.sobj':
9801004
SageObject.save(self, filename)
9811005
if show_path:
9821006
print "Animation saved to file %s." % filename
983-
return
9841007
else:
985-
self.ffmpeg(savefile=filename, show_path=show_path)
986-
return
1008+
self.ffmpeg(savefile=filename, show_path=show_path, **kwds)
9871009

9881010

9891011
class APngAssembler(object):

0 commit comments

Comments
 (0)