| 7634 | }; |
| 7635 | |
| 7636 | static void ChannelsInLayer(const EXRHeader &exr_header, |
| 7637 | const std::string &layer_name, |
| 7638 | std::vector<LayerChannel> &channels) { |
| 7639 | channels.clear(); |
| 7640 | //std::cout << "layer_name = " << layer_name << "\n"; |
| 7641 | for (int c = 0; c < exr_header.num_channels; c++) { |
| 7642 | //std::cout << "chan[" << c << "] = " << exr_header.channels[c].name << "\n"; |
| 7643 | std::string ch_name(exr_header.channels[c].name); |
| 7644 | if (layer_name.empty()) { |
| 7645 | const size_t pos = ch_name.find_last_of('.'); |
| 7646 | if (pos != std::string::npos && pos < ch_name.size()) { |
| 7647 | if (pos != 0) continue; |
| 7648 | ch_name = ch_name.substr(pos + 1); |
| 7649 | } |
| 7650 | } else { |
| 7651 | const size_t pos = ch_name.find(layer_name + '.'); |
| 7652 | if (pos == std::string::npos) continue; |
| 7653 | if (pos == 0) { |
| 7654 | ch_name = ch_name.substr(layer_name.size() + 1); |
| 7655 | } |
| 7656 | } |
| 7657 | LayerChannel ch(size_t(c), ch_name); |
| 7658 | channels.push_back(ch); |
| 7659 | } |
| 7660 | } |
| 7661 | |
| 7662 | } // namespace tinyexr |
| 7663 |
no test coverage detected