⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imfchannellist.cpp

📁 image converter source code
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////// Copyright (c) 2002, Industrial Light & Magic, a division of Lucas// Digital Ltd. LLC// // All rights reserved.// // Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are// met:// *       Redistributions of source code must retain the above copyright// notice, this list of conditions and the following disclaimer.// *       Redistributions in binary form must reproduce the above// copyright notice, this list of conditions and the following disclaimer// in the documentation and/or other materials provided with the// distribution.// *       Neither the name of Industrial Light & Magic nor the names of// its contributors may be used to endorse or promote products derived// from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.///////////////////////////////////////////////////////////////////////////////-----------------------------------------------------------------------------////	class Channel//	class ChannelList////-----------------------------------------------------------------------------#include <ImfChannelList.h>#include <Iex.h>using std::string;using std::set;namespace Imf {Channel::Channel (PixelType t, int xs, int ys, bool pl):    type (t),    xSampling (xs),    ySampling (ys),    pLinear (pl){    // empty}bool	Channel::operator == (const Channel &other) const{    return type == other.type &&	   xSampling == other.xSampling &&	   ySampling == other.ySampling &&	   pLinear == other.pLinear;}void	ChannelList::insert (const char name[], const Channel &channel){    if (name[0] == 0)	THROW (Iex::ArgExc, "Image channel name cannot be an empty string.");    _map[name] = channel;}Channel &ChannelList::operator [] (const char name[]){    ChannelMap::iterator i = _map.find (name);    if (i == _map.end())	THROW (Iex::ArgExc, "Cannot find image channel \"" << name << "\".");    return i->second;}const Channel &ChannelList::operator [] (const char name[]) const{    ChannelMap::const_iterator i = _map.find (name);    if (i == _map.end())	THROW (Iex::ArgExc, "Cannot find image channel \"" << name << "\".");    return i->second;}Channel *ChannelList::findChannel (const char name[]){    ChannelMap::iterator i = _map.find (name);    return (i == _map.end())? 0: &i->second;}const Channel *ChannelList::findChannel (const char name[]) const{    ChannelMap::const_iterator i = _map.find (name);    return (i == _map.end())? 0: &i->second;}ChannelList::Iterator		ChannelList::begin (){    return _map.begin();}ChannelList::ConstIterator	ChannelList::begin () const{    return _map.begin();}ChannelList::IteratorChannelList::end (){    return _map.end();}ChannelList::ConstIterator	ChannelList::end () const{    return _map.end();}ChannelList::IteratorChannelList::find (const char name[]){    return _map.find (name);}ChannelList::ConstIteratorChannelList::find (const char name[]) const{    return _map.find (name);}voidChannelList::layers (set <string> &layerNames) const{    layerNames.clear();    for (ConstIterator i = begin(); i != end(); ++i)    {	string layerName = i.name();	size_t pos = layerName.rfind ('.');	if (pos != string::npos && pos != 0 && pos + 1 < layerName.size())	{	    layerName.erase (pos);	    layerNames.insert (layerName);	}    }}voidChannelList::channelsInLayer (const string &layerName,			      Iterator &first,			      Iterator &last){    channelsWithPrefix ((layerName + '.').c_str(), first, last);}voidChannelList::channelsInLayer (const string &layerName,			      ConstIterator &first,			      ConstIterator &last) const{    channelsWithPrefix ((layerName + '.').c_str(), first, last);}void		ChannelList::channelsWithPrefix (const char prefix[],				 Iterator &first,				 Iterator &last){    first = last = _map.lower_bound (prefix);    int n = strlen (prefix);    while (last != Iterator (_map.end()) &&	   strncmp (last.name(), prefix, n) <= 0)    {	++last;    }}voidChannelList::channelsWithPrefix (const char prefix[],				 ConstIterator &first,				 ConstIterator &last) const{    first = last = _map.lower_bound (prefix);    int n = strlen (prefix);    while (last != ConstIterator (_map.end()) &&	   strncmp (last.name(), prefix, n) <= 0)    {	++last;    }}bool		ChannelList::operator == (const ChannelList &other) const{    ConstIterator i = begin();    ConstIterator j = other.begin();    while (i != end() && j != other.end())    {	if (!(i.channel() == j.channel()))	    return false;	++i;	++j;    }    return i == end() && j == other.end();}} // namespace Imf

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -