MCPcopy Create free account
hub / github.com/IENT/YUView / getChannelAtPosition

Method getChannelAtPosition

YUViewLib/src/video/rgb/PixelFormatRGB.cpp:188–230  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

186}
187
188Channel PixelFormatRGB::getChannelAtPosition(int position) const
189{
190 if (this->hasAlpha())
191 {
192 if (position == 0 && this->alphaMode == AlphaMode::First)
193 return Channel::Alpha;
194 if (position == 3 && this->alphaMode == AlphaMode::Last)
195 return Channel::Alpha;
196
197 if (this->alphaMode == AlphaMode::First)
198 position--;
199 }
200
201 if (position == 0)
202 {
203 if (this->channelOrder == ChannelOrder::RGB || this->channelOrder == ChannelOrder::RBG)
204 return Channel::Red;
205 if (this->channelOrder == ChannelOrder::GRB || this->channelOrder == ChannelOrder::GBR)
206 return Channel::Green;
207 if (this->channelOrder == ChannelOrder::BGR || this->channelOrder == ChannelOrder::BRG)
208 return Channel::Blue;
209 }
210 else if (position == 1)
211 {
212 if (this->channelOrder == ChannelOrder::GRB || this->channelOrder == ChannelOrder::BRG)
213 return Channel::Red;
214 if (this->channelOrder == ChannelOrder::RGB || this->channelOrder == ChannelOrder::BGR)
215 return Channel::Green;
216 if (this->channelOrder == ChannelOrder::RBG || this->channelOrder == ChannelOrder::GBR)
217 return Channel::Blue;
218 }
219 else if (position == 2)
220 {
221 if (this->channelOrder == ChannelOrder::GBR || this->channelOrder == ChannelOrder::BGR)
222 return Channel::Red;
223 if (this->channelOrder == ChannelOrder::RBG || this->channelOrder == ChannelOrder::BRG)
224 return Channel::Green;
225 if (this->channelOrder == ChannelOrder::RGB || this->channelOrder == ChannelOrder::GRB)
226 return Channel::Blue;
227 }
228
229 throw std::invalid_argument("Invalid argument for channel position");
230}
231
232} // namespace video::rgb

Callers 1

createRawRGBDataFunction · 0.80

Calls 1

hasAlphaMethod · 0.95

Tested by 1

createRawRGBDataFunction · 0.64