ImfImageChannelRenaming.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. //
  2. // SPDX-License-Identifier: BSD-3-Clause
  3. // Copyright (c) Contributors to the OpenEXR Project.
  4. //
  5. #ifndef INCLUDED_IMF_IMAGE_CHANNEL_RENAMING_H
  6. #define INCLUDED_IMF_IMAGE_CHANNEL_RENAMING_H
  7. //----------------------------------------------------------------------------
  8. //
  9. // typedef RenamingMap,
  10. // helper functions for image channel renaming.
  11. //
  12. //----------------------------------------------------------------------------
  13. #include "ImfNamespace.h"
  14. #include <string>
  15. #include <map>
  16. OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER
  17. //
  18. // Given a map from old channel names to new channel names,
  19. // rename the channels in an image or image level.
  20. // This function assumes that the channel old-to-new-names
  21. // map has already been checked for collisions.
  22. //
  23. typedef std::map <std::string, std::string> RenamingMap;
  24. template <class ChannelMap>
  25. inline void
  26. renameChannelsInMap (const RenamingMap &oldToNewNames, ChannelMap &channels)
  27. {
  28. ChannelMap renamedChannels;
  29. for (typename ChannelMap::const_iterator i = channels.begin();
  30. i != channels.end();
  31. ++i)
  32. {
  33. RenamingMap::const_iterator j = oldToNewNames.find (i->first);
  34. std::string newName = (j == oldToNewNames.end())? i->first: j->second;
  35. renamedChannels[newName] = i->second;
  36. }
  37. channels = renamedChannels;
  38. }
  39. OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT
  40. #endif