text: #pragma once
  
  #ifndef SELECTIONUTILS_H
  #define SELECTIONUTILS_H
  
  // TnzCore includes
  #include "tfilepath.h"
  
  // STL includes
  #include <set>
  #include <map>
  
  //==============================================================
  
  //    Forward declarations
  
  class TXsheet;
  
  //==============================================================
  
  //*********************************************************************************
  //    Selection-related  utility functions
  //*********************************************************************************
  
  //! Returns the set of all level frames contained in the specified xsheet cells
  //! range
  //! (r0 <= r <= r1 and c0 <= c <= c1).
  template <typename LevelType>
  void getSelectedFrames(
      const TXsheet &xsh, int r0, int c0, int r1, int c1,
      std::map<LevelType *, std::set<TFrameId>> &framesByLevel);
  
  //! Returns the set of all level frames contained in current selection.
  //! Recognized selection types include cell, cast, column and filmstrip
  //! selections.
  template <typename LevelType>
  void getSelectedFrames(
      std::map<LevelType *, std::set<TFrameId>> &framesByLevel);
  
  #endif  // SELECTIONUTILS_H
  