@@ -1461,13 +1461,17 @@ 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 (gifs_.empty () || *key < 0 || *key >= gifs_.size ()
1474+ || gifs_[*key] == nullptr ) {
14711475 logger_->warn (utl::GUI, 51 , " GIF not active" );
14721476 return ;
14731477 }
@@ -1476,7 +1480,7 @@ void Gui::gifAddFrame(const int key,
14761480 logger_->error (utl::GUI, 50 , " No design loaded." );
14771481 }
14781482
1479- auto & gif = gifs_[key];
1483+ auto & gif = gifs_[* key];
14801484
14811485 odb::Rect save_region = region;
14821486 const bool use_die_area = region.dx () == 0 || region.dy () == 0 ;
@@ -1549,14 +1553,18 @@ void Gui::gifAddFrame(const int key,
15491553 delay.value_or (kDefaultGifDelay ));
15501554}
15511555
1552- void Gui::gifEnd (const int key)
1556+ void Gui::gifEnd (std::optional< int > key)
15531557{
1554- if (key >= gifs_.size () || gifs_[key] == nullptr ) {
1558+ if (!key.has_value ()) {
1559+ key = gifs_.size () - 1 ;
1560+ }
1561+ if (gifs_.empty () || *key < 0 || *key >= gifs_.size ()
1562+ || gifs_[*key] == nullptr ) {
15551563 logger_->warn (utl::GUI, 58 , " GIF not active" );
15561564 return ;
15571565 }
15581566
1559- auto & gif = gifs_[key];
1567+ auto & gif = gifs_[* key];
15601568 if (gif->writer == nullptr ) {
15611569 logger_->warn (utl::GUI,
15621570 107 ,
@@ -1567,7 +1575,7 @@ void Gui::gifEnd(const int key)
15671575 }
15681576
15691577 GifEnd (gif->writer .get ());
1570- gifs_[key] = nullptr ;
1578+ gifs_[* key] = nullptr ;
15711579}
15721580
15731581class SafeApplication : public QApplication
0 commit comments