DYT/Tool/OpenSceneGraph-3.6.5/include/OpenEXR/ImfImageChannelRenaming.h

53 lines
1.4 KiB
C
Raw Normal View History

2024-12-24 23:49:36 +00:00
//
// SPDX-License-Identifier: BSD-3-Clause
// Copyright (c) Contributors to the OpenEXR Project.
//
#ifndef INCLUDED_IMF_IMAGE_CHANNEL_RENAMING_H
#define INCLUDED_IMF_IMAGE_CHANNEL_RENAMING_H
//----------------------------------------------------------------------------
//
// typedef RenamingMap,
// helper functions for image channel renaming.
//
//----------------------------------------------------------------------------
#include "ImfNamespace.h"
#include <map>
#include <string>
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER
//
// Given a map from old channel names to new channel names,
// rename the channels in an image or image level.
// This function assumes that the channel old-to-new-names
// map has already been checked for collisions.
//
typedef std::map<std::string, std::string> RenamingMap;
template <class ChannelMap>
inline void
renameChannelsInMap (const RenamingMap& oldToNewNames, ChannelMap& channels)
{
ChannelMap renamedChannels;
for (typename ChannelMap::const_iterator i = channels.begin ();
i != channels.end ();
++i)
{
RenamingMap::const_iterator j = oldToNewNames.find (i->first);
std::string newName = (j == oldToNewNames.end ()) ? i->first
: j->second;
renamedChannels[newName] = i->second;
}
channels = renamedChannels;
}
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT
#endif