53 lines
1.4 KiB
C
53 lines
1.4 KiB
C
|
//
|
||
|
// 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
|