@@ -1461,13 +1461,16 @@ int Gui::gifStart(const std::string& filename)
14611461 return gifs_.size () - 1 ;
14621462}
14631463
1464- void Gui::gifAddFrame (const int key,
1464+ void Gui::gifAddFrame (std::optional< int > key,
14651465 const odb::Rect& region,
14661466 int width_px,
14671467 double dbu_per_pixel,
14681468 std::optional<int > delay)
14691469{
1470- if (key >= gifs_.size () || gifs_[key] == nullptr ) {
1470+ if (!key.has_value ()) {
1471+ key = gifs_.size () - 1 ;
1472+ }
1473+ if (*key < 0 || *key >= gifs_.size () || gifs_[*key] == nullptr ) {
14711474 logger_->warn (utl::GUI, 51 , " GIF not active" );
14721475 return ;
14731476 }
@@ -1476,7 +1479,7 @@ void Gui::gifAddFrame(const int key,
14761479 logger_->error (utl::GUI, 50 , " No design loaded." );
14771480 }
14781481
1479- auto & gif = gifs_[key];
1482+ auto & gif = gifs_[* key];
14801483
14811484 odb::Rect save_region = region;
14821485 const bool use_die_area = region.dx () == 0 || region.dy () == 0 ;
@@ -1549,14 +1552,17 @@ void Gui::gifAddFrame(const int key,
15491552 delay.value_or (kDefaultGifDelay ));
15501553}
15511554
1552- void Gui::gifEnd (const int key)
1555+ void Gui::gifEnd (std::optional< int > key)
15531556{
1554- if (key >= gifs_.size () || gifs_[key] == nullptr ) {
1557+ if (!key.has_value ()) {
1558+ key = gifs_.size () - 1 ;
1559+ }
1560+ if (*key < 0 || *key >= gifs_.size () || gifs_[*key] == nullptr ) {
15551561 logger_->warn (utl::GUI, 58 , " GIF not active" );
15561562 return ;
15571563 }
15581564
1559- auto & gif = gifs_[key];
1565+ auto & gif = gifs_[* key];
15601566 if (gif->writer == nullptr ) {
15611567 logger_->warn (utl::GUI,
15621568 107 ,
@@ -1567,7 +1573,7 @@ void Gui::gifEnd(const int key)
15671573 }
15681574
15691575 GifEnd (gif->writer .get ());
1570- gifs_[key] = nullptr ;
1576+ gifs_[* key] = nullptr ;
15711577}
15721578
15731579class SafeApplication : public QApplication
0 commit comments